Compaq OpenVMS
デバッガ説明書


前へ 次へ 目次 索引


C.14.4 静的変数と非静的変数

次の記憶クラスの変数は静的に割り当てられます。

STATIC
EXTERNAL
GLOBALDEF
GLOBALREF

次の記憶クラスの変数は,スタック上またはレジスタ内に非静的に割り当てられます。

AUTOMATIC
BASED
CONTROLLED
DEFINED
PARAMETER

C.14.5 データの検査と操作

以下の各サブトピックでは,PL/I のデータ型を使用した EXAMINE コマンドの例を示します。デバッガのサポートで PL/I 固有の事項についても説明しています。

C.14.5.1 EXAMINEコマンドの例

次に,EXAMINE コマンドでのいくつかの PL/I のデータ型の使用例を示します。

C.14.5.2 デバッガのサポートについての注意事項

デバッガによる PL/I のサポートについては次の点に注意してください。

入口変数やラベル変数で,または入口やラベルの形式で DEPOSIT コマンドを使用することはできません。また,配列全体や構造体全体といっしょに DEPOSIT コマンドを使用することもできません。入口変数やラベル変数で,または入口やラベルの形式で EXAMINE コマンドを使用することはできません。EXAMINE コマンドの代わりに EVALUATE/ADDRESS コマンドを使用してください。

GLOBALDEF VALUE リテラルなどのグローバル・リテラルの属性や値を確認するために EXAMINE コマンドを使用することはできません。これはグローバル・リテラルが静的な式であるためです。代わりに EVALUATE コマンドを使用してください。

コンパイル時の変数およびプロシージャといっしょに,EXAMINE,EVALUATE,DEPOSIT の各コマンドを使用することはできません。しかし,その定数がデスティネーションではなくソースである場合は,コンパイル時の定数とともに EVALUATE コマンドや DEPOSIT コマンドを使用することができます。EXAMINE コマンドは使用できません。

初期化されていない自動変数の内容は,値が代入されるまでは無効です。代入する前に検査した場合,どのような値が表示されるかは予測できません。

他のポインタの値をポインタ変数に格納することで両方のポインタへのシンボル参照を行うか,または,仮想アドレスをポインタ変数に格納するかのどちらかの方法によって,ポインタ変数へ値を格納することができます。EVALUATE/ADDRESS コマンドを使用すると,変数の仮想アドレスを知ることができます。それからそのアドレスをポインタに格納してください。ポインタをチェックする場合,デバッガは,ポインタが指す変数の仮想アドレスの形式でポインタの値を表示します。

PL/I の言語規則に準拠するために,PL/I の言語式のn または n.n の形式の数値定数はすべて整数定数や浮動小数点定数ではなく,パック 10 進数の定数として処理されます。したがって,10 の内部表現は 0C01h であり,0Ah ではありません。

nEn または n.nEn の構文を使用すると,浮動小数点定数を入力することができます。

内部表現がロングワード整数である定数を入力する構文は,PL/I にはありません。デバッガは PL/I の型変換規則をサポートしているので,通常,デバッグ時にこの制約が重大なものになることはありませんが,整数定数を入力することはできます。入力にはデバッガの %HEX,%OCT,%BIN の各演算子を使用してください。これが可能なのは,10 進数以外の定数は FIXED BINARY とみなされるためです。たとえば,EVALUATE/HEXADECIMAL 53 + %HEX 0 というコマンドは 00000035 を表示します。

C.15 RPG II(VAX のみ)

次の各節では,デバッガによるRPG II のサポートについて説明します。

C.15.1 言語式の演算子

言語が RPG II に設定されている場合,言語式では次の演算子がサポートされます。

種類 シンボル 機能
接頭辞 + 単項正符号
接頭辞 - 単項負符号(否定)
挿入辞 + 加算
挿入辞 - 減算
挿入辞 * 乗算
挿入辞 / 除算
挿入辞 = 等値
挿入辞 NOT = 不等
挿入辞 > 大なり
挿入辞 NOT < 以上
挿入辞 < 小なり
挿入辞 NOT > 以下
接頭辞 NOT 論理否定
挿入辞 AND 論理積
挿入辞 OR 論理和

C.15.2 言語式とアドレス式の構造

サポートされている,RPG II の言語式とアドレス式の構造を次に示します。

シンボル 構造
() 添字指定

C.15.3 データ型

サポートされている RPG II のデータ型を次に示します。

RPG II のデータ型 VMS のデータ型名
ロングワード 2 進数 ロングワード整数(L)
ワード 2 進数 ワード整数(W)
パック 10 進数 パック10進数(P)
文字 ASCIIテキスト(T)
オーバパンチされた 10 進数 右オーバパンチされた記号(NRO)
配列 (なし)
(なし)

C.15.4 ブレークポイントまたはトレースポイントの設定

