日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V7.3-2
ライブラリ

タイトルページ
目次
まえがき
第 1 部:デバッガ概要
第 1 章:デバッガ概要
第 2 部:コマンド・インタフェース
第 2 章:デバッガの起動
第 3 章:プログラム実行の制御とモニタ
第 4 章:プログラム・データの検査と操作
第 5 章:プログラム内シンボルへのアクセス制御
第 6 章:ソース・コードの表示の制御
第 7 章:画面モード
第 3 部:DECwindows インタフェース
第 8 章:DECwindows Motifインタフェースの概要
第 9 章:デバッグ・セッションの開始と終了
第 10 章:デバッガの使用方法
第 4 部:PC クライアント・インタフェース
第 11 章:デバッガの PC クライアント/サーバ・インタフェースの概要
第 5 部:高度なトピック
第 12 章:ヒープ・アナライザの使用
第 13 章:その他の便利な機能
第 14 章:特殊なデバッグ
第 15 章:マルチプロセス・プログラムのデバッグ
第 16 章:ベクタ化されたプログラムのデバッグ
第 17 章:タスキング・プログラムのデバッグ
第 6 部:付録
付録 A :定義済みのキー機能
付録 B :組み込みシンボルと論理名
付録 C :各言語に対するデバッガ・サポートの要約
付録 D :EIGHTQUEENS.C
索引
PDF
OpenVMS ホーム

HP OpenVMS
デバッガ説明書


目次 索引



次の各節では,デバッガによる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 プログラムのデバッグは,他のプログラムのデバッグと多少異なります。次の各サブトピックでは,ブレークポイントやトレースポイントを設定する場所とその方法について説明します。

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

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

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

  • ファイル仕様でのブレークポイントは,入力ファイルまたは更新ファイルをオープンする前,または出力ファイルを作成した直後に置きます。このブレークポイントの行番号は,このファイルのファイル仕様に対応します。

  • 入力仕様でのブレークポイントは,レコードからのデータをフィールドにロードする前に置きます。このブレークポイントの行番号は,入力仕様のレコード定義に対応します。

  • 各演算仕様には,それぞれ2つのブレークポイントを設定することができます。 1 つ目のブレークポイントは,制御レベル標識がある場合はそれをテストしたあと,かつ条件指定標識をテストする直前に置きます。 2 番目のブレークポイントは,演算コードを実行する直前に置きます。次の構文を使用してください。


    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



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 コマンドを使用するときは,次の点に注意してください。

  • 配列の構文を使用して,配列の 1 つの要素に 1 つの値を格納することができます。次に例を示します。この例は ARR 配列の要素 2 に 150 という値を格納します。


    DBG> DEPOSIT ARR(2) = 150
    

  • DEPOSIT コマンドで /ASCII 修飾子を使用すると,1 つの文字列配列に複数の値を格納することができます。たとえば,INV.RPG プログラムの PARTS 配列が 10 個の要素を持っており,各要素の文字列の長さは 3 であるとします。次の DEPOSIT コマンドでは,PARTS 配列の要素 4,5,6 にそれぞれ, P04,P05,P06 という文字列が格納されます。


    DBG> DEPOSIT/ASCII PARTS(4) = "P04P05P06"
    DBG> EXAMINE PARTS(4:6)
    INV\PARTS 
        (4):     'P04' 
        (5):     'P05' 
        (6):     'P06'
    

  • 数値フィールドに格納された値は,小数点で位置合わせが行われます。フィールドが短い場合,小数点の左右にゼロが埋め込まれます。

  • 文字フィールドに格納される値は左寄せされます。格納された値が文字フィールドよりも少ない場合,フィールドの右は空白文字で埋められます。

  • DEPOSIT コマンドで非外部標識の設定をオンまたはオフにするには,文字列 *IN で標識を指定します。値 1 を格納すると標識はオンになり,値 0 を格納するとオフに設定されます。たとえば次のコマンドは,標識 56 をオンに設定します。


    DBG> DEPOSIT *IN56 = "1"
    



C.15.7 EDIT コマンド

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

C.16 SCAN (VAX のみ)

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

C.16.1 言語式の演算子

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

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



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


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

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


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

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


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 コマンドを使用すると,現在のファシリティとそのイベントを表示できます。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項