Supportnet / Forum / Anwendungen(Java,C++...)
Cobol- bzw. CICS-Profis gefragt
Frage
Guten Abend!!
Jetzt sind Cobol- und CICS-Profis gefragt.
Ich habe in einer CICS-Maske ein Feld definiert, in dem eine Personalnummer max. 8stellig numerisch eingegeben werden soll.
Wichtigste Feld-Attribute:
ATTR=(UNPROT), JUSTIFY=(RIGHT,ZERO)
In dem entsprechenden Copy für die Maske (wurde generiert) ist das Feld aber alphanumerisch definiert, was sich auch nicht ändern läßt.
In meinem Cobol-Programm will ich nun prüfen, ob auch wirklich eine numerische Eingabe gemacht wurde, wobei auch weniger als 8 Ziffern gültig sein sollen, und es egal ist ob die Eingabe jetzt an der 1. Stelle des Feldes oder an der 3. Stelle beginnt. Es dürfen nur keine Leerzeichen zwischen den Ziddern und keine Buchstaben eingetippt werden.
Bsp.:
gültige Eingaben:
123_____
___12345
____89__
usw.
ungültge Eingaben:
_12b____
12__4___
1234__bc
abc_____
usw.
("_" stellt ein Leerzeichen dar!)
Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt.
Nun zu meiner Frage:
Wie bekomme ich es gebacken, das Feld auf gültige NUMERIC-Werte abzufragen?
Muß ich da noch ein bestimmtes Attribut in dem Masken-Makro setzen oder den Inhalt des Feldes in ein numerisch definiertes Cobol-Feld "moven" und Byte für Byte prüfen oder gibt es da einen "Trick", der mir noch nicht bekannt ist?
Über eine Antwort würde sich ein FiAe-Azubi sehr freuen!! :-)
Gruß
cmkatz
Antwort 1 von Fenrir
Hallo cmkatz,
also wenn ich das noch richtig in Erinnerung habe, musst Du die Daten nach der Eingabe (die dann im Anschluß mit der Datenfreigabe bestätigt wurden) lesen in einen definierten Bereich in der WORKING-STORAGE SECTION. Alle Plausibilitätsprüfungen der Daten müssen von Hand programmiert werden.
also wenn ich das noch richtig in Erinnerung habe, musst Du die Daten nach der Eingabe (die dann im Anschluß mit der Datenfreigabe bestätigt wurden) lesen in einen definierten Bereich in der WORKING-STORAGE SECTION. Alle Plausibilitätsprüfungen der Daten müssen von Hand programmiert werden.
Antwort 2 von cmkatz
Hallo,
danke für deine Antwort, Fenrir.
Nur ist es so, dass CICS automatisch alle übrigen Stellen, die ich oben mit einem "_" markiert habe mit etwas belegt, was nicht SPACE und nicht NUMERIC ist. Das macht sich dann natürlich bei der Prüfung des gesamten Ausdrucks auf NUMERIC bemerkbar, so wird z.B. die Eingabe "123_____" als nicht numersich erkannt.
Gruß
cmkatz
danke für deine Antwort, Fenrir.
Nur ist es so, dass CICS automatisch alle übrigen Stellen, die ich oben mit einem "_" markiert habe mit etwas belegt, was nicht SPACE und nicht NUMERIC ist. Das macht sich dann natürlich bei der Prüfung des gesamten Ausdrucks auf NUMERIC bemerkbar, so wird z.B. die Eingabe "123_____" als nicht numersich erkannt.
Gruß
cmkatz
Antwort 3 von Rainer Juser
Vielleicht solltest vor dem Aufrufen der Maske die Felder entsprechend initialisieren. Ich hab sowas auf jeden Fall schon mal programmiert, dass eine Eingabe wie Du sie machst akzeptiert wird.
Ich habe das Feld in der Maske so definiert:
Num-Option: FixKomma S9(5)V99 -> -1234,50
BlankWZero: Default
Das Feld wird im Cobol Programm zu Beginn erst mal mit Zeros gefüllt.
Bisher haben sich die Anwender noch nicht beschwert, dass sie den Rest des Feldes erst löschen müssen.... und das würden die, wie ich sie kenne, bestimmt tun ...
Ich habe das Feld in der Maske so definiert:
Num-Option: FixKomma S9(5)V99 -> -1234,50
BlankWZero: Default
Das Feld wird im Cobol Programm zu Beginn erst mal mit Zeros gefüllt.
Bisher haben sich die Anwender noch nicht beschwert, dass sie den Rest des Feldes erst löschen müssen.... und das würden die, wie ich sie kenne, bestimmt tun ...