View Full Version : Alpha-Feld auf nummerisch prüfen
Hallo Leute!
Habe da ein kleines Programm, wobei Ihr mir bitte weiterhelfen könnt:
Ich bekomme aus einem DSPF ein 3 Alpha-Feld, das ich auf nummerisch prüfen soll.
Mit dem Befehl: TESTN lässt er auch Werte zu die hinten einen Buchstaben habenhttp://www.coding-board.de/board/images/smilies/wallbash.gif (Bsp: 00A, 00Z).
Was mach ich falsch.
Habe momentan das Problem mit einer Feldgruppe gelöst, ist aber keine schöne Lösung.
Dank im Voraus.
Hallo,
eine solche Prüfung macht man am einfachsten mit der Built-in-Funktion %CHECK oder dem OpCode CHECK.
Das Ergebnis ist jeweils das erste Zeichen, das nicht in dem angegebenen String ist. Ist also das Ergebnis > Null, sind ungültige Zeichen in dem ursprünglichen String enthalten.
D Alpha S 5A inz('123A5')
D Zahlen C const('1234567890')
*----------------------------------------------------
/Free
If %Check(Zahlen: Alpha) = *Zeros;
Dsply 'Nur Zahlen';
Else;
Dsply 'Ungültige Zeichen';
EndIf;
*InLR = *ON;
/End-Free
Beim TESTN werden die Buchstaben A-R als numerische Werte interpretiert, da deren Hex-Werte im 1. Halbbyte D, C oder F (Vorzeichen) und im 2.Halbbyte eine Zahl zwischen 0 und 9 haben.
Birgitta
Danke vielmals für diesen Vorschlag.
Hallo Brigitta!
Habe deinen Vorschlag gleich ausprobiert und stehe vor folgendem Problem:
933 c | If (%Check(Zahlen: $VAR)) = *Zeros
======> aaaaaa b cccccc
======> dddddd
*RNF0604 20 a 037224 Das Token ist ungültig; das Token wird ignoriert.
*RNF0312 20 b 037224 Rechte runde Klammer erwartet, aber nicht gefunden.
*RNF0312 20 c 037224 Rechte runde Klammer erwartet, aber nicht gefunden.
*RNF5377 20 d 037224 Ende des Ausdrucks erwartet.
Wir programmieren in unserer Fa. nicht im FREE-Format.
Dank im Voraus.
hier Birgittas COde in nicht Free-Format
D Alpha S 5A inz('123A5')
D Zahlen C const('1234567890')
c If %Check(Zahlen: Alpha) = *Zeros
c 'Nur Zahlen' Dsply
c Else
c 'Fehler' Dsply
c EndIf
c
c Eval *InLr = *On
gruß ronald