次の例は、いくつかのプログラムにおける外部ファイルの使用を示しています。それぞれのサブプログラムにファイルの同じ記述が含まれていることを保証するために、COPY ステートメントを使用します。
次の表は、メインプログラムとサブプログラムを説明しています。
| 名前 | 機能 |
|---|---|
| ef1 | メインプログラム。すべてのサブプログラムを呼び出し、レコード域の内容を検査する。 |
| ef1openo | 出力用に外部ファイルをオープンし、ファイル状況コードを検査する。 |
| ef1write | 外部ファイルにレコードを書き込み、ファイル状況コードを検査する。 |
| ef1openi | 入力用に外部ファイルをオープンし、ファイル状況コードを検査する。 |
| ef1read | 外部ファイルからレコードを読み取り、ファイル状況コードを検査する。 |
| ef1close | 外部ファイルをクローズし、ファイル状況コードを検査する。 |
各プログラムは、次の 3 つのコピーブックを使用します。
Select ef1 Assign To ef1 File Status Is efs1 Organization Is Sequential.
Fd ef1 Is External
Record Contains 80 Characters
Recording Mode F.
01 ef-record-1.
02 ef-item-1 Pic X(80).01 efs1 Pic 99 External.
Identification Division.
Program-Id.
ef1.
*
* This main program controls external file processing.
*
Environment Division.
Input-Output Section.
File-Control.
Copy efselect.
Data Division.
File Section.
Copy effile.
Working-Storage Section.
Copy efwrkstg.
Procedure Division.
Call “ef1openo”
Call “ef1write”
Call “ef1close”
Call “ef1openi”
Call “ef1read”
If ef-record-1 = “First record” Then
Display “First record correct”
Else
Display “First record incorrect”
Display “Expected: ” “First record”
Display “Found : ” ef-record-1
End-If
Call “ef1close”
Goback.
End Program ef1.
Identification Division.
Program-Id.
ef1openo.
*
* This program opens the external file for output.
*
Environment Division.
Input-Output Section.
File-Control.
Copy efselect.
Data Division.
File Section.
Copy effile.
Working-Storage Section.
Copy efwrkstg.
Procedure Division.
Open Output ef1
If efs1 Not = 0
Display “file status ” efs1 “ on open output”
Stop Run
End-If
Goback.
End Program ef1openo.
Identification Division.
Program-Id.
ef1write.
*
* This program writes a record to the external file.
*
Environment Division.
Input-Output Section.
File-Control.
Copy efselect.
Data Division.
File Section.
Copy effile.
Working-Storage Section.
Copy efwrkstg.
Procedure Division.
Move “First record” to ef-record-1
Write ef-record-1
If efs1 Not = 0
Display “file status ” efs1 “ on write”
Stop Run
End-If
Goback.
End Program ef1write.
Identification Division.
Program-Id.
ef1openi.
*
* This program opens the external file for input.
*
Environment Division.
Input-Output Section.
File-Control.
Copy efselect.
Data Division.
File Section.
Copy effile.
Working-Storage Section.
Copy efwrkstg.
Procedure Division.
Open Input ef1
If efs1 Not = 0
Display “file status ” efs1 “ on open input”
Stop Run
End-If
Goback.
End Program ef1openi.
Identification Division.
Program-Id.
ef1read.
*
* This program reads a record from the external file.
*
Environment Division.
Input-Output Section.
File-Control.
Copy efselect.
Data Division.
File Section.
Copy effile.
Working-Storage Section.
Copy efwrkstg.
Procedure Division.
Read ef1
If efs1 Not = 0
Display “file status ” efs1 “ on read”
Stop Run
End-If
Goback.
End Program ef1read.
Identification Division.
Program-Id.
ef1close.
*
* This program closes the external file.
*
Environment Division.
Input-Output Section.
File-Control.
Copy efselect.
Data Division.
File Section.
Copy effile.
Working-Storage Section.
Copy efwrkstg.
Procedure Division.
Close ef1
If efs1 Not = 0
Display “file status ” efs1 “ on close”
Stop Run
End-If
Goback.
End Program ef1close.