COBOL: Use of EXTEND mode in file OPEN

By Abhishek

The following two programs demonstrate the use of EXTEND mode for file handling. The first program TEMP1 opens the file in EXTEND mode and writes a record. It then closes the file. It then calls TEMP2 which opens the same file in EXTEND mode and writes another record and then closes the file. It then returns to the calling program.

The result is that there are two records in the file. If the EXTEND mode was not used there would have been only one record instead of two.

Also if the same program is run again there will a total of four records in the file as the first program TEMP1 opens the file in EXTEND mode too. If the first program TEMP1 opened the file in OUTPUT mode, there will be 2 records instead of 4.

I have found this useful in case of a group of programs that call each other and have to share a file for writing some messages or errors(without overwriting other messages).



000100***************************************************************** 00010000
000200*               IDENTIFICATION DIVISION                           00020000
000300***************************************************************** 00030000
000400                                                                  00040000
000500 IDENTIFICATION DIVISION.                                         00050000
000600                                                                  00060000
000700 PROGRAM-ID.                TEMP1.                                00070000
000800 AUTHOR.                    ABHISHEK CHAUDHARY.                   00080000
000900 INSTALLATION.              ASC CORPORATE HEADQUARTERS.           00090000
001000 DATE-WRITTEN.              10 JULY 1997.                         00100000
001100 DATE-COMPILED.             12 JULY 1997.                         00110000
001137 ENVIRONMENT DIVISION.                                            00113700
001138 INPUT-OUTPUT SECTION.                                            00113800
001139 FILE-CONTROL.                                                    00113900
001140                                                                  00114000
001150     SELECT TEMP-FILE ASSIGN TO TEMP                              00115001
001160            STATUS IS WS-FILE-STATUS.                             00116000
001170                                                                  00117000
001520 DATA DIVISION.                                                   00152000
001530****************                                                  00153000
001540 FILE SECTION.                                                    00154000
002300 FD TEMP-FILE                                                     00230001
002400      RECORDING MODE IS F                                         00240000
002500      LABEL RECORDS ARE OMITTED                                   00250000
002600      RECORD CONTAINS 80 CHARACTERS                               00260000
002700      BLOCK CONTAINS 0 RECORDS.                                   00270000
002800                                                                  00280000
002900 01   TEMP-FILE-RECORD        PIC X(80).                          00290001
003000                                                                  00300000
003500 WORKING-STORAGE SECTION.                                         00350000
003600**************************                                        00360000
003700                                                                  00370000
004590 01 WS-STATUS.                                                    00459000
004600    05 WS-FILE-STATUS             PIC X(2).                       00460000
004720                                                                  00472000
004730 01 WS-DISPLAY                    PIC X(80) VALUE SPACES.         00473000
004740 01 WS-TEMP2                      PIC X(08) VALUE 'TEMP2'.        00474000
004750                                                                  00475000
007399                                                                  00739900
007400 PROCEDURE DIVISION.                                              00740000
007401********************                                              00740100
012418                                                                  01241800
012419     DISPLAY 'NOW IN TEMP1.'                                      01241902
012420     OPEN EXTEND TEMP-FILE                                        01242001
012421     IF WS-FILE-STATUS NOT = '00'                                 01242103
012430       DISPLAY 'ERRTEMP1: TEMP-FILE NOT OPEN. '                   01243001
012440               'FILE STATUS: ' WS-FILE-STATUS                     01244000
012450       STOP RUN                                                   01245000
012460     END-IF                                                       01246000
012490                                                                  01249000
012500     MOVE 'NOW IN PROGRAM TEMP1.'     TO WS-DISPLAY               01250001
012600     MOVE WS-DISPLAY                  TO TEMP-FILE-RECORD         01260001
014420     WRITE TEMP-FILE-RECORD                                       01442001
014421     IF WS-FILE-STATUS NOT = '00'                                 01442103
014422       DISPLAY 'ERRTEMP1: ERROR WRITING TO TEMP-FILE. '           01442201
014423               'FILE STATUS: ' WS-FILE-STATUS                     01442300
014424       STOP RUN                                                   01442400
014425     END-IF                                                       01442500
014426                                                                  01442600
014430     CLOSE TEMP-FILE                                              01443001
014440     IF WS-FILE-STATUS NOT = '00'                                 01444003
014450       DISPLAY 'ERRTEMP1: TEMP-FILE NOT CLOSED. '                 01445001
014460               'FILE STATUS: ' WS-FILE-STATUS                     01446000
014470       STOP RUN                                                   01447000
014480     END-IF                                                       01448000
014490                                                                  01449000
014500     DISPLAY 'ABOUT TO CALL TEMP2'                                01450000
014510     CALL WS-TEMP2                                                01451000
014520     CANCEL WS-TEMP2                                              01452000
014521     DISPLAY 'RETURNED FROM TEMP2'                                01452100
014530     STOP RUN                                                     01453000
014600     .                                                            01460000
014700                                                                  01470000
 
