オペレーターが介入したり、ワークステーションや通信装置をオン / オフに構成変更したりすることなく、TRANSACTION ファイルの入出力エラーを回復できる場合もあります。
TRANSACTION ファイルに対して潜在的にリカバリー可能な入出力エラーが発生した場合、 アプリケーション・プログラム中で取る必要のあるリカバリー・ステップのほかにも、システムはエラー・リカバリーを試行するためのアクションを開始します。 システムが行うアクションの詳細については、「Communications Management」を参照してください。
入出力操作後にファイル状況を調べることによって、アプリケーション・プログラムは TRANSACTION ファイルの入出力エラーからリカバリーできるかどうかを判別できます。 ファイル状況キーの値が 9N の場合、アプリケーション・プログラムは入出力エラーから回復できます。 リカバリー手順は、アプリケーション・プログラムの一部としてコーディングしなければならず、TRANSACTION ファイルが装置を 1 つ獲得したのか、それとも複数の装置を接続したのかによって異なります。
複数の装置を獲得したディスプレイ・ファイルでは、以下のとおりです。
複数の装置を獲得した ICF ファイルでは、以下のとおりです。
複数の装置を獲得したディスプレイ・ファイルでは、以下のとおりです。
アプリケーション・プログラムのリカバリーの試行は、通常は 1 回だけでなければなりません。
リカバリーの試行が失敗した場合は、以下のとおりです。
TRANSACTION ファイルの入出力エラーを診断する際に役立つメジャー戻りコードとマイナー戻りコードについては、「ICF Programming」を参照してください。
図 92 に、エラー・リカバリー手順の例を示します。
....+....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'
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/RECOVERY ISERIES1 06/02/15 13:48:21 ページ 2
ソ ー ス
STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付
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
+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 V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/RECOVERY ISERIES1 06/02/15 13:48:21 ページ 3 STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付 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 V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/RECOVERY ISERIES1 06/02/15 13:48:21 ページ 4 STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付 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* (たとえば、データベース処理などを挿入します。) 016400 * * * * * ソ ー ス 仕 様 の 終 わ り * * * * *
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.