2017-12-21 22 views
0

変数quantityにはpic X (4)があります。入力数量が数字でないか、または数量が入力されていないか、または0が入力された場合、DISPLAY invalid quantityへの入力を検証するにはどうすればよいですか。COBOLで数値を受け入れるようにユーザーからの入力を検証する方法> 1

私はIF QUANTITY IS NUMERICを試しましたが、動作しませんでした。

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

更新された回答を確認し、https://stackoverflow.com/help/someone-answersをご覧ください。不明な部分や投票+承認についてコメントしてください。 –

答えて

0

これは、使用しているコンパイラ(およびバージョン)によって大きく異なります。この欠落した情報を追加してください。

一般的には、すべてのユーザー入力はであることを確認し、数字のインデックスを使用する場合は、pic 9(04)にする必要があります。コンパイラ(バージョン)によっては、これはすでに「フィールド内の数値データのみ」につながりますが、そうでなければMOVE FUNCTION NUMVAL (input-field) TO quantityを使用して同じ結果を得ることができます。

その後あなただけのquantityがあなたのOCCURSの有効範囲内にあるかどうかを確認する必要があります。固定長のための

quantity <= max-entries AND NOT = 0が発生した場合、またはOCCURS max-entries DEPENDING ON depending-field

ため

quantity <= depending-field AND NOT = 0:上FUNCTION NUMVALを使用して"z"のような無効な入力はすでにチェックされている0につながるので、ゼロ数と "s"の両方の入力に対して "無効"という情報が得られますtring "と入力します(1回のチェックで)。

+0

コンパイラのバージョンを確認する方法がわかりませんが、Vista TN 3270 1.27を使用しています。コンパイラは私のプログラムのORDER SUMMARYに続いて、 'a'の入力を '1000'、 'b'を '2000'としてPIC 9(4)の入力を見ていることに気付きました。また、 '1'の入力は '1000'として認識されます。私はMOVE TOとFUNCTION NUMVALを使用して数値入力の '1000'を修正できると思いますが、非数値を拒否して '無効数量'を表示する必要があります。 – hiddenleaf

+0

上記のテクニックを使用すると、数字以外の数字が0になります。これは無効な番号なので、1回のチェックで必要な情報を得ることができます。これを答えに加えました。 COBOLコンパイラのバージョンが分からない場合は、少なくとも現在COBOLコンパイラを使用している可能性はありますか? –

関連する問題