新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 操作系统 > Unix系统 > AS400教程 > 正文:如何在RPG里捕捉与文件操作有关的系统消息

如何在RPG里捕捉与文件操作有关的系统消息

新客网 XKER.COM 2008-02-21 来源:新客网Unix系统 blogliou 收藏本文
  【新客网AS400教程】AS/400系统里有大量各类消息,应用程序经常会因为意外情况被这些消息所打断,应用程序或者弹出消息窗口,或者在作业状态中报MSGW,等待人工干预。在CL程序里可以使用MONMSG命令来捕捉消息或自动答复消息机制来处理各样的消息,使程序始终能够正确地运行。但在RPG程序里,又怎么捕捉消息然后对消息进行非凡处理呢?

  RPG程序实际主要是对各类各样的文件操作,比如DISK文件(物理文件、逻辑文件)、显示文件、通信文件、打印文件等等。下面以DISK文件为例示范如何在RPG程序里捕捉错误消息。

  1. 在文件描述规范(F行)里定义INFDS要害词

  在RPG文件描述规范的要害词里,有一INFDS要害词。这个要害词是用来定义文件信息数据结构的,这个结构对每个文件都是唯一的。里面包含有几种Feedback Information。其中从1-80位是File Feedback Information, 在File Feedback Information的第46-52位定义了Message ID,当对文件操作出现错误消息时,这个错误消息就会保存在这个位置。在数据规范定义(D行)里把INFDS结构里的46-52位定义一变量,这样我们就可以获得错误消息了。下面是F行和D行的示范例子

  
代码:
FTESTMSG O F 3750 DISK USROPN
F INFDS(MSGFD)

D MSGFD DS
D MSGID 46 52



  2. 在文件描述规范里定义INFSR(*PSSR)要害词

  实际上如上义后,我们仍然不能捕捉系统错误消息,因为文件出现错误消息后,就会发生以外退出了。在文件规范描述里还有一个INFSR要害词,这个要害词里指定一个子例程,来接收文件意外错误后的控制。这个子例程的名字可以是*PSSR。通常我们是指定这个子例程来对异常错误进行相同的处理。但是假如我们与上面定义的文件信息结构的中MSGID相结合,我们就可以对单独的信息进行非凡的处理了,从而实现了对系统消息的捕捉与非凡处理。下面是F行改正后例子:

代码:
FTESTMSG O F 3750 DISK USROPN
F INFDS(MSGFD)
F INFSR(*PSSR)

D MSGFD DS
D MSGID 46 52



  下面是接收错误消息控制的子例程的例子:

代码:
C *PSSR BEGSR
C MSGID IFEQ 'CPF5006'
C 。。。。。
C GOTO XXXTAG
C ENDIF
C 。。。。
**
C MOVE '*DETC ' RETURN
** (Continue at the beginning)
C ENDSR RETURN




  以下是补充:
  3 非*PSSR方式

  *PSSR可以帮助我们在以意外情况下知道是什么错误,但是不知道是在哪里出错.一般情况下我们更需求知道在哪里出错的. 我们可以利用RPG操作码出错指示器来判定,然后也可以判定MSGID,例如:

代码:
C SWRTFCIF0 BEGSR
C WRITE F_TESTF 70
C IF *IN70
C SELECT
*
*----------------*
* ()
*----------------*
C WHEN MSGID = 'CPF5026' OR MSGID = 'CPF5009'
C MOVEL *BLANKS MSGID
........
*
*-----------------------------*
* ( ())
*-----------------------------*
C WHEN MSGID = 'CPF5034'
C MOVEL *BLANKS MSGID
.........
*
C OTHER
........
*
C ENDSL
C ENDIF
C ENDSR
*



  也可以利用RPG4的Function,例如:

  CHAIN(E)(e) somefile
  IF %ERROR
  SELECT
  when msgid = recordlock
  .....

  ENDSL
  ENDIF
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