解決策の例を挙げQCMDEXC
ます。メンバーを作成するために RPG プログラム内で何らかの方法が必要なだけで、追加の (CL-) プログラムを追加したくない場合、これはその仕事をする簡単な解決策です:
crt_mbr
次のようなプロシージャを作成できます。
Pcrt_mbr B
D PI
D lib 10A value
D file 10A value
D mbr 10A value
Dqcmdexc PR extpgm('QCMDEXC')
D str 200a options(*varsize) const
D len 15P 5 const
Dcmd S 200A
Dlen S 15P 5
/free
cmd = 'ADDPFM FILE('+%trimr(lib)+'/'+%trimr(file)+') ' +
'MBR(' + %trimr(mbr) +')';
len = %len(%trimr(cmd));
qcmdexc(cmd: len);
/end-free
Pcrt_mbr E
v7 では次のようになります。
dcl-proc crt_mbr;
dcl-pi *n;
lib char(10) value;
file char(10) value;
mbr char(10) value;
end-pi;
dcl-pr qcmdexc extpgm('QCMDEXC');
str char(200) options(*varsize) const;
len packed(15:5) const;
end-pr;
dcl-s cmd char(200) inz('');
dcl-s len packed(15:5) inz(0);
cmd = 'ADDPFM FILE(' + %trimr(lib) + '/' + %trimr(file) + ')' +
' MBR(' + %trimr(mbr) + ')';
qcmdexc(cmd: %len(%trimr(cmd)));
end-proc;
プログラムの最初にプロトタイプを追加する必要がある場合があります (リリースによって異なります)。
Dcrt_mbr PR
D lib 10A value
D file 10A value
D mbr 10A value
プログラムで呼び出すことができることを知ってください:
/free
...
crt_mbr('MY_LIB': 'MY_FILE': 'NEW_MEMBER');
...
/end-free
これにはエラー処理がまったくないことに注意してください。たとえば、ファイルにその名前のメンバーがすでに含まれている場合、プログラムはダンプします。必要に応じて、監視または別のエラー処理を追加します。