Now that an indexed file (idxfile.dat) has been created, you can reuse some of the previous code to perform other file handling operations, by updating the op-code.
read-all-records section. display "Open the file and read all the records". move OP-OPEN-INPUT to opcode move fcd--open-closed to fcd-open-mode perform call-file-handler if fcd-status-key-1 not = "0" display "Failed to open file" goback end-if move 1 to record-key move OP-START-EQUAL to opcode perform call-file-handler move OP-READ-NEXT to opcode perform until fcd-status-key-1 not = "0" perform call-file-handler if fcd-status-key-1 = "0" display ex-record(1:fcd-current-rec-len) end-if end-perform move OP-CLOSE to opcode perform call-file-handler if fcd-status-key-1 not = "0" display "Close failed" goback end-if .
When this section is performed, it opens the newly written-to indexed file (op-code OP-OPEN-INPUT), and then reads the records (op-codes OP-START-EQUAL to start at the first key, and OP-READ-NEXT to move on to the next record), displaying them to the screen; after which, the file is closed (op-code OP-CLOSE).
rewrite-first-record section. move OP-OPEN-I-O to opcode perform call-file-handler move 1 to record-key move OP-START-EQUAL to opcode perform call-file-handler move OP-READ-NEXT to opcode perform call-file-handler if fcd-status-key-1 = "0" move "Fred" to record-data move 9 to fcd-current-rec-len move OP-REWRITE to opcode perform call-file-handler if fcd-status-key-1 = "0" display "Record update : Success" else display "Record update : Failed" end-if end-if move OP-CLOSE to opcode perform call-file-handler if fcd-status-key-1 not = "0" display "Close failed" goback end-if .
This time the file is opened I-O (op-code OP-OPEN-I-O) and when the first record has been successfully read, it changes its contents (to "Fred") and rewrite the record (op-code OP-REWRITE); after which, the file is closed.
Now add the two paragraphs that will perform these read and rewrite sections.
*> Query the file to retrieve file information move low-values to fcd set fcd-filename-address to address of ex-filename move 80 to fcd-name-length move fcd--determine-org to fcd-organization move fcd--version-number to fcd-version set fcd-filename-address to address of ex-filename set fcd-idxname-address to address of ex-index-name set fcd-key-def-address to address of ex-keydef set fcd-record-address to address of ex-record move OP-QUERY-FILE to opcode perform call-file-handler perform display-file-status display "file open, ready to read" perform read-all-records perform rewrite-first-record.
*> Now read all the records again perform read-all-records goback stop run.
The final perform is to re-read the data file to display the edited record.
Finally, you are ready to compile and run your program.