Anmelden

View Full Version : Alpha-Feld auf nummerisch prüfen



Sulla
29-12-05, 07:26
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.

B.Hauser
29-12-05, 08:16
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

Sulla
29-12-05, 09:13
Danke vielmals für diesen Vorschlag.

Sulla
29-12-05, 09:40
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.

malzusrex
29-12-05, 10:41
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