关于QSYGETPH函数出错的问题
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
本帖最后由 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
谢谢各位关注,问题已经解决。当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)
回复 4# passthru
QSYGETPH是一个外部程序,可以用ExtProc吗?改成Extproc后,编译提示:definition not found for symbol ‘ QSYGETPH’。
在使用extPgm情况下,在文件头部加了
H DFTACTGRP(*NO)
H BNDDIR('QC2LE')
情况还是和原来一样。
本帖最后由 passthru 于 2010-06-10 19:30 编辑
D GetProfile PR ExtPgm('QSYGETPH')
改为:
D GetProfile PR ExtProc('QSYGETPH')
如果一定要用extPgm,在rpgle H表中添加:
H BNDDIR('QC2LE')
试了,还是一样的。
const 把这个去掉试试