バージョン 4.2.5
 —  ユーティリティ  —

DBLOG トレース画面

[DBLOG Trace]画面には、Natural DBLOG バッファに保持される Adabas コマンド、DL/I コールと SYNC/ROLB コール、または SQL ステートメントに関して記録されたログデータが表示されます。

以下のトピックについて説明します。


Adabas コマンド用の[DBLOG Trace]画面

Adabas コマンド用の[DBLOG Trace]の呼び出し

次の例は、Adabas コマンド用の[DBLOG Trace]画面を呼び出す手順を示しています。

  1. 次の Natural プログラムを作成します。

    DEFINE DATA LOCAL           
    1 EMP-VIEW VIEW OF EMPLOYEES
      2 NAME                    
    END-DEFINE                  
    READ (3) EMP-VIEW BY NAME   
      DISPLAY NAME              
    END-READ                    
    END
  2. 次の Natural システムコマンドを入力します。

    TEST DBLOG

    DBLOG started now」というメッセージが表示されます。

  3. 次の Natural システムコマンドを入力します。

    RUN

    ソースエリアの Natural プログラムが実行されます。

  4. 次のコマンドを再度入力します。

    TEST DBLOG

    ロギングが非アクティブになり、下記の例のような[DBLOG Trace]画面が表示されます。

    14:14:23             ***** NATURAL TEST UTILITIES *****              2008-07-31
    User SAG                      - DBLOG Trace -                  Library SAG     
    M   No Cmd   DB   FNR  Rsp        ISN        ISQ  CID CID(Hex) OP Pgm      Line
    _    1 L3    10   316            5555             &?? 00500101  A LOGTEST  0050
    _    2 L3    10   316            5557             &?? 00500101  A LOGTEST  0050
    _    3 L3    10   316            2108             &?? 00500101  A LOGTEST  0050
    _    4 RC    10   316                             &?? 00500101 SI LOGTEST  0050
    _    5 RC    10                                       00000000 F  LOGTEST  0080
                                                                                   
                                                                                   
    Command ===>                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Print Exit        Posi  --    -     +     ++                Canc

[DBLOG Trace]画面の列およびコマンド

このセクションでは、[DBLOG Trace]画面に表示されるフィールドの列、およびこの画面またはこの画面から開かれたバッファウィンドウをスクロールする場合に使用できるコマンドについて説明します(「Adabas バッファの表示」を参照)。 コマンドを実行するには、PF キーを押すか、またはコマンド行にダイレクトコマンドを入力します。

PF キー 説明
ダイレクトコマンド
M   バッファの詳細情報が示される追加ウィンドウを呼び出す行コマンドの入力オプション(「Adabas バッファの表示」を参照)。
No   シーケンス番号。 コマンドは、実行された順序で表示されます。
Cmd   Adabas コマンド。
DB   データベース ID。
FNR   ファイル番号。
Rsp   Adabas レスポンスコード。
ISN   レコードの内部シーケンス番号。
ISQ   ISN 数。
CID   コマンド ID。
CID (Hex)   16 進形式のコマンド ID。
OP   Adabas コマンドオプションの 1 と 2。
Pgm   プログラム名。
Line   ソースコード行番号。
  PF2 スクリーンショットのハードコピーを印刷します。
  PF3 [DBLOG Trace]画面を終了するか、バッファウィンドウを閉じます。 現在のログレコードは Natural DBLOG バッファに保持されます。
  PF5

ログエントリを画面最上部に移動します。
[M]で、列[No]にリストされた目的のコマンドとシーケンス番号の隣にカーソルを置いて PF5 を選択します。
ログの位置が変更され、選択したシーケンス番号が先頭になります。

  PF6

または

--

リストの先頭、またはバッファウィンドウ内のデータの先頭までスクロールします。
  PF7

または

-

リストまたはバッファウィンドウ内のデータを 1 ページ上方にスクロールします。
  PF8

または

+

リストまたはバッファウィンドウ内のデータを 1 ページ下方にスクロールします。
  PF9

または

++

