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.