付録C. IBM 問題判別ツール製品で使用するプログラムのコンパイルおよびアセンブルに関するクイック・スタート・ガイド

この章では、IBM 問題判別ツール製品で使用するためのプログラムの準備に必要な最小限の手順を説明します。詳しい情報については、「Debug Tool for z/OS® ユーザーズ・ガイド」の『第 2 部 プログラムをデバッグするための準備』、「Fault Analyzer for z/OS User's Guide」の『Part 2. Fault Analyzer Installation and Administration』、または「Application Performance Analyzer for z/OS User’s Guide」の『Appendix B. Creating side files using CAZLANGX』を参照してください。

この章の目的は、Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS を組み合わせて使用している組織のための、単一コンパイル方式に関する説明を紹介することです。 Debug Tool for z/OS のみを使用している企業では、代わりに「Debug Tool for z/OS ユーザーズ・ガイド」の『第 2 部 プログラムをデバッグするための準備』を参照してください。 Fault Analyzer for z/OS のみを使用している企業では、代わりに「Fault Analyzer for z/OS User's Guide」の『Part 2. Fault Analyzer Installation and Administration』を参照してください。Application Performance Analyzer for z/OS のみを使用している企業では、代わりに『Application Performance Analyzer for z/OS User’s Guide」の『Appendix B. Creating side files using CAZLANGX』を参照してください。

Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS は、IBM コンパイラーによって生成されたロード・モジュールや他のファイルを使用するように設計されています。プログラムをコンパイルするときは、必ず、これらの製品が使用できるロード・モジュールとファイルがそのプログラムによって生成されるようにする、特定のコンパイラー・オプションを指定してください。

この章で使用する「ソース情報ファイル」という用語は、Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS によって使用されるファイルのタイプを表します。この章の説明対象となっている別の種類のソース情報ファイルには、以下のものがあります。

コンパイラーが異なると、生成されるソース情報ファイルの種類も異なる点に注意してください。 複数のコンパイラーを使用すると、複数のタイプのソース情報ライブラリーが生成される可能性があります。

この章で説明するコンパイラー・オプションを指定してプログラムをコンパイルすると、コンパイラーによって作成されたロード・モジュールおよびソース情報ファイルは次のように使用できます。

ビルド・プロセスの更新

最近ご使用のシステムに 1 つ以上の IBM 問題判別ツール製品がインストールされた場合、プログラムのビルド・プロセスがまだ更新されていない可能性があります。ビルド・プロセスの更新は、IBM 問題判別ツール製品の実装において重要かつ必須の部分です。

多くの組織では、これらのビルド・プロセスの所有権が明確に設定されています。それ以外の組織では、変更を行う担当者が明確に決められていない場合があります。多くの組織では標準のコンパイル・プロセスまたは PROC が使用されています。これらはシステム管理者が維持し、IBM 問題判別ツール製品用のプログラムの準備のための更新を済ませています。これが該当する場合は、使用可能なプロセスとそれらの使用方法を調べてください。 それ以外の組織では、各開発者がプログラムをコンパイルするための独自のコンパイル JCL または PROC が維持されています。これが該当する場合は、以下の説明に従って、その独自のコンパイル JCL を更新して、IBM 問題判別ツール製品用にプログラムを準備してください。

最初に、各コンパイラーに必要な内容を個々に調べてください。 例えば、Enterprise COBOL for z/OS、Enterprise PL/I for z/OS、C/C++、およびアセンブラーに必要な変更は、それぞれわずかに異なります。

一般に、IBM 問題判別ツールで使用できるプログラムを生成するためにコンパイラー JCL で必要になる可能性がある変更点は、以下の 3 つです。

  1. IBM 問題判別ツールに必要なコンパイラー・オプションを指定します。例えば、Enterprise COBOL for z/OS の場合は、TEST オプションが必要です。
  2. JCL をコーディングして、IBM 問題判別ツール製品に必要なソース情報ファイルを生成し、保存します。最近のコンパイラーは必要なソース情報ファイルを直接生成できます。一部の古いコンパイラーでは、コンパイル・ジョブで、必要なファイルを生成する特殊なユーティリティー・プログラムを実行するための追加ステップが必要となります。
  3. ある特定の環境では、リンク・エディットのステップ中に特殊な Debug Tool for z/OS モジュールをアプリケーション・ロード・モジュールに組み込むことでメリットが得られます。ほとんどの場合これはオプションですが、特定のタイプのプログラムでは Debug Tool for z/OS の始動を単純化できます。特定の環境で実行されている特定の古いコンパイラーでは、特殊なモジュールを組み込まないと Debug Tool for z/OS を使用可能にできません。

プロモーション・プロセスの更新

通常、プログラムをテストするときに、プログラム・ロード・モジュールはさまざまなステージを経てプロモートされた後に実動状態に達します。例えば、初めて新しいプログラムをコンパイルする場合、そのプログラムはテスト・ロード・ライブラリーに入れられると考えられます。単体テストの完了後、コンパイルされたプログラムはおそらく品質保証環境にプロモートされます。そして最終的に、実動状態にプロモートされます。ご使用のシステムでは、これらのステージが以下のような別の名前で呼ばれている場合があります。

プログラムのライフサイクルを通して Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS を使用できるようにするかどうか検討してください。Debug Tool for z/OS を実動プログラムでは使用しない予定の場合でも、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS はこれらのステージで非常に有用です。各ステージで IBM 問題判別ツール製品を使用可能にするには、プロモーション・プロセスを更新して、ソース情報ファイルを保存してください。 プロモーションを実行するには、再コンパイル、コピー、または移動を行います。ソース情報ファイルでも、ロード・モジュールまたはオブジェクト・モジュールで実行するステップと同じステップを実行してください。 各ロード・ライブラリーまたはオブジェクト・ライブラリーでは、対応するソース情報ライブラリー・セットが必要です。ロード・モジュールまたはオブジェクト・モジュールのどちらをプロモートする場合でも、ソース情報ファイルもプロモートする必要があります。これにより、ソース情報ファイルを Fault Analyzer および Application Performance Analyzer で使用でき、引き続き、プログラムのライフサイクルのすべてのステージで IBM 問題判別ツール製品を活用することができます。

プログラムの準備

各コンパイラーはそれぞれ異なる種類のソース情報ファイルを生成し、各 IBM 問題判別ツール製品はそれぞれ異なる種類のファイルを読み取ります。さまざまな組み合わせをすべて調べるには時間がかかりますが、以下で説明するように、各コンパイラーごとの推奨方式があります。推奨方式を使用すると、そのプログラムは IBM 問題判別ツール製品をフル活用できるようになります。

Enterprise COBOL for z/OS バージョン 4 プログラム

次の表は、Enterprise COBOL for z/OS バージョン 4 プログラムを IBM 問題判別ツール製品 (Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールでは、著しく大きなランタイム・オーバーヘッドは発生しません。

表 19. Enterprise COBOL for z/OS バージョン 4 で IBM 問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
TEST(NOHOOK, SEPARATE, EJPD), LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) SYSDEBUG はい 実動およびテスト用に推奨
NOTEST, LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) コンパイラー・リスト はい なし サポートされる サポートされる
NOTEST, LIST, MAP, SOURCE, NUMBER, XREF(SHORT) はい なし サポートされる なし
LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) LANGX ファイル はい なし サポートされる サポートされる
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

Enterprise COBOL for z/OS バージョン 4 プログラムの準備

表 19 で推奨されているコンパイラー・オプションを使用して Enterprise COBOL for z/OS バージョン 4 プログラムをコンパイルするには、以下の手順を実行します。

  1. SYSDEBUG ファイル用のライブラリーを作成します (組織で PDS が要求されていない限り、PDSE を推奨します)。 テストや実動などの各環境ごとに、1 つ以上の SYSDEBUG ライブラリーを作成します。
  2. 各ロード・ライブラリーに対応する SYSDEBUG ライブラリーを作成します。LRECL=(80 to 1024),RECFM=FB,BLKSIZE=(multiple of lrecl < 32K) と指定します。
  3. テスト環境および実稼働環境の両方で、すべてのプログラムに対して、コンパイラー・オプションTEST(NOHOOK,SEPARATE,EJPD),LIST,MAP,SOURCE,NONUMBER,XREF(SHORT) を指定します。

    Debug Tool for z/OS を使用してプログラムをデバッグする予定の場合、TEST コンパイラー・オプションは必須です。 Fault Analyzer for z/OS または Application Performance Analyzer for z/OS を使用する予定の場合、TEST オプションは任意指定です。

    SEPARATE サブオプションを指定すると、SYSDEBUG ファイルが生成されます。

    NOHOOK および SEPARATE を指定すると、引き続きデバッグが可能な実動準備完了モジュールが生成されます。

    OPT オプションも使用する場合、EJPD によって最適化のレベルが下がる可能性がありますが、デバッガーの JUMPTO および GOTO コマンドが使用できるようになります。これらのコマンドは、OPT および NOEJPD の両方が使用されている場合は使用不可になります。

  4. TEST オプションを使用しない場合は、コンパイラー・リストをファイルに保存するか、xxxLANGX ユーティリティー・プログラムを使用して LANGX ファイルを作成します。xxxLANGX ユーティリティーと同等のものが、 Debug Tool for z/OS では EQALANGX、Fault Analyzer for z/OS では IDILANGX、Application Performance Analyzer for z/OS では CAZLANGX として使用可能です。Fault Analyzer for z/OS と Application Performance Analyzer for z/OS はコンパイラー・リストおよび LANGX ファイルを使用してソース・レベルのサポートを提供できます。
  5. LISTMAPSOURCE、および XREF オプションが必要なのは、Fault Analyzer for z/OS または Application Performance Analyzer for z/OS にソース情報を提供するためにコンパイラー・リストまたは LANGX ファイルが使用される場合のみです。これらの製品と一緒に SYSDEBUG ファイルが使用される場合、あるいは Fault Analyzer for z/OS または Application Performance Analyzer for z/OS を使用しない場合、LISTMAPSOURCE、および XREF オプションは任意指定です。
  6. NONUMBER コンパイラー・オプションが必要なのは、Application Performance Analyzer for z/OS にソース情報を提供するためにコンパイラー・リスト・ファイルが使用される場合のみです。 Application Performance Analyzer for z/OS と一緒に SYSDEBUG ファイルが使用される場合、あるいは Application Performance Analyzer for z/OS を使用しない場合、NONUMBER オプションは任意指定です。
  7. コンパイラー・ステップの JCL で SYSDEBUG DD をコーディングします。
     //SYSDEBUG DD DSN= SYSDEBUG.pds(pgmname),DISP=SHR
    コンパイラーによって生成された SYSDEBUG ファイルを SYSDEBUG ライブラリーに保存し、ご使用のアプリケーション・プログラムのプログラム名と同じメンバー名を指定します。これは Debug Tool for z/OS、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS のソース情報ファイルです。
  8. プロモーション・プロセスを変更して、SYSDEBUG ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する 1 つ以上の SYSDEBUG ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールで実行したステップと同じステップを SYSDEBUG ファイルでも実行します。
  9. オプションとして、Debug Tool Language Environment® (LE) 出口モジュールを、リンケージ・エディターのステップ中にロード・モジュールに含めます。これは ISPF で Debug Tool のパネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS™ バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2® ストアード・プロシージャーには EQADDCXT を使用します。CICS® プログラムに出口モジュールを含めないでください。

Enterprise COBOL for z/OS バージョン 4 のプログラムをコンパイルするためのサンプル JCL

以下は、Enterprise COBOL for z/OS バージョン 4 プログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。これは、汎用的なサンプルであるため、それぞれのモジュールを生成するための要件をすべて満たすとは限りません。

TEST コンパイラー・オプションが指定されていることに注目してください。 使用しているコンパイラーのバージョンに応じた TEST コンパイラー・オプションの正しいサブオプションをコーディングしてください。 ご使用のプログラムに必要な他の互換コンパイラー・オプションもすべてコーディングできます。

SYSDEBUG DD ステートメントがコーディングされていることにも注目してください。 これはコンパイラーが生成するソース情報ファイルです。これは SYSDEBUG ライブラリー (PDS または PDSE) を参照しています。メンバー名はプログラム名と同じでなければなりません。

Enterprise COBOL for z/OS の場合、必要な変更はこれらのみです。

ただし、リンケージ・エディターのステップではオプションで行う変更があります。下記の例は、特殊な Language Environment 出口モジュールがアプリケーション・ロード・モジュールに組み込まれていることを示しています。これは必須ではありませんが、これによって Debug Tool のパネル 6 を使用できるようになるため、環境によってはデバッガーを簡単に開始できるようになります。パネル 6 を使用して Debug Tool を開始したい場合、それを可能にする 1 つの方法がこの出口モジュールです。Debug Tool のパネル 6 を使用しない予定の場合は、出口モジュールを組み込まないでください。

//*     - - -  ADD A JOB CARD ABOVE THIS LINE  - - -
//*
//*  SAMPLE JCL TO PREPARE AN ENTERPRISE COBOL PROGRAM
//*  FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//*     FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//*  NOTES:
//*
//*   COMPILER:
//*    1. A TEST COMPILER PARM IS REQUIRED FOR DEBUG TOOL
//*    2. COMPILER PARM TEST(NOHOOK,SEPARATE,EJPD) HAS ADVANTAGES:
//*         - THE MODULE IS READY FOR DEBUG TOOL
//*         - THE MODULE IS PRODUCTION-READY (NO RUN-TIME OVERHEAD)
//*         - A SYSDEBUG FILE IS CREATED THAT CAN BE USED BY DT,FA,APA
//*    3. COMPILER PARMS LIST,MAP,SOURCE,XREF ARE REQUIRED IF YOU PLAN
//*       TO USE THE COMPILER LISTING WITH FA OR APA, OR XXXLANGX
//*
//*   BINDER (LINKAGE EDITOR):
//*    4. THE INCLUDE FOR MODULE EQAD?CXT IS *OPTIONAL*.  IT IS AN
//*       LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//*       UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//*       AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//*         IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//*            EQADBCXT: FOR BATCH PROGRAMS
//*            EQADICXT: FOR ONLINE IMS PROGRAMS
//*            EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//*           (for SUB this is supported only for invocations through call_sub)
//*            (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//*  SET PARMS FOR THIS COMPILE:
//*  ---------------------------
//   SET MEM=SAM1                             PROGRAM NAME
//   SET COBOLLIB='IGY.V4R1.SIGYCOMP'         COBOL COMPILER LOADLIB
//   SET DTLIB='EQAW.SEQAMOD'                 DEBUG TOOL LOADLIB
//   SET LELIB='CEE.SCEELKED'                 LE LINKEDIT LIBRARY
//   SET UNITDEV=SYSALLDA                     UNIT FOR TEMP FILES
//*
//*  ****************************
//*        COMPILE STEP
//*  ****************************
//COMPILE  EXEC PGM=IGYCRCTL,REGION=0M,
//   PARM=('TEST(NOHOOK,SEPARATE,EJPD),LIST,MAP,XREF(SHORT),NONUMBER,SOURCE')
//STEPLIB  DD DISP=SHR,DSN=&COBOLLIB
//SYSIN    DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB   DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.LISTING(&MEM)
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM)
//SYSLIN   DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,
//            SPACE=(80,(10,10))
//SYSUT1   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT2   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT3   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT4   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT5   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT6   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT7   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//*
//CBLPRINT  EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT  DD SYSOUT=*
//SYSUT1    DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR
//SYSUT2    DD SYSOUT=*
//SYSIN     DD DUMMY
//*  *********************************
//*        LINK-EDIT (BINDER) STEP
//*  *********************************
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'
//SYSLIB   DD DISP=SHR,DSN=&LELIB
//DTLIB    DD DISP=SHR,DSN=&DTLIB
//SYSLMOD  DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR
//SYSLIN   DD DISP=(OLD,DELETE),DSN=&&LOADSET
//*  INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT) IS OPTIONAL.
//*  AN EXIT ENABLES STARTING DEBUG TOOL USING THE USER EXIT DATA SET UTILITY
//*  (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//*  //        DD *
//*   INCLUDE DTLIB(EQADBCXT)
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))

