library home hp.com home products and services support and drivers solutions
cd-rom home
End of Jump to page title
HP OpenVMS Systems
Documentation

Jump to content


HP OpenVMS

HP OpenVMS
デバッガ説明書


前へ 次へ 目次 索引


C.14 RPG II (VAX のみ)

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

C.14.1 言語式の演算子

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

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

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

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

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

C.14.3 データ型

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

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

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

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

C.14.4.1 仕様

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

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

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

C.14.4.2 ラベル

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

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

次に例を示します。


DBG> SET BREAK *TOTL

C.14.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.14.6 DEPOSIT コマンド

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

C.14.7 EDIT コマンド

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

C.15 SCAN (VAX のみ)

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

C.15.1 言語式の演算子

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

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

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

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

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

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

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

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

C.15.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.15.5 名前

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

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

C.15.6 実行の制御

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 の環境を設定してください。

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

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


前へ 次へ 目次 索引