IMS プログラムのデバッグ

このトピックでは、以下の作業について説明します。

TSO フォアグラウンドで BTS を実行することによる IMS バッチ・プログラムの対話式デバッグ

IMS バッチ・プログラムを対話式にデバッグしたい場合、専用端末を使用するフルスクリーン・モード または リモート・デバッグ モードを使用できます。このトピックでは、以下のステップを実行して、TSO フォアグラウンドで BTS を実行するための 3 つ目のオプションを説明します。

  1. プログラムを開始するために、./T コマンドに dummy のトランザクション・コードを定義します。
  2. BTS 入力ストリームに dummy トランザクションを組み込みます。
  3. TSO フォアグラウンドで BTS を始動します。

    BTS が TSO のフォアグラウンドで開始された場合、FSS がデフォルト・オプションであり、BTS を TSO のフォアグラウンドで実行しているときのみ使用可能です。FSS をオフにする方法は、./O コマンドで TSO=NO を指定する方法のみです。TSO フォアグラウンドで実行する場合、すべての呼び出しトレースを TSO 端末に表示するのが、デフォルトになっています。./O あるいは ./T のいずれかのコマンドのパラメーターによってオフにすることができます。

注:
Debug Tool を起動してもソース (C および C++) またはリスト (COBOL および PL/I) が表示されない場合は、 ソースまたはリスト・ファイルの名前が、MVS™ ライブラリー名と一致しているかどうか、 およびその MVS ライブラリーに対して少なくとも読み取りアクセス権があるかどうかを、確認してください。

バッチ・モードでの IMS バッチ・プログラムのデバッグ

Debug Tool を使用すると、IMS プログラムをバッチ・モードでデバッグできます。デバッグ・コマンドは、事前に定義して Debug Tool コマンド・ファイルか、あるいはコマンド・ストリングに組み入れておくことが必要です。コマンド・ストリングは、TEST ランタイム・オプションで、あるいは CALL CEETEST__ctest が使用されるときに、パラメーターとして指定できます。バッチ・モードではシステム・リソースの消費が少なくて済みますが、どのデバッグ・コマンドを発行するかは、前もって決めておく必要があります。BTS をバッチ・ジョブとして実行する場合、Debug Tool のバッチ・モードだけが使用できます。

例えば、BTS で IMS トランザクションに対するテスト入力データの個々のメンバーに、データ・セット userid.CODE.BTSINPUT を割り振ることができます。

非言語環境プログラム IMS MPP のデバッグ

言語環境プログラムで実行しない IMS メッセージ処理プログラム (MPP) をデバッグするには、以下の手順を行います。

  1. ご使用のシステムが正しく構成され、新規リージョンで始動することを検証します。説明は、非言語環境プログラム IMS MPP の構成の検証とリージョンの開始を参照してください。
  2. デバッグ・インターフェースを選択します。説明は、非言語環境プログラム IMS MPP のインターフェースの選択と情報の収集を参照してください。
  3. EQASET トランザクションを実行します。このトランザクションにより、デバッグ方法を選択し、使用可能にしたデバッグ・インターフェースを確認します。非言語環境プログラム IMS MPP の EQASET トランザクションの実行を参照してください。
  4. デバッグする必要のあるプログラムに関連付けられた IMS トランザクションを開始します。

プログラムのデバッグ完了後、以下のいずれかを行うことができます。

非言語環境プログラム IMS MPP の構成の検証とリージョンの開始

言語環境プログラムで稼働しない IMS MPP をデバッグする前に、以下のステップを行ってください。

  1. お客様のシステム管理者に相談して、言語環境プログラムで実行しない IMS プログラムをデバッグするようにシステムが構成済みであることを確認します。リージョンと EQANISET の開始用 JCL に APPLFE=EQANIAFE パラメーター・ストリングを組み込む方法は、「Debug Tool カスタマイズ・ガイド」を参照してください。
  2. メッセージ処理プログラム (MPP) がスケジュールされる場合は必ず、EQANIAFE アプリケーションのフロントエンド・ルーチンを実行する IMS メッセージ処理リージョン (MPR) を開始してください。