Enterprise COBOL for z/OS バージョン 3 および COBOL for OS/390 および VM プログラム

次の表は、Enterprise COBOL for z/OS バージョン 3、および COBOL for OS/390® および VM プログラムを IBM 問題判別ツール製品 (Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールでは、著しく大きなランタイム・オーバーヘッドは発生しません。

表 20. Enterprise COBOL for z/OS バージョン 3、および COBOL for OS/390 および VM で IBM 問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
TEST(NONE, SYM, SEPARATE), LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) SYSDEBUG はい 実動およびテスト用に推奨
NOTEST, LIST, MAP, SOURCE, NONUMBER, NOOPT, XREF(SHORT) コンパイラー・リスト はい なし サポートされる サポートされる
NOTEST, LIST, MAP, SOURCE, XREF(SHORT), NUMBER はい なし サポートされる なし
LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) LANGX ファイル はい なし サポートされる サポートされる
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

Enterprise COBOL for z/OS バージョン 3、および COBOL for OS/390 および VM プログラムの準備

表 20 で推奨されているコンパイラー・オプションを使用して Enterprise COBOL for z/OS バージョン 3、および COBOL for OS/390 および VM プログラムをコンパイルするには、以下の手順を実行します。

  1. SYSDEBUG ファイル用のライブラリーを作成します (組織で PDS が要求されていない限り、PDSE を推奨します)。 テストや実動などの各環境ごとに、1 つ以上の SYSDEBUG ライブラリーを割り振ります。
  2. 各ロード・ライブラリーに対応する SYSDEBUG ライブラリーを作成します。LRECL=(80 to 1024),RECFM=FB,BLKSIZE=(multiple of lrecl < 32K) と指定します。
  3. テスト環境と実稼働環境の両方で、すべてのプログラムに対して TEST(NONE,SYM,SEPARATE),LIST,MAP,SOURCE,NONUMBER,XREF(SHORT) を使用します。

    Debug Tool for z/OS には TEST が必要です。

    SEPARATE サブオプションを指定すると、SYSDEBUG ファイルが生成されます。 NONESEPARATE と一緒に指定すると、引き続きデバッグが可能な実動準備完了モジュールが生成されます。

    OPTIMIZE を指定すると、デバッガーの JUMPTO および GOTO コマンドは使用不可になります。 NOOPTIMIZE を指定すると、これらのコマンドは使用可能になります。

  4. LISTMAPSOURCE、および XREF オプションが必要なのは、Fault Analyzer for z/OS または Application Performance Analyzer for z/OS にソース情報を提供するためにコンパイラー・リストまたは LANGX ファイルが使用される場合のみです。これらの製品と一緒に SYSDEBUG ファイルが使用される場合、あるいは Fault Analyzer for z/OS または Application Performance Analyzer for z/OS を使用しない場合、LISTMAPSOURCE、および XREF オプションは任意指定です。
  5. NONUMBER コンパイラー・オプションが必要なのは、Application Performance Analyzer for z/OS にソース情報を提供するためにコンパイラー・リスト・ファイルが使用される場合のみです。 Application Performance Analyzer for z/OS と一緒に SYSDEBUG ファイルが使用される場合、あるいは Application Performance Analyzer for z/OS を使用しない場合、NONUMBER オプションは任意指定です。
  6. コンパイラー・ステップの JCL で SYSDEBUG DD をコーディングします。
    //SYSDEBUG DD DSN= SYSDEBUG.pds(pgmname),DISP=SHR
    コンパイラーによって生成された SYSDEBUG ファイルを SYSDEBUG ライブラリーに保存し、ご使用のアプリケーション・プログラムのプログラム名と同じメンバー名を指定します。これは Debug Tool for z/OS、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS のソース情報ファイルです。
  7. プロモーション・プロセスを変更して、SYSDEBUG ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する 1 つ以上の SYSDEBUG ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールで実行したステップと同じステップを SYSDEBUG ファイルでも実行します。
  8. オプションとして、Debug Tool Language Environment 出口モジュールを、リンケージ・エディターのステップ中にロード・モジュールに含めます。これは ISPF で Debug Tool のパネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2 ストアード・プロシージャーには EQADDCXT を使用します。CICS プログラムに出口モジュールを含めないでください。

Enterprise COBOL for z/OS バージョン 3 のプログラムをコンパイルするためのサンプル JCL

以下は、Enterprise COBOL for z/OS バージョン 3 プログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。これは、汎用的なサンプルであるため、それぞれの要件をすべて満たすとは限りません。

TEST オプションが指定されていることに注目してください。 使用しているコンパイラーのバージョンに応じた TEST コンパイラー・オプションの正しいサブオプションをコーディングしてください。 ご使用のプログラムに必要な他の互換コンパイラー・オプションもすべてコーディングできます。

SYSDEBUG DD ステートメントがコーディングされていることにも注目してください。 これはコンパイラーが生成するソース情報ファイルです。これは SYSDEBUG ライブラリー (PDS または PDSE) を参照しています。メンバー名はプログラム名と同じでなければなりません。

Enterprise COBOL for z/OS の場合、必要な変更はこれらのみです。

ただし、リンケージ・エディターのステップではオプションで行う変更があります。下記の例は、特殊な Language Environment 出口モジュールがアプリケーション・ロード・モジュールに組み込まれていることを示しています。これは必須ではありませんが、これによって Debug Tool のパネル 6 を使用できるようになるため、環境によってはデバッガーを簡単に開始できるようになります。パネル 6 を使用して Debug Tool を開始したい場合、それを可能にする 1 つの方法がこの出口モジュールです。Debug Tool のパネル 6 を使用しない予定の場合は、出口モジュールを組み込まないでください。

//*     - - -  ADD A JOB CARD ABOVE THIS LINE  - - -
//*
//*  SAMPLE JCL TO PREPARE AN ENTERPRISE COBOL PROGRAM
//*  FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//*     FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//*  NOTES:
//*
//*   COMPILER:
//*    1. A TEST COMPILER PARM IS REQUIRED FOR DEBUG TOOL
//*    2. COMPILER PARM TEST(NONE,SYM,SEP) HAS THREE ADVANTAGES:
//*         - THE MODULE IS READY FOR DEBUG TOOL
//*         - THE MODULE IS PRODUCTION-READY (NO RUN-TIME OVERHEAD)
//*         - A SYSDEBUG FILE IS CREATED THAT CAN BE USED BY DT,FA,APA
//*    3. COMPILER PARMS LIST,MAP,SOURCE,XREF ARE REQUIRED IF YOU PLAN
//*       TO USE THE COMPILER LISTING WITH FA OR APA, OR XXXLANGX
//*    4. COMPILER PARM NOOPT IS OPTIONAL.  HOWEVER, THE DEBUG TOOL
//*       COMMANDS JUMPTO AND GOTO WILL NOT BE AVAILABLE IF
//*       THE OPT PARM IS USED
//*
//*   BINDER (LINKAGE EDITOR):
//*    5. THE INCLUDE FOR MODULE EQAD?CXT IS *OPTIONAL*.  IT IS AN
//*       LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//*       UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//*       AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//*         IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//*            EQADBCXT: FOR BATCH PROGRAMS
//*            EQADICXT: FOR ONLINE IMS PROGRAMS
//*            EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//*           (for SUB this is supported only for invocations through call_sub)
//*            (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//*  SET PARMS FOR THIS COMPILE:
//*  ---------------------------
//   SET MEM=SAM1                             PROGRAM NAME
//   SET COBOLLIB='IGY.V3R4.SIGYCOMP'         COBOL COMPILER LOADLIB
//   SET DTLIB='EQAW.SEQAMOD'                 DEBUG TOOL LOADLIB
//   SET LELIB='CEE.SCEELKED'                 LE LINKEDIT LIBRARY
//   SET UNITDEV=SYSALLDA                     UNIT FOR TEMP FILES
//*
//*  ****************************
//*        COMPILE STEP
//*  ****************************
//COMPILE  EXEC PGM=IGYCRCTL,REGION=0M,
//   PARM=('TEST(NONE,SYM,SEPARATE),LIST,MAP,SOURCE,NONUMBER,XREF(SHORT)')
//STEPLIB  DD DISP=SHR,DSN=&COBOLLIB
//SYSIN    DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB   DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.LISTING(&MEM)
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM)
//SYSLIN   DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,
//            SPACE=(80,(10,10))
//SYSUT1   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT2   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT3   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT4   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT5   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT6   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT7   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//*
//CBLPRINT  EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT  DD SYSOUT=*
//SYSUT1    DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR
//SYSUT2    DD SYSOUT=*
//SYSIN     DD DUMMY
//*  *********************************
//*        LINK-EDIT (BINDER) STEP
//*  *********************************
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'
//SYSLIB   DD DISP=SHR,DSN=&LELIB
//DTLIB    DD DISP=SHR,DSN=&DTLIB
//SYSLMOD  DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR
//SYSLIN   DD DISP=(OLD,DELETE),DSN=&&LOADSET
//*  INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT) IS OPTIONAL.
//*  AN EXIT ENABLES STARTING DEBUG TOOL USING THE USER EXIT DATA SET UTILITY
//*  (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//*  //        DD *
//*   INCLUDE DTLIB(EQADBCXT)
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))

COBOL for MVS および VM プログラム

次の表は、COBOL for MVS™ および VM プログラムを IBM 問題判別ツール製品 (Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールには、著しく大きなランタイムのオーバーヘッドがありません。

表 21. COBOL for MVS および VM で IBM 問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
TEST(ALL, SYM), LIST, MAP, SOURCE, NOOPT, NONUMBER, XREF(SHORT) コンパイラー・リスト いいえ テスト用に推奨。 (実動でこのコンパイラーに Debug Tool を使用することは推奨されません。)
NOTEST, LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) はい なし 実動用に推奨
NOTEST, LIST, MAP, SOURCE, NONUMBER, XREF(SHORT) LANGX ファイル はい なし サポートされる サポートされる
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

COBOL for MVS および VM プログラムの準備

COBOL for MVS および VM プログラムをコンパイルするには、以下のステップを実行します。

  1. コンパイラー・リスト・ファイル用のライブラリーを作成します (組織で PDS が要求されていない限り、PDSE を推奨します)。 テストや実動などの各環境ごとに、1 つ以上のコンパイラー・リスト・ライブラリーを割り振ります。
  2. 各ロード・ライブラリーに対応するリスト・ライブラリーを作成します。LRECL=133,RECFM=FBA,BLKSIZE=(multiple of lrecl < 32K) を指定します。
  3. バッチ、CICS、IMS などのすべてのプログラムに対して、以下を行います。
  4. コンパイラー・ステップの JCL で、ファイルを参照するように SYSPRINT DD を変更します。
    //SYSPRINT DD DSN= compiler.listing.pds(pgmname),DISP=SHR
    コンパイラー・リストをコンパイラー・リスト・ライブラリー内のファイルに保存し、ご使用のアプリケーション・プログラムのプログラム名と同じメンバー名を指定します。これは Debug Tool for z/OS、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS のソース情報ファイルです。
  5. プロモーション・プロセスを変更して、コンパイラー・リスト・ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する 1 つ以上のコンパイラー・リスト・ファイルをプロモートします。プロモーションでは、再コンパイル、コピー、または移動を行います。プロモーション中にモジュールで実行したステップと同じステップをコンパイラー・リスト・ファイルでも実行します。
  6. オプションとして、Debug Tool Language Environment 出口モジュールを、リンケージ・エディターのステップ中にロード・モジュールに含めます。これは ISPF で Debug Tool のパネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2 ストアード・プロシージャーには EQADDCXT を使用します。CICS プログラムに出口モジュールを含めないでください。

COBOL for MVS および VM プログラムをコンパイルするためのサンプル JCL

以下は、COBOL for MVS および VM プログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。これは、汎用的なサンプルであるため、それぞれの要件をすべて満たすとは限りません。

TEST オプションが指定されていることに注目してください。 使用しているコンパイラーのバージョンに応じた TEST コンパイラー・オプションの正しいサブオプションをコーディングしてください。 ご使用のプログラムに必要な他の互換コンパイラー・オプションもすべてコーディングできます。

さらに、SYSPRINT DD が永続ファイルを参照している点にも注目してください。 これはコンパイラーが生成するソース情報ファイルです。これはリスト・ライブラリー (PDS または PDSE) を参照しています。メンバー名はプログラム名と同じでなければなりません。 COBOL for MVS および VM の場合、必要な変更はこれらのみです。

ただし、リンケージ・エディターのステップではオプションで行う変更があります。下記の例は、特殊な Language Environment 出口モジュールがアプリケーション・ロード・モジュールに組み込まれていることを示しています。これは必須ではありませんが、これによって Debug Tool のパネル 6 を使用できるようになるため、環境によってはデバッガーを簡単に開始できるようになります。パネル 6 を使用して Debug Tool を開始したい場合、それを可能にする 1 つの方法がこの出口モジュールです。Debug Tool のパネル 6 を使用しない予定の場合は、出口モジュールを組み込まないでください。

