PDA

View Full Version : Feldinhalt prüfen auf Nummerisch



Seiten : 1 2 [3] 4

E305GL
12-07-24, 09:33
Danke,
wie weit ich damit gehen kann weiß ich noch nicht. Der Kunde arbeitet noch mit I- und O-Karten, auch beim Display! Aber ich werde das mal so einbauen. Auf partielles FreeRPG bin ich ja schon gegangen.
nach 55 Jahren RPG-Erfahrung hat sich gezeigt, egal RPG400 ILE/Free/VARPG, dass die sicherste und am einfachsten durchschaubare Methode sich bis heute bewährt hat:
- übertrage(MOVEA) dein alpha-Feld in eine Feldgruppe mit Elementlänge 1(ARR)
- definiere eine Ziffernkonstante '0123456789' (ZIFFER)
- definiere eine DO-Schleife mit Index (X)
- prüfe ARR,X SCAN ZIFFER Bezugszahl auf GLEICH
- weiteren Prüfungen und Logiken sind keine Grenzen gesetzt.
- ENDDO

Fuerchau
12-07-24, 10:09
Genau, warum einfach wenn es auch kompliziert geht;-).

E305GL
12-07-24, 10:57
es freut mich diese sachliche Antwort, frei vom Emotionen. Das Risiko einer roten Karte scheint gebannt zu sein. Vielleicht eine zusätzliche Grüne, wäre ein nettes Farbenspiel.

Fuerchau
12-07-24, 12:23
Ich hätte da jetzt eher einen Hinweis auf ChatGPT erwartet...

Pikachu
13-07-24, 12:05
Hm? Wieso kommt hier 2 heraus? Achso, Reihenfolge der Parameter bei %CHECK (https://www.ibm.com/docs/en/i/7.5?topic=functions-check-check-characters#bbchk) verwechselt!? Wer sucht hier wen bei wem?


Also, ich habe das Problem, dass mir
len = %check('0045958':'0123456789');
eine 2 zurück liefert!
Ich arbeite beim Kunden mit 7.1.
Kann mir das jemand erklären?
Ich weiß hier gibt es einen Stau! Aber die Updates auf 7.3 und dann folglich 7.5 werden grade besprochen, dauert aber noch.

Fuerchau
13-07-24, 15:16
https://www.ibm.com/docs/en/i/7.5?topic=functions-check-check-characters
<code>Sieh auch hier:
http://newsolutions.de/forum-systemi-as400-i5-iseries/threads/13008-Feldinhalt-pr%C3%BCfen-auf-Nummerisch?p=75265#post75265
</code>

Pikachu
13-07-24, 16:31
Also werden die Zeichen 0045958 in der Zeichenkette 0123456789 gesucht. Und da wird als erstes abweichendes Zeichen die 1 gefunden und die steht an Position 2. Aber ob so herum zu Suchen wirklich gewollt ist?

Fuerchau
13-07-24, 18:26
Argument 1: Prüfzeichen (comparator)
Argument 2: zu prüfende Zeichen (base)

<code class="hljs language-plaintext-ibm">%CHECK(comparator : base {: start { : *NATURAL | *STDCHARSIZE}})</code>






%CHECK returns the first position of the string base that contains a character that does not appear in string comparator. If all of the characters in base also appear in comparator, the function returns 0.

Ich bin der Meinung: das ist volle Absicht.

Du kannst ja, wie E305GL vorschlägt, eine alternative Funktion selber bauen.
In einer Schleife mit %subst() und %scan() ist das zu machen.

Pikachu
13-07-24, 19:00
Aber mit %CHECK geht’s ja auch aber nur wenn man die Parameter in der richtigen Reihenfolge angibt. Also als Parameter 1 die Ziffern 0-9 als '0123456789' und als Parameter 2 die zu prüfende Zeichenkette.

Fuerchau
14-07-24, 10:28
Wie Birgitta schon 2011 im Betrag 10 beschrieben hat.
Aber anscheinend liest keiner mehr so richtig:-(.