RPG4から追加されたEVALという命令を紹介します。
RPG3では代入処理は、文字型の場合はMOVE、数値型の場合はZ-ADD
を使用していたと思いますが
RPG4ではMOVEやZ-ADDは非推奨です。
フリーフォーマットでは使えません。
代わりにEVALという命令が追加されています。
項目の型に関わらず、代入の場合はEVALが使用出来ます。
では、使用例を見ていきましょう。


という形で記述します。
DSPLYで結果を見てみましょう

EVALは、左詰めですね。

使い方は同じで、右詰めで代入されます。

先頭5桁が空白で、末尾5桁に代入されています。

また、EVALは省略も可能です。
EVALを書かずに ○○ = ××という記載が出来ます。
より直観的に書けますね。
EVAL-CORR DS単位の代入
さらに便利な命令でEVAL-CORRというものがあります。
これはDS単位の代入に使用できる命令で、前提としてお互いのDSの型や桁、項目名が同じでないといけませんが、便利に使えます。
イメージとしては、RPG3の桁位置指定の記述のDSのような使い方が可能です。


LIKEDSで、宣言済みのDSの定義を流用しています。


DSPLY (123456789)
DSPLY (12)
DSPLY (345)
DSPLY (6789)
まとめて代入されていて、個別のアクセスも可能です。
キーの退避をする際に便利ですね。