//*     - - -  ADD A JOB CARD ABOVE THIS LINE  - - -
//*
//*  SAMPLE JCL TO PREPARE A COBOL FOR MVS AND VM PROGRAM
//*  FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//*     FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//*  NOTES:
//*
//*   COMPILER:
//*    1. A TEST COMPILER PARM IS REQUIRED FOR DEBUG TOOL
//*    2. COMPILER PARMS LIST,MAP,SOURCE,XREF ARE REQUIRED IF YOU PLAN
//*       TO USE THE COMPILER LISTING WITH FA OR APA, OR XXXLANGX
//*    3. COMPILER PARM NOOPT IS OPTIONAL.  HOWEVER, THE DEBUG TOOL
//*       COMMANDS JUMPTO AND GOTO WILL NOT BE AVAILABLE IF
//*       THE OPT PARM IS USED
//*
//*   BINDER (LINKAGE EDITOR):
//*    4. THE INCLUDE FOR MODULE EQAD?CXT IS *OPTIONAL*.  IT IS AN
//*       LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//*       UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//*       AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//*         IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//*            EQADBCXT: FOR BATCH PROGRAMS
//*            EQADICXT: FOR ONLINE IMS PROGRAMS
//*            EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//*           (for SUB this is supported only for invocations through call_sub)
//*            (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//*  SET PARMS FOR THIS COMPILE:
//*  ---------------------------
//   SET MEM=SAM1                             PROGRAM NAME
//   SET COBOLLIB='IGY.SIGYCOMP'              COBOL COMPILER LOADLIB
//   SET DTLIB='EQAW.SEQAMOD'                 DEBUG TOOL LOADLIB
//   SET LELIB='CEE.SCEELKED'                 LE LINKEDIT LIBRARY
//   SET UNITDEV=SYSALLDA                     UNIT FOR TEMP FILES
//*
//*  ****************************
//*        COMPILE STEP
//*  ****************************
////COMPILE  EXEC PGM=IGYCRCTL,REGION=0M,
//   PARM=(NOTEST,LIST,MAP,SOURCE,NONUMBER,XREF(SHORT)')
//STEPLIB  DD DISP=SHR,DSN=&COBOLLIB
//SYSIN    DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB   DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.LISTING(&MEM)
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM)
//SYSLIN   DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,
//            SPACE=(80,(10,10))
//SYSUT1   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT2   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT3   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT4   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT5   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT6   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT7   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//*
//CBLPRINT  EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT  DD SYSOUT=*
//SYSUT1    DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR
//SYSUT2    DD SYSOUT=*
//SYSIN     DD DUMMY
//*  *********************************
//*        LINK-EDIT (BINDER) STEP
//*  *********************************
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'
//SYSLIB   DD DISP=SHR,DSN=&LELIB
//*** DTLIB    DD DISP=SHR,DSN=&DTLIB
//SYSLMOD  DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR
//SYSLIN   DD DISP=(OLD,DELETE),DSN=&&LOADSET
//*  INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT) IS OPTIONAL.
//*  AN EXIT ENABLES STARTING DEBUG TOOL USING THE USER EXIT DATA SET UTILITY
//*  (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//*  //        DD *
//*   INCLUDE DTLIB(EQADBCXT)
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))

VS COBOL II プログラム

現在 TEST オプションを使用してプログラムをコンパイルしている場合は、NOTEST の使用を検討してください。NOTEST を使用すると、TEST オプションでコンパイルしている場合は使用できない Debug Tool for z/OS 機能を活用することができます。 NOTEST オプションでコンパイルすると使用できる Debug Tool for z/OS 機能の例として、自動モニター機能や AT ENTRY program name ブレークポイントの使用があります。また、NOTEST でコンパイルすると、デバッグ可能であるが、デバッガーなしで実行する際に追加のオーバーヘッドを引き起こさないモジュールを生成できます。

次の表は、VS COBOL II プログラムを IBM 問題判別ツール製品 (Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールには、著しく大きなランタイムのオーバーヘッドがありません。

表 22. VS COBOL II で問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
NOTEST, LIST, MAP, SOURCE, XREF, NONUMBER, NOOFFSET コンパイラー・リスト はい なし サポートされる サポートされる
NOTEST, LIST, MAP, SOURCE, XREF, NUMBER はい なし サポートされる なし
NOTEST, LIST, MAP, NOOPT, SOURCE, XREF, NONUMBER LANGX ファイル はい 実動およびテスト用に推奨
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

VS COBOL II プログラムの準備

表 22 で推奨されているコンパイラー・オプションを使用して VS COBOL II プログラムをコンパイルするには、以下の手順を実行します。

  1. LANGX ファイルにライブラリーを割り振ります (組織で PDS が要求されていない限り、PDSE を推奨します)。テストおよび実動のような各環境に 1 つ以上の LANGX ライブラリーを割り振ります。
  2. 各ロード・ライブラリーに対応する LANGX ライブラリーを作成します。LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k を指定します。
  3. テスト環境と実稼働環境の両方で、バッチ、CICS、および IMS などのすべてのプログラムに対して、NOTEST,LIST,MAP,NOOPT,SOURCE,XREF,NONUMBER コンパイラー・オプションを指定してコンパイルします。
  4. コンパイラー・ステップで、ファイルを参照するように SYSPRINT DD を変更します。そのファイルは永続ファイルでも一時ファイルでもかまいません。これは xxxLANGX ユーティリティーへの入力となります。
  5. コンパイラー・ステップの後に、問題判別ツール xxxLANGX ユーティリティーを実行するためのステップを追加します。このユーティリティー・プログラムはコンパイラー・リストを読み取って、LANGX ファイルを生成します。これは Debug Tool for z/OS、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS のソース情報ファイルです。LANGX ファイルを LANGX ファイル・ライブラリーに保存し、ご使用のアプリケーション・プログラムのプログラム名と同じメンバー名を指定します。xxxLANGX ユーティリティーと同等のものが、 Debug Tool for z/OS では EQALANGX、Fault Analyzer for z/OS では IDILANGX、Application Performance Analyzer for z/OS では CAZLANGX として使用可能です。
  6. モジュールが言語環境プログラム・サービスにリンクされている場合、リンケージ・エディターのステップ中に Debug Tool の言語環境プログラム出口モジュールをロード・モジュールにオプションで組み込みます。これは ISPF で Debug Tool パネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2 ストアード・プロシージャーには EQADDCXT を使用します。CICS プログラムの場合、またはモジュールが言語環境プログラム・サービスにリンクされていない (COBOL II ランタイム・サービスにリンクされている) 場合は、出口モジュールを含めないでください。
  7. プロモーション・プロセスを修正して、LANGX ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する LANGX ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールに実行したのと同じステップを LANGX ファイルに実行します。

VS COBOL II プログラムをコンパイルするためのサンプル JCL

以下は、VS COBOL II プログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。これは、汎用的なサンプルであるため、それぞれの要件をすべて満たすとは限りません。

使用されるコンパイル・オプションに注意し、コンパイラー・リストが LANGX ファイルを生成する追加ステップに渡されることを確認してください。コンパイラー・リストは、永続ファイルに保管するか、一時ファイルに渡すことができます。VS COBOL II の場合、必要な変更はこれのみです。

ただし、リンケージ・エディターのステップではオプションで行う変更があります。以下の例には、アプリケーション・ロード・モジュールの特殊な言語環境プログラムの出口モジュールが含まれています。これは必須ではありませんが、これによって Debug Tool のパネル 6 を使用できるようになるため、環境によってはデバッガーを簡単に開始できるようになります。パネル 6 を使用して Debug Tool を開始したい場合、それを可能にする 1 つの方法がこの出口モジュールです。Debug Tool のパネル 6 を使用しない予定の場合は、出口モジュールを組み込まないでください。 CICS プログラムの場合、またはモジュールが言語環境プログラム・サービスにリンクされていない (COBOL II ランタイム・サービスにリンクされている) 場合は、出口モジュールを含めないでください。

//*     - - -  ADD A JOB CARD ABOVE THIS LINE  - - -                
//*                                                                 
//*  SAMPLE JCL TO PREPARE A VS COBOL II PROGRAM                    
//*  FOR THE IBM ZSERIES PD TOOLS PRODUCTS:                         
//*     FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER  
//*                                                                 
//*  NOTES:                                                         
//*                                                                 
//*   COMPILER:                                                     
//*    1. COMPILER OPTIONS LIST,MAP,SOURCE,XREF ARE REQUIRED IF YOU 
//*       PLAN TO USE THE LISTING WITH A PD TOOLS PRODUCT, OR TO    
//*       PROCESS THE LISTING WITH AN XXXLANGX UTILITY              
//*    2. COMPILER OPTION NOTEST IS SUGGESTED FOR ALL COBOL II      
//*       PROGRAMS, EVEN IF IBM DEBUG TOOL FOR Z/OS WILL BE USED    
//*                                                                 
//*   BINDER (LINKAGE EDITOR):                                      
//*    3. IN THIS EXAMPLE, THE MODULE IS LINKED WITH LANGUAGE       
//*       ENVIRONMENT RUNTIME SERVICES. THIS IS CONTROLLED BY THE   
//*       LIBRARY OR LIBRARIES SPECIFIED IN THE SYSLIB DD IN THE    
//*       BINDER STEP.                                              
//*    4. THE INCLUDE FOR MODULE EQAD?CXT IS *OPTIONAL*.  IT IS AN  
//*       LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.      
//*       UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL, 
//*       AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.          
//*         IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:   
//*            EQADBCXT: FOR BATCH PROGRAMS                         
//*            EQADICXT: FOR ONLINE IMS PROGRAMS                    
//*            EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//*           (for SUB this is supported only for invocations through call_sub)
//*         (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS, OR FOR       
//*          PROGRAMS LINKED WITH THE COBOL II RUNTIME SERVICES     
//*          INSTEAD OF LANGUAGE ENVIRONMENT RUNTIME SERVICES)      
//*                                                                 
//*  SET OPTIONS FOR THIS COMPILE:                                  
//*  ---------------------------                                    
//   SET MEM=SAMII1                          PROGRAM NAME           
//   SET COB2COMP='IGY.V1R4M0.COB2COMP'      COBOL II COMPILER LIB  
//   SET DTLIB='EQAW.SEQAMOD'                DEBUG TOOL LOADLIB       
//   SET LELKED='CEE.SCEELKED'               LE LINK LIBRARY          
//   SET LELIB='CEE.SCEERUN'                 LE RUNTIME LIBRARY       
//   SET UNITDEV=SYSALLDA                    TEMP DATASET UNIT        
//   SET LANGX='EQALANGX'                    XXXLANGX UTILITY PROGRAM 
//   SET LANGXLIB='EQAW.SEQAMOD'             LIB FOR XXXLANGX UTILITY 
//*                                                                   
//*  ****************************                                     
//*        COMPILE STEP                                               
//*  ****************************                                     
//COMPILE  EXEC PGM=IGYCRCTL,REGION=4M,                               
//   PARM=('NOTEST,LIST,MAP,NOOPT,SOURCE,XREF,NONUMBER',              
//         'RES,APOST,LIB,DYNAM,NORENT,NOSSRANGE')                    
//STEPLIB  DD DISP=SHR,DSN=&COB2COMP                                  
//SYSIN    DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)                
//SYSLIB   DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB                     
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.LISTING(&MEM)               
//SYSLIN   DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,            
//            SPACE=(80,(10,10))                           
//SYSUT1   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV     
//SYSUT2   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV     
//SYSUT3   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV     
//SYSUT4   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV     
//SYSUT5   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV     
//SYSUT6   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV     
//SYSUT7   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV     
//*                                                        
//CBLPRINT  EXEC PGM=IEBGENER,REGION=0M                    
//SYSPRINT  DD SYSOUT=*                                    
//SYSUT1    DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR   
//SYSUT2    DD SYSOUT=*                                    
//SYSIN     DD DUMMY                                       
//*                                                        
//* *********************************                      
//* STEP TO GENERATE A LANGX FILE                          
//* *********************************                      
//LANGX EXEC PGM=&LANGX,REGION=32M,                                  
//   PARM='(COBOL ERROR 64K CREF'                                    
//STEPLIB  DD DISP=SHR,DSN=&LANGXLIB                                 
//         DD DISP=SHR,DSN=&LELIB                                    
//LISTING  DD DSN=&SYSUID..ADLAB.LISTING(&MEM),DISP=SHR              
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)             
//*                                                                  
//*  *********************************                               
//*        LINK-EDIT (BINDER) STEP                                   
//*  *********************************                               
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'  
//SYSLIB   DD DISP=SHR,DSN=&LELKED                                   
//DTLIB    DD DISP=SHR,DSN=&DTLIB                                    
//SYSLMOD  DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR                 
//SYSLIN   DD DISP=(OLD,DELETE),DSN=&&LOADSET                        
//*  INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT) IS OPTIONAL.
//*  AN EXIT ENABLES STARTING DEBUG TOOL USING THE USER EXIT DATA SET UTILITY
//*  (ONE OF THE DEBUG TOOL ISPF UTILITIES)                          
//*  //        DD *                                                  
//*   INCLUDE DTLIB(EQADBCXT)                                        
//SYSPRINT DD SYSOUT=*                                               
//SYSUT1   DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))   

OS/VS COBOL プログラム

