2017-12-21 1 views
0

Ich habe eine Variable quantity mit pic X (4). Wie kann ich die Eingabe in DISPLAY invalid quantity validieren, wenn die eingegebene Menge keine Nummer ist oder keine Menge eingegeben wurde oder 0 eingegeben wurde.So validieren Sie Eingaben von einem Benutzer in COBOL, um nur Zahlen zu akzeptieren> 1

Ich habe versucht IF QUANTITY IS NUMERIC, aber es hat nicht funktioniert. Ich berechne die Gesamtkosten, indem ich:

COMPUTE TOTAL = FUNCTION NUMVAL (QUANTITY) * PRICE 
+0

Bitte überprüfen Sie die aktualisierte Antwort und schauen Sie sich https://Stackoverflow.com/help/someone-answers - bitte entweder kommentieren über unklare Teile oder stimmen + akzeptieren. –

Antwort

0

Dies hängt in hohem Maße auf den Compiler (und die Version) Sie haben - bitte fügen Sie diese fehlenden Informationen hinzu.

Im Allgemeinen: Alle Benutzereingaben sollten validiert werden und in Ihrem Fall möchten Sie einen numerischen Index verwenden, der pic 9(04) sein sollte. Je nach Compiler (Version) führt dies bereits zu "nur numerische Daten im Feld", andernfalls könnten Sie MOVE FUNCTION NUMVAL (input-field) TO quantity verwenden, was zum selben Ergebnis führt.

Danach müssen Sie nur noch prüfen, ob quantity innerhalb der gültigen Grenzen Ihres OCCURS sind:

quantity <= max-entries AND NOT = 0 für feste Länge auftritt oder

quantity <= depending-field AND NOT = 0 für OCCURS max-entries DEPENDING ON depending-field

Hinweis: Mit FUNCTION NUMVAL auf Eine ungültige Eingabe wie "z" wird zu 0 führen, was bereits überprüft wird, so dass Sie die Information "ungültig" sowohl für die Eingabe einer Nullnummer als auch für ein "s" erhalten tring "eingegeben (mit einem einzigen Haken).

+0

Ich weiß nicht, wie ich meine Compiler-Version überprüfe, aber ich benutze Vista TN 3270 1.27. Ich erkannte, dass der Compiler eine Eingabe von "a" als "1000", "b" als "2000" usw. für PIC 9 (4) sieht, während er mit der ORDER SUMMARY meines Programms fortfährt. Auch eine Eingabe von '1' wird als '1000' erkannt. Ich denke, ich kann die 'Tausend' für die numerische Eingabe mit MOVE TO und FUNCTION NUMVAL beheben, aber ich möchte, dass es Nicht-Nummern zurückweist und nur 'ungültige Menge' anzeigt. – hiddenleaf

+0

Die Verwendung der skizzierten Technik führt dazu, dass Nicht-Zahlen zu "0" führen, was eine ungültige Zahl ist, so dass Sie die gewünschten Informationen erhalten (mit einer einzigen Überprüfung). Fügte das zur Antwort hinzu. Wenn Sie die COBOL-Compiler-Version nicht kennen, werden Sie wahrscheinlich zumindest den COBOL-Compiler verwenden, nicht wahr? –

Verwandte Themen