The example code that follows illustrates how file status checking is performed: first the first byte (status key 1) is interrogated; then, if more information is required, the second byte (status key 2) is interrogated.
select recseq assign to "recseq.dat" file status is ws-file-status organization is record sequential. ... file section. fd recseq record contains 80 characters. 01 recseq-fd-record pic x(80). ... working-storage section. 01 ws-file-status. 05 status-key-1 pic x. 05 status-key-2 pic x. 05 binary-status redefines status-key-2 pic 99 comp-x. ... procedure division. ... perform check-status. ... check-status. evaluate status-key-1 when "0" next sentence when "1" display "end of file reached" perform check-eof-status when "2" display "invalid key" perform check-inv-key-status when "3" display "permanent error" perform check-perm-err-status when "4" display "logic error" when "9" display "run-time-system error" perform check-mf-error-message end-evaluate. ... check-eof-status. if status-key-2 = "0" display "no next logical record" end-if. ... check-inv-key-status. evaluate status-key-2 when "2" display "attempt to write dup key" when "3" display "no record found" end-evaluate. ... check-perm-err-status. if status-key-2 = "5" display "file not found" end-if. ... check-mf-error-message. evaluate binary-status when 002 display "file not open" when 007 display "disk space exhausted" when 013 display "file not found" when 024 display "disk error " when 065 display "file locked " when 068 display "record locked " when 039 display "record inconsistent" when 146 display "no current record " when 180 display "file malformed " when 208 display "network error " when 213 display "too many locks " when other display "not error status " display binary-status end-evaluate.