In some cases, you can recover from I/O errors on TRANSACTION files without intervention by the operator, or the varying off/varying on of workstations or communications devices.
For potentially recoverable I/O errors on TRANSACTION files, the system initiates action in addition to the steps that must be taken in the application program to attempt error recovery. For more information about action taken by the system, see the Communications Management.
By examining the file status after an I/O operation, the application program can determine whether a recovery from an I/O error on the TRANSACTION file is possible. If the File Status Key has a value of 9N, the application program may be able to recover from the I/O error. A recovery procedure must be coded as part of the application program and varies depending on whether a single device was acquired by the TRANSACTION file or whether multiple devices were attached.
For a file with one acquired device:
For a display file with multiple devices acquired:
For an ICF file with multiple devices acquired:
For a display file with multiple devices acquired:
Application program recovery attempts should typically be tried only once.
If the recovery attempt fails:
For a description of major and minor return codes that may help in diagnosing I/O errors on the TRANSACTION file, see the ICF Programming manual.
Figure 92 gives an example of an error recovery procedure.
Figure 91. Example of Error Recovery Procedure -- DDS
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8 A* DISPLAY FILE FOR ERROR RECOVERY EXAMPLE A* A INDARA A R FORMAT1 CF01(01 'END OF PROGRAM') A* A 12 28'ENTER INPUT ' A INPUTFLD 5 I 12 42 A 20 26'F1 - TERMINATE' |
Figure 92. Example of Error Recovery Procedure
5722WDS V5R3M0 030905 LN IBM ILE COBOL CBLGUIDE/RECOVERY ISERIES1 03/09/15 13:48:21 Page 2 S o u r c e STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S COPYNAME CHG DATE 1 000100 IDENTIFICATION DIVISION. 2 000200 PROGRAM-ID. RECOVERY. 3 000300 ENVIRONMENT DIVISION. 4 000400 CONFIGURATION SECTION. 5 000500 SOURCE-COMPUTER. IBM-ISERIES. 6 000600 OBJECT-COMPUTER. IBM-ISERIES. 7 000700 INPUT-OUTPUT SECTION. 8 000800 FILE-CONTROL. 9 000900 SELECT RECOVFILE 10 001000 ASSIGN TO WORKSTATION-RECVFILE-SI 11 001100 ORGANIZATION IS TRANSACTION 12 001200 ACCESS MODE IS SEQUENTIAL 13 001300 FILE STATUS IS STATUS-FLD, STATUS-FLD-2 14 001400 CONTROL-AREA IS CONTROL-FLD. 15 001500 SELECT PRINTER-FILE 16 001600 ASSIGN TO PRINTER-QPRINT. 001700 17 001800 DATA DIVISION. 18 001900 FILE SECTION. 19 002000 FD RECOVFILE. 20 002100 01 RECOV-REC. 002200 COPY DDS-ALL-FORMATS OF RECVFILE. 21 +000001 05 RECVFILE-RECORD PIC X(5). <-ALL-FMTS +000002* INPUT FORMAT:FORMAT1 FROM FILE RECVFILE OF LIBRARY CBLGUIDE <-ALL-FMTS +000003* <-ALL-FMTS 22 +000004 05 FORMAT1-I REDEFINES RECVFILE-RECORD. <-ALL-FMTS 23 +000005 06 INPUTFLD PIC X(5). <-ALL-FMTS +000006* OUTPUT FORMAT:FORMAT1 FROM FILE RECVFILE OF LIBRARY CBLGUIDE <-ALL-FMTS +000007* <-ALL-FMTS +000008* 05 FORMAT1-O REDEFINES RECVFILE-RECORD. <-ALL-FMTS 002300 24 002400 FD PRINTER-FILE. 25 002500 01 PRINTER-REC. 26 002600 05 PRINTER-RECORD PIC X(132). 002700 27 002800 WORKING-STORAGE SECTION. 002900 28 003000 01 I-O-VERB PIC X(10). 29 003100 01 STATUS-FLD PIC X(2). 30 003200 88 NO-ERROR VALUE "00". 31 003300 88 ACQUIRE-FAILED VALUE "9H". 32 003400 88 TEMPORARY-ERROR VALUE "9N". 33 003500 01 STATUS-FLD-2 PIC X(4). 34 003600 01 CONTROL-FLD. 35 003700 05 FUNCTION-KEY PIC X(2). 36 003800 05 PGM-DEVICE-NAME PIC X(10). 37 003900 05 RECORD-FORMAT PIC X(10). 38 004000 01 END-INDICATOR PIC 1 INDICATOR 1 004100 VALUE B"0". 39 004200 88 END-NOT-REQUESTED VALUE B"0". 40 004300 88 END-REQUESTED VALUE B"1". 41 004400 01 USE-PROC-FLAG PIC 1 004500 VALUE B"1". 5722WDS V5R3M0 030905 LN IBM ILE COBOL CBLGUIDE/RECOVERY ISERIES1 03/09/15 13:48:21 Page 3 STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S COPYNAME CHG DATE 42 004600 88 USE-PROC-NOT-EXECUTED VALUE B"0". 43 004700 88 USE-PROC-EXECUTED VALUE B"1". 44 004800 01 RECOVERY-FLAG PIC 1 004900 VALUE B"0". 45 005000 88 NO-RECOVERY-DONE VALUE B"0". 46 005100 88 RECOVERY-DONE VALUE B"1". 47 005200 01 HEADER-LINE. 48 005300 05 FILLER PIC X(60) 005400 VALUE SPACES. 49 005500 05 FILLER PIC X(72) 005600 VALUE "ERROR REPORT". 50 005700 01 DETAIL-LINE. 51 005800 05 FILLER PIC X(15) 005900 VALUE SPACES. 52 006000 05 DESCRIPTION PIC X(25) 006100 VALUE SPACES. 53 006200 05 DETAIL-VALUE PIC X(92) 006300 VALUE SPACES. 54 006400 01 MESSAGE-LINE. 55 006500 05 FILLER PIC X(15) 006600 VALUE SPACES. 56 006700 05 DESCRIPTION PIC X(117) 006800 VALUE SPACES. 57 006900 PROCEDURE DIVISION. 58 007000 DECLARATIVES. 007100 HANDLE-ERRORS SECTION. 007200 USE AFTER STANDARD ERROR PROCEDURE ON RECOVFILE. (1) 007300 DISPLAY-ERROR. 59 007400 SET USE-PROC-EXECUTED TO TRUE. 60 007500 WRITE PRINTER-REC FROM HEADER-LINE 007600 AFTER ADVANCING PAGE 007700 END-WRITE 61 007800 MOVE "ERROR OCCURED IN" TO DESCRIPTION OF DETAIL-LINE. 62 007900 MOVE I-O-VERB TO DETAIL-VALUE OF DETAIL-LINE. 63 008000 WRITE PRINTER-REC FROM DETAIL-LINE 008100 AFTER ADVANCING 5 LINES 008200 END-WRITE 64 008300 MOVE "FILE STATUS =" TO DESCRIPTION OF DETAIL-LINE. 65 008400 MOVE STATUS-FLD TO DETAIL-VALUE OF DETAIL-LINE. (2) 66 008500 WRITE PRINTER-REC FROM DETAIL-LINE 008600 AFTER ADVANCING 2 LINES 008700 END-WRITE 67 008800 MOVE "EXTENDED FILE STATUS =" TO DESCRIPTION OF DETAIL-LINE. 68 008900 MOVE STATUS-FLD-2 TO DETAIL-VALUE OF DETAIL-LINE. 69 009000 WRITE PRINTER-REC FROM DETAIL-LINE 009100 AFTER ADVANCING 2 LINES 009200 END-WRITE 70 009300 MOVE "CONTROL-AREA =" TO DESCRIPTION OF DETAIL-LINE. 71 009400 MOVE CONTROL-FLD TO DETAIL-VALUE OF DETAIL-LINE. 72 009500 WRITE PRINTER-REC FROM DETAIL-LINE 009600 AFTER ADVANCING 2 LINES 009700 END-WRITE. 009800 CHECK-ERROR. 73 009900 IF TEMPORARY-ERROR AND NO-RECOVERY-DONE THEN 74 010000 MOVE "***ERROR RECOVERY BEING ATTEMPTED***" (3) 5722WDS V5R3M0 030905 LN IBM ILE COBOL CBLGUIDE/RECOVERY ISERIES1 03/09/15 13:48:21 Page 4 STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S COPYNAME CHG DATE 010100 TO DESCRIPTION OF MESSAGE-LINE 75 010200 WRITE PRINTER-REC FROM MESSAGE-LINE 010300 AFTER ADVANCING 3 LINES 010400 END-WRITE 76 010500 SET RECOVERY-DONE TO TRUE 77 010600 DROP PGM-DEVICE-NAME FROM RECOVFILE 78 010700 ACQUIRE PGM-DEVICE-NAME FOR RECOVFILE (4) 010800 ELSE 79 010900 IF RECOVERY-DONE THEN (5) 80 011000 MOVE "***ERROR AROSE FROM RETRY AFTER RECOVERY***" 011100 TO DESCRIPTION OF MESSAGE-LINE 81 011200 WRITE PRINTER-REC FROM MESSAGE-LINE 011300 AFTER ADVANCING 3 LINES 011400 END-WRITE 82 011500 MOVE "***PROGRAM ENDED***" 011600 TO DESCRIPTION OF MESSAGE-LINE 83 011700 WRITE PRINTER-REC FROM MESSAGE-LINE 011800 AFTER ADVANCING 2 LINES 011900 END-WRITE 84 012000 CLOSE RECOVFILE 012100 PRINTER-FILE 85 012200 STOP RUN 012300 ELSE 86 012400 SET NO-RECOVERY-DONE TO TRUE 012500 END-IF 012600 END-IF 87 012700 MOVE "***EXECUTION CONTINUES***" 012800 TO DESCRIPTION OF MESSAGE-LINE. 88 012900 WRITE PRINTER-REC FROM MESSAGE-LINE 013000 AFTER ADVANCING 2 LINES 013100 END-WRITE. 013200 END DECLARATIVES. 013300 013400 MAIN-PROGRAM SECTION. 013500 MAINLINE. 89 013600 MOVE "OPEN" TO I-O-VERB. 90 013700 OPEN I-O RECOVFILE 013800 OUTPUT PRINTER-FILE. 91 013900 PERFORM I-O-PARAGRAPH UNTIL END-REQUESTED. (6) 92 014000 CLOSE RECOVFILE 014100 PRINTER-FILE. 93 014200 STOP RUN. 014300 014400 I-O-PARAGRAPH. 94 014500 PERFORM UNTIL USE-PROC-NOT-EXECUTED OR NO-RECOVERY-DONE (7) 95 014600 MOVE "WRITE" TO I-O-VERB 96 014700 SET USE-PROC-NOT-EXECUTED TO TRUE 97 014800 WRITE RECOV-REC FORMAT IS "FORMAT1" 014900 INDICATOR IS END-INDICATOR 015000 END-WRITE 015100 END-PERFORM 98 015200 MOVE "READ" TO I-O-VERB. 99 015300 SET USE-PROC-NOT-EXECUTED TO TRUE. 100 015400 SET NO-RECOVERY-DONE TO TRUE. 101 015500 READ RECOVFILE FORMAT IS "FORMAT1" 015600 INDICATOR IS END-INDICATOR (8) 015700 END-READ 102 015800 IF NO-ERROR THEN 103 015900 PERFORM SOME-PROCESSING 016000 END-IF. 016100 016200 SOME-PROCESSING. 016300* (Insert some database processing, for example.) 016400 * * * * * E N D O F S O U R C E * * * * * |
(C) Copyright IBM Corporation 1992, 2005. All Rights Reserved.