• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

CALLPRC为何不允许?

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 24次 | 进入软件测试论坛讨论

领测软件测试网
在PGM中使用CALLPRC PROC(ABC)
(ABC确实存在并正确。)
后提示Command CALLPRC not allowed in this setting.
为什么?

 Eagle_wolf 回复于:2005-07-26 09:30:49
clp 中不可以 只能在clle中使用

 pure 回复于:2005-07-26 11:02:46
将SEU中的CLP改成了clle
仍然不行。。。

 Eagle_wolf 回复于:2005-07-26 11:16:59
seu中改什么意思? 
type 改成clle后 提示的错误一样吗?

 qingzhou 回复于:2005-07-26 11:28:25
在CL中调用程序可以使用CALL,CALLB和CALLP三种方式,使用的区别如下:
1)CALL 调用OPM的老式RPG程序,采用动态内存调用方式。
2)CALLB 调用MODULE中的PEP(primary entry procedure),此procedure不需事先声明。
3)CALLP 调用MODULE中的procedure,此procedure必须在本程序的D specification事先声明,又称原形调用方式,和CALLB有相似的内存调用方式,但在调用之前会对调用参数进行预先检查。 
目前ILE RPG中推荐使用CALLP调用内部、外部的procedure。

 Eagle_wolf 回复于:2005-07-26 11:33:35
[quote:d4ef3c7132="qingzhou"]在CL中调用程序可以使用CALL,CALLB和CALLP三种方式,使用的区别如下:
1)CALL 调用OPM的老式RPG程序,采用动态内存调用方式。
2)CALLB 调用MODULE中的PEP(primary entry procedure),此procedure不需事先声明?.........[/quote:d4ef3c7132]
cl中调用也可以这样吗? 这个不是rpgle的调用方式吗?
cl 执行的都是命令吧? 觉得应该是callprc

 pure 回复于:2005-07-26 16:25:16
[quote:87ad6010bf="Eagle_wolf"]seu中改什么意思? 
type 改成clle后 提示的错误一样吗?[/quote:87ad6010bf]

没错。

 pure 回复于:2005-07-26 18:01:13
[quote:0a7fc762c5="qingzhou"]在CL中调用程序可以使用CALL,CALLB和CALLP三种方式,使用的区别如下:
1)CALL 调用OPM的老式RPG程序,采用动态内存调用方式。
2)CALLB 调用MODULE中的PEP(primary entry procedure),此procedure不需事先声明?.........[/quote:0a7fc762c5]


CALLP格式如何用?CL94版没有介绍

 Eagle_wolf 回复于:2005-07-26 18:07:07
strseu  type(clle)
sndpgmmsg  msg(begin)
callprc 按f4  提示cpd0031  
 Command CALLPRC not allowed in this setting. 
是这个错误吗?
dspcmd  callprc  
Where allowed to run . . . . . . . . . :   *IMOD      *BMOD    
指的就是callprc可以在cl-ile环境下运行 

 pure 回复于:2005-07-28 12:25:17
TYPE为CLLE的程序:
MAIN:   PGM                              
   DCL &A *CHAR LEN(30) VALUE(DDDDDDDDD) 
                                         
   CALLPRC  PRC(ABC)                     
   SNDPGMMSG MSG(&A)                     
                                         
   ENDPGM                                
                                         
                                         
ABC:PGM                                  
    DCL &A *CHAR 10                      
    CHGVAR &A AAAAAAAA                   
    ENDPGM                               
                                         
编译后报错:Program TEST not created.
查看编译报告,未发现异常,为什么呢?

 Eagle_wolf 回复于:2005-07-28 12:30:43
应该用crtclmod 之后在crtpgm

 pure 回复于:2005-07-28 13:29:14
我是在WRKMBRPDM中用14编译的

 Eagle_wolf 回复于:2005-07-28 13:33:39
应该用15 在crtpgm

 fairyboy 回复于:2005-07-28 23:18:31
先把这2个程序都编译成MODULE,再用CRTPGM里面把TEST为主MODULE,ABC为附加MODULE,试试!

 Eagle_wolf 回复于:2005-07-29 07:28:24
