キーボードから入力されたデータをCOBOLプログラム上で受け取るにはACCEPT文を使用します。
下記サンプルではACCEPT文によりキーボードから入力されたデータをNUM項目にセットし、その内容をDISPLAY文でコンソール上に出力しています。
000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. SAMPLE-03. 000030* 000040 ENVIRONMENT DIVISION. 000050* 000060 DATA DIVISION. 000070 WORKING-STORAGE SECTION. 000080 77 NUM PIC 9(3). 000090* 000100 PROCEDURE DIVISION. 000110 MAIN. 000120 ACCEPT NUM FROM CONSOLE. 000130 DISPLAY "NUM の内容は " NUM UPON CONSOLE. 000140 STOP RUN.
- ACCEPT文 書式
- ACCEPT 受け取り項目 UPON 受け取り先.
受け取り項目
受け取った情報を保存するデータ項目を指定する。
受け取り先
コンソールまたは標準入力のどちらで受け取るか指定する。
CONSOLE コンソールからデータを受け取る SYSIN 標準入力からデータを受け取る
ACCEPT文使用時の注意点
ACCEPT文で指定する受け取り項目に数値形式のデータ項目を指定した際、数値以外のデータを受け取ると、実行時にエラーが発生してしまいます。
キーボード(あるいは標準入力)から入力されるデータは、必ず数値だけであるとは限りませんので、通常、受け取り項目で指定するデータ項目は英数字形式とするのが一般的です。
そしてもし、数値のみのデータを受け取りたい場合は、ACCEPT文の直後に数値かどうかの判定を行います。
000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. SAMPLE-04. 000030* 000040 ENVIRONMENT DIVISION. 000050* 000060 DATA DIVISION. 000070 WORKING-STORAGE SECTION. 000080 01 WRK-INPUT-AREA. 000090 03 WRK-INPUT-DATA-X PIC X(3). 000100 03 FILLER REDEFINES WRK-INPUT-DATA-X. 000110 05 WRK-INPUT-DATA PIC 9(3). 000120* 000130 PROCEDURE DIVISION. 000140 MAIN. 000150 ACCEPT WRK-INPUT-DATA-X FROM CONSOLE. 000160 IF WRK-INPUT-DATA IS NUMERIC THEN 000170 DISPLAY "NUM の内容は " NUM UPON CONSOLE 000180 ELSE 000190 DISPLAY "数値以外が入力されました" UPON CONSOLE 000200 END-IF. 000210 STOP RUN.
IS NUMERICは、数値形式のデータ項目にセットされているデータが数値であるかどうかを判定するために使用します。
また、IS NOT NUMERICを指定すると、数値以外かどうかを判定します。
ただし、IS NUMERICで数値かどうかを判定できるのは数値形式(9タイプ)のデータ項目だけであり、数値形式以外のデータ項目を指定した場合、正しい結果を得ることはできません。
そのため、ACCEPT文と組み合わせて使用する場合、上記サンプルのようにデータ項目に対して工夫が必要となります。