READ(ファイル入力)
READ(ファイル入力)は、他の命令のように単独で記述することはできません。
ファイルを利用する命令は、ENVIRONMENT DIVISIONやDATA DIVISIONで記述する定義とOPENや
CLOSE命令とセットで利用しなければいけません。
説明が長くなって記述した内容がわかりずらいかも知れませんが、後続の記事で補足します。
1.環境部で記述する内容
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTOROL.
SELECT INPUT-FILE ASSIGN TO IPTFILE.
INPUT-OUTPUT SECTION.
FILE-CONTOROL.
SELECT INPUT-FILE ASSIGN TO IPTFILE.
ENVIRONMENT DIVISION.での記述について
①INPUT-OUTPUT SECTION.(この通り記述する)
②FILE-CONTOROL. (この通り記述する)
③SELECT INPUT-FILE ASSIGN TO IPTFILE.
この定義は、内部参照ファイル名と外部参照ファイル名を関連付ける定義です。
INPUT-FILEは、プログラム内で使用する内部参照ファイル名を記述します。
INPUT-FILEでなくIN-FILEでも何でもよいですが、入力ファイル名としてわかりやすい名前を記述します。
IPTFILEは、外部参照ファイル名です。
これもIPTFILEでなくてもよいです。
COBOLの種類によって、”IPTFILE”と記述する場合もあります。
外部参照ファイル名は、メインフレーム(汎用コンピュータ)ではJCL(プログラムを実行す
るための定義体)で使用されます。
サーバ(UNIX系のコンピュータ)では、シェル(呼び名は違いますがJCLと同じようなもの)で使用されます。
上述したファイル名以外は、そのまま記述すればよいです。
2.データ部で記述する内容
DATA DIVISION.
FILE SECTION.
FD INPUT-FILE LABEL RECORD STANDARD
DATA RECORD INPUT-REC.
01 INPUT-REC.
03 INPUT-TANKA PIC 9(2).
03 INPUT-SURYO PIC 9(3).
FILE SECTION.
FD INPUT-FILE LABEL RECORD STANDARD
DATA RECORD INPUT-REC.
01 INPUT-REC.
03 INPUT-TANKA PIC 9(2).
03 INPUT-SURYO PIC 9(3).
DATA DIVISION.での記述について
①FILE SECTION.(この通り記述する)
②FD INPUT-FILE LABEL RECORD STANDARD
DATA RECORD INPUT-REC.
DATA RECORD INPUT-REC.
INPUT-FILEは、ENVIRONMENT DIVISIONで記述した内部参照ファイル名です。
LABEL RECORD STANDARD(この通り記述する)
DATA RECORD INPUT-REC.(この後記述する01レベルの項目名と同じ名称を記述する)
01 INPUT-RECは、レコード名の記述でINPUT-RECでなくても任意でわかりやすい名称であればよいです。
③01 INPUT-REC.(01はこの通り記述、INPUT-RECは②で記述した通りです)
④03 INPUT-TANKA PIC 9(2).
03 INPUT-SURYO PIC 9(3).
03 INPUT-SURYO PIC 9(3).
上の2行の記述は、入力ファイルのレコード構成を記述したものです。
PIC 9(2)は、2桁の数字、PIC 9(3)は3桁の数字という定義ですから、合計した5桁がファイルの長さになります。
このファイルをメモ帳などで開いた場合、以下のように表示されます。
02003
04005
04005
このファイルに対して1回目のREAD命令を実行すると、INPUT-TANKAに02、INPUT-SURYOに003の値が読み込まれます。
2回目のREAD命令を実行すると、INPUT-TANKAに04、INPUT-SURYOに005の値が読み込まれます。
要するに入力するファイルの内容に合わせた記述をすることです。
2.手続き部で記述する内容
PROCEDURE DIVISION.
MAIN.
OPEN INPUT INPUT-FILE.
READ INPUT-FILE AT END STOP RUN.
CLOSE INPUT-FILE.
MAIN.
OPEN INPUT INPUT-FILE.
READ INPUT-FILE AT END STOP RUN.
CLOSE INPUT-FILE.
PROCEDURE DIVISION.での記述について
①OPEN INPUT INPUT-FILE.
上のOPENステートメントは、INPUT-FILEを入力ファイルとして開く(読めるようにする)命令です。
この命令を実行することによって、READできるようになります。
従って、OPEN命令はREAD命令を実行する前に1回だけ実行する必要があります。
OPEN INPUT(この通り記述)
INPUT-FILEは、内部参照ファイル名を記述します。
②READ INPUT-FILE AT END STOP RUN.
INPUT-FILEは、内部参照ファイル名を記述します。
AT END STOP RUN.は、入力ファイルのデータを全て読み終わったときに実行する命令を記述します。
上に記述した例では、READ命令は1回しか実行されませんが、通常の処理ではAT ENDになるまで繰り返しREAD命令を実行するようなロジックで記述します。
どのようなロジックの記述を行うかは、後述で補足します。
ここでは、READ命令の記述方法だけ覚えてください。
③CLOSE INPUT-FILE.
上のCLOSEステートメントは、INPUT-FILEを閉じる(入力処理の終了)命令です。
この命令を実行することによって、READできなくなります。
従って、CLOSE命令は最後のREAD命令を実行した後に1回だけ実行する必要があります。
INPUT-FILEは、内部参照ファイル名を記述します。
コメントを書く