Compaq OpenVMS
デバッガ説明書


前へ 次へ 目次 索引


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

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

シンボル 構造
() 添字指定
.(ピリオド) レコードの構成要素の選択
-> ポインタの間接参照

C.16.3 定義済みのシンボル

サポートされている,SCAN の定義済みのシンボルを次に示します。

シンボル 意味
TRUE 論理値TRUE
FALSE 論理値FALSE
NIL NILポインタ

C.16.4 データ型

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

SCAN のデータ型 VMS のデータ型名
BOOLEAN (なし)
INTEGER ロングワード整数(L)
POINTER (なし)
FIXED STRING(n) CLASS=S のテキスト
VARYING STRING(n) CLASS=VS のテキスト
DYNAMIC STRING CLASS=D のテキスト
TREE (なし)
TREEPTR (なし)
RECORD (なし)
OVERLAY (なし)

次のデータ型はサポートしていません。

FILE
TOKEN
GROUP
SET

C.16.5 名前

デバッガ・コマンドでは,次の SCAN の構造名を使用することができます。

プロシージャ
マクロ
定数
変数
ラベル

C.16.6 実行の制御

SCAN のブレークポイント,トレースポイント,ウォッチポイントについては,次の点に注意してください。

C.16.6.1 ブレークポイントとトレースポイント

行番号の他に,プロシージャ,トリガ・マクロ,構文マクロ,ラベルにもブレークポイントやトレースポイントを設定することができます。次に例を示します。


DBG> SET BREAK find_keyword    !トリガ・マクロでブレークする。
DBG> CANCEL BREAK exit         !ラベルのブレークを取り消す。
DBG> SET BREAK compare_trees   !プロシージャでブレークする。

SCAN の画像マッチングをモニタする場合,通常のブレークポイントやトレースポイントはそれほど便利ではありません。プログラムが作成するトークンをモニタするにはどこにブレークポイントやトレースポイントを設定したらいいのでしょう。プログラムにはそのようなブレークポイントを設定すべき文がありません。

この問題を解決するために,VAX SCAN はいくつかのイベントを定義します。これらのイベントにブレークポイントやトレースポイントを設定すると,画像マッチングのプロセスをモニタすることができます。

SCAN プログラムでは,次のイベント・キーワードが定義されます。

イベント・キーワード 機能
TOKEN トークンを作成する。
PICTURE 画像のオペランドを照合中である。
INPUT 入力ストリームの改行を読み込む。
OUTPUT 出力ストリームの改行を書き込む。
TRIGGER トリガ・マクロを開始または終了する。
SYNTAX 構文マクロを開始または終了する。
ERROR 画像マッチングのエラー回復を開始または終了する。

これらのキーワードは,次のコマンドで /EVENT 修飾子といっしょに使用してください。

(SET,CANCEL,ACTIVATE,DEACTIVATE)BREAK
(SET,CANCEL,ACTIVATE,DEACTIVATE)TRACE

たとえば,次のコマンドで設定したブレークポイントは,TOKEN を作成すると必ず検出されます。


DBG> SET BREAK/EVENT=TOKEN

メイン・プログラムが SCAN で記述されている場合,デバッガは自動的に SCAN のイベントを認識できるようにします。別の言語で記述されたプログラムをデバッグしていて,そのプログラムが SCAN ルーチンを呼び出す場合は,次の手順に従って SCAN の環境を設定してください。

  1. 言語固有の演算子,式,およびその他の構造を認識可能にするために,SET LANGUAGE SCAN コマンドを入力する(SET LANGUAGE コマンドの説明を参照。)

  2. SCAN のイベントを認識可能にするために,SET EVENT_FACILITY SCAN コマンドを入力する(SET EVENT_FACILITY コマンドの説明を参照)。SHOW EVENT_FACILITY コマンドを使用すると,現在のファシリティとそのイベントを表示できます。

C.16.6.2 ウォッチポイント

SCAN のウォッチポイントについては,次の点に注意してください。

C.16.7 検査と格納

次の各サブトピックでは,次の SCAN 変数の検査方法と,これらの変数への格納の方法について説明します。

STRING
FILL
POINTER
TREE
TREEPTR
RECORD
OVERLAY

C.16.7.1 STRING 変数

FIXED STRING 変数に格納する場合,その変数の宣言で設定したサイズよりも長い文字列を格納すると,切り捨てが行われます。

VARYING STRING 変数に格納する場合,その変数の宣言で設定した最大長よりも長いサイズの文字列を格納すると,切り捨てが行われます。

DYNAMIC STRING 変数に格納する場合,その変数の現在のサイズよりも長い文字列を格納すると,切り捨てが行われます。

FIXED STRING 変数および DYNAMIC STRING 変数では,変数の現在のサイズよりも短い文字列を格納すると,その文字列は左寄せされ,埋められなかった部分の右側はブランク文字で埋められます。