次の表は、OS/VS COBOL プログラムを IBM 問題判別ツール製品 (Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールには、著しく大きなランタイムのオーバーヘッドがありません。

表 23. OS/VS COBOL で問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
DMAP, NOCLIST, NOLST, PMAP, SOURCE, VERB, XREF(SHORT) コンパイラー・リスト はい なし サポートされる サポートされる
(LIST,NOPMAP) または (CLIST,NOPMAP) または (CLIST,PMAP) はい なし なし なし
NOBATCH, NOCLIST, NOCOUNT, DMAP, NOLST, PMAP, SOURCE, NOSYMDMP, NOTEST, NOOPT, VERB, XREF(SHORT) LANGX ファイル はい 実動およびテスト用に推奨
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

OS/VS COBOL プログラムの準備

OS/VS COBOL プログラムをコンパイルするには、以下のステップを実行します。

  1. LANGX ファイルにライブラリーを割り振ります (組織で PDS が要求されていない限り、PDSE を推奨します)。テストおよび実動のような各環境に 1 つ以上の LANGX ライブラリーを割り振ります。
  2. 各ロード・ライブラリーに対応する LANGX ライブラリーを作成します。LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k を指定します。
  3. テスト環境および実稼働環境の両方で、バッチ、CICS、および IMS などのすべてのプログラムに対して、NOBATCH, NOCLIST, NOCOUNT, DMAP, NOLST, PMAP, SOURCE, NOSYMDMP, NOTEST, NOOPT, VERB, XREF(SHORT) コンパイラー・オプションを指定してコンパイルします。このモジュールは実動準備完了状態になっており、Debug Tool for z/OS を使用してデバッグできます。
  4. コンパイラー・ステップで、ファイルを参照するように SYSPRINT DD を変更します。そのファイルは永続ファイルでも一時ファイルでもかまいません。これは xxxLANGX ユーティリティーへの入力となります。
  5. コンパイラー・ステップの後に、問題判別ツール xxxLANGX ユーティリティーを実行するためのステップを追加します。このユーティリティー・プログラムはコンパイラー・リストを読み取って、LANGX ファイルを生成します。このファイルは Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS 用のソース情報ファイルです。LANGX ファイルを LANGX ファイル・ライブラリーに保存して、ご使用のアプリケーション・プログラムのプログラム名と同じメンバー名を指定します。 xxxLANGX ユーティリティーと同等のものが、 Debug Tool for z/OS では EQALANGX、Fault Analyzer for z/OS では IDILANGX、Application Performance Analyzer for z/OS では CAZLANGX として使用可能です。
  6. プロモーション・プロセスを修正して、LANGX ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する LANGX ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールに実行したのと同じステップを LANGX ファイルに実行します。

OS/VS COBOL プログラムをコンパイルするためのサンプル JCL

以下は、OS/VS プログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。

//*     - - -  ADD A JOB CARD ABOVE THIS LINE  - - -
//*
//*  SAMPLE JCL TO PREPARE AN OS VS COBOL PROGRAM
//*  FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//*     FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//*  NOTES:
//*
//*   COMPILER:
//*    -  COMPILER PARMS DMAP,NOCLIST,NOLST,PMAP,SOURCE,VERB,XREF
//*       ARE REQUIRED IF YOU PLAN TO USE THE COMPILER LISTING WITH
//*       PD TOOLS AND/OR PROCESS IT WITH XXXLANGX
//*
//*   A STEP THAT PROCESSES THE SYSADATA FILE,
//*   AND CREATES A LANGX FILE IS NEEDED.
//*
//*  SET PARMS FOR THIS COMPILE:
//*  ---------------------------
// SET MEM=SAMOS1                       PROGRAM NAME
// SET OSVSCOMP='IGY.VSCOLIB'           OS VS COBOL COMPILER LIBRARY
// SET LELIB='CEE.SCEELKED'             LE LINKEDIT LIBRARY
// SET UNITDEV=SYSALLDA                 UNIT FOR TEMP FILES
// SET SCEERUN='CEE.SCEERUN'            LANGUAGE ENVIRON SCEERUN LIB
// SET LANGX='EQALANGX'                 XXXLANGX UTILITY PROGRAM
// SET LANGXLIB='EQAW.SEQAMOD'          LIBRARY FOR XXXLANGX UTILITY
//*    NOTE: THE XXXLANGX UTILITY IS AVAILABLE WITH DEBUG TOOL,
//*          FAULT ANALYZER, AND APA WITH DIFFERENT NAMES.  YOU CAN
//*          USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//*      IF YOU HAVE DEBUG TOOL, YOU CAN SET:
//*         LANGX='EQALANGX'  LANGXLIB=(THE DT SEQAMOD LIBRARY)
//*      IF YOU HAVE FAULT ANALYZER YOU CAN SET:
//*         LANGX='IDILANGX'  LANGXLIB=(THE FA SIDIAUTH LIBRARY)
//*      IF YOU HAVE APA (APP. PERFORMANCE ANALYZER) YOU CAN SET:
//*         LANGX='CAZLANGX'  LANGXLIB=(THE APA SCAZAUTH LIBRARY)
//*
//*  ****************************
//*        COMPILE STEP
//*  ****************************
//COMPILE  EXEC PGM=IKFCBL00,REGION=4M,
//   PARM=('DMAP,NOCLIST,NOLST,NOOPT,SOURCE,VERB,XREF(SHORT)')
//*   FOR DT (CHECK DEFAULTS): NOBATCH,NOCOUNT,PMAP,NOSYMDMP,NOTEST
//STEPLIB  DD DISP=SHR,DSN=&OSVSCOMP
//SYSIN    DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB   DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.OSVSCOB.LISTING(&MEM)
//SYSLIN   DD DISP=(MOD,PASS),DSN=&&LOADSET,UNIT=&UNITDEV,
//            SPACE=(80,(10,10))
//SYSUT1   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT2   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT3   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT4   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT5   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT6   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//SYSUT7   DD SPACE=(80,(10,10),,,ROUND),UNIT=&UNITDEV
//*
//CBLPRINT  EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT  DD SYSOUT=*
//SYSUT1    DD DSN=&SYSUID..ADLAB.OSVSCOB.LISTING(&MEM),DISP=SHR
//SYSUT2    DD SYSOUT=*
//SYSIN     DD DUMMY
//*
//*  *********************************
//*     STEP TO GENERATE LANGX FILE
//*  *********************************
//LANGX    EXEC PGM=&LANGX,REGION=32M,
//  PARM='(COBOL ERROR 64K CREF'
//STEPLIB  DD DISP=SHR,DSN=&LANGXLIB
//         DD DISP=SHR,DSN=&SCEERUN
//LISTING  DD DSN=&SYSUID..ADLAB.OSVSCOB.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//*  *********************************
//*        LINK-EDIT (BINDER) STEP
//*  *********************************
//LKED EXEC PGM=IEWL,REGION=0M,COND=(5,LT,COMPILE),PARM='LIST,XREF'
//SYSLIB   DD DISP=SHR,DSN=&LELIB
//SYSLMOD  DD DSN=&SYSUID..ADLAB.LOAD(&MEM),DISP=SHR
//SYSLIN   DD DISP=(OLD,DELETE),DSN=&&LOADSET
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD UNIT=&UNITDEV,DCB=BLKSIZE=1024,SPACE=(1024,(200,20))

Enterprise PL/I バージョン 3.7 以降のプログラム

次の表は、Enterprise PL/I バージョン 3.7 以降のプログラムを IBM 問題判別ツール製品 (IBM Debug Tool for z/OS、IBM Fault Analyzer for z/OS、および IBM Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールには、著しく大きなランタイムのオーバーヘッドがありません。

表 24. Enterprise PL/I バージョン 3.7 以降で IBM 問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
Enterprise PL/I バージョン 3.7 の場合: TEST(ALL, SYM, NOHOOK, SEPARATE, SEPNAME, AALL), NOPT, AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)

Enterprise PL/I バージョン 3.8 以降の場合: TEST(ALL, SYM, NOHOOK, SEPARATE, SEPNAME), LISTVIEW(AALL), NOPT, AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)

Debug Tool for z/OS および Fault Analyzer for z/OS によって使用される SYSDEBUG ファイル。Application Performance Analyzer for z/OS によって使用される LANGX ファイル。 このモジュールは NOTEST オプションを指定してコンパイルされたモジュールより大きいが、必要な場合はこのモジュールを実動で使用できる。 テスト用に推奨。 ロード・モジュールのサイズが増大しても問題ない場合、これらのオプションを実稼働環境でも使用できる。
AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NOTEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL) コンパイラー・リスト はい なし サポートされる なし
LANGX ファイル はい なし 実動およびテスト用に推奨
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

Enterprise PL/I バージョン 3.7 以降のプログラムの準備

Enterprise PL/I バージョン 3.7 以降のプログラムをコンパイルするには、以下のステップを実行します。

  1. SYSDEBUG ファイル用のライブラリーを作成します (組織で PDS が要求されていない限り、PDSE を推奨します)。 これは、デバッグが LRECL=(80 to 1024),RECFM=FB,BLKSIZE=(multiple of lrecl < 32K) を使用して実行されるテスト環境でのみ必要です。
  2. テストおよび実動のような各環境に 1 つ以上の LANGX ライブラリーを割り振ります。
  3. 各ロード・ライブラリーに対応する LANGX ライブラリーを作成します。LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k を指定します。
  4. バッチ、CICS、IMS などのすべてのプログラムに対して、以下を行います。
  5. TEST(...SEPARATE) オプションを使用する場合は、第 2 コンパイラー・ステップで次のように SYSDEBUG DD をコーディングします。

     //SYSDEBUG DD DSN= sysdebug.pds(pgmname),DISP=SHR

    これは、IBM Debug Tool for z/OS、およびオプションで IBM Fault Analyzer for z/OS 用のソース情報ファイルです。このファイルを SYSDEBUG ライブラリーに保存し、ご使用のアプリケーション・プログラムの 1 次入り口点名または CSECT 名と同じメンバー名を指定します。

  6. コンパイラー・ステップで SYSPRINT DD を変更します。これはコンパイラー・リストです。このリストを永続ファイルまたは一時ファイルに書き込みます。これは xxxLANGX ユーティリティーへの入力となります。
    注:
    通常このコンパイラーは、内部のコンパイラー・アルゴリズムに従って CSECT を名前変更します。したがって、CSECT 名を使用して PL/I コンパイラー・リストまたはサイド・ファイルを格納することはお勧めできません。IBM Application Performance Analyzer for z/OS または IBM Fault Analyzer for z/OS によってこれらが見つからない可能性があるためです。代わりに、1 次入り口点名を使用してください。
  7. コンパイル・ステップの後に、xxxLANGX ユーティリティーを実行するためのステップを追加します。このユーティリティーはコンパイラー・リストを読み取って、LANGX ファイルを生成します。これは、IBM Fault Analyzer for z/OS および IBM Application Performance Analyzer for z/OS 用のソース情報ファイルです。 xxxLANGX ユーティリティーと同等のものが、 IBM Debug Tool for z/OS では EQALANGX、IBM Fault Analyzer for z/OS では IDILANGX、IBM Application Performance Analyzer for z/OS では CAZLANGX として使用可能です。LANGX ファイルを LANGX ファイル・ライブラリーに保存し、ご使用のアプリケーション・プログラムの 1 次入り口点名と同じメンバー名を指定します。
  8. プロモーション・プロセスを修正して、LANGX ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する LANGX ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールに実行したのと同じステップを LANGX ファイルに実行します。
  9. TEST オプションを使用してコンパイルし、これらのモジュールを実動状態にプロモートする場合は、実稼働環境用に SYSDEBUG ファイルをプロモートしてください。
  10. オプションとして、Debug Tool Language Environment 出口モジュールを、リンケージ・エディターのステップ中にロード・モジュールに含めます。これは ISPF で Debug Tool のパネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2 ストアード・プロシージャーには EQADDCXT を使用します。CICS プログラムに出口モジュールを含めないでください。

Enterprise PL/I for z/OS バージョン 3.7 以降のプログラムのコンパイル用サンプル JCL

以下は、Enterprise PL/I for z/OS バージョン 3.7 以降のプログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。

//* - - - ADD A JOB CARD ABOVE THIS LINE - - -
//*
//* SAMPLE JCL TO PREPARE AN ENTERPRISE PL/I V3.7 OR LATER
//* PROGRAM FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. COMPILER PARMS TEST IS REQUIRED FOR DEBUG TOOL
//* 2. COMPILER PARM NOPT IS RECOMMENDED FOR DEBUG TOOL
//* 3. COMPILER PARM:
//*     TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME,AALL) (V3.7)
//*     TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME),LISTVIEW(AALL), (V3.8+)
//*    IS USED BECAUSE:
//*    - THE MODULE IS READY FOR DEBUG TOOL
//*    - NOHOOK DOES NOT HAVE RUN-TIME CPU OVERHEAD. HOWEVER, THE
//*      MODULE IS LARGER BECAUSE OF STATEMENT TABLE
//*    - A SYSDEBUG FILE IS CREATED THAT CAN BE USED BY DT,FA,APA
//* 4. COMPILER PARMS AGGREGATE,ATTRIBUTES(FULL),NOBLKOFF,LIST,
//*    MAP,NEST,NONUMBER,OPTIONS,SOURCE,STMT,XREF(FULL) ARE NEEDED
//*    TO PROCESS THE COMPILER LISTING WITH XXXLANGX
//*
//* BINDER (LINKAGE EDITOR):
//* 5. THE INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL. IT IS AN
//*    LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//*    UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//*    AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//*    IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//*      EQADBCXT: FOR BATCH PROGRAMS
//*      EQADICXT: FOR ONLINE IMS PROGRAMS
//*      EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//*           (for SUB this is supported only for invocations through call_sub)
//*    (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//* SET PARMS FOR THIS COMPILE:
//* ---------------------------
//  SET MEM=PADSTAT                   PROGRAM NAME
//  SET PLICOMP='IBMZ.V3R7.SIBMZCMP'  PLI COMPILER LOADLIB
//  SET DTLIB='EQAW.SEQAMOD'          DEBUG TOOL LOADLIB
//  SET LEHLQ='CEE'                   LE HIGH LVL QUALIFIER
//  SET UNITDEV=SYSALLDA              UNIT FOR TEMP FILES
//  SET LANGX='EQALANGX'              XXXLANGX UTILITY PROGRAM
//  SET LANGXLIB='EQAW.SEQAMOD'       LIBRARY FOR XXXLANGX UTILITY
//*   NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//*         OR APA. THE NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME.
//*         USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//* IF YOU HAVE:     SET LANGX TO:    SET LANGXLIB TO:
//* DEBUG TOOL       EQALANGX         THE DT SEQAMOD LIBRARY
//* FAULT ANALYZER   IDILANGX         THE FA SIDIAUTH LIBRARY
//* APA              CAZLANGX         THE APA SCAZAUTH LIBRARY
//*
//ALLOCOBJ EXEC PGM=IEFBR14 ALLOC OBJ LIB IF NEEDED
//OBJ DD DSN=&SYSUID..ADLAB.OBJ,SPACE=(CYL,(3,1,15)), 
// DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG) 
//* 
//* *************************************** 
//* COMPILE STEP  
//* *************************************** 
//COMPILE EXEC PGM=IBMZPLI,REGION=0M, 
// PARM=('TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME,AALL),LIST,MAP,SOURCE,', 
// 'XREF(FULL),NOBLKOFF,AGGREGATE,ATTRIBUTES(FULL),NEST,OPTIONS,NOPT,', 
// 'STMT,NONUMBER,OFFSET') 
//*  Note: The above options are for Enterprise PL/I Version 3.7 
//*        For Enterprise PL/I Version 3.8+, change the TEST option 
//*        to  TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME), and add the 
//*        LISTVIEW(AALL) option 
//STEPLIB  DD DSN=&PLICOMP,DISP=SHR 
//         DD DSN=&LEHLQ..SCEERUN,DISP=SHR 
//SYSIN    DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM) 
//SYSLIB   DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM) 
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM) 
//SYSUT1   DD SPACE=(CYL,(5,2),,CONTIG),DCB=BLKSIZE=1024,UNIT=&UNITDEV
//SYSLIN   DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR 
//* 
//PLIPRINT EXEC PGM=IEBGENER,REGION=0M 
//SYSPRINT DD SYSOUT=* 
//SYSUT1   DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR 
//SYSUT2   DD SYSOUT=* 
//SYSIN    DD DUMMY 
//* 
//* ********************************* 
//* STEP TO GENERATE LANGX FILE 
//* ********************************* 
//LANGX EXEC PGM=&LANGX,REGION=32M, 
// PARM='(PLI ERROR 64K CREF' 
//STEPLIB  DD DISP=SHR,DSN=&LANGXLIB
//         DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//LISTING  DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR 
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM) 
//* 
//* ********************************* 
//* LINK-EDIT (BINDER) STEP 
//* ********************************* 
//LINK EXEC PGM=IEWL,PARM=(LET,MAP,LIST),REGION=0M 
//SYSLIB   DD DSN=&LEHLQ..SCEELKED,DISP=SHR 
//DTLIB    DD DSN=&DTLIB,DISP=SHR 
//SYSPRINT DD SYSOUT=* 
//SYSLMOD  DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM) 
//SYSUT1   DD UNIT=SYSDA,SPACE=(TRK,(10,10)) 
//SYSLIN   DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=(OLD,PASS) 
//* INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT) 
//* IS OPTIONAL. THE EXIT ENABLES STARTING DEBUG TOOL WITH THE 
//* USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES) 
//* 
//* //  DD * 
//* INCLUDE DTLIB(EQADBCXT)

