COBOL Explorer の例
以下は Fault Analyzer の COBOL Explorer 機能を使用する方法の例です。
「Fault Entry List」画面で「I」行コマンドを使用して COBOL プログラムにおける異常終了の障害項目を対話式に分析します。「Event Summary」を選択して、そこから COBOL プログラム・イベントを選択すると、サンプル COBOL Explorer イベント詳細画面 に示されている「イベント詳細」画面が表示されます。
File View Services Help ─────────────────────────────────────────────────────────────────────────────── Event 1 of 1: Abend S0CB *** Point of Failure *** Line 1 Col 1 80 Command ===> ________________________________________________ Scroll ===> CSR JOBNAME: COBPERF6 SYSTEM ABEND: 0CF FAE1 2019/07/21 16 Abend Code. . . . . . . . . : S0CB Program-Interruption Code . : 000B (Decimal-Divide Exception) The divisor was zero in a signed decimal division. The source code below was executed via the following sequence of PERFORM statements: Source Line # 000105 PERFORM READ-FILE UNTIL END-OF-FILE = '1'. 000122 NOT AT END PERFORM PROCESS-VEHICLE 000133 PERFORM PROCESS-CAR 000151 PERFORM CALC-TAX. COBOL Source Code: Source Line # 000175 COMPUTE BASE-AMOUNT = PRICE / CC Data Field Declarations: Source Line # 000033 03 PRICE PIC 9(6). 000049 07 CC PIC 9(4). 000094 01 BASE-AMOUNT PIC 9(3)V99 COMP-3. Data Field Values: BASE-AMOUNT = 0.00 CC = 0 *** Cause of error *** PRICE = 50000 COBOL Explorer ❶ The listing file used for the above was found in MY.LISTING.COBOL(COBPERF6). ⋮
❶ に示されている COBOL Explorer ポイント・アンド・シュート・フィールドを選択すると、サンプル COBOL Explorer「Source Line and Data Values」画面 の Source Line and Data Values 画面が表示されます。
Source Line and Data Values Line 1 Col 1 76 Command ===> ________________________________________________ Scroll ===> CSR Source: 000175 COMPUTE BASE-AMOUNT = PRICE / CC Data Field Declarations: 000033 03 PRICE PIC 9(6). 000049 07 CC PIC 9(4). 000094 01 BASE-AMOUNT PIC 9(3)V99 COMP-3. Data Field Values: s BASE-AMOUNT = 0.00 s CC = 0 *** Cause of error *** ❷ s PRICE = 50000 Select data fields to use with source line to create view. *** Bottom of data.
❷ にあるデータ・フィールド「CC」がエラーの原因 (ゼロ除算) とみなされたため、このデータ・フィールドをさらに入念に調べることとします。これを行うには、他の 2 つのデータ・フィールド (「BASE-AMOUNT」および「PRICE」) をブランクで上書き入力して選択解除し、Enter を押します。その結果、サンプル COBOL Explorer デバッグ・ビュー画面 に示されている画面が表示されます。
File View Services Help ─────────────────────────────────────────────────────────────────────────────── Exploring COBOL Program COBEX1 Line 1 Col 1 80 Command ===> ________________________________________________ Scroll ===> CSR JOBNAME: COBEX1 SYSTEM ABEND: 0CB FAE1 2019/04/14 20:40:31 + Expand all / - Collapse all - Comments + Level 88 - Redefines + 000001 IDENTIFICATION DIVISION. + 000003 ENVIRONMENT DIVISION. + 000011 FILE SECTION. + 000017 WORKING-STORAGE SECTION. + 000026 01 VEHICLE-RECORD. 000038 03 SPECIFICATION. 000042 05 ENGINE. 000049 07 CC PIC 9(4). + 000081 01 HEADINGS REDEFINES VEHICLE-RECORD. + 000084 01 WS-REC REDEFINES VEHICLE-RECORD. + 000098 LINKAGE SECTION. + 000101 PROCEDURE DIVISION USING PARMS. 000105 PERFORM READ-FILE UNTIL END-OF-FILE = '1'. + 000119 READ-FILE. 000122 NOT AT END PERFORM PROCESS-VEHICLE + 000125 PROCESS-VEHICLE. 000126 MOVE FS-REC TO WS-REC. 000133 PERFORM PROCESS-CAR + 000149 PROCESS-CAR. 000151 PERFORM CALC-TAX. + 000173 CALC-TAX. 000175 COMPUTE BASE-AMOUNT = PRICE / CC 000178 COMPUTE BASE-AMOUNT = CC / CYLINDERS
上記デバッグ・ビュー画面は、プログラムがどのようにしてソース行に至ったのかを示す分岐分析と、選択された変数 (前の「Source Line and Data Values」画面で変数が複数選択された場合は、ここでも変数は複数です) を参照するすべてのソース行で構成されます。
このビューでは、異常終了ソース行 175 がプロシージャー CALC_TAX にあることが示されていて、分岐分析によりそのソース行への実行パスが明らかにされています。
選択された変数のほかにも、個々の項目を含むグループ項目に対する参照や、再定義も示されています。参照が変更されるソース行はいずれも強調表示されています (多くの場合、参照対象の変数を変更する変数は特に関心を集めるものであると考えられるため、そのようなソース行は新規ビューの作成に使用されます。ビューをスクロールするには、PF10/PF11 を使用してください)。
カーソルを適切な行に置いて Enter キーを押すこと (または「設定」 > 「ホットスポット」で使用可能な「Fnn」および「カーソル位置で ENTER」パーソナル・コミュニケーションズ・オプションを選択した場合はダブルクリックするだけ) で、次を選択できます。
- 強調表示された任意のソース行を選択して新規ビューを作成します。
- データ部セクション (WORKING-STORAGE SECTION など) を選択し、そのセクションの「Associated Storage Areas」画面を呼び出します (この画面には、すべての変数とその値が示されます)。また、「FILE SECTION」では、ISPF または File Manager を使用して、開かれているファイルを編集/参照/表示できます。
- データ項目を選択し、そのデータ項目に対する参照をすべて表示したり、その参照が行われたセクション/パラグラフを表示したりします。グループ項目およびグループ・メンバーに関しては、集約マップも表示されます。
- プロシージャー名を選択し、そのプロシージャーへの分岐をすべて表示したり、その分岐が行われたプロシージャーを表示したりします。
- 実行可能ソース行を選択し、そのソース行の変数の値を表示したり、オプションで、そのソース行や選択した変数の新規ビューを作成したりします。ソース行が分岐 (例: PERFORM、GO TO) の場合は、ターゲット・プロシージャーが展開されます (その後でプロシージャーを縮小表示すると分岐ステートメントに戻ります)。
- MQI 呼び出し (MQOPEN/MQGET/MQPUT/MQCLOSE) を選択して、File Manager WebSphere® MQ でキューを編集/参照したりキュー・マネージャーをリストしたりします。
セクション展開/縮小表示 (画面の左にある「+」記号や「-」記号にカーソルを置いて Enter を押す) は、プログラムの探索に使用されます。セクションは、FILE SECTION や WORKING-STORAGE SECTION などに加えて、手続き部における任意のセクションやパラグラフで構成されます。
データ部レベル 01 グループ項目は最初は縮小表示されています。グループ項目を展開すれば、グループ・メンバーを表示できます。
手続き部を展開して、すべてのプロシージャーを表示します。その後でプロシージャーを個別に展開すれば、ソースを表示できます。
- 「Expand all」では、すべてのセクションおよびグループ項目が展開されます。(この状態で Find コマンドを使用すると、すべてのソース・レコード内が検索されることに注意してください。)
- 「Collapse all」ではビューの初期表示に戻ります。
- 「Comments」ではコメント行が展開/縮小表示されます。
- 「Level 88」に関しては、レベル 88 項目が展開/縮小表示されます。展開時は上位項目のみが表示されます。
- 「Redefines」に関しては、再定義が展開/縮小表示されます。展開時は上位項目のみが表示されます。
https://www.youtube.com/watch?v=ZXwsaBnfk2Q で COBOL Explorer を紹介するビデオをご覧ください。