Go To Top

000100***************************************************************** 00010000
000200*               IDENTIFICATION DIVISION                           00020000
000300***************************************************************** 00030000
000400                                                                  00040000
000500 IDENTIFICATION DIVISION.                                         00050000
000600                                                                  00060000
000700 PROGRAM-ID.                TEMP2.                                00070000
000800 AUTHOR.                    ABHISHEK CHAUDHARY.                   00080000
000900 INSTALLATION.              ASC CORPORATE HEADQUARTERS.           00090000
001000 DATE-WRITTEN.              10 JULY 1997.                         00100000
001100 DATE-COMPILED.             12 JULY 1997.                         00110000
001110 ENVIRONMENT DIVISION.                                            00111000
001120 INPUT-OUTPUT SECTION.                                            00112000
001130 FILE-CONTROL.                                                    00113000
001140                                                                  00114000
001150     SELECT TEMP-FILE ASSIGN TO TEMP                              00115000
001160            STATUS IS WS-FILE-STATUS.                             00116000
001170                                                                  00117000
001180 DATA DIVISION.                                                   00118000
001190****************                                                  00119000
001200 FILE SECTION.                                                    00120000
001300 FD TEMP-FILE                                                     00130000
001400      RECORDING MODE IS F                                         00140000
001500      LABEL RECORDS ARE OMITTED                                   00150000
001600      RECORD CONTAINS 80 CHARACTERS                               00160000
001700      BLOCK CONTAINS 0 RECORDS.                                   00170000
001800                                                                  00180000
001900 01   TEMP-FILE-RECORD        PIC X(80).                          00190000
002000                                                                  00200000
002100 WORKING-STORAGE SECTION.                                         00210000
002200**************************                                        00220000
002300                                                                  00230000
002400 01 WS-STATUS.                                                    00240000
002500    05 WS-FILE-STATUS             PIC X(2).                       00250000
002600                                                                  00260000
002700 01 WS-DISPLAY                    PIC X(80) VALUE SPACES.         00270000
002900                                                                  00290000
002910 LINKAGE SECTION.                                                 00291001
003000                                                                  00300000
003100 PROCEDURE DIVISION.                                              00310000
003200********************                                              00320000
003300                                                                  00330000
003310     DISPLAY 'NOW IN TEMP2'                                       00331001
003400     OPEN EXTEND TEMP-FILE                                        00340000
003500     IF WS-FILE-STATUS NOT = '00'                                 00350002
003600       DISPLAY 'ERRTEMP2: TEMP-FILE NOT OPEN. '                   00360000
003700               'FILE STATUS: ' WS-FILE-STATUS                     00370000
003800       GOBACK                                                     00380000
003900     END-IF                                                       00390000
004000                                                                  00400000
004100     MOVE 'NOW IN PROGRAM TEMP2.'     TO WS-DISPLAY               00410000
004200     MOVE WS-DISPLAY                  TO TEMP-FILE-RECORD         00420000
004300     WRITE TEMP-FILE-RECORD                                       00430000
004400     IF WS-FILE-STATUS NOT = '00'                                 00440002
004500       DISPLAY 'ERRTEMP2: ERROR WRITING TO TEMP-FILE. '           00450000
004600               'FILE STATUS: ' WS-FILE-STATUS                     00460000
004700       GOBACK                                                     00470000
004800     END-IF                                                       00480000
004900                                                                  00490000
005000     CLOSE TEMP-FILE                                              00500000
005100     IF WS-FILE-STATUS NOT = '00'                                 00510002
005200       DISPLAY 'ERRTEMP2: TEMP-FILE NOT CLOSED. '                 00520000
005300               'FILE STATUS: ' WS-FILE-STATUS                     00530000
005400       GOBACK                                                     00540000
005500     END-IF                                                       00550000
005600                                                                  00560000
006200     .                                                            00620000
006300                                                                  00630000
 

Go To Top


Send me an email