Enterprise PL/I バージョン 3.5 およびバージョン 3.6 のプログラム

次の表は、Enterprise PL/I バージョン 3.5 およびバージョン 3.6 のプログラムを IBM 問題判別ツール製品 (IBM Debug Tool for z/OS、IBM Fault Analyzer for z/OS、および IBM Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールには、著しく大きなランタイムのオーバーヘッドがありません。

表 25. Enterprise PL/I バージョン 3.5 およびバージョン 3.6 で IBM 問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
ソースを展開するためのプリプロセス (第 1 ステージ)、コンパイル時 (第 2 ステージ):

Enterprise PL/I バージョン 3.5 の場合: TEST(ALL, SYM, NOHOOK, SEPARATE), NOPT, AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)

Enterprise PL/I バージョン 3.6 の場合: TEST(ALL, SYM, NOHOOK, SEPARATE, SEPNAME), NOPT, AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)

Debug Tool for z/OS および Fault Analyzer for z/OS によって使用される SYSDEBUG ファイル。Application Performance Analyzer for z/OS によって使用される LANGX ファイル。 このモジュールは NOTEST オプションを指定してコンパイルされたモジュールより大きいが、必要な場合はこのモジュールを実動で使用できる。 テスト用に推奨。 ロード・モジュールのサイズが増大しても問題ない場合、これらのオプションを実稼働環境でも使用できる。
AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NOTEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL) コンパイラー・リスト はい なし サポートされる なし
LANGX ファイル はい なし 実動およびテスト用に推奨
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

Enterprise PL/I バージョン 3.5 およびバージョン 3.6 のプログラムの準備

Enterprise PL/I バージョン 3.5 およびバージョン 3.6 のプログラムをコンパイルするには、以下のステップを実行します。

  1. SYSDEBUG ファイル用のライブラリーを作成します (組織で PDS が要求されていない限り、PDSE を推奨します)。 これは、デバッグが LRECL=(80 to 1024),RECFM=FB,BLKSIZE=(multiple of lrecl < 32K) を使用して実行されるテスト環境でのみ必要です。
  2. テストおよび実動のような各環境に 1 つ以上の LANGX ライブラリーを割り振ります。
  3. 各ロード・ライブラリーに対応する LANGX ライブラリーを作成します。LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k を指定します。
  4. 第 2 ステージのコンパイルを実行します。最初のステージでは、IBM 問題判別ツール製品が、INCLUDE およびマクロと一緒に完全に展開されたソース・コードにアクセスできるように、プログラムをプリプロセスします。第 2 ステージではプログラムをコンパイルします。バッチ、CICS、IMS などのすべてのプログラムに対して、以下を行います。

    NOTEST を指定すると Debug Tool は使用不可になりますが、ロード・モジュールのサイズは小さくなります。

    その他のオプションは、xxxLANGX ユーティリティーの必要に合わせてコンパイラー・リストをフォーマットして、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS (ただし、Debug Tool for z/OS は除く) で使用できる実動準備完了モジュールを作成します。

  5. TEST(...SEPARATE) パラメーターを使用する場合は、第 2 コンパイラー・ステップで次のように SYSDEBUG DD をコーディングします。

     //SYSDEBUG DD DSN= sysdebug.pds(pgmname),DISP=SHR

    これは、IBM Debug Tool for z/OS、IBM Application Performance Analyzer for z/OS、およびオプションで IBM Fault Analyzer for z/OS 用のソース情報ファイルです。このファイルを SYSDEBUG ライブラリーに保存し、ご使用のアプリケーション・プログラムの 1 次入り口点名または CSECT 名と同じメンバー名を指定します。

  6. 第 2 コンパイラー・ステージで SYSPRINT DD を変更します。これはコンパイラー・リストです。このリストを永続ファイルまたは一時ファイルに書き込みます。これは xxxLANGX ユーティリティーへの入力となります。
    注:
    通常このコンパイラーは、内部のコンパイラー・アルゴリズムに従って CSECT を名前変更します。したがって、CSECT 名を使用して PL/I コンパイラー・リストまたはサイド・ファイルを格納することはお勧めできません。IBM Application Performance Analyzer for z/OS または IBM Fault Analyzer for z/OS によってこれらが見つからない可能性があるためです。代わりに、1 次入り口点名を使用してください。
  7. コンパイル・ステップの後に、xxxLANGX ユーティリティーを実行するためのステップを追加します。このユーティリティーはコンパイラー・リストを読み取って、LANGX ファイルを生成します。これは、IBM Fault Analyzer for z/OS および IBM Application Performance Analyzer for z/OS 用のソース情報ファイルです。 xxxLANGX ユーティリティーと同等のものが、 IBM Debug Tool for z/OS では EQALANGX、IBM Fault Analyzer for z/OS では IDILANGX、IBM Application Performance Analyzer for z/OS では CAZLANGX として使用可能です。LANGX ファイルを LANGX ファイル・ライブラリーに保存し、ご使用のアプリケーション・プログラムの 1 次入り口点名と同じメンバー名を指定します。
  8. プロモーション・プロセスを修正して、LANGX ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する LANGX ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールに実行したのと同じステップを LANGX ファイルに実行します。
  9. TEST オプションを使用してコンパイルし、これらのモジュールを実動状態にプロモートする場合は、実稼働環境用に SYSDEBUG ファイルをプロモートしてください。
  10. オプションとして、Debug Tool Language Environment 出口モジュールを、リンケージ・エディターのステップ中にロード・モジュールに含めます。これは ISPF で Debug Tool のパネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2 ストアード・プロシージャーには EQADDCXT を使用します。CICS プログラムに出口モジュールを含めないでください。

Enterprise PL/I バージョン 3.5 またはバージョン 3.6 のプログラムのコンパイル用サンプル JCL

以下は、Enterprise PL/I for z/OS バージョン 3.5 またはバージョン 3.6 のプログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。

//*     - - -  ADD A JOB CARD ABOVE THIS LINE  - - -
//*
//* SAMPLE JCL TO PREPARE AN ENTERPRISE PL/I V3.5 OR
//* ENTERPRISE PL/I V3.6 PROGRAM FOR THE IBM ZSERIES
//* FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//* FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//* NOTES:
//*
//* COMPILER:
//* 1. A 2-STAGE COMPILE IS PERFORMED. STAGE 1 (PREPROCESS) IS
//*    DONE TO EXPAND INCLUDES AND MACROS IN THE PROGRAM, SO THAT
//*    THE SYSDEBUG FILE CREATED IN STAGE 2 (COMPILE) HAS ALL STMTS.
//* 2. COMPILER PARMS TEST AND NOPT ARE REQUIRED FOR DEBUG TOOL
//* 3. COMPILER PARM TEST(ALL,SYM,NOHOOK,SEP) (V3.5) OR
//*    TEST(ALL,SYM,NOHOOK,SEP,SEPNAME) (V3.6) IS USED BECAUSE:
//*    - THE MODULE IS READY FOR DEBUG TOOL
//*         - NOHOOK DOES NOT HAVE RUN-TIME CPU OVERHEAD. HOWEVER, THE
//*           MODULE IS LARGER BECAUSE OF STATEMENT TABLE
//*         - A SYSDEBUG FILE IS CREATED THAT CAN BE USED BY DT,FA,APA
//*    4. COMPILER PARMS AGGREGATE,ATTRIBUTES(FULL),NOBLKOFF,LIST,
//*       MAP,NEST,NONUMBER,OPTIONS,SOURCE,STMT,XREF(FULL) ARE NEEDED
//*       TO PROCESS THE COMPILER LISTING WITH XXXLANGX
//*
//*   BINDER (LINKAGE EDITOR):
//*    5. THE INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL.  IT IS AN
//*       LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//*       UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//*       AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//*         IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//*            EQADBCXT: FOR BATCH PROGRAMS
//*            EQADICXT: FOR ONLINE IMS PROGRAMS
//*            EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//*           (for SUB this is supported only for invocations through call_sub)
//*            (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//*  SET PARMS FOR THIS COMPILE:
//*  ---------------------------
//   SET MEM=PADSTAT                      PROGRAM NAME
//   SET PLICOMP='IBMZ.V3R5.SIBMZCMP'     PLI COMPILER LOADLIB
//   SET DTLIB='EQAW.SEQAMOD'             DEBUG TOOL LOADLIB
//   SET LEHLQ='CEE'                      LE HIGH LVL QUALIFIER
//   SET UNITDEV=SYSALLDA                 UNIT FOR TEMP FILES
//   SET LANGX='EQALANGX'                 XXXLANGX UTILITY PROGRAM
//   SET LANGXLIB='EQAW.SEQAMOD'          LIBRARY FOR XXXLANGX UTILITY
//*    NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//*          OR APA. THE NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME
//*          USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//*      IF YOU HAVE:     SET LANGX TO:    SET LANGXLIB TO:
//*      DEBUG TOOL       EQALANGX         THE DT SEQAMOD LIBRARY
//*      FAULT ANALYZER   IDILANGX         THE FA SIDIAUTH LIBRARY
//*      APA              CAZLANGX         THE APA SCAZAUTH LIBRARY
//*
//ALLOCOBJ EXEC PGM=IEFBR14              ALLOC OBJ LIB IF NEEDED
//OBJ   DD DSN=&SYSUID..ADLAB.OBJ,SPACE=(CYL,(3,1,15)),
//  DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG)
//*  ***************************************
//*     PREPROCESS STEP (COMPILE STAGE 1)
//*  ***************************************
//PRECOMP  EXEC PGM=IBMZPLI,REGION=0M,
//   PARM=('MACRO,MDECK,NOCOMPILE,NOSYNTAX,INSOURCE')
//STEPLIB  DD   DSN=&PLICOMP,DISP=SHR
//         DD   DSN=&LEHLQ..SCEERUN,DISP=SHR
//SYSIN    DD   DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB   DD   DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD   SYSOUT=*
//SYSUT1   DD   SPACE=(1024,(200,50),,CONTIG,ROUND),DCB=BLKSIZE=1024,
//             UNIT=&UNITDEV
//SYSPUNCH DD DISP=(MOD,PASS),DSN=&&SRC1,UNIT=&UNITDEV,
//            SPACE=(80,(10,10))
//*
//*  ***************************************
//* COMPILE STEP (COMPILE STAGE 2)
//* ***************************************
//COMPILE EXEC PGM=IBMZPLI,REGION=0M,
// PARM=('TEST(ALL,SYM,NOHOOK,SEPARATE),LIST,MAP,SOURCE,XREF(FULL),',
// 'NOBLKOFF,AGGREGATE,ATTRIBUTES(FULL),NEST,OPTIONS,NOPT,',
// 'STMT,NONUMBER,OFFSET')
//*  Note: The above options are for Enterprise PL/I Version 3.5
//*        For Enterprise PL/I Version 3.6, change the TEST option
//*        to:  TEST(ALL,SYM,NOHOOK,SEPARATE,SEPNAME)
//STEPLIB  DD DSN=&PLICOMP,DISP=SHR
//         DD DSN=&LEHLQ..SCEERUN,DISP=SHR
//SYSIN    DD DSN=&&SRC1,DISP=(OLD,PASS)
//SYSLIB   DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM)
//SYSDEBUG DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSDEBUG(&MEM)
//SYSUT1   DD SPACE=(CYL,(5,2),,CONTIG),DCB=BLKSIZE=1024,UNIT=&UNITDEV
//SYSLIN   DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR
//*
//PLIPRINT  EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT  DD SYSOUT=*
//SYSUT1    DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//SYSUT2    DD SYSOUT=*
//SYSIN     DD DUMMY
//*
//*  *********************************
//*     STEP TO GENERATE LANGX FILE
//*  *********************************
//LANGX    EXEC PGM=&LANGX,REGION=32M,
//  PARM='(PLI ERROR 64K CREF'
//STEPLIB  DD DISP=SHR,DSN=&LANGXLIB
//         DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//LISTING  DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LINK EXEC PGM=IEWL,PARM=(LET,MAP,LIST),REGION=0M
//SYSLIB DD DSN=&LEHLQ..SCEELKED,DISP=SHR
//DTLIB DD DSN=&DTLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM)
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=(OLD,PASS)
//*  INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT)
//*  IS OPTIONAL.  THE EXIT ENABLES STARTING DEBUG TOOL WITH THE
//*  USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//*  //        DD *
//*   INCLUDE DTLIB(EQADBCXT)

Enterprise PL/I バージョン 3.4 以前のプログラム

次の表は、Enterprise PL/I バージョン 3.4 以前のプログラムを IBM 問題判別ツール製品 (Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールには、著しく大きなランタイムのオーバーヘッドがありません。

表 26. Enterprise PL/I バージョン 3.4 以前で IBM 問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
ソースを展開するためのプリプロセス (第 1 ステージ)、コンパイル時 (第 2 ステージ): TEST(ALL), NOPT, AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)) Debug Tool for z/OS によって使用される展開済みソース・ファイル、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS によって使用される LANGX ファイル いいえ テスト用に推奨。 (実動でこのコンパイラーに Debug Tool を使用することは推奨されません。)
AGGREGATE, ATTRIBUTES (FULL), NOBLKOFF, LIST, MAP, NEST, NOTEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)) コンパイラー・リスト はい なし サポートされる なし
LANGX ファイル はい なし 実動およびテスト用に推奨
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

Enterprise PL/I バージョン 3.4 以前のプログラムの準備

