将直接监视器处理程序和信号处理程序一起使用的示例

以下示例显示了如何同时使用 #pragma exception_handler 伪指令和 signal() 函数。 此示例还显示如何使用 SIGIO 处理异常。 文件结束消息映射到 SIGIO。 SIGIO 的缺省值是 SIG_IGN。 它还显示当同时定义了特定于 HLL 的处理程序和直接监视器处理程序时,将首先调用直接监视器处理程序。

此示例使用 说明如何使用直接监视处理程序的源示例中显示的源。
  1. 要创建程序 T1520ICA,请输入:
    CRTBNDC PGM(MYLIB/T1520ICA) SRCFILE(QCPPLE/QACSRC)
  2. 要运行程序 T1520ICA,请输入:
    CALL PGM(MYLIB/T1520ICA)
    输出的第一个屏幕如下所示:
      The first read starts
      Read record 1
      Read record 2
      Read record 3
      Read record 4
      Read record 5
      The first read finishes
      The second read starts
      Read record 1
      Read record 2
      Read record 3
      Read record 4
      Read record 5
      In direct monitor handler
      Exception message ID is CPF5001
      The second read finishes
      The third read starts
      Read record 1
    输出的第二个屏幕如下:
      Read record 2
      Read record 3
      Read record 4
      Read record 5
      In direct monitor handler
      Exception message ID is CPF5001
      In signal handler
      Exception message ID is CPF5001
      The third read finishes
      The fourth read starts
      Read record 1
      Read record 2
      Read record 3
      Read record 4
      Read record 5
      In signal handler
      Exception message ID is CPF5001
      The fourth read finishes
      Press ENTER to end terminal session.
     ===>
     F3=Exit F4=End of File F6=Print F9=Retrieve F17=Top
     F18=Bottom  F19=Left   F20=Right F21=User Window