[quote:bfa68dcaf4="fairyboy"]先把这2个程序都编译成MODULE,再用CRTPGM里面把TEST为主MODULE,ABC为附加MODULE,试试![/quote:bfa68dcaf4]
编译ile程序 这个是正途

 pure 回复于:2005-07-29 11:03:54
试过,不行。
分别将两个程序段在两个文件中并命名为test1,test2
然后
crtclmod module(duan/test1) srcfile(duan/qclsrc) srcmbr(test1)
crtclmod module(duan/test2) srcfile(duan/qclsrc) srcmbr(test2)
都没问题,
再连接
crtpgm pgm(duan/testcl) module(duan/test1 duan/test2) entmod(duan/test1)
仍提示
Program TESTCL not created.
真郁闷啊~~~~~~

 Eagle_wolf 回复于:2005-07-29 11:05:17
为什么? 看joblog 和 splf

 pure 回复于:2005-07-29 11:39:48
dspjoblog:空
splf:未见异常

附编译报告(wrksplf)
  5722SS1 V5R2M0  020719                  Control Language                  DUAN/TEST1            07/29/05 09:57:42         Page    1
  Module  . . . . . . . . . . . . . . . . . . . :   TEST1
    Library . . . . . . . . . . . . . . . . . . :     DUAN
  Source file . . . . . . . . . . . . . . . . . :   QCLSRC
    Library . . . . . . . . . . . . . . . . . . :     DUAN
  Source member name  . . . . . . . . . . . . . :   TEST1   07/29/05 09:25:17
  Source printing options . . . . . . . . . . . :   *XREF  *GEN  *NOSECLVL  *NOEVENTF
  Module logging  . . . . . . . . . . . . . . . :   *JOB
  Replace module object . . . . . . . . . . . . :   *YES
  Target release  . . . . . . . . . . . . . . . :   V5R2M0
  Authority . . . . . . . . . . . . . . . . . . :   *LIBCRTAUT
  Sort sequence . . . . . . . . . . . . . . . . :   *HEX
  Language identifier . . . . . . . . . . . . . :   *JOBRUN
  Text  . . . . . . . . . . . . . . . . . . . . :
  Optimization  . . . . . . . . . . . . . . . . :   *NONE
  Debugging view  . . . . . . . . . . . . . . . :   *STMT
  Enable performance collection . . . . . . . . :   *PEP
  Compiler  . . . . . . . . . . . . . . . . . . :   IBM AS/400 Control Language Compiler
                                       Control Language Source
  SEQNBR  *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+.  DATE
       6-                                                                                                  07/27/05
     705-                                                                                                  07/22/05
     706- ABC:PGM                                                                                          07/27/05
     707-     DCL &A *CHAR 10                                                                              07/27/05
     708-     CHGVAR &A AAAAAAAA                                                                           07/27/05
     709-     ENDPGM                                                                                       07/27/05
                                * * * * *   E N D   O F   S O U R C E   * * * * *
  5722SS1 V5R2M0  020719                  Control Language                  DUAN/TEST1            07/29/05 09:57:42         Page    2
                                           Cross Reference
  Declared Variables
  Name             Defined     Type            Length      References
  &A                  707      *CHAR             10           708
  Defined Labels
  Label            Defined     References
  ABC                 706
                      * * * * *   E N D   O F   C R O S S   R E F E R E N C E   * * * * *
  5722SS1 V5R2M0  020719                  Control Language                  DUAN/TEST1            07/29/05 09:57:42         Page    3
                                           Message Summary
                Severity
  Total         0-9  10-19  20-29  30-39  40-49  50-59  60-69  70-79  80-89  90-99
      0           0      0      0      0      0      0      0      0      0      0
  Module TEST1 created in library DUAN on 07/29/05 at 09:57:42.
  Module TEST1 created in library DUAN. Maximum error severity 00.
                                * * * * *   E N D   O F   M E S S A G E   S U M M A R Y   * * * * *
                                  * * * * *   E N D   O F   C O M P I L A T I O N   * * * * *

 Eagle_wolf 回复于:2005-07-29 12:03:31
