Chinaunix首页 | 论坛 | 博客
  • 博客访问: 354747
  • 博文数量: 90
  • 博客积分: 847
  • 博客等级: 准尉
  • 技术积分: 1373
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-02 10:54
个人简介

跌打滚爬中的小菜鸟...

文章分类

全部博文(90)

文章存档

2015年(5)

2013年(47)

2012年(38)

我的朋友

分类: 其他UNIX

2013-09-20 23:09:21

在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) |
给主人留下些什么吧!~~

莫看前路2017-06-15 17:59:46

DFTACTGR这个选项我选的是*yes啊,为啥报的是这个错误啊DFTACTGRP(*NO) must be specified for a prototype that does not have the EXTPGM keyword.