1$set ans85 mf noosvs 2***************************************************** 3* 4* (C) 1997-2002 Micro Focus International Ltd. 5* 6* EXTFILE.CBL 7* 8* This program demonstrates how to use EXTERNAL files 9* It calls WRITEFIL to write some records to a data 10* file and READFILE to read the same records back 11* (without opening or closing the file between calls 12* READFILE displays the output. 13* 14**************************************************** 15 identification division. 16 program-id. extfile. 17 environment division. 18 input-output section. 19 file-control. 20 select finfile assign to "isamfil.dat" 21 organization is indexed 22 record key is fd-tran-date 23 access mode is dynamic. 24 25 file section. 26 fd finfile 27 is external 28 record contains 50 characters. 29 01 fd-finfile-record. 30 05 fd-tran-date pic x(4). 31 05 fd-with-or-dep pic x(2). 32 05 fd-amount pic 9(5)v99. 33 34 procedure division. 35 main-line. 36 perform open-file 37 perform write-to-the-file 38 perform start-file 39 perform read-the-file 40 perform close-file 41 stop run. 42 43 open-file. 44 open i-o finfile. 45 46 start-file. 47 move 1111 to fd-tran-date 48 start finfile key = fd-tran-date. 49 50 write-to-the-file. 51 call "writefil". 52 53 read-the-file. 54 call "readfile". 55 56 close-file. 57 close finfile. 58 end program extfile. 59***************************************************** 60 identification division. 61 program-id. readfile. 62 environment division. 63 input-output section. 64 file-control. 65 select finfile assign to "isamfil.dat" 66 organization is indexed 67 record key is fd-tran-date 68 access mode is dynamic. 69 70 file section. 71 fd finfile 72 is external 73 record contains 50 characters. 74 01 fd-finfile-record. 75 05 fd-tran-date pic x(4). 76 05 fd-with-or-dep pic x(2). 77 05 fd-amount pic 9(5)v99. 78 79 working-storage section. 80 01 ws-end-of-file pic 9 value 0. 81 01 ws-subtotal pic s9(5)v99 value 0. 82 01 ws-total pic -(4)9.99. 83 84 procedure division. 85 main-line. 86 perform read-the-file. 87 perform until ws-end-of-file = 1 88 perform calculate-totals 89 perform read-the-file 90 end-perform. 91 perform display-output. 92 exit program. 93 stop run. 94 95 read-the-file. 96 read finfile next record at end 97 move 1 to ws-end-of-file. 98 99 calculate-totals. 100 evaluate fd-with-or-dep 101 when "WI" 102 subtract fd-amount from ws-subtotal 103 when "DE" 104 add fd-amount to ws-subtotal 105 end-evaluate. 106 107 display-output. 108 move ws-subtotal to ws-total 109 display "account balance = ", ws-total. 110 111 end program readfile. 112**************************************************** 113 identification division. 114 program-id. writefil. 115 environment division. 116 input-output section. 117 file-control. 118 select finfile assign to "isamfil.dat" 119 organization is indexed 120 record key is fd-tran-date 121 access mode is dynamic. 122 123 file section. 124 fd finfile 125 is external 126 record contains 50 characters. 127 01 fd-finfile-record. 128 05 fd-tran-date pic x(4). 129 05 fd-with-or-dep pic x(2). 130 05 fd-amount pic 9(5)v99. 131 132 procedure division. 133 main-line. 134 perform write-records 135 exit program 136 stop run. 137 138 write-records. 139 140* write a WIthdrawal record 141 move 1111 to fd-tran-date. 142 move 'WI' to fd-with-or-dep. 143 move 23.55 to fd-amount. 144 write fd-finfile-record. 145 146* write a DEposit record 147 move 2222 to fd-tran-date. 148 move 'DE' to fd-with-or-dep. 149 move 123.55 to fd-amount. 150 write fd-finfile-record. 151 152 end program writefil.