Enterprise PL/I バージョン 3.4 以前のプログラムをコンパイルするには、以下のステップを実行します。

  1. 展開済みソース・ファイル用のライブラリーを作成します (組織で PDS が要求されていない限り、PDSE を推奨します)。 これは、デバッグが実行されるテスト環境でのみ必要です。このライブラリーは、コンパイラーによって入力としてサポートされている任意の RECFM/LRECL/BLKSIZE にすることができます。
  2. LANGX ファイルにライブラリーを割り振ります (組織で PDS が要求されていない限り、PDSE を推奨します)。テストや実動などの各環境ごとに、1 つ以上の LANGX ライブラリーを割り振ります。
  3. 各ロード・ライブラリーに対応する LANGX ライブラリーを作成します。LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k を指定します。
  4. 第 2 ステージのコンパイルを実行します。最初のステージでは、IBM 問題判別ツールが INCLUDE およびマクロと一緒に完全に展開されたソース・コードにアクセスできるように、プログラムをプリプロセスします。第 2 ステージではプログラムをコンパイルします。
  5. 第 2 コンパイラー・ステージで SYSPRINT DD を変更します。これはコンパイラー・リストです。コンパイラー・リストを永続ファイルまたは一時ファイルに保存します。これは xxxLANGX ユーティリティーへの入力となります。
    注:
    通常このコンパイラーは、内部のコンパイラー・アルゴリズムに従って CSECT を名前変更します。したがって、CSECT 名を使用して PL/I コンパイラー・リストまたはサイド・ファイルを格納することはお勧めできません。Application Performance Analyzer for z/OS または Fault Analyzer for z/OS によってこれらが見つからない可能性があるためです。代わりに、1 次入り口点名を使用してください。
  6. コンパイラー・ステップの後に、xxxLANGX ユーティリティーを実行するためのステップを追加します。xxxLANGX ユーティリティーはコンパイラー・リストを読み取って、LANGX ファイルを生成します。このファイルは、 Fault Analyzer for z/OS および Application Performance Analyzer for z/OS 用のソース情報ファイルです。 xxxLANGX ユーティリティーと同等のものが、 Debug Tool for z/OS では EQALANGX、Fault Analyzer for z/OS では IDILANGX、Application Performance Analyzer for z/OS では CAZLANGX として使用可能です。LANGX ファイルを LANGX ファイル・ライブラリーに保存し、ご使用のアプリケーション・プログラムの 1 次入り口点名または CSECT 名と同じメンバー名を指定します。
  7. プロモーション・プロセスを修正して、LANGX ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する LANGX ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールに実行したのと同じステップを LANGX ファイルに実行します。
  8. オプションとして、Debug Tool Language Environment 出口モジュールを、リンケージ・エディターのステップ中にロード・モジュールに含めます。これは ISPF で Debug Tool のパネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2 ストアード・プロシージャーには EQADDCXT を使用します。CICS プログラムに出口モジュールを含めないでください。
  9. CICS アプリケーションの場合のみ: Debug Tool DTCN トランザクションを Debug Tool を開始するために使用する場合は、Debug Tool の CICS 開始出口モジュール EQADCCXT をアプリケーション・ロード・モジュールにリンク・エディットして、CICS で Debug Tool を使用可能にします。これは、DTCN の代わりに CADP トランザクションを使用している場合は必要ありません。

Enterprise PL/I for z/OS バージョン 3.4 以前のプログラムのコンパイル用サンプル JCL

以下は、Enterprise PL/I for z/OS バージョン 3.4 以前のプログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。

//*     - - -  ADD A JOB CARD ABOVE THIS LINE  - - -
//*
//*  SAMPLE JCL TO COMPILE WITH ENTERPRISE PLI V3.4 AND PREVIOUS
//*  FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//*     FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//*  NOTES:
//*
//*   COMPILER:
//*    1. A 2-STAGE COMPILE IS PERFORMED.  STAGE 1 (PREPROCESS) IS
//*       DONE TO EXPAND INCLUDES AND MACROS IN THE PROGRAM, SO THAT
//*       A SOURCE FILE IS CREATED FOR DEBUG TOOL THAT HAS ALL STMTS.
//*    2. COMPILER PARM TEST AND NOPT ARE REQUIRED FOR DEBUG TOOL
//*    3. COMPILER PARMS AGGREGATE,ATTRIBUTES(FULL),NOBLKOFF,LIST,
//*       MAP,NEST,NONUMBER,OPTIONS,SOURCE,STMT,XREF(FULL) ARE NEEDED
//*       TO PROCESS THE COMPILER LISTING WITH XXXLANGX
//*
//*   BINDER (LINKAGE EDITOR):
//*    4. THE INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL.  IT IS AN
//*       LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//*       UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//*       AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//*         IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//*            EQADBCXT: FOR BATCH PROGRAMS
//*            EQADICXT: FOR ONLINE IMS PROGRAMS
//*            EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//*           (for SUB this is supported only for invocations through call_sub)
//*            (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//*  SET PARMS FOR THIS COMPILE:
//*  ---------------------------
//   SET MEM=PTEST                        PROGRAM NAME
//   SET PLICOMP='IBMZ.V3R4.SIBMZCMP'     PLI COMPILER LOADLIB
//   SET DTLIB='EQAW.SEQAMOD'             DEBUG TOOL LOADLIB
//   SET LEHLQ='CEE'                      LE HIGH LVL QUALIFIER
//   SET UNITDEV=SYSALLDA                 UNIT FOR TEMP FILES
//   SET LANGX='EQALANGX'                 XXXLANGX UTILITY PROGRAM
//   SET LANGXLIB='EQAW.SEQAMOD'          LIBRARY FOR XXXLANGX UTILITY
//*    NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//*          OR APA. THEY NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME
//*          USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//*      IF YOU HAVE:     SET LANGX TO:    SET LANGXLIB TO:
//*      DEBUG TOOL       EQALANGX         THE DT SEQAMOD LIBRARY
//*      FAULT ANALYZER   IDILANGX         THE FA SIDIAUTH LIBRARY
//*      APA              CAZLANGX         THE APA SCAZAUTH LIBRARY
//*
//ALLOCOBJ EXEC PGM=IEFBR14              ALLOC OBJ LIB IF NEEDED
//XSOURCE DD DSN=&SYSUID..ADLAB.EXPANDED.SOURCE,SPACE=(CYL,(3,1,15)),
//  DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG)
//OBJ   DD DSN=&SYSUID..ADLAB.OBJ,SPACE=(CYL,(3,1,15)),
//  DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG)
//*  ***************************************
//*     PREPROCESS STEP (COMPILE STAGE 1)
//*  ***************************************
//PRECOMP  EXEC PGM=IBMZPLI,REGION=0M,
//   PARM=('MACRO,MDECK,NOCOMPILE,NOSYNTAX,INSOURCE')
//STEPLIB  DD   DSN=&PLICOMP,DISP=SHR
//         DD   DSN=&LEHLQ..SCEERUN,DISP=SHR
//SYSIN    DD   DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB   DD   DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD   SYSOUT=*
//SYSUT1   DD   SPACE=(1024,(200,50),,CONTIG,ROUND),DCB=BLKSIZE=1024,
//             UNIT=&UNITDEV
//SYSPUNCH DD DISP=SHR,DSN=&SYSUID..ADLAB.EXPANDED.SOURCE(&MEM)
//*
//*  ***************************************
//*     COMPILE STEP (COMPILE STAGE 2)
//*  ***************************************
//COMPILE  EXEC PGM=IBMZPLI,REGION=0M,
// PARM=('TEST(ALL),LIST,MAP,SOURCE,XREF(FULL),',
//       'NOBLKOFF,AGGREGATE, ATTRIBUTES(FULL),NEST,OPTIONS,NOPT,',
//       'STMT,NONUMBER,OFFSET')
//STEPLIB  DD DSN=&PLICOMP,DISP=SHR
//         DD DSN=&LEHLQ..SCEERUN,DISP=SHR
//SYSIN    DD DISP=SHR,DSN=&SYSUID..ADLAB.EXPANDED.SOURCE(&MEM)
//SYSLIB   DD DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD DISP=SHR,DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM)
//SYSUT1   DD SPACE=(CYL,(5,2),,CONTIG),DCB=BLKSIZE=1024,UNIT=&UNITDEV
//SYSLIN   DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR
//*
//PLIPRINT  EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT  DD SYSOUT=*
//SYSUT1    DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//SYSUT2    DD SYSOUT=*
//SYSIN     DD DUMMY
//*
//*  *********************************
//*     STEP TO GENERATE LANGX FILE
//*  *********************************
//LANGX    EXEC PGM=&LANGX,REGION=32M,
//  PARM='(PLI ERROR 64K CREF'
//STEPLIB  DD DISP=SHR,DSN=&LANGXLIB
//         DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//LISTING  DD DSN=&SYSUID..ADLAB.ENTPLI.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LINK EXEC PGM=IEWL,PARM=(LET,MAP,LIST),REGION=0M
//SYSLIB DD DSN=&LEHLQ..SCEELKED,DISP=SHR
//DTLIB DD DSN=&DTLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM)
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=(OLD,PASS)
//*  INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT)
//*  IS OPTIONAL.  THE EXIT ENABLES STARTING DEBUG TOOL WITH THE
//*  USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//*  //        DD *
//*   INCLUDE DTLIB(EQADBCXT)

PL/I for MVS および VM プログラムと OS PL/I プログラム

