COBOL: Use of EXTERNAL mode in file OPEN
By Abhishek
Using the EXTERNAL clause for files allows separately compiled programs within the run unit to have access to common files. The advantages of using EXTERNAL files are
The following examples explains it all. The first program TEMP1 opens and writes to the file. It then calls another program called TEMP2 which also writes a record to the same file and returns back to TEMP1. TEMP1 then closes the file.
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 IS EXTERNAL 00230004
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
007400 PROCEDURE DIVISION. 00740000
007401******************** 00740100
012418 01241800
012419 DISPLAY 'NOW IN TEMP1.' 01241902
012420 OPEN OUTPUT TEMP-FILE 01242004
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
014500 DISPLAY 'ABOUT TO CALL TEMP2' 01450000
014510 CALL WS-TEMP2 01451000
014520 CANCEL WS-TEMP2 01452000
014521 DISPLAY 'RETURNED FROM TEMP2' 01452100
014522 01452204
014523 CLOSE TEMP-FILE 01452304
014524 IF WS-FILE-STATUS NOT = '00' 01452404
014525 DISPLAY 'ERRTEMP1: TEMP-FILE NOT CLOSED. ' 01452504
014526 'FILE STATUS: ' WS-FILE-STATUS 01452604
014527 STOP RUN 01452704
014528 END-IF 01452804
014529 01452904
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 IS EXTERNAL 00130003
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
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
004801 00480104
004810 MOVE 'GOING BACK TO TEMP1.' TO WS-DISPLAY 00481004
004820 MOVE WS-DISPLAY TO TEMP-FILE-RECORD 00482004
004830 WRITE TEMP-FILE-RECORD 00483004
004840 IF WS-FILE-STATUS NOT = '00' 00484004
004850 DISPLAY 'ERRTEMP2: ERROR WRITING TO TEMP-FILE. ' 00485004
004860 'FILE STATUS: ' WS-FILE-STATUS 00486004
004870 GOBACK 00487004
004880 END-IF 00488004
004900 GOBACK 00490003
006200 . 00620000
006300 00630000
Send me an email