6 COBOLプログラムのデバッグ

ART for Batchでは、Micro Focus COBOLおよびCOBOL-IT COBOLでrunb/runbexciでのユーザーCOBOLプログラムがサポートされます。

  • Micro Focus COBOLを使用したデバッグ
  • COBOL-IT COBOLを使用したデバッグ(deetツールを使用)

デバッグするすべてのジョブおよびプログラムを構成ファイルbatchdebug.cfgで構成できます。デバッグできるのは、このファイルで構成されたジョブ/プログラムのみです。詳細は、「構成ファイルでのデバッグのための構成」を参照してください。

COBOLのデバッグをサポートするには、デバッグ情報を出力するようにすべてのCOBOLプログラムをコンパイルする必要があります。特に、Micro Focus COBOLの場合は、.idyファイルが存在する必要があります。

6.1 Micro Focus COBOLを使用したデバッグ

Micro Focus COBOLを使用してデバッグするには、次の手順に従います。

  1. batchdebug.cfg構成ファイルを${JESROOT}で作成または変更します。詳細は、「構成ファイルでのデバッグのための構成」を参照してください。
  2. 新しいターミナルでanimを起動します。animは待機状態のままになります。
  3. ジョブを送信します。これにより、起動されたCOBOLプログラムにAnimatorがアタッチされます。
  4. COBOLプログラムをデバッグします。

ノート:

デバッグ・セッションの終了時に、デバッグしたプログラムからAnimatorをデタッチすることが必要になる場合があります。

6.2 COBOL-IT COBOLを使用したデバッグ

COBOL-IT COBOLを使用してデバッグするには、次のステップを実行します。

  1. batchdebug.cfg構成ファイルを${JESROOT}で作成または変更します。詳細は、「構成ファイルでのデバッグのための構成」を参照してください。
  2. ジョブを送信します。COBOLプログラムが実際に実行されるまでハングし、デバッグ・セッションの開始を待機します。
  3. vncserverを使用してVNC環境を起動します。VNC xtermで、コマンドdeet -p your DEBUGIDを使用してデバッグ・セッションを開始します。DeetグラフィックUIが起動され、DeetがCOBOLプログラムにアタッチされます。
  4. このCOBOLプログラムをDeetグラフィックUIでデバッグします。

    ノート:

    デバッグ・セッションの終了時に、デバッグしたプログラムからDeetをデタッチすることが必要になる場合があります。
    DeetグラフィックUIの詳細は、COBOL-IT COBOLのドキュメントを参照してください。

6.3 構成ファイルでのデバッグのための構成

runbまたはrunbexciを起動してCOBOLアプリケーション・プログラムを起動する場合、ART for Batchによって構成ファイルbatchdebug.cfg${JESROOT}でチェックされ、COBOLデバッグを有効にするかどうかが判断されます。したがって、有効にするには、この構成ファイルを最初に設定する必要があります。batchdebug.cfgで構成したDEBUGIDを持つプログラムのみをデバッグできます。

batchdebug.cfgの書式は次のとおりです。

COBOL; DEBUGID;UserID;JobName;Program

表6-1 デバッグ構成のパラメータ

フィールド名 タイプ 説明
COBOL 固定文字列 必須 COBOLデバッグの使用を識別するための固定文字列。
DEBUGID X(40)または1から999999999 必須 Micro Focus COBOLアプリケーション・プログラムでは、DEBUGIDはCOBOLでアニメーションを有効化するために必要な文字列です。最大40文字の文字列です。文字列には、英数字およびアンダースコアを含めることができます。

COBOL-IT COBOLアプリケーション・プログラムでは、DEBUGID1から999999999の範囲に含まれる数字です。

UserID X(30) 必須 診断対象のART for BatchユーザーID。通常、Oracle Tuxedoユーザー名です。*はすべてのユーザーを意味します。
JobName X(32) 必須 診断対象のジョブ名。*はすべてのジョブを意味します。
Program X(30) 必須 診断対象のCOBOLプログラム名。エントリCOBOLプログラム名である必要があります。*はすべてのプログラムを意味します。

いくつかの例を示します。

  • リスト1とリスト2は、ユーザーAによって送信されたジョブJOBAのすべてのプログラムをデバッグする場合の例です。
  • リスト3とリスト4は、すべてのジョブのprogram1をデバッグする場合の例です。

リスト1 1つのジョブのすべてのプログラムのデバッグ(Micro Focus COBOL)

COBOL;debugid1;A;JOBA;*

リスト2 1つのジョブのすべてのプログラムのデバッグ(COBOL-IT COBOL)

COBOL;101; A; JOBA;*

リスト3 すべてのジョブの1つのプログラムのデバッグ(Micro Focus COBOL)

COBOL;debugid2;*;*;program1

リスト4 すべてのジョブの1つのプログラムのデバッグ(COBOL-IT COBOL)

COBOL;102;*;*;program1