RPG II プログラムでは,ソースの行番号,論理サイクルのラベル,ユーザ定義のタグ名,サブルーチンのラベルなどを使用してブレークポイントを設定することができます。RPG II プログラムのデバッグは,他のプログラムのデバッグと多少異なります。次の各サブトピックでは,ブレークポイントやトレースポイントを設定する場所とその方法について説明します。

C.15.4.1 仕様

仕様のどこにブレークポイントまたはトレースポイントを行番号で設定できるかを次に説明します。

RPG II プログラムのサイクルは,プログラムの行が処理される順番を決定します。ブレークポイントやトレースポイントを設定するときは,RPG II がユーザ・プログラムに割り当てる行番号を参照することができます。これらの行番号はリスト・ファイルか,デバッガのソース表示で見ることができます。仕様の欄 1 から 5 にユーザが指定する行番号は使用されません。

コンパイラは,特定の仕様にだけ,論理サイクル内の特定の箇所で行番号を付けます。したがって,プログラム内のそれらの箇所にブレークポイントやトレースポイントを設定することができます。

C.15.4.2 ラベル

RPG II のラベルをブレークポイントやトレースポイントとして設定することができます。ユーザ定義のタグに加えて,次の RPG II のラベルが用意されています。これらのラベルは論理サイクル内の特定の箇所に対応します。これらのラベルはソース・コードには表示されませんが,デバッガからはアクセス可能です。これらのラベルは機械語コード・リストに記されています。

RPG II のラベル 機能およびブレークポイントの動作
*DETL 行の詳細と見出しを出力する直前でブレークする。
*GETIN 1 次ファイルまたは 2 次ファイルから次のレコードを読み込む直前でブレークする。
*TOTC 合計時の算出を実行する直前でブレークする。
*TOTL 合計時の出力を実行する直前でブレークする。
*OFL オーバフローの出力を実行する直前でブレークする。
*DETC 明細時の算出を実行する直前でブレークする。

次に例を示します。


DBG> SET BREAK *TOTL

C.15.5 EXAMINE コマンド

EXAMINE コマンドを使用すると,変数の内容,現在のテーブル項目,配列要素,または入出力バッファを確認することができます。

配列変数の値を調べるときは,次の例のように配列の構文を使用します。


DBG> EXAMINE ARR3(9)   ! ARR3 配列の要素 9 を表示する
DBG> EXAMINE ARRY(1:7) ! ARRY 配列の要素 1 〜 7 を表示する

テーブル名を指定すると,最後の LOKUP 操作で検索した項目を確認することができます。

入出力バッファの内容を表示するには,ファイル名の後ろに文字列 $BUF を付けて,入力ファイル,更新ファイル,出力ファイルをそれぞれ指定します。たとえば,次のコマンドは入力ファイル INPUT のための入出力バッファの内容を表示します。


DBG> EXAMINE INPUT$BUF

次のコマンドは,6 文字の長さの文字列である STRING を,同値の ASCII 形式で表示します。


DBG> EXAMINE/ASCII:6 STRING

アットマーク(@)を含む変数の値を調べるときは,次のように %NAME を使用します。


DBG> EXAMINE %NAME 'ITEM@'

非外部標識の値を調べるときは,文字列 *IN を使用して非外部標識を指定してください。次に例を示します。


DBG> EXAMINE *IN56
*IN56:  "0"

標識がオフに設定されていると 0 が表示され,オンに設定されていると 1 が表示されます。

この方法で外部標識を確認することはできません。外部標識の値を調べるには,その前に,/NOSYSSHR 修飾子を使用してプログラムをリンクする必要があります。その後,次の例のように CALL コマンドを使用します。この例では U5 の値を表示します。


DBG> CALL RPG$EXT_INDS(5)
value returned is 0

C.15.6 DEPOSIT コマンド

DEPOSIT コマンドを使用するときは,次の点に注意してください。

C.15.7 EDIT コマンド

EDIT コマンドを使用すると,ランゲージ・センシティブ・エディタではなく,RPG II エディタが起動します。

C.16 SCAN(VAX のみ)

次の各サブトピックでは,デバッガによる SCAN のサポートについて説明します。

C.16.1 言語式の演算子

言語式でサポートされている SCAN の演算子を次に示します。

種類 シンボル 機能
接頭辞 + 単項正符号
接頭辞 - 単項負符号(否定)
挿入辞 + 加算
挿入辞 - 減算
挿入辞 * 乗算
挿入辞 / 除算
挿入辞 & 連結
挿入辞 = 等値
挿入辞 <> 不等
挿入辞 > 大なり
挿入辞 >= 以上
挿入辞 < 小なり
挿入辞 <= 以下
接頭辞 NOT 補数
挿入辞 AND 論理積
挿入辞 OR 集合和
挿入辞 XOR 排他的論理和


前へ 次へ 目次 索引