JCL および IMS の PL/I デバッグ

EXEC SQL、EXEC CICS または EXEC DLI 文を含む PL/I プログラムでは、plitest パラメーターでプリプロセッサ -optexec オプションを使用できます。これによりプリプロセッサによって、コードに PL/I マクロが挿入されます。このマクロは PLITEST() コールをとおしてデバッガーを呼び出します。これは自動的に行われ、CodeWatch コマンドの明確な知識は必要ありません。

ただし、このデバッグ方法は EXEC 言語機能を持たないバッチ プログラムや、EXEC DLI の代わりに PLITDLI を使用する IMS ベースのプログラムには使用できません。

このようなプログラムでは PL/I マクロ プリプロセッサではなく EXEC プリプロセッサで使用される技法を使用して、自動的に PLITEST() の呼び出しを生成します。

  1. デバッグするプログラムの実行パス内のいずれかの場所に、次のコードを挿入します。
    %if ATTACHDEBUGGER %then
    %do;
        DCL JAVAUI FIXED BIN(31) NATIVE VALUE(1); 
        CALL PLITEST("shlib " || procedurename() || ".dll;" || 
                     "env "   || procedurename() || ";br STARTDEBUG;" ||
                     "br %exit [det;q];c", 
                     " ", JAVAUI);
        STARTDEBUG:;
    %end;
    

    このコードによって、プログラムの実行時にデバッガー自体を自動的に添付し、STARTDEBUG ラベルの位置で停止します。

    注: 上記のコードは Windows 環境で .DLL が使用されていることを想定しています。 に置換します。これは PL/I 組み込み関数 PROCEDURENAME() を使用して環境および shlib 引数を動的に判断します。
  2. コマンド ラインからプログラムをコンパイルする場合、次のオプションを mfplx コマンドに追加します (mfpp を明示的に呼び出す場合は、-define オプションのみを追加)。
    –deb -macro -define attachdebugger
  3. Microsoft Visual Studio でプログラムをコンパイルする場合は、プロジェクトのプロパティに移動し、[PL/I] タブをクリックします。[General] セクションで [Enable Macro Preprocessor] を [Yes] に設定し、[Preprocessor (Macro)] セクションで attachdebugger を [Define a macro (-define)] オプションに追加します。
  4. Enterprise Server を起動し、プログラムを実行します。
    注: Windows 環境の場合は、Enterprise Developer コマンド プロンプト から casstart を使用して Enterprise Server を起動する必要があります。そうしないとデバッガーが添付されません。

コード サンプルで、%if..%do 条件は COBOL の $IF に、または C の #ifdef に機能的に似ています。サンプルは全体として CBL_DEBUGBREAK と機能的に同等であり、ブレークポイントの設定など、起動時に実行される CodeWatch コマンドを追加で指定できる機能が追加されています。