リストの末尾、またはバッファウィンドウ内のデータの末尾までスクロールします。
  PF10 複数のレコードバッファ/フォーマットバッファが含まれるバッファウィンドウでのみ使用できます。

前のレコードバッファ/フォーマットバッファを表示します。

  PF11 複数のレコードバッファ/フォーマットバッファが含まれるバッファウィンドウでのみ使用できます。

次のレコードバッファ/フォーマットバッファを表示します。

  PF12 Natural DBLOG バッファをクリアし、ロギングを非アクティブにします。

Adabas バッファの表示

デフォルトでは、Adabas コントロールブロックが記録されます。 1 つ以上の Adabas バッファを記録する場合は、「Adabas バッファの指定」の説明に従ってロギング機能を実行する前に、[DBLOG Menu]で必要なバッファをマークする必要があります。 例えば、[DBLOG Menu]でフォーマットバッファのロギングのみがマークされている場合、[Format Buffer]ウィンドウのみ表示できます。[Record Buffer]ウィンドウは表示できません。

Start of instruction set コントロールブロックまたはバッファの情報を表示するには

  1. 必要なコマンドの横にある入力フィールドに、必要なバッファに対応する行コマンドを入力し、Enter キーを押します。

    行コマンド 必要なバッファ
    C コントロールブロック
    F フォーマットバッファ
    R レコードバッファ
    S サーチバッファ
    V バリューバッファ
    I ISN バッファ
    . ピリオド(「.」)を入力すると、[DBLOG Trace]画面が終了します。 現在のログレコードは Natural DBLOG バッファに保持されます。

    ウィンドウが開き、要求したコントロールブロックまたはバッファのログデータが表示されます。 複数の行コマンドを入力した場合は、PF3 キーを押すと、次のコマンドのコントロールブロックまたはバッファを表示できます。

    レコードバッファのデータが表示されたウィンドウの例を次に示します。

    16:50:05             ***** NATURAL TEST UTILITIES *****              2008-08-01
    User SAG                      - DBLOG Trace -                  Library SAG     
    M   No Cmd   DB   FNR  Rsp        ISN        ISQ  CID CID(Hex) OP Pgm      Line
    _    1 RC    10                                       00000000 F  ATEST    0220
    _    2 S1 20000    50               1       2232 ? ?? 02000101    ADATEST  0200
    R    3 L1 20000    50               1       2232      40404040    ADATEST  0200
    _ +------------------Page 1 of 1 (logged range:0x-0x4F)-------------------+ 200
    _ ! _____  Seq No .. 3     Record Buffer1/13 (length:0x7A)               ! 340
    _ ! 0000 * C1C4D2C9 D5E2D6D5 40404040 40404040 * ADKINSON         * 0000  ! 350
    _ ! 0010 * 40404040 0000000B 00000001 40404040 *        ?   ?     * 0010  ! 350
    _ ! 0020 * 40404040 00000000 00000000 00000000 *                  * 0020  ! 350
      ! 0030 * 00000000 00000000 00000000 00000000 *                  * 0030  !    
      ! 0040 * 00000000 F0F0F0F0 F0F0F0F0 40404040 *     00000000     * 0040  !    
      +-----------------------------------------------------------------------+    
                                                                                  
                                                                                   
    Command ===>                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help        Exit              --    -     +     ++    <     >     Canc

    次の表に、バッファウィンドウに表示されるフィールドとその説明を示します。

    フィールド 説明
    Page 現在のページの番号と、バッファに生成された合計ページ数(上の例では、1 of 1
    logged range 実際にログに記録されたバッファ長(16 進形式)(上の例では、0x0-0x4F
    Seq No コマンドのシーケンス番号。 上の例では、このコマンドは 3 番目に実行されています(3)。
    buffer-type

    num-current /num-total

    buffer-type は、要求されたバッファのタイプです。

    また、フォーマットバッファまたはレコードバッファの場合は、レコードバッファまたはフォーマットバッファの数も表示されます。

     
    num-current 現在表示されているレコードバッファ/フォーマットバッファの数を表します。
     
    num-total ログに記録されたレコードバッファ/フォーマットバッファの合計数を表します。

    拡張 Adabas コントロールブロック(ACBX)を使用するデータベースコールの場合、複数のフォーマットバッファ/レコードバッファがログに記録されます。

    上の例は、合計 13 レコードのうちの最初のレコード(1 / 13)を示しています。

    ACBX の詳細については、Adabas のメインフレームドキュメントの「Adabas コントロールブロックの構造(ACB および ACBX)」を参照してください。

    length 16 進形式の合計レコード長(上の例では、0x7A
    _____
    [Seq No]の横の入力フィールドに、次のいずれかの行コマンドを入力できます。
     
    C コントロールブロックを表示します。
    F

    または

    R
    フォーマットバッファ(F)またはレコードバッファ(R)を表示します。

    フォーマットバッファとレコードバッファのペアが存在する場合、レコードバッファに「F」を入力すると、一致するレコードバッファが表示され、フォーマットバッファに「R」を入力すると、一致するフォーマットバッファが表示されます。 例えば、現在 2 番目のレコードバッファが表示されている場合に「F」を入力すると、対応する 2 番目のフォーマットバッファが含まれるウィンドウが表示されます。

     
    I ISN バッファを表示します。
    S サーチバッファを表示します。
    V バリューバッファを表示します。
     
    buffer-number 表示するレコードバッファ/フォーマットバッファの数を入力できます。

    下記の手順 2 も参照してください。

     
    . ピリオド(「.」)を入力すると、現在のバッファウィンドウが閉じます。
  2. 複数のレコードバッファ/フォーマットバッファが含まれるレコードバッファ/フォーマットバッファウィンドウでは、次のいずれかの方法を使用して、各レコードバッファ/フォーマットバッファを表示できます。

    PF10 キーを押すと、前のレコードバッファ/フォーマットバッファが表示されます。

    または:
    PF11 キーを押すと、次のレコードバッファ/フォーマットバッファが表示されます。

    または:
    [_____]入力フィールドに、表示するレコードバッファ/フォーマットバッファに対応する番号を入力します。

マルチフェッチを使用する Adabas コマンドの表示

FINDREAD、または HISTOGRAM ステートメントで MULTI-FETCH 節が使用されている場合、一連のレコードを取得する Adabas コマンドのみが実際にデータベースにアクセスします。 取得されたレコードは、そのレコードがデータベースループの実行中にフェッチされた、マルチフェッチバッファに移動されます。 次のデータベースコールは、次の一連のレコードに対してのみ行われます。 詳細については、『プログラミングガイド』の「MULTI-FETCH 節」を参照してください。

[DBLOG Trace]画面に、データベースコールと非データベースコールの両方がリストされます。データベースコールは、[OP]列の最初の位置に M でマークされ、マルチフェッチバッファの非データベースコールは小なり記号(<)でマークされます。 次の例を参照してください。

マルチフェッチを使用する Adabas コマンドの例

MFETCH という名前の次の Natural プログラムに対して DBLOG を実行します。

DEFINE DATA LOCAL                                        
1 EMP-VIEW VIEW OF EMPLOYEES                             
  2 NAME                                                 
END-DEFINE                                               
*                                                        
READ (5)  MULTI-FETCH OF 3  EMP-VIEW BY NAME = 'ADKINSON'
  DISPLAY *COUNTER NAME                                  
END-READ                                                 
END

次のような[DBLOG Trace]画面が表示されます。

10:04:46             ***** NATURAL TEST UTILITIES *****              2008-07-24
User SAG                      - DBLOG Trace -                  Library SAG     
M   No Cmd   DB   FNR  Rsp        ISN        ISQ  CID CID(Hex) OP Pgm      Line
_    1 L3    10   316            2108             -?? 00600101 MA MFETCH   0060
_    2 L3    10   316            2109             -?? 00600101 <A MFETCH   0060
_    3 L3    10   316            2110             -?? 00600101 <A MFETCH   0060
_    4 L3    10   316            2111             -?? 00600101 MA MFETCH   0060
_    5 L3    10   316            2112             -?? 00600101 <A MFETCH   0060
_    6 RC    10   316                             -?? 00600101 SI MFETCH   0060
_    7 RC    10                                       00000000 F  MFETCH   0090
                                                                               
                                                                               
Command ===>                                                                   
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
      Help  Print Exit        Posi  --    -     +     ++                Canc

シーケンス番号 1 および 4 として示された L3 コマンドは、データベースから一連のレコードを取得し([OP]列に M で示されています)、最初のレコードをプログラムに返します。 これ以外のレコードは、マルチフェッチバッファにキャッシュされます。

シーケンス番号 23、および 5 として示された L3 コマンドは、マルチフェッチバッファからレコードを取得し([OP]列に < で示されています)、そのレコードをプログラムに返します。

マルチフェッチデータベースコールのレコードバッファの内容

マルチフェッチを使用するデータベースコールのレコードバッファには、データベースから取得されたすべてのレコードのデータが含まれます。 これらは、処理された順序でリストされます。

Adabas では、一連のレコードをロードするとき、最初のバイトから、データベースから返されたレコードまでの範囲のレコードバッファが上書きされます。 バッファに残っているスペースは消去されず、前のデータベースコール中にロードされた古いレコードのデータが含まれています。 このため、例えば NAME(A20) として定義されたフィールドが読み込まれ、マルチフェッチ係数として 5 が使用された場合、レコードバッファの長さは 100 (20 * 5) バイトとなります。 データベースから 3 つのレコードのみが返された場合は、レコードバッファにはこの最初の 3 レコード(バイト 1~60)のみが格納され、最後の 2 レコード(バイト 61~100)は変更されません。

Top of page

DL/I コール用の[DBLOG Trace]画面

DL/I コール用の[DBLOG Trace]の呼び出し

次の例は、DL/I コール用の[DBLOG Trace]画面を呼び出す手順を示しています。

  1. 次の Natural プログラムを作成します。

    DEFINE DATA LOCAL
    01 COURSE VIEW OF DNDL01-COURSE
      02 COURSEN (A3)
      02 TITLE (A33)
    01 OFFERING VIEW OF DNDL01-OFFERING
      02 COURSEN-COURSE (A3)
      02 LOCATION (A31)
    END-DEFINE
    READ (5) COURSE BY COURSEN
      IF TITLE = 'NATURAL'
        FIND (1) OFFERING WITH COURSEN-COURSE = COURSEN
          MOVE 'DARMSTADT' TO LOCATION
          UPDATE
          END OF TRANSACTION
        END-FIND
      END-IF
    END-READ
    END
  2. 次の Natural システムコマンドを入力します。

    TEST DBLOG D

    DBLOG started now」というメッセージが表示されます。

  3. 次の Natural システムコマンドを入力します。

    RUN

    ソースエリアに含まれる Natural プログラムが実行されます。

  4. 次のコマンドを再度入力します。

    TEST DBLOG D

    ロギングが非アクティブになり、DL/I コール用の[DBLOG Trace]画面が表示されます。

    User SAG                        - DBLOG Trace -                Library SAG     
    No  Func PCB NS SC DBD/PSB    First SSA (truncated)   IOA (trunc) Program  Line
    --- ---- --- -- -- -------- ------------------------- ----------- -------- ----
      1 PCB            PCNQA42                                        LOGDL1   0090
      2 GU   1   1     DNDL01   COURSE  *--(COURSEN =>     .          LOGDL1   0090
      3 GN   1   1     DNDL01   COURSE  *--(COURSEN =>     .Z01       LOGDL1   0090
      4 GN   1   1     DNDL01   COURSE  *--(COURSEN =>     .001       LOGDL1   0090
      5 GN   1   1     DNDL01   COURSE  *--(COURSEN =>     .004NATURA LOGDL1   0090
      6 GHNP 1   2     DNDL01   COURSE  *- (COURSEN  =004  ?010791DAR LOGDL1   0110
      7 REPL 1         DNDL01                              ?010791DAR LOGDL1   0130
      8 SYNC                                                          LOGDL1   0140
      9 PCB            PCNQA42                                        LOGDL1   0110
     10 GU   1   1     DNDL01   COURSE  *--(COURSEN = 004  .004NATURA LOGDL1   0110
     11 GHNP 1   2     DNDL01   COURSE  *--(COURSEN = 004  ?010791DAR LOGDL1   0110
     12 GN   1   1     DNDL01   COURSE  *--(COURSEN =>     +110       LOGDL1   0090
    ***** End of Log *****                                                         
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    NEXT                                                               LIB=SAG

DBLOG トレース画面の列

次のセクションで、[DBLOG Trace]画面で DL/I コール用に提供されているフィールドの列について説明します。

説明
No シーケンス番号。 コマンドは、実行された順序で表示されます。
Func DL/I 機能。
PCB PCB 番号。
NS SSA の数。
SC DL/I ステータスコード。
DBD/PSB

DB コールの場合、DBD 名。
スケジューリングコールの場合、PSB 名。

First SSA 最初の SSA の最初の 25 バイト。
IOA 最初の I/O エリアの最初の 13 バイト。
Program Natural プログラム名。
Line ソースコード行番号。

Top of page

SQL ステートメント用の[DBLOG Trace]画面

SQL ステートメント用の[DBLOG Trace]の呼び出し

次の例は、SQL ステートメント用の[DBLOG Trace]画面を呼び出す手順を示しています。

  1. 次の Natural プログラムを作成します。

    DEFINE DATA LOCAL                             
    01 EMP VIEW OF DSN8810-EMP                    
      02 EMPNO                                    
      02 FIRSTNME                                 
      02 MIDINIT                                  
      02 LASTNAME                                 
      02 EDLEVEL                                  
      02 SALARY                                   
    01 EMPPROJACT VIEW OF DSN8810-EMPPROJACT      
      02 EMPNO                                    
      02 PROJNO                                   
      02 ACTNO                                    
      02 EMPTIME                                  
    END-DEFINE                                    
    FIND (1) EMP WITH EMPNO > '000300'            
      FIND (1) EMPPROJACT WITH EMPNO = EMPNO(0150)
        MOVE 0.75 TO EMPTIME                      
        UPDATE                                    
      END-FIND                                    
      ADD 1 TO EDLEVEL                            
      UPDATE                                      
    END-FIND                                      
    *                                             
    FIND (1) EMP WITH EMPNO > '000300'            
      FIND (1) EMPPROJACT WITH EMPNO = EMPNO(0240)
        DISPLAY EMPPROJACT EMP.EDLEVEL            
      END-FIND                                    
    END-FIND
    ROLLBACK
    END
  2. 次の Natural システムコマンドを入力します。

    TEST DBLOG Q

    DBLOG started now」というメッセージが表示されます。

  3. 次の Natural システムコマンドを入力します。

    RUN

    ソースエリアの Natural プログラムが実行されます。

  4. 次のコマンドを再度入力します。

    TEST DBLOG Q

    ロギングが非アクティブになり、下記の例のような SQL ステートメント用の[DBLOG Trace]画面が表示されます。

    11:28:58              ***** NATURAL Test Utilities *****             2008-07-28
    User SAG                        - DBLOG Trace -                Library SAG     
    M No   R SQL Statement (truncated)     CU SN SREF M Typ SQLC/W Program  Line LV
    _    1   SELECT EMPNO,FIRSTNME,MIDINIT 01 01 0150 D DB2        LOGSQL   0150 01
    _    2     FETCH CURSOR NEX            01 01 0150 D DB2        LOGSQL   0150 01
    _    3   SELECT EMPNO,PROJNO,ACTNO,EMP 02 02 0160 D DB2        LOGSQL   0160 01
    _    4     FETCH CURSOR NEX            02 02 0160 D DB2        LOGSQL   0160 01
    _    5   UPDATE DSN8810.EMPPROJACT SET 02 03 0160 D DB2        LOGSQL   0180 01
    _    6   CLOSE CURSOR                  02 02 0160 D DB2        LOGSQL   0160 01
    _    7   UPDATE DSN8810.EMP SET EDLEVE 01 04 0150 D DB2        LOGSQL   0210 01
    _    8   CLOSE CURSOR                  01 01 0150 D DB2        LOGSQL   0150 01
    _    9   SELECT EMPNO,FIRSTNME,MIDINIT 05 05 0240 D DB2        LOGSQL   0240 01
    _   10     FETCH CURSOR NEX            05 05 0240 D DB2        LOGSQL   0240 01
    _   11   SELECT EMPNO,PROJNO,ACTNO,EMP 06 06 0250 D DB2        LOGSQL   0250 01
    _   12     FETCH CURSOR NEX            06 06 0250 D DB2        LOGSQL   0250 01
    _   13   CLOSE CURSOR                  06 06 0250 D DB2        LOGSQL   0250 01
    _   14   CLOSE CURSOR                  05 05 0240 D DB2        LOGSQL   0240 01
    _   15   ROLLBACK                      00 00 0000 D DB2        LOGSQL   0290 01
    _                                                                              
    _                                                                              
    Command ===>                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Print Exit  Top   Posi  Bot    -     +                      Canc

[DBLOG Trace]画面の列およびコマンド

次のセクションで、[DBLOG Trace]画面で SQL ステートメント用に提供されているフィールドの列およびコマンドについて説明します。 コマンドを実行するには、PF キーを押すか、またはコマンド行にダイレクトコマンドを入力します。

PF キー 説明
ダイレクトコマンド
M  
行コマンドの入力オプション:
   
E EXPLAIN コマンドを実行します。このコマンドにより、DB2 または SQL/DS オプティマイザでの SQL ステートメントの実行方法の選択肢に関する情報が提供されます。

Natural for DB2』ドキュメントの「DB2 EXPLAIN コマンド」および『Natural for SQL/DS』ドキュメントの「EXPLAIN コマンド」も参照してください。

   
L LISTSQL コマンドを実行します。このコマンドにより、オブジェクトのソースコード内の Natural ステートメントと変換後の対応する SQL ステートメントがリストされます。 SQL ステートメントは、Natural DBLOG バッファから取得されたライブラリ名、プログラム名、および行番号で識別されます。

Natural for DB2』ドキュメントの「LISTSQL コマンド」および『Natural for SQL/DS』ドキュメントの「LISTSQL コマンド」も参照してください。

 

重要:
どちらのコマンドも Natural システムファイルから情報を取得するため、TEST DBLOG Q コマンドでロギング機能が実行された後で対応する Natural プログラムが再カタログ化された場合、望ましくない結果が発生することがあります。 このような望ましくない結果は、ロギング後に変更されたステートメントによって引き起こされます。

No   シーケンス番号。ステートメントは、実行された順序で表示されます。
R   DB2 に Natural ファイルサーバーが使用されている場合にのみ適用されます。

対応するステートメントの前のアスタリスクによって、再選択されたことを示します。それ以外の場合は、列は空のままです。

Natural for DB2』ドキュメントの「ファイルサーバーの概念」も参照してください。

SQL ステートメント   ログに記録された SQL ステートメントの最初の 29 文字。
CU   カーソル番号。
SN   内部ステートメント番号。
SREF   ステートメント参照番号。
M   モード:ダイナミックは D、スタティックは S
Typ   データベースタイプ:DB2 または /DS。
SQLC/W   SQLCA の SQLCODE フィールドの SQL リターンコード、または SQLCODE0 の場合は SQLCA の SQLWARN0 フィールドの警告。
Pgm   Natural プログラム名。
Line   ソースコード行番号。
LV   プログラムレベル。
  PF2 スクリーンショットのハードコピーを印刷します。
  PF3 [DBLOG Trace]を終了します。 現在のログレコードは Natural DBLOG バッファに保持されます。
  PF4 リストの先頭までスクロールします。
  PF5 ログエントリを画面最上部に移動します。列[M]で、列[No]にリストされた目的のコマンドとシーケンス番号の隣にカーソルを置いて PF5 キーを選択します。 ログの位置が変更され、選択したシーケンス番号が先頭になります。
  PF6 リストの末尾までスクロールします。
  PF7

または

-

リストを 1 ページ上方にスクロールします。
  PF8

または

+

リストを 1 ページ下方にスクロールします。
  PF12 Natural DBLOG バッファをクリアし、ロギングを非アクティブにします。

Top of page