前へ | 次へ | 目次 | 索引 |
サポートされている,SCAN の言語式とアドレス式の構造を次に示します。
シンボル | 構造 |
---|---|
() | 添字指定 |
.(ピリオド) | レコードの構成要素の選択 |
-> | ポインタの間接参照 |
サポートされている,SCAN の定義済みのシンボルを次に示します。
シンボル | 意味 |
---|---|
TRUE | 論理値TRUE |
FALSE | 論理値FALSE |
NIL | NILポインタ |
サポートされている 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
デバッガ・コマンドでは,次の SCAN の構造名を使用することができます。
プロシージャ
マクロ
定数
変数
ラベル
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 の環境を設定してください。
SCAN のウォッチポイントについては,次の点に注意してください。
次の各サブトピックでは,次の SCAN 変数の検査方法と,これらの変数への格納の方法について説明します。
STRING
FILL
POINTER
TREE
TREEPTR
RECORD
OVERLAY
FIXED STRING 変数に格納する場合,その変数の宣言で設定したサイズよりも長い文字列を格納すると,切り捨てが行われます。
VARYING STRING 変数に格納する場合,その変数の宣言で設定した最大長よりも長いサイズの文字列を格納すると,切り捨てが行われます。
DYNAMIC STRING 変数に格納する場合,その変数の現在のサイズよりも長い文字列を格納すると,切り捨てが行われます。
FIXED STRING 変数および DYNAMIC STRING 変数では,変数の現在のサイズよりも短い文字列を格納すると,その文字列は左寄せされ,埋められなかった部分の右側はブランク文字で埋められます。
VARYING STRING 変数の場合,変数を格納している現在の領域は,格納される変数に合わせてサイズが調節されます。
C.16.7.2 FILL 変数
省略時設定で FILL 変数の値を調べると,指定した変数の内容が文字列として表示されるので,それを見てもほとんど意味がないことがあります。フィルの特性または型が分かっているときは,適切な修飾子をコマンドに使用することによって,意味のある表示を行わせることができます。次の例は,フィルx が単精度浮動小数点数であると分かっているときのコマンドです。
DBG> EXAMINE/FLOAT x |
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 ' |
次の構文を使用すると,木構造のノードの内容を調べることができます。
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 | 同値 |
UNKNOWN の言語について,サポートされている言語式とアドレス式の構造を次に示します。
シンボル | 構造 |
---|---|
[ ] | 添字指定 |
() | 添字指定 |
.(ピリオド) | レコードの構成要素の選択 |
^(サーカンフレックス) | ポインタの間接参照 |
UNKNOWN の言語について,サポートされている定義済みのシンボルを次に示します。
シンボル | 意味 |
---|---|
TRUE | 論理値 TRUE |
FALSE | 論理値 FALSE |
NIL | NIL ポインタ |
言語が UNKNOWN に設定されている場合,デバッガは,他の言語で受け入れられるデータ型をすべて認識しますが,ピクチャ型やファイル型など,限られたいくつかの言語固有のデータ型は認識しません。UNKNOWN の言語式では,OpenVMS 呼び出し標準規則のスカラ・データ型のほとんどを使用することができます。
前へ | 次へ | 目次 | 索引 |