HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
次の各節では,デバッガによるRPG II のサポートについて説明します。
C.14.1 言語式の演算子
言語が RPG II に設定されている場合,言語式では次の演算子がサポートされます。
| 種類 | シンボル | 機能 |
|---|---|---|
| 接頭辞 | + | 単項正符号 |
| 接頭辞 | - | 単項負符号 (否定) |
| 挿入辞 | + | 加算 |
| 挿入辞 | - | 減算 |
| 挿入辞 | * | 乗算 |
| 挿入辞 | / | 除算 |
| 挿入辞 | = | 等値 |
| 挿入辞 | NOT = | 不等 |
| 挿入辞 | > | 大なり |
| 挿入辞 | NOT < | 以上 |
| 挿入辞 | < | 小なり |
| 挿入辞 | NOT > | 以下 |
| 接頭辞 | NOT | 論理否定 |
| 挿入辞 | AND | 論理積 |
| 挿入辞 | OR | 論理和 |
サポートされている,RPG II の言語式とアドレス式の構造を次に示します。
| シンボル | 構造 |
|---|---|
| ( ) | 添字指定 |
サポートされている RPG II のデータ型を次に示します。
| RPG II のデータ型 | VMS のデータ型名 |
|---|---|
| ロングワード 2 進数 | ロングワード整数(L) |
| ワード 2 進数 | ワード整数(W) |
| パック 10 進数 | パック10進数(P) |
| 文字 | ASCIIテキスト(T) |
| オーバパンチされた 10 進数 | 右オーバパンチされた記号 (NRO) |
| 配列 | (なし) |
| 表 | (なし) |
RPG II プログラムでは,ソースの行番号,論理サイクルのラベル,ユーザ定義のタグ名,サブルーチンのラベルなどを使用してブレークポイントを設定することができます。 RPG II プログラムのデバッグは,他のプログラムのデバッグと多少異なります。次の各サブトピックでは,ブレークポイントやトレースポイントを設定する場所とその方法について説明します。
C.14.4.1 仕様
仕様のどこにブレークポイントまたはトレースポイントを行番号で設定できるかを次に説明します。
RPG II プログラムのサイクルは,プログラムの行が処理される順番を決定します。ブレークポイントやトレースポイントを設定するときは, RPG II がユーザ・プログラムに割り当てる行番号を参照することができます。これらの行番号はリスト・ファイルか,デバッガのソース表示で見ることができます。仕様の欄 1 から 5 にユーザが指定する行番号は使用されません。
コンパイラは,特定の仕様にだけ,論理サイクル内の特定の箇所で行番号を付けます。したがって,プログラム内のそれらの箇所にブレークポイントやトレースポイントを設定することができます。
SET BREAK line-number.statement-number |
たとえば,演算仕様が行番号 25 から始まっているとします。 SET BREAK 25.1 というコマンドで,標識をテストすることができます。 SET BREAK 25.2 というコマンドを使用すると,演算コードを実行する直前にブレークポイントが置かれます。演算仕様に条件指定標識がない場合は,SET BREAK 25 というコマンドを使用すると,演算コードを実行する直前にブレークポイントが置かれます。
文番号を指定できるのは,条件指定標識がある演算仕様だけです。
RPG II のラベルをブレークポイントやトレースポイントとして設定することができます。ユーザ定義のタグに加えて,次の RPG II のラベルが用意されています。これらのラベルは論理サイクル内の特定の箇所に対応します。これらのラベルはソース・コードには表示されませんが,デバッガからはアクセス可能です。これらのラベルは機械語コード・リストに記されています。
| RPG II のラベル | 機能およびブレークポイントの動作 |
|---|---|
| *DETL | 行の詳細と見出しを出力する直前でブレークする。 |
| *GETIN | 1 次ファイルまたは 2 次ファイルから次のレコードを読み込む直前でブレークする。 |
| *TOTC | 合計時の算出を実行する直前でブレークする。 |
| *TOTL | 合計時の出力を実行する直前でブレークする。 |
| *OFL | オーバフローの出力を実行する直前でブレークする。 |
| *DETC | 明細時の算出を実行する直前でブレークする。 |
次に例を示します。
DBG> SET BREAK *TOTL |
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 |
DEPOSIT コマンドを使用するときは,次の点に注意してください。
DBG> DEPOSIT ARR(2) = 150 |
DBG> DEPOSIT/ASCII PARTS(4) = "P04P05P06"
DBG> EXAMINE PARTS(4:6)
INV\PARTS
(4): 'P04'
(5): 'P05'
(6): 'P06'
|
DBG> DEPOSIT *IN56 = "1" |
EDIT コマンドを使用すると,ランゲージ・センシティブ・エディタではなく,RPG II エディタが起動します。
C.15 SCAN (VAX のみ)
次の各サブトピックでは,デバッガによる SCAN のサポートについて説明します。
C.15.1 言語式の演算子
言語式でサポートされている SCAN の演算子を次に示します。
| 種類 | シンボル | 機能 |
|---|---|---|
| 接頭辞 | + | 単項正符号 |
| 接頭辞 | - | 単項負符号 (否定) |
| 挿入辞 | + | 加算 |
| 挿入辞 | - | 減算 |
| 挿入辞 | * | 乗算 |
| 挿入辞 | / | 除算 |
| 挿入辞 | & | 連結 |
| 挿入辞 | = | 等値 |
| 挿入辞 | <> | 不等 |
| 挿入辞 | > | 大なり |
| 挿入辞 | >= | 以上 |
| 挿入辞 | < | 小なり |
| 挿入辞 | <= | 以下 |
| 接頭辞 | NOT | 補数 |
| 挿入辞 | AND | 論理積 |
| 挿入辞 | OR | 集合和 |
| 挿入辞 | XOR | 排他的論理和 |
サポートされている,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.15.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 の環境を設定してください。
| 前へ | 次へ | 目次 | 索引 |