Debug Tool の組み込み関数

Debug Tool にはいくつかの組み込み関数があり、これらを使用して 変数を操作することができます。Debug Tool の組み込み関数はすべてパーセント記号 (%) で始まります。

下の表は、Debug Tool 組み込み関数を要約したもの です。特に断りがない限り、これらの関数はサポートされている すべての言語で使用できます。

Debug Tool 組み込み関数 戻される内容
%DEC (アセンブラー、逆アセンブリー、および非言語環境プログラム COBOL) オペランドの 10 進値
%GENERATION (PL/I) 特定の世代の被制御変数
%HEX オペランドの 16 進値
%INSTANCES (C、C++、および PL/I) ブロックの %RECURSION の最大値
%RECURSION (C、C++、および PL/I) 再帰プロシージャーの特定のインスタンス内の自動変数または パラメーター
%WHERE (アセンブラー、逆アセンブリー、および非言語環境プログラム COBOL) オペランドのアドレスを示すストリング。

%DEC (アセンブラー、逆アセンブリー、および非言語環境プログラム COBOL)

オペランドの 10 進値を戻します。

%DEC 組み込み関数の構文図
expression
有効なアセンブラー、逆アセンブリー、または非言語環境プログラム COBOL の式。

レジスター R1 には値 14 が設定されていると想定して、式 R1+2 の値を 10 進数で表示するには、次のコマンドを入力します。

LIST %DEC(R1+2);

「Log」ウィンドウに値 16 が表示されます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

%GENERATION (PL/I)

プログラム内の被制御変数の特定の世代を戻します。

PL/I %GENERATION 組み込み関数の構文図
reference
被制御変数です。
expression
被制御変数 x の世代番号 n。この場合、次のように なります。
1 ≤ n ≤ ALLOCATION(x)

最も古いインスタンスの x を戻すには、次のように 指定します。

%GENERATION(x,1)

最も新しいインスタンスの x を戻すには、次のように 指定します。

%GENERATION(x,ALLOCATION(x))

使用上の注意

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

%HEX

オペランドの 16 進値を戻します。

%HEX 組み込み関数の構文図
reference
次のいずれかです。

C および C++: 外部表記が 235 のパック 10 進の変数 zvar1 の 内部表記を表示するには、次のコマンドを入力します。

LIST %HEX(zvar1);

ログ・ウィンドウには、16 進ストリング 235C が表示されます。

COBOL: PIC 9(9) として定義されている パック 10 進数 pvar3 を、16 進数 (または内部的) に 等価な 1234 から、外部表示するには、次のコマンドを入力します。

LIST %HEX (pvar3);

ログ・ウィンドウには、16 進ストリング 01234F が表示されます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

%INSTANCES (C、C++、および PL/I)

ある特定のブロックに関する %RECURSION の 最大値 (すなわち、最も新しい反復番号) を戻します。

C、C++、および PL/I %INSTANCES 組み込み関数の構文図
reference
自動変数またはサブルーチン・パラメーターです。必要であれば、変数を指定する修飾を用いることができます。

%INSTANCES は、Debug Tool 変数のように使用できます。

使用上の注意

Debug Tool は、Enterprise PL/I プログラムの %INSTANCES 組み込み関数をサポートしません。

記録されたステップを再生する間は、%INSTANCES 組み込み関数を使用することはできません。

C および C++:

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

%RECURSION (C、C++、および PL/I)

再帰プロシージャーの特定のインスタンスの自動変数または パラメーターを戻します。

C、C++、および PL/I %RECURSION 組み込み関数の構文図
reference
自動変数またはサブルーチン・パラメーターです。必要であれば、変数を指定する修飾を用いることができます。
expression
変数またはパラメーターの再帰番号です。

x の最も古い再帰を戻すには、次のように 指定します。

%RECURSION(x,1)

x の最も新しい再帰を戻すには、次のように 指定します。

%RECURSION(x,%INSTANCES(x))

使用上の注意

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

%WHERE (アセンブラー、逆アセンブリー、および非言語環境プログラム COBOL)

アドレスがオペランドとして指定されている名前付き領域 (存在する場合) について記述するストリングを戻します。%WHERE は、LIST コマンド内の最外部の式としてのみ 使用することができます。

アセンブラーおよび逆アセンブリー %WHERE 組み込み関数の構文図
expression
1 から 4 バイト長の 16 進値に評価される式。

以下の規則は、式の値を評価するために、リストされている順序で使用されます。

  1. 式の値が 4096 より小さい場合、10 進数が戻されます。
  2. 式の値が認識されているコンパイル単位内のアドレスである場合は、コンパイル単位の名前が 16 進数オフセットで戻されます。
  3. 式の値が汎用レジスターにある 4095 バイト以内の値で、USING がそのレジスター に有効である場合は、USING 命令と対応している DSECT の名前が 16 進数オフセットで戻されます。
  4. 式の値を表す 16 進数が戻されます。

この関数の使用はアセンブラー、逆アセンブリー、または非言語環境プログラム COBOL のコンパイル単位内 のみに限られますが、式はすべての言語のコンパイル単位に照らして評価することができます。

使用上の注意

%WHERE は別の式の中でネストすることはできません。 例えば、以下のコマンドは無効です。

LIST %WHERE(X'14B0')||'ABC'