COBOL Explorer の例

以下は Fault Analyzer の COBOL Explorer 機能を使用する方法の例です。

「Fault Entry List」画面で「I」行コマンドを使用して COBOL プログラムにおける異常終了の障害項目を対話式に分析します。「Event Summary」を選択して、そこから COBOL プログラム・イベントを選択すると、サンプル COBOL Explorer イベント詳細画面 に示されている「イベント詳細」画面が表示されます。

1. サンプル 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 画面が表示されます。

2. サンプル COBOL Explorer「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 デバッグ・ビュー画面 に示されている画面が表示されます。

3. サンプル 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 グループ項目は最初は縮小表示されています。グループ項目を展開すれば、グループ・メンバーを表示できます。

手続き部を展開して、すべてのプロシージャーを表示します。その後でプロシージャーを個別に展開すれば、ソースを表示できます。

グローバル展開/縮小表示 (画面の上部にある「+」記号や「-」記号にカーソルを置いて Enter を押す) を使用すれば、ソース・プログラムをさらに絞り込むことができます。
  • 「Expand all」では、すべてのセクションおよびグループ項目が展開されます。(この状態で Find コマンドを使用すると、すべてのソース・レコード内が検索されることに注意してください。)
  • 「Collapse all」ではビューの初期表示に戻ります。
  • 「Comments」ではコメント行が展開/縮小表示されます。
  • 「Level 88」に関しては、レベル 88 項目が展開/縮小表示されます。展開時は上位項目のみが表示されます。
  • 「Redefines」に関しては、再定義が展開/縮小表示されます。展開時は上位項目のみが表示されます。

https://www.youtube.com/watch?v=ZXwsaBnfk2Q で COBOL Explorer を紹介するビデオをご覧ください。