上記ステップ完了後に、非言語環境プログラム IMS MPP のインターフェースの選択と情報の収集に記載されたデバッグ・インターフェースを選択します。

非言語環境プログラム IMS MPP のインターフェースの選択と情報の収集

以下のデバッグ・インターフェースのいずれかを選択して、指定された情報を収集します。

デバッグ・インターフェースの選択完了後、非言語環境プログラム IMS MPP の EQASET トランザクションの実行に記載されたように EQASET トランザクションを実行します。

非言語環境プログラム IMS MPP の EQASET トランザクションの実行

EQASET トランザクションの実行により、以下のいずれかの機能を実行することを EQANIAFE アプリケーション・フロントエンド・ルーチンに通知します。

デバッグ・セッションを使用可能にするには、以下のいずれかのオプションを選択します。

EQASET コマンド入力後、そのコマンドを入力したのと同じ端末上で、デバッグ対象のアプリケーション・プログラムに関連付けられたトランザクションを開始します。

既存の設定に関する情報を要求するには、EQASET STATUS コマンドを入力します。

デバッグ・セッションを使用不可にするには、EQASET OFF コマンドを入力します。

EQASET OFF を使用した後にデバッグ・セッションを再度使用可能にするには、EQASET ON コマンドを入力します。

非言語環境プログラム MPP の EQASET トランザクションの構文

次の図では、言語環境プログラム以外の MPP の EQASET トランザクションの構文を示します。

構文図を読む構文図をスキップする>>-EQASET--+-MFI=--+------------------------------------------+-+-><
           |       '-+---------------------+-terminal_LU_name-' |
           |         '-network_identifier.-'                    |
           +-VTAM=--+---------+---------------------------------+
           |        '-user_ID-'                                 |
           +-TCP=--+----------------------------+---------------+
           |       '-IP_address--%--port_number-'               |
           +-VTCP=--+----------------------------+--------------+
           |        '-IP_address--%--port_number-'              |
           +-ON-------------------------------------------------+
           +-OFF------------------------------------------------+
           '-STATUS---------------------------------------------'
 

EQASET トランザクションを使って、そのトランザクションを実行する各ユーザーごとに独立したデバッグ設定を管理します。各設定はユーザー ID により識別されます。このユーザー ID を使用して EQASET トランザクションを実行する場所となる端末にログオンします。どのユーザー ID の場合も、入力された最後のデバッグ用プリファレンス (MFI、TCP、VTCP、または VTAM) だけが保存されます。 STATUS オプションを使用して、現行のデバッグ用プリファレンスを表示できます。

このデバッグ用プリファレンスを使用して、以下の TEST ランタイム・オプション・ストリングが作成されます。

TEST(ALL,INSPIN,,debuggingPreference:*)

お客様は、他のランタイム・オプションをカスタマイズすることはできません。

MFI=
Debug Tool の端末インターフェース・マネージャーを指定せずに、専用端末を使用するフルスクリーン・モードを使用します。デバッグ・セッションに対して専用の端末の LU 名を指定する必要があります。 サイトで、VTAM ネットワーク ID を指定する必要がある場合には、 端末 LU 名の前に VTAM ネットワーク ID 名を付加します。端末 LU 名を指定しないと、デバッグ処理をオフになります。等号 (=) の後ろにはスペースは許されません。この設定は、デバッグ処理がオンになることを意味します。
VTAM=
Debug Tool の端末インターフェース・マネージャーを指定して、専用端末を使用するフルスクリーン・モードを使用します。ここでは、ユーザー ID を指定する必要があります。このユーザー ID は、デバッグ・セッションに対して指定された専用の端末へのログオン時に使用したものです。ユーザー ID を指定しない場合は、デバッグ処理はオフになります。 等号 (=) の後ろにはスペースは許されません。この設定は、デバッグ処理がオンになることを意味します。
TCP= または VTCP=
リモート・デバッグ・モードを使用します。リモート・デバッグ・デーモンを実行しているワークステーションの TCP/IP アドレスとポート番号を指定します。 IP アドレスとポート番号を指定しないと、デバッグ処理はオフになります。等号 (=) の後ろにはスペースは許されません。このプリファレンスの意味は、デバッグ処理がオンになることを示します。TCP/IP アドレスは、次のいずれかの形式で指定できます。
IPv4
アドレスをシンボリック・アドレス (例えば、some.name.com) として、または数値アドレス (例えば、9.112.26.333) として指定できます。
IPv6
アドレスを数値アドレス (例えば、1080:0:FF::0970:1A21) として指定する必要があります。IPv6 形式を使用する場合は、TCP= オプションを使用する必要があります。VTCP= オプションは使用できません。
ON
デバッグ処理をオンにします。この指定が有効なのは、デバッグ用プリファレンス (MFI、TCP、VTCP、または VTAM) が設定済みの場合だけです。
OFF
デバッグ処理をオフにします。
STATUS
現行のデバッグ用プリファレンスを表示します。EQASET トランザクションでは、IP アドレスの最初の 25 文字しか表示されません。

