免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 17046 | 回复: 39
打印 上一主题 下一主题

CALLPRC为何不允许? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-26 09:08 |只看该作者 |正序浏览
在PGM中使用CALLPRC PROC(ABC)
(ABC确实存在并正确。)
后提示Command CALLPRC not allowed in this setting.
为什么?

论坛徽章:
0
40 [报告]
发表于 2011-07-13 11:53 |只看该作者
1 CALLPRC的调用目标是*module,即用CRTCLMOD或者用15编译的CLLE程序。(CLP或者14编译的CLLE *pgm类型的OBJ肯定是不行的)

2 CL的module都是作为main procedure(即PEP),与RPGLE类似,每个source member中只能有一个main procedure。
   CL module中是不存在subporcedure的(RPGLE可以),所以每个clle source member只能有一个procedure,定义多个procedure错误的做法。

论坛徽章:
0
39 [报告]
发表于 2010-07-21 09:16 |只看该作者
本帖最后由 passthru 于 2010-07-21 09:18 编辑

楼主应该先检查使用callprc的clle程序的传递参数接口与被调用pgm的prototype(原型接口)是否一致?这才是关键。因为使用callprc是静态链接,在编译时,编译器要检查prototype是否一致。

论坛徽章:
0
38 [报告]
发表于 2010-07-17 21:47 |只看该作者
clle:prctest1
PGM                                                               
                                                                  
           DCL        VAR(&JOB) TYPE(*CHAR) LEN(10)               
           DCL        VAR(&USER) TYPE(*CHAR) LEN(10)               
           DCL        VAR(&NBR) TYPE(*CHAR) LEN(06)               
                                                                  
           CALLPRC    PRC(PRCTEST2) PARM((&job) (&user) (&nbr))   
                                                                  
           SNDpgmMSG  MSG(&NBR *CAT '/' *CAT &JOB *CAT '/' +      
                        *CAT &USER)                                
                                                                  
ENDPGM                                                            

clle:prctest2
PGM        PARM(&job  &USER &nbr)                    
                                                     
           DCL        VAR(&JOB) TYPE(*CHAR) LEN(10)  
           DCL        VAR(&USER) TYPE(*CHAR) LEN(10)
           DCL        VAR(&NBR) TYPE(*CHAR) LEN(06)  
                                                     
           RTVJOBA    JOB(&JOB) USER(&USER) NBR(&NBR)
                                                     
ENDPGM                                               
CRTCLMOD MODULE(PTRLIB/PRCTEST1) SRCFILE(PTRLIB/QCLSRC) SRCMBR(PRCTEST1)
CRTCLMOD MODULE(PTRLIB/PRCTEST2) SRCFILE(PTRLIB/QCLSRC) SRCMBR(PRCTEST2)
CRTPGM PGM(PTRLIB/PRCTEST1) MODULE(PTRLIB/PRCTEST1 PTRLIB/PRCTEST2) ENTMOD
(PTRLIB/PRCTEST1)

论坛徽章:
0
37 [报告]
发表于 2008-11-19 14:54 |只看该作者
简直要抓狂,还以为是什么呢?一个menber写两个pgm?

论坛徽章:
0
36 [报告]
发表于 2008-11-17 00:31 |只看该作者
楼主误会了啊,那根本就是两个mbr中的程序啊.呵呵

论坛徽章:
0
35 [报告]
发表于 2005-07-30 11:59 |只看该作者

CALLPRC为何不允许?

哎~~~
没想到400里随随便便都是世界之谜啊

论坛徽章:
0
34 [报告]
发表于 2005-07-29 20:26 |只看该作者

CALLPRC为何不允许?

目前实际中没看到过有个ENDPGM的CLLE程序,明天倒公司去仔细查查有没有这样的编译成功的代码。

论坛徽章:
0
33 [报告]
发表于 2005-07-29 18:15 |只看该作者

CALLPRC为何不允许?

也许它就是指两个member  嘿
要不去问ibm的牛人
要不放弃

论坛徽章:
0
32 [报告]
发表于 2005-07-29 18:06 |只看该作者

CALLPRC为何不允许?

难道IBM在糊弄我们~~~~
CL书中源语句(不重要的部分省略)

   MAIN: PGM   PARM(&TEXT)/* 必须规定&TEXT,如果不规定结果不可预测         */
          DCL   VAR(&TEXT) TYPE(*CHAR) LEN(10)
          CALLPRC   PRC(PROC1) PARM('0')
          CALLPRC   PRC(PROC1) PARM('1' &TEXT)
          CALLPRC   PRC(PROC1) PARM('1''Goodbye')
          ENDPGM
    PROC1: PGM   PARM(&1 &2)
          DCL  VAR(&1) TYPE(*LGL)
         DCL   VAR(&2) TYPE(*CHAR) LEN(10)
         DCL   VAR(&MSG) TYPE(*CHAR) LEN(10)
         DCL   VAR(&ARMPOS) TYPE(*CHAR) LEN(4)

         IF   COND(&1) THEN(DO) /* 规定了Parm 2,用它作信息正文          */
         CHGVAR  VAR(%BIN(&ARMPOS 1 4)) VALUE(2) /* 告诉CEEDOD对第二个参
                                                          数要操作主字码  */
         CALLPRC  PRC(CEEDOD) PARM(&ARMPOS & PARMDESC +
              &ARMTYPE &ARMINFO1 &PARMINFO2 &PARMLEN) +
              /* 调用CEEDOD得到&P2的数据长度                              */

          SNDPGMMSG MSG(&MSG)
          ENDPGM


-----------------
大家不要看这代码是干什么的,你看这里
          CALLPRC   PRC(PROC1) PARM('0')
它是可以在一个程序中调用子程序啊!
那它到底是CLP还是CLLE呢?
我试验过了CLP中CALLPRC无法编译;
CLLE中CALLPRC可以编译通过但无法建立PGM

上帝,为啥啊!!!!!!!
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP