フィールド、データ構造、および配列の内容を表示したり、式を評価す ることができます。 表示または評価には次の 2 つの方法があります。
DS.SUBF 形式の簡単な修飾名の場合は、 次のコマンドのいずれかを使用して、変数を表示または変更することができます。
EVAL SUBF OF DS EVAL DS.SUBF
複雑な修飾名の場合は、ドット修飾形式の名前を使用します。
EVAL FAMILY.CHILD(2).PETS.PET(3).NAME
EVAL コマンドで使われるフィールドの有効範囲は、ILE C のような言語の QUAL コマンドを使って定義することができます。ただしこのコマンドは現在、ILE RPG に適用することはできません。
データまたは式を表示する最も簡単な方法は、「モジュール・ソースの表示」画面 で F11 (変数の表示) を使用することです。 F11 (変数の表示) を使ってフィールドを 表示するためには、表示したいフィールドにカーソルを置き、F11 (変数の表示) を 押してください。 フィールドの現在の値は「モジュール・ソースの表示」画面の最下部の メッセージ行に表示されます。
構造、レコード、または配列を評価している場合には、F11 (変数の表示) を押した時に戻されるメッセージが 数行にわたることがあります。 数行にわたるメッセージがテキスト全体のメッセージを示す「評価式」画面 で表示されます。 「評価式」画面でメッセージの表示を済ませたら、実行キーを押して 「モジュール・ソースの表示」画面に戻ります。
EVAL デバッグ・コマンドを使用してデータを表示するためには、デバッグ・コマンド行に
EVAL field-name
と入力します。変数の field-name は、 表示または評価したいフィールド、データ構造、または配列の名前です。 EVAL デバッグ・コマンドが「モジュール・ソースの表示」画面から 入力され、値が単一行に表示できる場合には、メッセージ行に値が 表示されます。 そうでない場合には、これは「評価式」画面に表示されます。
図 116 には、EVAL デバッグ・コマンドを使用して サブフィールド LastName の内容を表示する例です。
モジュール・ソースの表示
PROGRAM: DEBUGEX LIBRARY: MYLIB MODULE: DBGEX
61 D LastName 10A INZ('Jones ')
62 D FirstName 10A INZ('Fred ')
63
64 *---------------------------------------------------------------------
65 * 呼び出されたプロシージャーと c_proc と switch のプロトタイプの定義
66 *---------------------------------------------------------------------
67 D c_proc PR * EXTPROC('c_proc')
68 D size 10U 0 VALUE
69 D inzval 1A CONST
70
71 D Switch PR
72 D Parm 1A
73
74 *---------------------------------------------------------------------
75 * 非プロトタイプ呼び出しのパラメーターの定義
続く...
デバッグ . . eval LastName__________________________________________________________
_____________________________________________________________________________________
F3=終了プログラム F6=停止点の追加/消去 F10=ステップ F11=変数の表示
F12=再開 F17=ウォッチ変数 F18=ウォッチの処理 F24=キーの続き
LASTNAME = 'Jones '
図 117 には RPG フィールドのいろいろなタイプの EVAL コマンドの使用例が示されています。 これらのフィールドは 図 125 のソースに基づいています。 ソース・デバッガーのオンライン・ヘルプには追加の例も提供されています。
スカラー・フィールド RPG 定義 > EVAL String 6A INZ('ABCDEF') STRING = 'ABCDEF' > EVAL Packed1D0 5P 2 INZ(-93.4) PACKED1D0 = -093.40 > EVAL ZonedD3D2 3S 2 INZ(-3.21) ZONEDD3D2 = -3.21 > EVAL Bin4D3 4B 3 INZ(-4.321) BIN4D3 = -4.321 > EVAL Int3 3I 0 INZ(-128) INT3 = -128 > EVAL Int5 5I 0 INZ(-2046) INT5 = -2046 > EVAL Int10 10I 0 INZ(-31904) INT10 = -31904 > EVAL Int20 20I 0 INZ(-463972) INT20 = -463972 > EVAL Unsigned3 3U 0 INZ(128) UNSIGNED3 = 128 > EVAL Unsigned5 5U 0 INZ(2046) UNSIGNED5 = 2046 > EVAL Unsigned10 10U 0 INZ(31904) UNSIGNED10 = 31904 > EVAL Unsigned20 20U 0 INZ(463972) UNSIGNED20 = 463972 > EVAL DBCSString 3G INZ(G'~BBCCDD~') DBCSSTRING = '"BBCCDD"' > EVAL NullPtr * INZ(*NULL) NULLPTR = SYP:*NULL 基底付きフィールド > EVAL String 6A INZ('ABCDEF') STRING = 'ABCDEF' > EVAL BasePtr * INZ(%ADDR(String)) BASEPTR = SPP:C01947001218 > EVAL BaseString 6A BASED(BasePtr) BASESTRING = 'ABCDEF' 日付、時刻、タイム・スタンプ・フィールド > EVAL BigDate D INZ(D'9999-12-31') BIGDATE = '9999-12-31' > EVAL BigTime T INZ(T'12.00.00') BIGTIME = '12.00.00' > EVAL BigTstamp Z INZ(Z'9999-12-31-12.00.00.000000 BIGTSTAMP = '9999-12-31-12.00.00.000000'
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.