举一些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
请注意,这根本没有错误处理。因此,如果文件已经包含该名称的成员,您的程序将转储。根据需要添加监控或不同的错误处理。