/SIGN ON を発行しない言語環境プログラム IMS MPP のデバッグ

IMS (EQADICXT) の言語環境プログラムのユーザー出口は、言語環境プログラム・ランタイム・オプション (TEST ランタイム・オプションなど) が含まれている MVS データ・セットの名前を構成します。 EQADICXT は、データ・セット名の各修飾子を表すトークンに値を割り当てることにより MVS データ・セットの名前を構成します。すなわち、&USERID トークンの値として IMS ユーザー ID を割り当てます。ただし、IMS に (/SIGN ON を使用して) サインオンしていない場合、IMS ユーザー ID は IMS LTERM ID と同じになるか、定義されません。いずれの場合も、EQADICXT は MVS データ・セットを特定できません。EQADICXT が &USERID トークンの値として TSO ユーザー ID を割り当てるように指定するには、TSOID オプションを指定して EQASET トランザクションを実行します。 TSOID オプションを指定した EQASET トランザクションの説明については、言語環境プログラム MPP の EQASET トランザクションの構文 を参照してください。

言語環境プログラム MPP の EQASET トランザクションの構文

次の図では、言語環境プログラムの MPP の EQASET トランザクションの構文を示します。

構文図を読む構文図をスキップする>>-EQASET--+-TSOID=--+-------------+-+-------------------------><
           |         '-tso_user_ID-' |
           '-STATUS------------------'
 

言語環境プログラム MPP に EQASET トランザクションを使用する場合、指定された TSO ユーザー ID に現在の IMS LTERM ID を関連付けます。EQADICXT は &USERID トークンの TSO ユーザー ID を使用して MVS データ・セットの有効な名前を構成できます。

TSOID=
言語環境プログラムのユーザー出口の &USERID トークンの代わりに使用する TSO ユーザー ID を指定します。TSO ユーザー ID は、TEST ランタイム・オプション・データ・セットの作成と管理 に記載されているように、データ・セット名の作成に使用されるユーザー ID と一致しなければなりません。
STATUS
TSOID の現行値を表示します。

このオプションでは、言語環境プログラム以外の MPP のデバッグ設定に関する情報も表示される場合があります。

Debug Tool Utilities を使用した IMS プログラム用セットアップ・ファイルの作成

IMS バッチ・メッセージ処理プログラム (BMP) 用にセットアップ・ファイルを作成することができます。このセットアップ・ファイルには、カスタム領域の作成方法、および IMS プログラムのロード・モジュールと Debug Tool ロード・モジュールのデータ・セットを 参照する STEPLIB 連結ステートメントの定義方法が記述されます。また、IMS メッセージ処理プログラム (MPP) のテストに使用でき専用メッセージ領域を作るための、セットアップ・ファイルを作成してカスタマイズすることも可能です。クラス X でプライベート・メッセージ領域を作成すると、 トランザクション X により実行される IMS プログラムをテストして、 他の IMS プログラムにより使用される他の領域と干渉するリスクを減らせます。