在test1 not created  下面按f1 没消息?

 pure 回复于:2005-07-29 12:22:53
sorry!
分开放在两个PGM中是可以的!上述错误由我的疏忽引起~~~~

现在的问题是:
只在一个文件中
MAIN:PGM                                   
  DCL &A *CHAR LEN(30) VALUE(DDDDDDDDD)    
                                           
  CALLPRC PRC(TESTF) PARM(&A)              
  SNDPGMMSG MSG(&A)                        
                                           
ENDPGM                                     
                                           
 TESTF: PGM PARM(&C)                       
      DCL &C *CHAR                         
      CHGVAR &C AAAAAAAAAAA                
      ENDPGM                               
                                           
为何编译无误,但无法建立程序?DSPJOBLOG无内容(显示 3>> dspjoblog  )
(我是用命令crtclmod,crtpgm建立的)
书上都有这种范例的~~~~~~~

 fairyboy 回复于:2005-07-29 13:18:03
你先分别把2个CLLE程序编译用15后,再直接在命令行输入下面的语句:

CRTPGM PGM(JUSTIN/TEST1) MODULE(JUSTIN/TESTF),去试试,不要用14去编译.

 pure 回复于:2005-07-29 14:21:46
我试过了,分开在两个文件中编译是没问题的。

我想在一个文件中实现,如上述,为什么不行呢?
书的范例都是在一个文件中的哦!

 xuguopeng 回复于:2005-07-29 14:25:26
什么一个文件两个文件的???不明白楼上的意思

 Eagle_wolf 回复于:2005-07-29 14:26:51
那个范例也看过 也试过但不行 刚刚找朋友在v5版本试了 也不行
endpgm的解释是cl 结束 当遇到endpgm后 就不会在编译了 
在你编译的splf里会看到 只有main的信息 不会看到另一个pgm的信息
所以觉得一个member只能有一个

 xuguopeng 回复于:2005-07-29 14:28:16
一个MEMBER里写多个程序???不会吧 闻所未闻啊

 Eagle_wolf 回复于:2005-07-29 14:39:37
就是类似rpgle subprocedure的东西 
cl里应该是不行了 没有export的类型命令

 xuguopeng 回复于:2005-07-29 15:00:10
CLP里是没有SUBROUTINE这个概念的 否则也就不用GOTO了。。。

 Eagle_wolf 回复于:2005-07-29 15:06:10
指的是clle

 fairyboy 回复于:2005-07-29 16:07:51
CLP里面就不能用CALLPRC这个概念

 xuguopeng 回复于:2005-07-29 16:45:58
不论是CLP还是CLLE都没有SUBROUTINE这个概念。。。我又没说要在CLP中用CALLPRC啊 没想到板砖这么多啊 - -!

CLLE比较不爽 不能用RTVCLSRC。。。。

 Eagle_wolf 回复于:2005-07-29 17:09:07
[quote:7467781aef="xuguopeng"]不论是CLP还是CLLE都没有SUBROUTINE这个概念。。。我又没说要在CLP中用CALLPRC啊 没想到板砖这么多啊 - -!

CLLE比较不爽 不能用RTVCLSRC。。。。[/quote:7467781aef]
有利有弊吗

 pure 回复于:2005-07-29 18:06:33
难道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(&P1 &P2)
          DCL  VAR(&P1) TYPE(*LGL)
         DCL   VAR(&P2) TYPE(*CHAR) LEN(10)
         DCL   VAR(&MSG) TYPE(*CHAR) LEN(10)
         DCL   VAR(&PARMPOS) TYPE(*CHAR) LEN(4)

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

          SNDPGMMSG MSG(&MSG)
          ENDPGM


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

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

 Eagle_wolf 回复于:2005-07-29 18:15:01
也许它就是指两个member  嘿
要不去问ibm的牛人
要不放弃

 fairyboy 回复于:2005-07-29 20:26:27
目前实际中没看到过有个ENDPGM的CLLE程序,明天倒公司去仔细查查有没有这样的编译成功的代码。

 pure 回复于:2005-07-30 11:59:23
哎~~~
没想到400里随随便便都是世界之谜啊

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网