The following example shows the use of an external file in several programs. COPY statements ensure that each subprogram contains an identical description of the file.
The table below describes the main program and subprograms.
| Name | Function |
|---|---|
| ef1 | The main program, which calls all the subprograms and then verifies the contents of a record area |
| ef1openo | Opens the external file for output and checks the file status code |
| ef1write | Writes a record to the external file and checks the file status code |
| ef1openi | Opens the external file for input and checks the file status code |
| ef1read | Reads a record from the external file and checks the file status code |
| ef1close | Closes the external file and checks the file status code |
Each program uses three copybooks:
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.