RPG

478. 効果的な組込み関数の使い方 %FIELDS

これまで紹介してきた組込み関数は従来できていた演算を簡単にするものばかりであったが
ここでは従来にはなかった機能の組込み関数を紹介しよう。

%FIELDS はレコードの中の指定したフィールドだけを更新する組込み関数である。
RPG でのUPDATE命令はレコード全体を更新する命令であり特定のフィールドだけを
書き換えることはできなかった。
%FIELDSを使えばUPDATE命令と組み合わせて特定の指定したフィールドだけを更新することが
できる。
UPDATEだけではどのフィールド値を更新したいためにUPDATEされたのかは
RPGの読み手に不明になるが%FIELDSを使ってどのフィールドを更新するために使用されたのかを
明確に伝えることができる。

%REPLACE の実践的な使い方を紹介しよう。

■ 効果的な組込み関数 %FIELDS の使い方の TESTFLD

ソースはこちらから

0001.00 H DFTNAME(TESTFLD) DATEDIT(*YMD/) BNDDIR('QC2LE')                         
0002.00 F********** 効果的な組込み関数 %FIELDS の使い方 **************************
0003.00 FSHOHIN    UF   E           K DISK                                        
0004.00 F**********************************************************************   
0005.00                                                                           
0006.00  * CRTBNDRPG PGM(OBJLIB/TESTFLD) SRCFILE(SRCLIB/QRPGLESRC) DFTACTGRP(*NO) 
0007.00  * ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL)                                
0008.00                                                                           
0009.00  /FREE                                                                    
0010.00        UPDATE SHOHINR %FIELDS(SHTANK);                                    
0011.00  /END-FREE                                                                
0012.00 C                   SETON                                        LR       
0013.00 C                   RETURN                                                


                                   

[解説]

この例では SHOHINのレコード SHOHINR に対して SHTANK というフィールドだけを
更新するようにしている。
もちろんひとつだけのフィールドだけでなく複数個のフィールドの更新も
可能である。
組込み関数 %FIELDS は固定式記述では使用することはできず
フリー・フォーマットのときのみ使用可能である。