DB2 ストアード・プロシージャー・プログラムの準備

ここでは、DB2® ストアード・プロシージャーを Debug Tool でのデバッグ用に準備するために、収集する必要がある情報と実行しなければならないステップについて説明します。Debug Tool は、PROGRAM TYPE が MAIN または SUB であるストアード・プロシージャーをデバッグできます。準備ステップは同じです。

作業を始める前に、サポートされているデバッグ・モードを使用できることを確認してください。Debug Tool は、アセンブラー、C、C++、COBOL、および Enterprise PL/I で作成されたストアード・プロシージャーを、以下のすべてのデバッグ・モードでデバッグできます。

DB2 ユニバーサル・データベース (OS/390 版および z/OS 版) アプリケーション・プログラミングおよび SQL ガイド」の『ストアード・プロシージャーの作成』トピックを参照して、ストアード・プロシージャーが外部のストアード・プロシージャーの形式と制約事項に準拠していることを確認します。 Debug Tool は外部のストアード・プロシージャーのみのデバッグをサポートしています。

DB2 ストアード・プロシージャーを準備するには、以下のステップを実行します。

  1. DB2 システム管理者が、「Debug Tool カスタマイズ・ガイド」のセクション『DB2 ストアード・プロシージャーをデバッグするための環境の準備』で説明されている作業を完了していることを確認します。 DB2 システム管理者は、ストアード・プロシージャーを実行するアドレス・スペースを定義し、DB2 プログラムに適切な RACF® 読み取り権限を付与し、アドレス・スペースをリサイクルして更新が有効になるようにする必要があります。
  2. デバッグする DB2 ストアード・プロシージャーの作成に使用されるパラメーターを十分理解していない場合は、次の例のように SELECT ステートメントを入力してこの情報を取得できます。
    SELECT PROGRAM_TYPE,STAYRESIDENT,RUNOPTS,LANGUAGE
       FROM SYSIBM.SYSROUTINES
       WHERE NAME='name_of_DB2_stored_procedure';
  3. call_sub 関数で呼び出されないプログラム・タイプ SUB のストアード・プロシージャーで、システム・プログラマーまたは DB2 システム管理者が WLM アドレス・スペースを定義する際、NUMTCB の値を 1 に設定することを確認します。NUMTCB では、WLM アドレス・スペース内で同時に稼働できるタスク制御ブロック (TCB) の最大数を指定します。ストアード・プロシージャーは、そのストアード・プロシージャーを開始した TCB 以外の TCB で稼働している場合は、デバッグできません。NUMTCB の値を 1 に設定すると、ストアード・プロシージャーが別の TCB で実行されないようにすることができます。
  4. ストアード・プロシージャーを定義する際、以下の項目を確認します。
  5. プログラムをデバッグするための準備 の説明に従って、プログラムをコンパイルまたはアセンブルします。Enterprise PL/I プログラムでは、RENT コンパイラー・オプションも指定します。
  6. 以下のリストを確認して、TEST ランタイム・オプションの指定方法を判別します。
  7. 言語環境プログラム EQADDCXT 出口ルーチンを使用して TEST ランタイム・オプションを指定するには、EQADDCXT ユーザー出口のコピーを準備します (言語環境プログラム ユーザー出口を使用した TEST ランタイム・オプションの指定 の説明を参照)。

    call_sub 関数で呼び出されるプログラム・タイプ SUB の既存のストアード・プロシージャーをデバッグする場合は、RUN OPTIONS パラメーターに NOTEST ランタイム・オプションを使用するようにストアード・プロシージャーを変更する必要があることに注意してください。次の例では、ALTER PROCEDURE ステートメントを使用してこの変更を行う方法を示します。

    ALTER PROCEDURE name_of_DB2_stored_procedure RUN OPTIONS 'NOTEST';
  8. DB2 カタログを使用して TEST ランタイム・オプションを指定するには、以下の手順を実行します。
    1. ストアード・プロシージャーを作成していない場合は、CREATE PROCEDURE ステートメントを使用してストアード・プロシージャーを作成します。次の例を参考のために使用できます。
      CREATE PROCEDURE SPROC1
         LANGUAGE COBOL
         EXTERNAL NAME SPROC1
         PARAMETER STYLE GENERAL
         WLM ENVIRONMENT WLMENV1
         RUN OPTIONS 'TEST(,,,TCPIP&9.112.27.99%8001:*)'
         PROGRAM TYPE SUB;
      この例では、SPROC1 という COBOL プログラムのストアード・プロシージャーが作成されます。このプログラム・タイプは SUB であり、WLMENV1 という WLM アドレス・スペースで実行され、リモート・デバッグ・モードでデバッグされます。
    2. 既存のストアード・プロシージャーを変更する必要がある場合は、ALTER PROCEDURE ステートメントを使用します。次の例を参考のために使用できます。

      リモート・デバッガーの IP アドレスが 9.112.27.99 から 9.112.27.21 に変更されています。ストアード・プロシージャーを変更するには、次のステートメントを入力します。

      ALTER PROCEDURE name_of_DB2_stored_procedure
         RUN OPTIONS 'TEST(,,,TCPIP&9.112.27.21%8001:*)';
    3. ストアード・プロシージャーが正しく定義されているかどうかを確認するために、SELECT ステートメントを入力します。例えば、次の SELECT ステートメントを入力できます。
      SELECT * FROM SYSIBM.SYSROUTINES;