フィールドの値の変更

割り当て演算子 (=) を指定した EVAL コマンドを使用してフィールドの値を変更する ことができます。

EVAL コマンドで使用されるフィールドの有効範囲は、QUAL コマンドを使用し て定義します。 しかし、ILE RPG モジュールに含まれるフィールドは すべてがグローバルな有効範囲なので、それらを特別に定義する必要はありません。

フィールドの値を変更するためには、デバッグ・コマンド行に

EVAL field-name = value

と入力します。field-name は変更したい変数の名前であり、 value は、変数 field-name に割り当てたい識別コード、リテラル、 または固定情報値です。 例えば

EVAL COUNTER=3

によって、COUNTER の値は 3 に変わり、また「モジュール・ソースの表示」画面のメッセージ行に

COUNTER=3 = 3

と表示されます。

EVAL デバッグ・コマンドを使用して、フィールドに数値、英字、および 英数字データを割り当ててください。 割り当て式で %SUBSTR 組み込み関数を使用することもできます。

文字フィールドに値を割り当てる時には、次の規則が適用されます。

注:
図形フィールドには次のものを割り当てることができます。

UCS-2 フィールドの変更は、16 進定数を使用して行います。例えば 、%UCS2('AB') = U'00410042' であるため、デバッガー内で UCS-2 フィールドを 'AB' という UCS-2 形式に設定するためには、EVAL ucs2 = X'00410042' を使用します。

可変長フィールドは、例えば、EVAL varfldname = 'abc' を使用して割り当てることができます。これにより、フィールドの データ部分は 'abc' に、長さ部分は 3 に設定されます。データを変更せずに長さ部分 を設定するためには、長さを 16 進数値 (例えば、11 は X'000B') で表し、 EVAL %SUBSTR(varfldname 1 2) = X'000B' を使用します。

フィールドにリテラルを割り当てる時には、以下の通常の RPG 規則が適用されます。

注:
EVAL デバッグ・コマンドを使用して形象定数をフィールドに 割り当てることはできません。 形象定数は EVAL デバッグ・コマンドではサポートされていません。

変数の null 標識を変更するには、最外部の名前を _QRNU_NULL_name で置換して、変数自身にアクセスするときと同じ EVAL 式をデバッガーで使用します。

EVAL FLD1 = 3
EVAL _QRNU_NULL_FLD1 = '0'
 
EVAL SUBF2 = 5
EVAL _QRNU_NULL_SUBF2 = '0' 

EVAL ARR(3) = 0
EVAL _QRNU_NULL_ARR(3) = '1' 

EVAL DS3.INFO(2).SUB4 = 'some value'
EVAL _QRNU_NULL_DS3.INFO(2).SUB4 = '0' 

ヌル可能フィールドのデバッグの詳細については、ヌル可能フィールドの表示を参照してください。

図 123 は、図 125 のソースに基づいてフィールドの値を 変更するいくつかの例を示します。 ソース・デバッガーのオンライン・ヘルプには追加の例も提供されています。

図 123. DBGEX に基づくフィールドの値の変更の例
** ターゲットの長さ = ソースの長さ **
 > EVAL String='123456'     (6 文字)
   STRING='123456' = '123456'
 > EVAL ExportFld           (6 文字)
   EXPORTFLD = 'export'
 > EVAL String=ExportFld
   STRING=EXPORTFLD = 'export'
** ターゲットの長さ < ソースの長さ **
 > EVAL String               (6 文字)
   STRING = 'ABCDEF'
 > EVAL LastName            (10 文字)
   LASTNAME='Williamson' = 'Williamson'
 > EVAL String=LastName
   STRING=LASTNAME = 'Willia'
** ターゲットの長さ > ソースの長さ **
 > EVAL String               (6 文字)
   STRING = '123456'
 > EVAL TableA               (3 文字)
   TABLEA = 'aaa'
 > EVAL String=TableA
   STRING=TABLEA = 'aaa   '
** %SUBSTR の使用 **
 > EVAL BigDate
   BIGDATE = '1994-10-23'
 > EVAL String=%SUBSTR(BigDate 1 4)
   STRING=%SUBSTR(BIGDATE 1 4) = '1994  '
** サブストリング・ターゲットの長さ > サブストリング・ソースの長さ **
 > EVAL string = '123456'
   STRING = '123456' = '123456'
 > EVAL LastName='Williamson'
   LASTNAME='Williamson' = 'Williamson'
 > EVAL String = %SUBSTR(Lastname 1 8)
   STRING = %SUBSTR(LASTNAME 1 8) = 'Willia'
** サブストリング・ターゲットの長さ < サブストリング・ソースの長さ **
 > EVAL TableA
   TABLEA = 'aaa'
 > EVAL String
   STRING = '123456'
 > EVAL String=%SUBSTR(TableA 1 4)
   サブストリングがストリングの終わりを超える。      ** エラー **
 > EVAL String
   STRING = '123456'