在main procedure中用PI定义取代*Entry, 自由格式不支持*Entry
subprocedure的入口用PR, PI代替这没啥说的, 很好理解
但是, main procedure的入口也可以有PR, PI代替!!!!!
看下面main procedure, RPG21
FMT D DName+++++++++++ETDsFrom+++To/L+++IDc.
*************** Beginning of data ****
0001.00 Drpg21 PR
0002.00 DParm1 5A
0003.00 DParm2 5A
0004.00 *
0005.00 Drpg21 PI
0006.00 DParm1 5A
0007.00 DParm2 5A
0008.00 DSum S 10A
0010.00 /free
0011.00 if %Parms() <> 2;
0012.00 Dsply 'Parm number wrong.';
0012.01 Eval *inlr=*on;
0012.02 Return;
0013.00 endif;
0014.00 Eval Sum=Parm1+Parm2;
0015.00 Dsply ('Sum='+Sum);
0016.00 Eval *inlr=*on;
0017.00 Return;
0018.00 /end-free
****************** End of data **********
说明:
1.用14编译时,要设置Default activation group . . . . DFTACTGRP *NO,否则
*RNF3788 30 a 000100 Keyword EXTPGM must be specified when DFTACTGRP(*YES) is specified on the CRTBNDRPG command.
2.必须在PI定义前定义PR, 否则
*RNF3782 30 a 000100 Prototype for main procedure must be defined prior to procedure-interface definition.
3.main procedure不能有返回值
*RNF3752 30 a 000500 Return value not allowed for the main procedure.
4.程序入口参数定义为5P或者5S时, call RPG21 PARM(10.0 20.0),总是会提示传入参数类型不一致,这个问题怎么解?
5.使用%Parms可以判断传入程序的参数个数
6.使用%ADDR(PARM1), Get Address of Variable 如果%ADDR(PARM1)=*NULL 则说明参数PARM1没有值
阅读(3241) | 评论(1) | 转发(0) |