RPG

486. EXTFILE と EXTMBR の使い方

ILE-RPG で使用するファイルを指定するために実行時に
ライブラリー・リストを設定したりすることはよくあるのだが
もっと強制的に指定したい場合はファイル仕様書で EXFILE
指定すると使用したいファイルがライブラリー・リストに
設定されていなくてもEXTFILEで指定したライブラリーの
ファイルを明示的にオープンすることができる。
_

さらにこのときメンバー名もEXTMBRを使えば指定することができる。
さらにメンバー名だけを変数として動的に指定することもできる。

例 EXTFILE と EXTMBRを使用する例

0001.00 H DFTNAME(CRTQRYSLT) DATEDIT(*YMD/) BNDDIR('QC2LE')                      
0002.00 F********** QUERY レコード選択の作成 ************************************
0003.00 FQCMDSRC   UF A F   92        DISK    USROPN                             
0004.00 F                                     EXTFILE(CMDSRC_LIB) EXTMBR(CMDMBR) 
0005.00 FQCLSRC    UF A F   92        DISK    USROPN                             
0006.00 F                                     EXTFILE(CLSRC_LIB)  EXTMBR(CLPMBR) 
0007.00 FDSPFFD    IF   E             DISK    USROPN                             
0008.00 F**********************************************************************  
0009.00                                                                          
 :
0016.00  *( 作業変数 )                                             
0017.00 D CMDSRC_LIB      S             13A   INZ('QTEMP/QCMDSRC') 
0018.00 D CMDMBR          S             10A                        
0019.00 D CLSRC_LIB       S             12A   INZ('QTEMP/QCLSRC')  
0020.00 D CLPMBR          S             10A                        
  :
C*-------------------------------------------------------------------------+ 
C     *ENTRY        PLIST                                                  | 
C                   PARM                    QRY_             10            | 
C                   PARM                    QRYLIB_          10            | 
 :
0398.00 C****************************************************** 
0399.00 C     *INZSR        BEGSR                               
0400.00 C****************************************************** 
 :
0404.00 C                   EVAL      CMDMBR = QRY_                
0405.00 C                   EVAL      CLPMBR = %TRIMR(QRY_) + 'CL' 

[解説]

ライブラリー : QTEMP の QCMDSRC というファイルをオープンするが
メンバー名は *ENTRY でパラメータとして受け取って *INZSR で
演算が始まる前にメンバーも指定しておく。
ファイル :QCMDSSRC は USROPN として明示的に OPEN 命令でオープンするので
その前にメンバー名も指定しておく必要がある。
_