組み込み関数には興味深い機能を持つものもあって、ここに紹介する %FIELDS を使えば、
レコード中の特定のフィールドだけを更新することができる。
レコード中の一部のフィールドだけを更新したい場合は内部記述であれば簡単にできるが、
外部記述の場合はレコード単位での更新であるのでレコード中の一部、すわなち特定の
フィールドだけを更新することはできなかった。
----------------------------------------------------------------------------- 0001.00 C DO *HIVAL 0002.00 C SETOFF 50 0003.00 C READ BUHINM 50 0004.00 C 50 LEAVE 0005.00 C IF BHKBN = '1' 0006.00 C EVAL BHZKBN = '1' 0007.00 C EVAL BHBASE = 5000 0008.00 /FREE 0009.00 UPDATE BUHINMR %FIELDS(BHZKBN:BHBASE); 0010.00 /END-FREE 0011.00 C END 0012.00 C END -----------------------------------------------------------------------------
部品マスター:BUHINM を READ 命令で読み取って部品区分:BHKBN が 1 であるレコード ( BUHINMR ) には
在庫区分:BHZKBN に 1 を入れて、基準在庫 BHBASE を5000 個に設定して 在庫区分:BHZKBN と
基準在庫:BHBASE だけを UPDATE 命令で更新している。
ただし %FIELDS はフリー・フォーマットでしか使えないので/FREE 〜 /END-FREE によって
フリー・フォーマットを宣言している。
フリー・フォーマットの場合は命令文の最後には ; (セミコロン) が必要である。