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 ストアード・プロシージャーを準備するには、以下のステップを実行します。
- DB2 システム管理者が、「Debug Tool カスタマイズ・ガイド」のセクション『DB2 ストアード・プロシージャーをデバッグするための環境の準備』で説明されている作業を完了していることを確認します。
DB2 システム管理者は、ストアード・プロシージャーを実行するアドレス・スペースを定義し、DB2 プログラムに適切な RACF® 読み取り権限を付与し、アドレス・スペースをリサイクルして更新が有効になるようにする必要があります。
- デバッグする DB2 ストアード・プロシージャーの作成に使用されるパラメーターを十分理解していない場合は、次の例のように SELECT ステートメントを入力してこの情報を取得できます。
SELECT PROGRAM_TYPE,STAYRESIDENT,RUNOPTS,LANGUAGE
FROM SYSIBM.SYSROUTINES
WHERE NAME='name_of_DB2_stored_procedure';
- call_sub 関数で呼び出されないプログラム・タイプ SUB のストアード・プロシージャーで、システム・プログラマーまたは DB2 システム管理者が WLM アドレス・スペースを定義する際、NUMTCB の値を 1 に設定することを確認します。NUMTCB では、WLM アドレス・スペース内で同時に稼働できるタスク制御ブロック (TCB) の最大数を指定します。ストアード・プロシージャーは、そのストアード・プロシージャーを開始した TCB 以外の TCB で稼働している場合は、デバッグできません。NUMTCB の値を 1 に設定すると、ストアード・プロシージャーが別の TCB で実行されないようにすることができます。
- ストアード・プロシージャーを定義する際、以下の項目を確認します。
- LANGUAGE パラメーターと PROGRAM TYPE パラメーターに正しい値を指定します。C、C++、COBOL、または Enterprise PL/I の場合、PROGRAM TYPE は MAIN または SUB にすることができます。アセンブラーの場合、PROGRAM TYPE は MAIN でなければなりません。
- call_sub 関数で呼び出されないプログラム・タイプ SUB のストアード・プロシージャーの場合、ストアード・プロシージャーのデバッグ中にそのストアード・プロシージャーを他のユーザーが実行していないか確認します。他のユーザーがそのストアード・プロシージャーを実行する可能性がある場合、それをデバッグすることはできません。
- call_sub 関数で呼び出されるプログラム・タイプ SUB のストアード・プロシージャーの場合、以下のオプションを確認します。
- 言語環境プログラム EQADDCXT 出口ルーチンを使用して TEST ランタイム・オプションを指定する場合は、STAY RESIDENT NO を指定します。
- DB2 カタログを使用して TEST ランタイム・オプションを指定する場合は、STAY RESIDENT に YES または NO のいずれかを指定できます。
- プログラムをデバッグするための準備 の説明に従って、プログラムをコンパイルまたはアセンブルします。Enterprise PL/I プログラムでは、RENT コンパイラー・オプションも指定します。
- 以下のリストを確認して、TEST ランタイム・オプションの指定方法を判別します。
- プログラム・タイプ MAIN のストアード・プロシージャーの場合、言語環境プログラム EQADDCXT 出口ルーチンまたは DB2 カタログのいずれかを使用して TEST ランタイム・オプションを指定できます。両方のメソッドを使用する場合は、言語環境プログラム EQADDCXT 出口ルーチンが DB2 カタログに優先します。
- call_sub 関数で呼び出されるプログラム・タイプ SUB のストアード・プロシージャーの場合、言語環境プログラム EQADDCXT 出口ルーチンまたは DB2 カタログのいずれかを使用して TEST ランタイム・オプションを指定できます。言語環境プログラム EQADDCXT 出口ルーチンの使用を選択した場合は、ストアード・プロシージャーを定義する際に RUN OPTIONS パラメーターに NOTEST ランタイム・オプションを指定する必要があります。
- call_sub 関数で呼び出されないプログラム・タイプ SUB のストアード・プロシージャーの場合、DB2 カタログを使用して、あるいは CEETEST、__ctest()、または PLITEST への呼び出しをコーディングしたプログラム内から TEST ランタイム・オプションを指定できます。
- 言語環境プログラム EQADDCXT 出口ルーチンを使用して TEST ランタイム・オプションを指定するには、EQADDCXT ユーザー出口のコピーを準備します (言語環境プログラム ユーザー出口を使用した TEST ランタイム・オプションの指定 の説明を参照)。
call_sub 関数で呼び出されるプログラム・タイプ SUB の既存のストアード・プロシージャーをデバッグする場合は、RUN OPTIONS パラメーターに NOTEST ランタイム・オプションを使用するようにストアード・プロシージャーを変更する必要があることに注意してください。次の例では、ALTER PROCEDURE ステートメントを使用してこの変更を行う方法を示します。
ALTER PROCEDURE name_of_DB2_stored_procedure RUN OPTIONS 'NOTEST';
- DB2 カタログを使用して TEST ランタイム・オプションを指定するには、以下の手順を実行します。
- ストアード・プロシージャーを作成していない場合は、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 アドレス・スペースで実行され、リモート・デバッグ・モードでデバッグされます。
-
既存のストアード・プロシージャーを変更する必要がある場合は、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:*)';
- ストアード・プロシージャーが正しく定義されているかどうかを確認するために、SELECT ステートメントを入力します。例えば、次の SELECT ステートメントを入力できます。
SELECT * FROM SYSIBM.SYSROUTINES;