QMHRTVM
dGetMsg pr extpgm('QMHRTVM')
d Receiver 1
d SizRcv 10i 0 const
d Format 8 const
d MsgID 7 const
d Msgf 20 const
d RplData 1 const
d SizRplDta 10i 0 const
d RplSubVal 10 const
d RtnCtls 10 const
d ErrCod 10i 0 const
*
dGetSize ds
d GetBytRtn 10i 0
d GetBytAvl 10i 0
*
dFmt0400 ds based(FmtPtr)
d BytRtn 10i 0
d BytAvl 10i 0
d MaxRpyLen 117 120i 0
d OffVldRpy 125 128i 0
d NbrVldRpyR 129 132i 0
d LenVldRpyR 133 136i 0
d LenVldRpyA 137 140i 0
d LenVldRpyE 141 144i 0
*
dFmtPtr s *
dVldRpyE s 32 based(VldRpyPtr)
dMsgID s 7
*
c *entry plist
c parm MsgID
c* How much storage is needed for everything?
c callp GetMsg( GetSize :%size(GetSize)
c :'RTVM0400' :MsgID
c :'QCPFMSG QSYS '
c :' ' :0
c :'*NO' :'*NO'
c :0)
c* Allocate it and then call the API again
c eval FmtPtr = %alloc(GetBytAvl)
c callp GetMsg( Fmt0400 :GetBytAvl
c :'RTVM0400' :MsgID
c :'QCPFMSG QSYS '
c :' ' :0
c :'*NO' :'*NO'
c :0)
c* If any valid replies returned display them
*这里说的“valid replies”指的是400平台下如果出现msg,这个msg可以用options选项:
*'C'、'G'、'D'进行操作的msg。
*如果不用这类信息,而项目开发用MSGF,用这个QAPI来进行取MSG信息时,可以把OffVldRpy'值
*进行固化,即取偏移量264,取msg的内容。
*偏移量264可以在项目/copybook中定义一个常量,统一使用。
*如果使用偏移量264去msg的内容信息,VldRpyE的长度定义为132字符长度。
*
c if NbrVldRpyR > 0
c eval VldRpyPtr = FmtPtr + OffVldRpy
c do NbrVldRpyR
c VldRpyE dsply
c eval VldRpyPtr = VldRpyPtr + LenVldRpyE
c enddo
c endif
c eval *inlr = '1'
c return
*偏移量264的用法
dOffsize c '264'
dVldRpyE s 132 based(VldRpyPtr)
...
c eval VldRpyPtr = FmtPtr + Offsize
c eval (输出msg内容字段)= VldRpyE
...
Thanks to Bruce Vining
阅读(1347) | 评论(0) | 转发(0) |