关于QSYGETPH函数出错的问题

发布于 2022-09-01 21:21:39 字数 8996 浏览 10 评论 6

D                                                                     
D GetProfile      PR                  ExtPgm('QSYGETPH')               
D   UserID                      10A   const                           
D   Password                    10A   const                           
D   Handle                      12A                                    
D   ErrorCode                32766A   options(*varsize: *nopass)      
D                                                                     
D dsEC            DS                                                   
D*                                    Bytes Provided (size of struct)  
D  dsECBytesP             1      4I 0 INZ(256)                        
D*                                    Bytes Available (returned by API)
D  dsECBytesA             5      8I 0 INZ(0)                           
D*                                    Msg ID of Error Msg Returned     
D  dsECMsgID              9     15                                    
D*                                    Reserved                        
D  dsECReserv            16     16                                    
D*                                    Msg Data of Error Msg Returned
D  dsECMsgDta            17    256                                   
D                                                                    
D                SDS                                                
D USER                          10                                   
D                                                                    
D userid          s             10a                                 
D passwd          s             10a                                 
D handle          s             12a                                 
/Free                                                
                                                     
      userid = USER ;                                
      passwd = 'ASD123' ;                           
      reset dsEC ;                                   
                                                     
      callp GetProfile(userid:passwd:handle:dsEC) ;  
      if dsECBytesA > 0 ;                           
         dsply %trim(dsECMsgID) ;                    
      endif ;                                       
                                                     
    *Inlr = *On ;                                    
     Return ;                                       
/End-Free

编译后执行显示错误码为CPF3C3C,意思是第一个参数值非法。这是什么原因,第一个应该怎样赋值?

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

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

发布评论

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

评论(6

躲猫猫 2022-09-09 22:11:18

本帖最后由 passthru 于 2010-06-11 17:07 编辑

我调整参数,测试通过:
H DFTACTGRP(*NO)                                                      
H BNDDIR('QC2LE')                                                      
*                                                                     
D GetProfile      PR                  ExtPgm('QSYGETPH')               
D   UserID                      10A   const                           
D   passwd                      10a   const                           
D   Handle                      12A                                    
D   ErrorCode                  256A                                    
d PassWordLength           10i 0                                 
D CCSID                            10i 0                                 
*                                                                     
D dsEC            DS                                                   
D*                                    Bytes Provided (size of struct)  
D  dsECBytesP             1      4I 0 INZ(256)                        
D*                                    Bytes Available (returned by API)
D  dsECBytesA             5      8I 0 INZ(0)                           
D*                                    Msg ID of Error Msg Returned  
D  dsECMsgID              9     15                                 
D*                                    Reserved                     
D  dsECReserv            16     16                                 
D*                                    Msg Data of Error Msg Returned
D  dsECMsgDta            17    256                                 
*                                                                  
D userid          s             10a   inz('PGMER')                  
D*passwd          s             10a                                 
d passwd          s             10a   inz('PGMER')                  
D handle          s             12a   inz                           
DPassWordLength   S             10i 0 inz(10)                       
DCCSID            S             10i 0 inz(37)                       
*                                                                  
/Free                                                              
     reset dsEC ;                    
     callp GetProfile(userid:        
                      passwd:        
                      handle:        
                      dsEC:         
                      PassWordLength:
                      CCSID);        
     if dsECBytesA > 0 ;            
        dsply %trim(dsECMsgID) ;     
     endif ;                        
                                    
       *inlr = *on;                  
       return;                       
/end-free

蒲公英的约定 2022-09-09 19:02:07

谢谢各位关注,问题已经解决。当userid取值为*current时,为上述情况。当不为*current时,应增加二个参数,即为以下描述:
D GetProfile      PR                  ExtPgm('QSYGETPH')               
D   UserID                      10A   const                           
D   Password                    10A   const                           
D   Handle                      12A                                    
D   ErrorCode                32766A   options(*varsize: *nopass)      
D   passwdLen                    10I 0 options(*nopass)
D   PasswdCCSID                10I 0 options(*nopass)

未蓝澄海的烟 2022-09-09 15:43:48

回复 4# passthru

QSYGETPH是一个外部程序,可以用ExtProc吗?改成Extproc后,编译提示:definition not found for symbol ‘ QSYGETPH’。
在使用extPgm情况下,在文件头部加了
H DFTACTGRP(*NO)
H BNDDIR('QC2LE')
情况还是和原来一样。

孤蝉 2022-09-09 04:47:24

本帖最后由 passthru 于 2010-06-10 19:30 编辑

D GetProfile      PR                  ExtPgm('QSYGETPH')

改为:
D GetProfile      PR                  ExtProc('QSYGETPH')

如果一定要用extPgm,在rpgle H表中添加:
H BNDDIR('QC2LE')

淡墨 2022-09-08 19:23:12

试了,还是一样的。

奈何桥上唱咆哮 2022-09-07 05:07:59

const  把这个去掉试试

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