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
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
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
Send me an email