Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1271789
  • 博文数量: 287
  • 博客积分: 11000
  • 博客等级: 上将
  • 技术积分: 3833
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-16 08:43
文章分类
文章存档

2013年(15)

2012年(17)

2011年(17)

2010年(135)

2009年(85)

2008年(18)

分类: 系统运维

2010-06-11 10:45:38

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
阅读(1305) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~