次の表は、Enterprise COBOL for z/OS バージョン 4 プログラムを IBM 問題判別ツール製品 (Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールには、著しく大きなランタイムのオーバーヘッドがありません。

テスト環境では、リストと LANGX ファイル (Fault Analyzer for z/OS および Application Performance Analyzer for z/OS 用) の両方が必要です。実動では、LANGX ファイルのみが推奨されます。

表 27. PL/I for MVS および VM、ならびに OS PLI で IBM 問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
TEST(ALL), AGGREGATE, ATTRIBUTES (FULL), ESD, LIST, MAP, NEST, NOPT, OPTIONS, SOURCE, STMT, XREF(FULL) コンパイラー・リスト いいえ テスト用に推奨。 (実動でこのコンパイラーに Debug Tool を使用することは推奨されません。) サポートされる サポートされる
LANGX ファイル いいえ なし サポートされる なし
NOTEST, AGGREGATE, ATTRIBUTES (FULL), ESD, LIST, MAP, NEST, OPTIONS, SOURCE, STMT, XREF(FULL) コンパイラー・リスト はい なし サポートされる 実動およびテスト用に推奨
LANGX ファイル はい なし 実動およびテスト用に推奨 なし
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

PL/I for MVS および VM プログラムと OS PL/I プログラムの準備

PL/I for MVS および VM プログラムと OS PL/I プログラムをコンパイルするには、以下のステップを実行します。

  1. コンパイラー・リスト・ファイル用のライブラリーを作成します (組織で PDS が要求されていない限り、PDSE を推奨します)。 これは、デバッグが実行されるテスト環境でのみ必要です。LRECL=125 minimum,RECFM=VBA,BLKSIZE= lrecl+4 to 32k を指定します。
  2. LANGX ファイルにライブラリーを割り振ります (組織で PDS が要求されていない限り、PDSE を推奨します)。テストおよび実動のような各環境に 1 つ以上の LANGX ライブラリーを割り振ります。
  3. 各ロード・ライブラリーに対応する LANGX ライブラリーを作成します。LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k を指定します。
  4. バッチ、CICS、IMS などのすべてのプログラムに対して、以下を行います。
  5. コンパイラー・ステップで SYSPRINT DD を変更します。これはコンパイラー・リストです。これを永続ファイルに保存します。コンパイラー・リストは xxxLANGX ユーティリティーへの入力となり、Debug Tool for z/OS 用のソース情報ファイルです。
    注:
    通常このコンパイラーは、内部のコンパイラー・アルゴリズムに従って CSECT を名前変更します。したがって、CSECT 名を使用して PL/I コンパイラー・リストまたはサイド・ファイルを格納することはお勧めできません。Application Performance Analyzer for z/OS または Fault Analyzer for z/OS によってこれらが見つからない可能性があるためです。代わりに、1 次入り口点名を使用してください。
  6. コンパイラー・ステップの後に、xxxLANGX ユーティリティーを実行するためのステップを追加します。このユーティリティーはコンパイラー・リストを読み取って、LANGX ファイルを保存します。これは、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS 用のソース情報ファイルです。 xxxLANGX ユーティリティーと同等のものが、 Debug Tool for z/OS では EQALANGX、Fault Analyzer for z/OS では IDILANGX、Application Performance Analyzer for z/OS では CAZLANGX として使用可能です。このファイルを LANGX ファイル・ライブラリーに保存し、ご使用のアプリケーション・プログラムの 1 次入り口点名と同じメンバー名を指定します。
  7. プロモーション・プロセスを修正して、LANGX ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する LANGX ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールに実行したのと同じステップを LANGX ファイルに実行します。
  8. オプションとして、Debug Tool Language Environment 出口モジュールを、リンケージ・エディターのステップ中にロード・モジュールに含めます。これは ISPF で Debug Tool のパネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2 ストアード・プロシージャーには EQADDCXT を使用します。CICS プログラムに出口モジュールを含めないでください。
  9. CICS アプリケーションの場合のみ: Debug Tool DTCN トランザクションを Debug Tool を開始するために使用する場合は、Debug Tool の CICS 開始出口モジュール EQADCCXT をアプリケーション・ロード・モジュールにリンク・エディットして、CICS で Debug Tool を使用可能にします。これは、DTCN の代わりに CADP トランザクションを使用している場合は必要ありません。

PL/I for MVS および VM プログラムのコンパイル用サンプル JCL

以下は、PL/I for MVS および VM プログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。

//*     - - -  ADD A JOB CARD ABOVE THIS LINE  - - -
//*
//*  SAMPLE JCL TO PREPARE A PLI FOR MVS AND VM PROGRAM
//*  FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//*     FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//*  NOTES:
//*
//*   COMPILER:
//*    1. COMPILER PARM TEST IS REQUIRED FOR DEBUG TOOL
//*    2. COMPILER PARMS AGGREGATE,ATTRIBUTES(FULL),ESD,LIST,
//*       MAP,NEST,OPTIONS,SOURCE,STMT,XREF(FULL) ARE NEEDED
//*       FOR PD TOOLS TO PROCESS THE COMPILER LISTING
//*
//*   BINDER (LINKAGE EDITOR):
//*    3. THE INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL.  IT IS AN
//*       LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//*       UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//*       AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//*         IF YOU USE THIS METHOD, LOAD THE CORRECT EXIT MODULE:
//*            EQADBCXT: FOR BATCH PROGRAMS
//*            EQADICXT: FOR ONLINE IMS PROGRAMS
//*            EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//*           (for SUB this is supported only for invocations through call_sub)
//*            (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//*  SET PARMS FOR THIS COMPILE:
//*  ---------------------------
//   SET MEM=PADSTAT                      PROGRAM NAME
//   SET PLICOMP='IEL.V1R1M1.SIELCOMP'    PLI COMPILER LOADLIB
//   SET DTLIB='EQAW.SEQAMOD'             DEBUG TOOL LOADLIB
//   SET LEHLQ='CEE'                      LE HIGH LVL QUALIFIER
//   SET UNITDEV=SYSALLDA                 UNIT FOR TEMP FILES
//   SET LANGX='EQALANGX'                 XXXLANGX UTILITY PROGRAM
//   SET LANGXLIB='EQAW.SEQAMOD'          LIBRARY FOR XXXLANGX UTILITY
//*    NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//*          OR APA. THE NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME
//*          USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//*      IF YOU HAVE:     SET LANGX TO:    SET LANGXLIB TO:
//*      DEBUG TOOL       EQALANGX         THE DT SEQAMOD LIBRARY
//*      FAULT ANALYZER   IDILANGX         THE FA SIDIAUTH LIBRARY
//*      APA              CAZLANGX         THE APA SCAZAUTH LIBRARY
//*
//ALLOCOBJ EXEC PGM=IEFBR14              ALLOC OBJ LIB IF NEEDED
//OBJ   DD DSN=&SYSUID..ADLAB.OBJ,SPACE=(CYL,(3,1,15)),
//  DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=8000,DISP=(MOD,CATLG)
//*
//*  ***************************************
//*     COMPILE STEP
//*  ***************************************
//*
//COMPILE  EXEC PGM=IEL1AA,REGION=6M,
// PARM=('TEST(ALL),NOPT,AGGREGATE,ATTRIBUTES(FULL),ESD,LIST,MAP,',
//       'NEST,OPTIONS,SOURCE,STMT,XREF(FULL)')
//STEPLIB  DD   DSN=&PLICOMP,DISP=SHR
//SYSIN    DD   DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSLIB   DD   DISP=SHR,DSN=&SYSUID..ADLAB.COPYLIB
//SYSPRINT DD   DISP=SHR,DSN=&SYSUID..ADLAB.PLIMVS.LISTING(&MEM)
//SYSUT1   DD   SPACE=(CYL,(1,1)),UNIT=SYSDA
//SYSLIN   DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR
//*
//PLIPRINT  EXEC PGM=IEBGENER,REGION=0M
//SYSPRINT  DD SYSOUT=*
//SYSUT1    DD DSN=&SYSUID..ADLAB.PLIMVS.LISTING(&MEM),DISP=SHR
//SYSUT2    DD SYSOUT=*
//SYSIN     DD DUMMY
//*
//*  *********************************
//*     STEP TO GENERATE LANGX FILE
//*  *********************************
//LANGX    EXEC PGM=&LANGX,REGION=32M,
//  PARM='(PLI ERROR 64K CREF'
//STEPLIB  DD DISP=SHR,DSN=&LANGXLIB
//         DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//LISTING  DD DSN=&SYSUID..ADLAB.PLIMVS.LISTING(&MEM),DISP=SHR
//IDILANGX DD DISP=SHR,DSN=&SYSUID..ADLAB.EQALANGX(&MEM)
//*
//* *********************************
//* LINK-EDIT (BINDER) STEP
//* *********************************
//LINK EXEC PGM=IEWL,PARM=(LET,MAP,LIST),REGION=0M
//SYSLIB DD DSN=&LEHLQ..SCEELKED,DISP=SHR
//DTLIB DD DSN=&DTLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM)
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLIN DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=(OLD,PASS)
//*  INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT)
//*  IS OPTIONAL.  THE EXIT ENABLES STARTING DEBUG TOOL WITH THE
//*  USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES)
//*  //        DD *
//*   INCLUDE DTLIB(EQADBCXT)

z/OS XL C および C++ プログラム

次の表は、z/OS XL C および C++ プログラムを IBM 問題判別ツール製品 (Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなコンパイラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールには、著しく大きなランタイムのオーバーヘッドがありません。

表 28. C++ で IBM 問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 生成される出力 ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
ソースを展開するためのプリプロセス (第 1 ステージ)、コンパイル時 (第 2 ステージ): TEST, ATTRIBUTE(FULL), NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF Debug Tool for z/OS によって使用される展開済みソース・ファイル、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS によって使用されるコンパイラー・リスト いいえ テスト用に推奨。 (実動でこのコンパイラーに Debug Tool を使用することは推奨されません。) サポートされる サポートされる
Debug Tool for z/OS によって使用される展開済みソース・ファイル、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS によって使用される LANGX ファイル いいえ サポートされる サポートされる サポートされる
NOTEST, ATTRIBUTE(FULL), NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF コンパイラー・リスト はい なし 実動およびテスト用に推奨 実動およびテスト用に推奨
LANGX ファイル はい なし サポートされる サポートされる
ソースを展開するためのプリプロセス (第 1 ステージ)。 コンパイル時 (第 2 ステージ): DEBUG(FORMAT (DWARF), HOOK(LINE, NOBLOCK, PATH), SYMBOL, FILE(location)) 展開済みソース・ファイルおよび DWARF ファイル いいえ サポートされる (実動でこのコンパイラーに Debug Tool を使用することは推奨されません。) なし なし
注:
  1. 上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。
  2. FORMAT(DWARF) オプションは、z/OS バージョン 1.6 以上でサポートされます。
表 29. C で IBM 問題判別ツール製品によってサポートされるコンパイラー・オプションとソース情報ファイルの例
コンパイラー・オプション 生成される出力 ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OS でサポートおよび推奨されるオプション
ソースを展開するためのプリプロセス (第 1 ステージ)、コンパイル時 (第 2 ステージ): TEST(ALL), AGGREGATE, NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF Debug Tool for z/OS によって使用される展開済みソース・ファイル、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS によって使用されるコンパイラー・リスト いいえ テスト用に推奨。 (実動でこのコンパイラーに Debug Tool を使用することは推奨されません。) サポートされる サポートされる
Debug Tool for z/OS によって使用される展開済みソース・ファイル、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS によって使用される LANGX ファイル いいえ サポートされる サポートされる サポートされる
NOTEST, AGGREGATE, NOIPA, LIST, NESTINC(255), NOOFFSET, NOOPT, SOURCE, XREF コンパイラー・リスト はい なし 実動およびテスト用に推奨 実動およびテスト用に推奨
LANGX ファイル はい なし サポートされる サポートされる
ソースを展開するためのプリプロセス (第 1 ステージ)。 コンパイル時 (第 2 ステージ): DEBUG(FORMAT (DWARF), HOOK(LINE, NOBLOCK, PATH), SYMBOL, FILE(location)) 展開済みソース・ファイルおよび DWARF ファイル いいえ サポートされる (実動でこのコンパイラーに Debug Tool を使用することは推奨されません。) なし なし
注:
  1. 上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。
  2. FORMAT(DWARF) オプションは、z/OS バージョン 1.6 以上でサポートされます。

z/OS XL C および C++ プログラムの準備

z/OS XL C および C++ プログラムをコンパイルするには、以下のステップを実行します。

  1. 展開済みソース・ファイル用のライブラリーを作成します (組織で PDS が要求されていない限り、PDSE を推奨します)。 これは、デバッグが実行されるテスト環境でのみ必要です。このライブラリーは、コンパイラーによって入力としてサポートされている任意の RECFM/LRECL/BLKSIZE にすることができます。
  2. コンパイラー・リスト・ファイル用のライブラリーを割り振ります (組織で PDS が要求されていない限り、PDSE を推奨します)。 テストや実動などの各環境ごとに、1 つ以上のコンパイラー・リスト・ライブラリーを割り振ります。
  3. 各ロード・ライブラリーに対応するリスト・ライブラリーを作成します。LRECL=133,RECFM=FBA,BLKSIZE=(multiple of lrecl up to 32k)、または LRECL=137 or greater, RECFM=VBA,BLKSIZE= lrecl+4 to 32k を指定します。
  4. 第 2 ステージのコンパイルを実行します。最初のステージでは、IBM 問題判別ツール製品が、完全に展開されたソース・コードにアクセスできるように、プログラムをプリプロセスします。第 2 ステージではプログラムをコンパイルします。
  5. 第 2 コンパイラー・ステージで、ファイルを参照するように SYSCPRT DD を変更します。これは、コンパイラー・リストであり、Fault Analyzer for z/OS および Application Performance Analyzer for z/OS 用のソース情報ファイルです。これをコンパイラー・リスト・ライブラリーに保存し、ご使用のアプリケーション・プログラムの CSECT 名と同じメンバーを指定します。
    //SYSCPRT DD DSN=compiler.listing.pds(csect-name),DISP=SHR
    注:
    Fault Analyzer でソース・サポートを有効にするには、C プログラムの CSECT に次の方法で名前を付ける必要があります。
    #pragma csect(code, "csect_name")
    ここで、PDS(E) を使用している場合、csect_name はコンパイラー・リストまたは LANGX ファイル・メンバー名に相当します。
  6. プロモーション・プロセスを変更して、コンパイラー・リスト・ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する 1 つ以上のコンパイラー・リスト・ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールで実行したステップと同じステップをコンパイラー・リスト・ファイルでも実行します。
  7. オプションとして、Debug Tool Language Environment 出口モジュールを、リンケージ・エディターのステップ中にロード・モジュールに含めます。これは ISPF で Debug Tool のパネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2 ストアード・プロシージャーには EQADDCXT を使用します。CICS プログラムに出口モジュールを含めないでください。
  8. CICS アプリケーションの場合のみ: Debug Tool DTCN トランザクションを Debug Tool を開始するために使用する場合は、Debug Tool の CICS 開始出口モジュール EQADCCXT をアプリケーション・ロード・モジュールにリンク・エディットして、CICS で Debug Tool を使用可能にします。これは、DTCN の代わりに CADP トランザクションを使用している場合は必要ありません。

z/OS C++ プログラムのコンパイル用サンプル JCL

以下は、z/OS C/C++ プログラムを IBM 問題判別ツール製品で使用できるようにコンパイルするための JCL の例です。

//* ADD A JOB CARD HERE
//*
//*
//*  SAMPLE JCL TO PREPARE A Z/OS C PROGRAM PROGRAM
//*  FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//*     FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//*  NOTES:
//*
//*   COMPILER:
//*    1. A 2-STAGE COMPILE IS PERFORMED.  STAGE 1 (PREPROCESS) IS
//*       DONE TO EXPAND INCLUDES AND MACROS IN THE PROGRAM AND TO
//*       PRODUCE AN EXPANDED SOURCE FILE.
//*    2. THE EXPANDED SOURCE FILE IS RETAINED.  IT IS USED BY
//*       DEBUG TOOL.
//*    2. COMPILER PARMS TEST AND NOOPT ARE REQUIRED FOR DEBUG TOOL.
//*    3. COMPILER PARMS AGGREGATE, NOIPA, LIST, NOOFFSET, SOURCE,
//*       AND XREF(FULL) ARE NEEDED TO FORMAT THE COMPILER LISTING
//*       SO THAT IT CAN BE PROCESSED WITH XXXLANGX
//*
//*   A STEP RUNS TO PRODUCE A LANGX FILE FOR FAULT ANALYZER AND APA.
//*    NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//*          OR APA. THE NAMES ARE DIFFERENT, BUT THE RESULTS ARE THE SAME.
//*          USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//*      IF YOU HAVE:     THEN EXECUTE MODULE:
//*      DEBUG TOOL       EQALANGX, AND ENSURE THAT THE DT SEQAMOD LIBRARY
//*                         IS AVAILABLE (VIA STEPLIB, JOBLIB, OR LINKLIST)
//*      FAULT ANALYZER   IDILANGX, AND ENSURE THAT THE FA SIDIAUTH LIBRARY
//*                         IS AVAILABLE (VIA STEPLIB, JOBLIB, OR LINKLIST)
//*      APA              CAZLANGX, AND ENSURE THAT THE APA SCAZAUTH LIBRARY
//*                         IS AVAILABLE (VIA STEPLIB, JOBLIB, OR LINKLIST)
//*
//*   BINDER (LINKAGE EDITOR):
//*    1. AN INCLUDE FOR MODULE EQAD?CXT IS OPTIONAL.  IT IS AN
//*       LE EXIT MODULE THAT CAN BE USED TO START DEBUG TOOL.
//*       UNDERSTAND THE METHODS AVAILABLE FOR STARTING DEBUG TOOL,
//*       AND CHOOSE WHETHER YOU WANT TO USE THE LE EXITS.
//*         IF YOU USE THIS METHOD, INCLUDE THE CORRECT EXIT MODULE:
//*            EQADBCXT: FOR BATCH PROGRAMS
//*            EQADICXT: FOR ONLINE IMS PROGRAMS
//*            EQADDCXT: FOR DB2 STORED PROCEDURES (OF TYPE MAIN AND SUB)
//*           (for SUB this is supported only for invocations through call_sub)
//*            (DO NOT INCLUDE AN EXIT FOR CICS PROGRAMS)
//*
//*  SET PARMS FOR THIS COMPILE:
//*  ---------------------------
//*       CPRFX: THE PREFIX THE C/C++ COMPILE IS INSTALLED UNDER
//*       LEPRFX: THE PREFIX FOR THE LE RUNTIME AND LINK LIBS
//*       DTPRFX: THE PREFIX OF THE DEBUG TOOL SEQAMOD LIBRARY
//*
//    SET CPRFX=CBC
//    SET LEPRFX=CEE
//    SET DTPRFX=EQAW
//*
//*******************************************************************/
//* CREATE C/C++ COMPILER LISTING SYSPRINT, EXPANDED SOURCE DEBUG,  */
//* AND EQALANGX FILES                                              */
//*******************************************************************/
//ALLOC EXEC PGM=IEFBR14
//LISTING DD DSN=&SYSUID..ADLAB.CLST,
//           DISP=(MOD,CATLG),
//           DCB=(DSORG=PO,RECFM=VBA,LRECL=137,BLKSIZE=0),
//           SPACE=(TRK,(20,20,50)),UNIT=SYSDA
//DBGSRC  DD DSN=&SYSUID..ADLAB.CDBG,
//           DISP=(MOD,CATLG),
//           DCB=(DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=0),
//           SPACE=(TRK,(20,20,50)),UNIT=SYSDA
//LANGX   DD DSN=&SYSUID..ADLAB.EQALANGX,
//           DISP=(MOD,CATLG),
//           DCB=(DSORG=PO,RECFM=VB,LRECL=1562,BLKSIZE=0),
//           SPACE=(TRK,(40,40,50)),UNIT=SYSDA
//*                                                                 *
//****************************************************************
//*-------------------------------------------------------------------
//*  COMPILE STEP1: GENERATE EXPANDED C/C++ SOURCE FILE IN THE DD
//*                 SYSUT10
//*-------------------------------------------------------------------
//COMP1   EXEC PGM=CCNDRVR,REGION=0M,
// PARM=('PP(COMMENTS,NOLINES)')
//STEPLIB  DD  DSNAME=&LEPRFX..SCEERUN2,DISP=SHR
//         DD  DSNAME=&CPRFX..SCCNCMP,DISP=SHR
//SYSMSGS  DD  DUMMY,DSN=&CPRFX..SCBC3MSG(EDCMSGE),DISP=SHR
//SYSLIB   DD  DSNAME=&LEPRFX..SCEEH.H,DISP=SHR
//         DD  DSNAME=&LEPRFX..SCEEH.SYS.H,DISP=SHR
//         DD  DSNAME=&SYSUID..ADLAB.COPYLIB,DISP=SHR
//SYSPRINT DD  SYSOUT=*
//SYSOUT   DD  SYSOUT=*
//SYSCPRT  DD  SYSOUT=*
//SYSUT1   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSUT5   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT6   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT7   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT8   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT9   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=VB,LRECL=137,BLKSIZE=882)
//SYSUT10  DD  DISP=SHR,DSN=&SYSUID..ADLAB.CDBG(TMC01A)
//SYSUT14  DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//             DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT16  DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//             DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT17  DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//             DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSLIN   DD  DUMMY
//SYSIN    DD  DSNAME=&SYSUID..ADLAB.SOURCE(TMC01A),DISP=SHR
//*
//*-------------------------------------------------------------------
//*  COMPILE STEP2: COMPILE THE EXPANDED SOURCE FILE WITH THE DEBUG
//*                 COMPILER OPTION TEST(ALL)
//*-------------------------------------------------------------------
//COMP2   EXEC PGM=CCNDRVR,REGION=0M,
//  PARM=('TEST(ALL), AGGREGATE, NOIPA, LIST, NESTINC(255),',
//    ' NOOFFSET, NOOPT, SOURCE, XREF')
//STEPLIB  DD  DSNAME=&LEPRFX..SCEERUN2,DISP=SHR
//         DD  DSNAME=&CPRFX..SCCNCMP,DISP=SHR
//         DD  DSNAME=&LEPRFX..SCEERUN,DISP=SHR
//SYSMSGS  DD  DUMMY,DSN=&CPRFX..SCBC3MSG(EDCMSGE),DISP=SHR
//SYSLIB   DD  DSNAME=&LEPRFX..SCEEH.H,DISP=SHR
//         DD  DSNAME=&LEPRFX..SCEEH.SYS.H,DISP=SHR
//SYSCPRT  DD  DISP=SHR,DSN=&SYSUID..ADLAB.CLST(TMC01A)
//SYSOUT   DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//SYSUT1   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSUT5   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT6   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT7   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT8   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT9   DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//   DCB=(RECFM=VB,LRECL=137,BLKSIZE=882)
//SYSUT10  DD  SYSOUT=*
//SYSUT14  DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//             DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT16  DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//             DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSUT17  DD  UNIT=SYSDA,SPACE=(32000,(30,30)),
//             DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//SYSLIN   DD DSN=&&TEMOBJ1(TMC01A),DISP=(,PASS),UNIT=SYSDA,
// SPACE=(TRK,(20,20,20)),DCB=(RECFM=FB,BLKSIZE=3120,LRECL=80,DSORG=PO)
//SYSIN    DD  DSNAME=&SYSUID..ADLAB.CDBG(TMC01A),DISP=SHR
//*
//*-------------------------------------------------------------------
//* LINK STEP: LINK THE COMPILED OBJECT DECK
//*-------------------------------------------------------------------
//LKED EXEC PGM=IEWL,PARM=(LET,MAP,LIST)
//SYSLIB DD DSN=&LEPRFX..SCEELKED,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD
//SYSUT1 DD SPACE=(TRK,(10,10)),UNIT=SYSDA
//OBJECT DD DISP=(OLD,PASS),DSN=&&TEMOBJ1
//* DTLIB DD DSN=&DTPRFX..SEQAMOD,DISP=SHR
//SYSLIN DD *
INCLUDE OBJECT(TMC01A)
ENTRY CEESTART
NAME TMC01(R)
/*
//*  INCLUDING A DEBUG TOOL LE EXIT (EQADBCXT, EQADDCXT, OR EQADICXT)
//*  IS OPTIONAL.  THE EXIT ENABLES STARTING DEBUG TOOL WITH THE
//*  USER EXIT DATA SET UTILITY (ONE OF THE DEBUG TOOL ISPF UTILITIES).
//*  AN INCLUDE CAN BE ADDED TO SYSLIN IN THE APPRORIATE SEQUENCE:
//*   INCLUDE DTLIB(EQADBCXT)
//**************************************************************
//* GENERATE THE TMC01A EQALANGX FILE
//**************************************************************
//LANGX1   EXEC PGM=EQALANGX,REGION=32M,
//  PARM='(C ERROR'
//STEPLIB  DD DISP=SHR,DSN=&DTPRFX..SEQAMOD
           DD DISP=SHR,DSN=&LEPRFX..SCEERUN
//LISTING  DD DSN=&SYSUID..ADLAB.CLST(TMC01A),DISP=SHR
//IDILANGX DD DSN=&SYSUID..ADLAB.EQALANGX(TMC01AX),DISP=(OLD)

アセンブラー・プログラム

次の表は、プログラムを IBM 問題判別ツール製品 (Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS) で使用するための準備に使用できる、さまざまなアセンブラー・オプションを示しています。以下の表で推奨されるメソッドは、作成されたロード・モジュールが実稼働環境に適しているかどうかを示します。実稼働環境に適したロード・モジュールには、著しく大きなランタイムのオーバーヘッドがありません。

表 30. アセンブラーで IBM 問題判別ツール製品によってサポートされるアセンブラー・オプションとソース情報ファイルの例
アセンブラー・オプション 作成されたソース情報のファイル・タイプ ロード・モジュールが実動用に準備できているかどうか。 Debug Tool for z/OS でサポートおよび推奨されるオプション Fault Analyzer for z/OS でサポートおよび推奨されるオプション Application Performance Analyzer for z/OSでサポートおよび推奨されるオプション
ADATA SYSADATA ファイル はい なし サポートされる サポートされる
ADATA LANGX ファイル はい 実動およびテスト用に推奨
注:
上の表でハイライトされている行は、各製品に推奨されるコンパイラー・オプションおよびソース情報ファイル・タイプを示します。

アセンブラー・プログラムの準備

プログラムをアセンブルするには、以下のステップを実行します。

  1. LANGX ファイルにライブラリーを割り振ります (組織で PDS が要求されていない限り、PDSE を推奨します)。テストおよび実動のような各環境に 1 つ以上の LANGX ライブラリーを割り振ります。
  2. 各ロード・ライブラリーに対応する LANGX ライブラリーを作成します。LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k を指定します。
  3. テスト環境と実稼働環境の両方で、バッチ、CICS、および IMS などのすべてのプログラムに対して、ADATA を指定します。

    ADATA はアセンブラーに対して SYSADATA ファイルの生成を指示します。このファイルには、プログラムに関するソースおよびシンボリック・データが含まれます。これにより、Debug Tool for z/OS を使用してデバッグできる実動準備完了モジュールが生成されます。ADATA は、アセンブルされたモジュールの内容には影響しません。

  4. アセンブラー・ステップで SYSADATA DD を追加します。このファイルはアセンブラーによって作成され、永続ファイルでも一時ファイルでもかまいません。 LRECL=8188 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k を指定します。このファイルは xxxLANGX ユーティリティーへの入力となります。
  5. アセンブラー・ステップの後に、xxxLANGX ユーティリティーを実行するためのステップを追加します。xxxLANGX ユーティリティーは SYSADATA ファイルを読み取って、LANGX ファイルを作成します。LANGX ファイルは、 Debug Tool for z/OS、Fault Analyzer for z/OS、および Application Performance Analyzer for z/OS 用のソース情報ファイルです。 xxxLANGX ユーティリティーと同等のものが、 Debug Tool for z/OS では EQALANGX、Fault Analyzer for z/OS では IDILANGX、Application Performance Analyzer for z/OS では CAZLANGX として使用可能です。
  6. LANGX ファイルを LANGX ファイル・ライブラリーに保存して、CSECT 名と同じメンバー名を指定します。
  7. プロモーション・プロセスを修正して、LANGX ファイルをプロモートします。ロード・モジュールが例えばテストから実動にプロモートされる場合には、対応する LANGX ファイルをプロモートします。プロモーションは再コンパイル、コピー、または移動できます。プロモーション中にモジュールに実行したのと同じステップを LANGX ファイルに実行します。
  8. アセンブラー・プログラムが Language Environment に対応する場合、オプションで、リンケージ・エディターのステップ中に Debug Tool の Language Environment 出口モジュールをロード・モジュールに組み込みます。これは ISPF で Debug Tool のパネル 6 を使用可能にする 1 つの方法で、 プログラムが実行されたときに、JCL を変更せずにプログラム名とユーザー ID に基づいて自動的にデバッガーを開始する、シンプルなパネル駆動のメソッドです。バッチ・プログラム (IMS バッチを含む) にはモジュール EQADBCXT、IMS/TM プログラムには EQADICXT、DB2 ストアード・プロシージャーには EQADDCXT を使用します。CICS プログラムに出口モジュールを含めないでください。
  9. CICS プログラムの場合のみ: プログラムが CICS メインプログラムであり、Language Environment に対応し、Debug Tool を開始するために Debug Tool の DTCN トランザクションが使用される場合は、リンケージ・エディターのステップ中に、提供されたモジュール EQADCCXT をロード・モジュールに組み込む必要があります。

プログラムのアセンブル用サンプル JCL

以下は、プログラムを IBM 問題判別ツール製品で使用できるようにアセンブルするための JCL の例です。

//*     - - -  ADD A JOB CARD ABOVE THIS LINE  - - -
//*
//*  SAMPLE JCL TO PREPARE AN ASSEMBLER PROGRAM
//*  FOR THE IBM ZSERIES PD TOOLS PRODUCTS:
//*     FAULT ANALYZER, DEBUG TOOL, AND APPLICATION PERF. ANALYZER
//*
//*  NOTES:
//*
//*   ASSEMBLER:
//*    1. AN ADATA PARM IS REQUIRED TO PRODUCE A SYSADATA FILE
//*
//*   A STEP THAT PROCESSES THE SYSADATA FILE,
//*   AND CREATES A LANGX FILE IS NEEDED.
//*
//*   BINDER (LINKAGE EDITOR):
//*    1. AMODE / RMODE CAN BE CODED AS NEEDED BY THE PROGRAM.  THEY ARE
//*       NOT REQUIRED FOR PD TOOLS.
//*
//*  SET PARMS FOR THIS COMPILE:
//*  ---------------------------
//   SET MEM=ASAM1                        PROGRAM NAME
//   SET Language EnvironmentHLQ='CEE'    Language Environment HIGH LVL QUALIFIER
//   SET UNITDEV=SYSALLDA                 UNIT FOR TEMP FILES
//   SET LANGX='EQALANGX'                 XXXLANGX UTILITY PROGRAM
//   SET LANGXLIB='EQAW.SEQAMOD'          LIBRARY FOR XXXLANGX UTILITY
//*    NOTE: YOU CAN USE THE XXXLANGX UTILITY SHIPPED WITH DT, FA,
//*          OR APA. THE NAMES ARE DIFFERENT, BUT RESULTS ARE THE SAME
//*          USE ANY OF THEM... THEY ALL PRODUCE THE SAME RESULTS.
//*      IF YOU HAVE:     SET LANGX TO:    SET LANGXLIB TO:
//*      DEBUG TOOL       EQALANGX         THE DT SEQAMOD LIBRARY
//*      FAULT ANALYZER   IDILANGX         THE FA SIDIAUTH LIBRARY
//*      APA              CAZLANGX         THE APA SCAZAUTH LIBRARY
//*
//*  *********************************
//*      ASSEMBLER STEP
//*  *********************************
//ASM1 EXEC  PGM=ASMA90,COND=(4,LT),REGION=32M,
//      PARM='ADATA,OBJECT'
//SYSIN    DD DISP=SHR,DSN=&SYSUID..ADLAB.SOURCE(&MEM)
//SYSPRINT DD SYSOUT=*
//SYSLIN   DD DISP=SHR,DSN=&SYSUID..ADLAB.OBJ(&MEM)
//SYSADATA DD DISP=SHR,DSN=&SYSUID..ADLAB.SYSADATA(&MEM)
//SYSLIB  DD  DSN=SYS1.MODGEN,DISP=SHR
//        DD  DSN=SYS1.MACLIB,DISP=SHR
//        DD  DSN=&LEHLQ..SCEEMAC,DISP=SHR
//SYSUT1  DD  DISP=(NEW,DELETE),DSN=&&SYSUT1,SPACE=(1700,(900,450)),
//     UNIT=&UNITDEV
//SYSUT2  DD  DISP=(NEW,DELETE),DSN=&&SYSUT2,SPACE=(1700,(600,300)),
//     UNIT=&UNITDEV
//SYSUT3  DD  DISP=(NEW,DELETE),DSN=&&SYSUT3,SPACE=(1700,(600,300)),
//     UNIT=&UNITDEV
//*
//*  *********************************
//*     STEP TO GENERATE LANGX FILE
//*  *********************************
//LANGX    EXEC PGM=&LANGX,REGION=32M,
//  PARM='(ASM ERROR'
//STEPLIB  DD DISP=SHR,DSN=&LANGXLIB
//         DD DISP=SHR,DSN=&LEHLQ..SCEERUN
//SYSADATA DD DSN=&SYSUID..ADLAB.SYSADATA(&MEM),DISP=SHR
//IDILANGX DD DSN=&SYSUID..ADLAB.EQALANGX(&MEM),DISP=SHR
//*
//*  *********************************
//*        LINK-EDIT (BINDER) STEP
//*  *********************************
//LINK     EXEC PGM=IEWL,PARM='MAP',REGION=0M
//SYSLIB   DD DSN=&LEHLQ..SCEELKED,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLMOD  DD DISP=SHR,DSN=&SYSUID..ADLAB.LOAD(&MEM)
//SYSUT1   DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLIN   DD DSN=&SYSUID..ADLAB.OBJ(&MEM),DISP=SHR
//         DD *
     MODE AMODE(31),RMODE(24)
     ENTRY ASAM1
//*