Debug Tool Utilities を使用して IMS プログラム用セットアップ・ファイルを作成するには、以下のステップを行います。

  1. Debug Tool Utilities を始動する。Debug Tool Utilities の始動方法が分からない場合は、Debug Tool Utilities の始動を参照してください。
  2. Debug Tool Utilities パネル (EQA@PRIM) で「Option」の行に 4 を入力して Enter を押す。
  3. 「Manage IMS Programs」パネル (EQAPRIS) で「Option」の行に 2 を入力して Enter を押す。
  4. 「専用メッセージ領域の作成 (Create Private Message Regions)」-「セットアップ・ファイル編集 (Edit Setup File)」パネル (EQAPFORA) で、新規セットアップ・ファイルを作成するための情報を入力するか、または既存のセットアップ・ファイルを編集します。 Enter を押します。

    専用メッセージ領域を作成し、アプリケーションのデバッグ時 のアプリケーション・ライブラリーまたは Debug Tool ライブラリーをカスタマイズして、 他のユーザーのアクティビティーに影響を与えないようにします。専用メッセージ領域の作成に関する許可および規則については、 システム管理者に相談してください。

    IMS プログラムの実行に必要なセットアップ情報を指定した後に、IMS プログラムのテストに使用できるプライベート・メッセージ領域の作成に必要な情報を指定するか、BMP プログラムの実行方法を指定できます。このセットアップ情報を指定するには、以下のステップを行います。

  5. 「セットアップ・ファイルの編集 (Edit Setup File)」パネル (EQAPFORI) に、情報を入力して、IMS バッチ・プロセッサーを開始します。「/ を入力してパラメーターを変更する (Enter / to modify parameters)」フィールドにスラッシュ (/) を入力し、Enter を押して、バッチ・プロセッサーのパラメーターを変更します。
  6. 「Parameters for IMS Procedures (IMS プロシージャーのパラメーター)」パネル (EQAPRIPM) の「TYPE」フィールドに次のいずれかの値を入力して、実行するアクションを指示します。

    必要に応じてその他のパラメーターを入力します。パラメーターの情報を表示するには、PF1 を押してください。

  7. 指定内容を入力した後に、PF10 を押して、処理を行うようにジョブを実行依頼できます。

Debug Tool が無反応になる現象を回避するための IMS アプリケーションへのブレークポイントの配置

IMS アプリケーション・プログラムをデバッグする際、IMS がリソースを管理する方法によって Debug Tool が無反応になる現象が発生する場合があります。この状態を回避するには、デバッグする必要がある位置にできるだけ近いところ、または GetUnique (GU) 呼び出しステートメントにブレークポイントを設定してください。このトピックの情報により、どのように IMS のリソースの管理によって Debug Tool が無反応になるかを理解し、この状態を回避するためにブレークポイントを設定するおおよその位置を判別できます。

IMS トランザクションを開始した後、IMS はそのトランザクションに関連付けられたアプリケーション・プログラムをロードし、実行します。IMS はそのアプリケーション・プログラムによって要求され、戻されたすべてのメッセージを管理し、さらに、同時に実行されているその他のアプリケーション・プログラムによって要求され、戻されたすべてのメッセージも管理します。IMS は処理限界数 (PLCT) と他のツールを使用して、確実にアプリケーション・プログラムが適切なリソースのシェアを取得するようにします。IMS アプリケーション・プログラムが PLCT を超えない限り8、メッセージの実行と処理または次のメッセージの待機が続行されます。ただし、そのアプリケーション・プログラムをデバッグしようとすると、続行されたメッセージの処理または待機によって Debug Tool が無反応になる現象が発生する可能性があります。この状態を回避するには、(例えば、GO コマンドを入力して) アプリケーション・プログラムの実行を開始する前に、デバッグ・セッションの始めに以下のいずれかのオプションを試行します。

関連する参照


8.
IMS 即時再スケジュールによって、アプリケーション・プログラムはそれぞれの物理的スケジュールについて PLCT より多く処理することができます。即時再スケジュールでは、アプリケーション・プログラムの不要な再スケジュールや再ロードによって発生する処理オーバーヘッドを除去できます。