求教高手400中随机数问题-调用系统API srvpgm

发布于 2022-09-10 06:03:36 字数 6740 浏览 15 评论 9

本帖最后由 穆-Mu 于 2011-03-21 10:31 编辑

小弟刚写了段代码如下
D CEERANO         PR              EXTPGM('CEERANO')
D P_SEED                              LIKE(I_SEED)      
DP_RANDOM                          LIKE(F_RANDOM)   
DI_SEED                S     10I 0 INZ(0)            
DF_RANDOM          S       8F                     
DRNDNBR              S      10I 0                  
DMAXNBR              S      10I 0 INZ(4000)         
DMINNBR               S      10I 0 INZ(3000)         
DI                          S        4  0        

/free                                                      
                                                           
  FOR I = 1 BY 1 TO 11 ;                                   
    CALLP CEERANO(I_SEED:F_RANDOM);                        
    RNDNBR = %DECH(F_RANDOM:30:29)*(MAXNBR-MINNBR)+MINNBR;
    DSPLY RNDNBR ;                                         
  ENDFOR;                                                  
                                                           
*inlr = *on;                                             
return;                                                   
/end-free               

代码从网上看的,14编译后没有错误,‘Program T1 placed in library XXXX. 00 highest severity. Created on 03/18/11’
然后call  程序出现错误
Error occurred while calling program or procedure *LIBL/CEERANO (C G D F).
F1进去
如下
Message . . . . :   Error occurred while calling program or procedure         
  *LIBL/CEERANO (C G D F).                                                   
Cause . . . . . :   RPG procedure T1 in program XXXX/T1 at statement 17     
  attempted to call program or procedure *LIBL/CEERANO, but was unable to     
  access the program or procedure, the library, or a required service program.
  If the name is *N, the call was a bound call by procedure pointer.         

继续F10如下
4>> CALL PGM(T1)                                                               
    Cannot resolve to object CEERANO. Type and Subtype X'0201' Authority      
      X'0000'.                                                                 
    Function check. MCH3401 unmonitored by T1 at statement 0000000017,         
      instruction X'0000'.                                                     
    Error occurred while calling program or procedure *LIBL/CEERANO (C G D F).
    Error occurred while calling program or procedure *LIBL/CEERANO (C G D F).
    Library B_DETECTOR added to library list.                                 
    Library B_DETECTOR removed from library list.                              

求高手解释咋回事儿。。怎么搞能对。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

攒眉千度 2022-09-19 05:25:36

这个CEERANO 是系统的api srvpgm 是QSYS/QLEMF 。。。

云胡 2022-09-19 05:15:01

多谢各位我再试试。。。多谢

小…红帽 2022-09-19 05:07:56

自由格式下,不能使用call键字。

   callp仅对PR定义的对象有效。callp对外部调用,如果PR定义 ...
passthru 发表于 2011-03-19 19:11

    受教,因为training的时候说我们公司不用free format,所以就没有去了解了。

长安忆 2022-09-19 04:10:51

lz的帖子名,与内容不符。随机数的产生方法比较多。我认为,最简单的方法是用400 C语言的random()写一个用户定义函数。

这个贴子的名应该是“RPGIV调用外部*pgm,遇到的执行问题”。

迟到的我 2022-09-19 04:09:23

但是 如果是program的话 用CallP准确吗?不是应该用CALL吗?
  可以使用DSPOBJAUT命令查看该对象 ...
Kingmaple_Zhang 发表于 2011-03-19 11:21

    自由格式下,不能使用call键字。

   callp仅对PR定义的对象有效。callp对外部调用,如果PR定义为EXTPGM,在代码编译时,就会到libl下进行绑定。这就是lz说的14可以编译过。如果PR定义为EXTPROC,即callp是调用外部*module,这时程序源代码必须在H表中指定callp对象所在的binddir名,无论是这个module是通过srvpgm进行binddir装载,还是直接装载到binddir中。

千纸鹤 2022-09-19 03:20:20

用wrkobj *all/CEERANO*查看一下CEERANO的类型。如果CEERANO在libl下,并且type为*pgm,再查看权限。

从 ...
passthru 发表于 2011-03-19 10:28

   但是 如果是program的话 用CallP准确吗?不是应该用CALL吗?
  可以使用DSPOBJAUT命令查看该对象所有的权限列表。
  我也是新手,如果说得不对的,还请前辈多多拍砖!!!

我喜欢麦丽素 2022-09-18 22:46:28

用wrkobj *all/CEERANO*查看一下CEERANO的类型。如果CEERANO在libl下,并且type为*pgm,再查看权限。

从lz的说法中,T1用14可以编译通过,应该CEERANO *pgm存在。我想只有lz对CEERANO *pgm的执行权限问题了。

等风也等你 2022-09-18 04:24:10

我怀疑是你CALL的时候有问题,查下你用的时候,有没有把CALL和CALLP搞混
如果实在不行,就用STRDBG,跟CALL进去看下.

轮廓§ 2022-09-14 07:44:46

你call的那个是个Procedure还是program啊?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文