COBOL/READステートメント


READ(ファイル入力)

READ(ファイル入力)は、他の命令のように単独で記述することはできません。
 
ファイルを利用する命令は、ENVIRONMENT DIVISIONやDATA DIVISIONで記述する定義とOPENや
 
CLOSE命令とセットで利用しなければいけません。
 
説明が長くなって記述した内容がわかりずらいかも知れませんが、後続の記事で補足します。
 
1.環境部で記述する内容
 
ENVIRONMENT   DIVISION.
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).
 
DATA DIVISION.での記述について
 
①FILE SECTION.(この通り記述する)
 
②FD INPUT-FILE LABEL RECORD STANDARD
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).
 
 上の2行の記述は、入力ファイルのレコード構成を記述したものです。
 
 PIC 9(2)は、2桁の数字、PIC 9(3)は3桁の数字という定義ですから、合計した5桁がファイルの長さになります。
 
 このファイルをメモ帳などで開いた場合、以下のように表示されます。
 
 02003
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.
 
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は、内部参照ファイル名を記述します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です