VARYING STRING 変数の場合,変数を格納している現在の領域は,格納される変数に合わせてサイズが調節されます。

C.16.7.2 FILL 変数

省略時設定で FILL 変数の値を調べると,指定した変数の内容が文字列として表示されるので,それを見てもほとんど意味がないことがあります。フィルの特性または型が分かっているときは,適切な修飾子をコマンドに使用することによって,意味のある表示を行わせることができます。次の例は,フィルx が単精度浮動小数点数であると分かっているときのコマンドです。


DBG> EXAMINE/FLOAT x

C.16.7.3 POINTER 変数

POINTER が指している変数のアドレスを検索するために,POINTER を名前でチェックすることができます。POINTER に基づく変数を検査するには,負符号と右不等号を組み合わせた演算子(-->)を使用してください。

次の宣言と代入が行われた場合について考えます。


TYPE symnode: RECORD 
                 ptr:  POINTER TO symnode, 
                 vstr: VARYING STRING(20), 
              END RECORD; 
 
DECLARE x   : symnode; 
DECLARE xptr: POINTER TO symnode; 
xptr        = POINTER(x); 
x.vstr      = 'prehensile'; 

次のコマンドは,x の構成要素であるvstr の値を表示します。


DBG> EXAMINE x.vstr
POINTER\MAINPOINTER\X.VSTR: 'prehensile'

次のコマンドは,POINTER に基づいてvstr の値を表示します。


DBG> EXAMINE xptr->.vstr
POINTER\MAINPOINTER\XPTR->.VSTR: 'prehensile '

C.16.7.4 TREE 変数と TREEPTR 変数

次の構文を使用すると,木構造のノードの内容を調べることができます。


EXAMINE tree_variable([subscript],...)

TREE 変数へ格納することはできません。

EXAMINE コマンドで木構造の名前を指定すると,その木構造のノードと葉の内容がすべて表示されます。次に例を示します。


DBG> EXAMINE voters

下位ノードの指定は,そのノードの添字を入力すればできます。次に例を示します。


DBG> EXAMINE voters('salem')

確認したい葉につながる添字をすべて指定すると,木構造の葉ノードを調べることができます。次に例を示します。


DBG> EXAMINE voters('salem',ward2)

cityptr または wardptr などの TREEPTR 変数を調べると,その木ノードのアドレスが表示されます。TREEPTR 変数が何を指しているかを次のようにして確認します。


DBG> EXAMINE cityptr->

C.16.7.5 RECORD 変数と OVERLAY 変数

EXAMINE コマンドを使用するときに RECORD を名前で指定すると,RECORD のすべての構成要素が表示されます。RECORD の構成要素を個々に調べるには,各構成要素をフル・ネームで指定します。

一般的な書式は次のとおりです。


EXAMINE recordname


EXAMINE recordname.componentname.componentname...

OVERLAY の確認方法もこれと同様です。OVERLAY の場合も構成要素がすべて表示されます。このように,FILL(4),INTEGER,VARYING STRING(2)がそれぞれ 4 バイトの領域であれば,4 つのバイトは 3 種類の異なった形式で表示されます。

C.17 UNKNOWN言語

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

C.17.1 言語式の演算子

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

種類 シンボル 機能
接頭辞 + 単項正符号
接頭辞 - 単項負符号(否定)
挿入辞 + 加算
挿入辞 - 減算
挿入辞 * 乗算
挿入辞 / 除算
挿入辞 ** べき乗(VAX 固有)
挿入辞 & 連結
挿入辞 // 連結
挿入辞 = 等値
挿入辞 <> 不等
挿入辞 /= 不等
挿入辞 > 大なり
挿入辞 >= 以上
挿入辞 < 小なり
挿入辞 <= 以下
挿入辞 EQL 等値
挿入辞 NEQ 不等
挿入辞 GTR 大なり
挿入辞 GEQ 以上
挿入辞 LSS 小なり
挿入辞 LEQ 以下
接頭辞 NOT 論理否定
挿入辞 AND 論理積
挿入辞 OR 論理和
挿入辞 XOR 排他的論理和
挿入辞 EQV 同値

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

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

シンボル 構造
[ ] 添字指定
() 添字指定
.(ピリオド) レコードの構成要素の選択
^(サーカンフレックス) ポインタの間接参照

C.17.3 定義済みのシンボル

UNKNOWN の言語について,サポートされている定義済みのシンボルを次に示します。

シンボル 意味
TRUE 論理値 TRUE
FALSE 論理値 FALSE
NIL NIL ポインタ

C.17.4 データ型

言語が UNKNOWN に設定されている場合,デバッガは,他の言語で受け入れられるデータ型をすべて認識しますが,ピクチャ型やファイル型など,限られたいくつかの言語固有のデータ型は認識しません。UNKNOWN の言語式では,OpenVMS 呼び出し標準規則のスカラ・データ型のほとんどを使用することができます。


前へ 次へ 目次 索引