Declaratives
 IDENTIFICATION            DIVISION.
    PROGRAM-ID. FILESTAT.
 DATA                      DIVISION.
 WORKING-STORAGE           SECTION.
?SECTION FILE-STAT-MESSAGE
 01 FILE-STAT-MESSAGE.
    05 FILE-STAT           PIC X(02)  VALUE "00".
       88 VALID-KEY                   VALUE "00".
    05 FILLER              PIC X(01)  VALUE ":" .
    05 FILE-GUARDIAN-ERR   PIC 9(04)  VALUE 0.
    05 FILLER              PIC X(01)  VALUE " ".
    05 FILE-STAT-MSG       PIC X(62)  VALUE " ".
 01 FILE-GUARDIAN-DESC     PIC X(80)  VALUE " ".
/*******************
 PROCEDURE DIVISION.
********************
?SECTION FILE-STAT-DECLARATIVES
 DECLARATIVES.
 INPUT-SECTION.  
     USE AFTER STANDARD ERROR PROCEDURE ON INPUT.
     PERFORM FILE-STAT-EDIT.
 I-O-SECTION.  
     USE AFTER STANDARD ERROR PROCEDURE ON I-O.
     PERFORM FILE-STAT-EDIT.
 OUTPUT-SECTION.  
     USE AFTER STANDARD ERROR PROCEDURE ON OUTPUT.
     PERFORM FILE-STAT-EDIT.
 EXTEND-SECTION.  
     USE AFTER STANDARD ERROR PROCEDURE ON EXTEND.
     PERFORM FILE-STAT-EDIT.
?SECTION FILE-STAT-EDIT    
 FILE-STAT-EDIT.
     IF FILE-STAT = "00"
        CONTINUE
     ELSE
        EVALUATE FILE-STAT
        WHEN "04"  MOVE "Short Record READ*"      TO FILE-STAT-MSG
        WHEN "05"  MOVE "FILE*"                   TO FILE-STAT-MSG
        WHEN "07"  MOVE "Fast I/O or Tape*"       TO FILE-STAT-MSG
        WHEN "10"  MOVE "End of File*"            TO FILE-STAT-MSG
        WHEN "14"  MOVE "End of Relative File*"   TO FILE-STAT-MSG
        WHEN "30"  MOVE "Operation*"              TO FILE-STAT-MSG
        WHEN "21"  MOVE "Key Changed on Rewrite*" TO FILE-STAT-MSG
        WHEN "22"  MOVE "Duplicate Key*"          TO FILE-STAT-MSG
        WHEN "23"  MOVE "Key not found*"          TO FILE-STAT-MSG
        WHEN "24"  MOVE "Write Past Eof*"         TO FILE-STAT-MSG
        WHEN "30"  MOVE "Temporary Error*"        TO FILE-STAT-MSG
        WHEN "34"  MOVE "Seq Write Past Eof*"     TO FILE-STAT-MSG
        WHEN "35"  MOVE "Open File Error*"        TO FILE-STAT-MSG
        WHEN "37"  MOVE "Device Open Error*"      TO FILE-STAT-MSG
        WHEN "38"  MOVE "Open Parameter Error*"   TO FILE-STAT-MSG
        WHEN "39"  MOVE "File SELECT Mismatch*"   TO FILE-STAT-MSG
        WHEN "41"  MOVE "File is NOT Closed*"     TO FILE-STAT-MSG
        WHEN "42"  MOVE "File is NOT Opened*"     TO FILE-STAT-MSG
        WHEN "43"  MOVE "Del/Rewrite not Read*"   TO FILE-STAT-MSG
        WHEN "44"  MOVE "Rewrite Size Differs*"   TO FILE-STAT-MSG
        WHEN "46"  MOVE "Read Next not Started*"  TO FILE-STAT-MSG
        WHEN "47"  MOVE "Read/Start Open*"        TO FILE-STAT-MSG
        WHEN "48"  MOVE "Open is incompatible*"   TO FILE-STAT-MSG
        WHEN "49"  MOVE "File not Opened I/O*"    TO FILE-STAT-MSG
        WHEN "90"  MOVE "Open Not Timed I/O*"     TO FILE-STAT-MSG
        WHEN "91"  MOVE "I-O*"                    TO FILE-STAT-MSG
        WHEN "97"  MOVE "Read/Start*"             TO FILE-STAT-MSG
        WHEN OTHER MOVE "Unknown condition*"      TO FILE-STAT-MSG.
         
        MOVE GUARDIAN-ERR                         TO FILE-GUARDIAN-ERR
        EVALUATE FILE-GUARDIAN-ERR
        WHEN  01 MOVE "EOF*"                      TO FILE-GUARDIAN-ERR-DESC
        WHEN  06 MOVE "$RECEIVE*"                 TO FILE-GUARDIAN-ERR-DESC
        WHEN  09 MOVE "Locked Record*"            TO FILE-GUARDIAN-ERR-DESC
        WHEN  10 MOVE "Duplicate Record*"         TO FILE-GUARDIAN-ERR-DESC
        WHEN  11 MOVE "Does Not Exist*"           TO FILE-GUARDIAN-ERR-DESC
        WHEN  14 MOVE "Device Does Not Exist*"    TO FILE-GUARDIAN-ERR-DESC
        WHEN  18 MOVE "Node Does Not Exist*"      TO FILE-GUARDIAN-ERR-DESC
        WHEN  23 MOVE "Out of Bounds*"            TO FILE-GUARDIAN-ERR-DESC
        WHEN  40 MOVE "Timed Out*"                TO FILE-GUARDIAN-ERR-DESC
        WHEN  45 MOVE "File is Full*"             TO FILE-GUARDIAN-ERR-DESC
        WHEN  46 MOVE "Bad Position*"             TO FILE-GUARDIAN-ERR-DESC
        WHEN  73 MOVE "Locked*"                   TO FILE-GUARDIAN-ERR-DESC
        WHEN OTHER MOVE "*"                       TO FILE-GUARDIAN-ERR-DESC.
        STRING FILE-STAT-MSG                         DELIMITED BY "*"
               ":"                                   DELIMITED BY SIZE
               FILE-GUARDIAN-ERR-DESC                DELIMITED BY "*"
                                                INTO FILE-STAT-MSG.
    END DECLARATIVES.
    END PROGRAM FILESTAT.
Saturday, October 2, 2010 11:38:49 AM, From: jim, To: Tandem