清理正在使用 DBCTL 的事务

您可以查询和清除使用 DBCTL 的任务,将 CICS® CEMT 事务用于任何 CICS 任务。 但是,如果事务在 DBCTL 中 挂起 ,并且需要将其清除,那么必须使用 DBCTL 命令 /STOP THREAD。

过程

要了解任务发生的情况,请执行以下操作:

  1. 发出 CEMT INQ TASK 以了解哪些任务处于活动状态。
  2. 通过输入 "?" 来展开有关个别任务的信息 到您要查看的任务左侧。
    您将获得类似于 图 1中的显示。
    图 1。 CEMT INQ TASK (已展开)
      I TA
      SYNTAX OF SET COMMAND
       Tas(0000110) Tra(DLID) Fac(D2D3) Sus Ter Iso Pri( 001 )
          Hty(DBCTL   ) Hva(DLSUSPND) Hti(000007) Sta(TO)
          Use(CICSUSER) Rec(X'9EDA1F61E11CFA02')
       CEMT  Set TAsk() | < All >
        < PRiority() >
        < PUrge | FOrcepurge >
     
     
     
     
     
     
     
     
     
     
     
     
     
                                                          SYSID=CIC1 APPLID=DBDCCICS
     
     PF 1 HELP       3 END                    7 SBH 8 SFH 9 MSG 10 SB 11 SF
    图 1 包含以下有用信息:
    • Tas(0000110): 任务标识
    • Tra(DLID): 任务的事务名称
    • Fac(D2D3): 启动任务的终端或队列的标识
    • Sus: 任务已暂挂
    • Ter: 任务是从终端启动的
    • Pri(001): 任务正在以优先级 1 运行
    • Hty(DBCTL): 任务当前正在向 DBCTL 发出 DL/I 请求
    • Hva(DLSUSPND): 任务在 DBCTL 中暂挂
    • Hti(000007): 任务已暂挂的时间 (以秒计)
    • Sta(TO): 任务的启动方式 ;TO 表示操作员从终端输入事务
    • Use(CICSUSER): 是启动任务的用户的用户标识
    • Rec(X'9EDA1F61E11CFA02'): 显示与任务关联的恢复令牌
    • 屏幕还包含 CEMT SET TASK 命令语法的提示,您可能需要使用这些提示; 例如,如果要清除暂挂的任务。
    • SYSID=CIC1: CICS 系统标识,如系统初始化参数 SYSIDNT 中所指定。
    • APPLID=DBDCCICS: CICS 系统的 APPLID。
  3. 再次发出 CEMT INQ TASK
    • 如果响应指示该任务在 DBCTL 中不再处于暂挂状态,那么可以使用 CEMT SET TASK(n) PURGE 对任何 CICS 任务将其清除。 在完成对 DBCTL 的 DL/I 请求后执行清除。
    • 如果响应指示该任务在 DBCTL 中仍处于暂挂状态,那么该任务在 DBCTL 中已 挂起 ,您必须使用 DBCTL 操作员命令来将其清除。

要清除 DBCTL 中 挂起 的事务,请执行以下操作:

  1. CEMT INQ TASK 屏幕,记下 CICS APPLID 和 16 位恢复令牌。
    您可以使用恢复令牌在 DBCTL 中查找 CICS 任务的线程号。 有关更完整的定义,请参阅 CICS DBCTL 恢复令牌
  2. 在 DBCTL 控制台上,输入 /DISPLAY CCTL cctlname,其中 cctlname 是 CICS APPLID (在此示例中,它是 DBDCCICS)。
    这将导致显示 DL/I 活动的当前状态,如 图 2中所示。
    图 2。 来自 /DISPLAY CCTL cctlname 的输出
    0080  /DIS CCTL DBDCCICS
    0080  DFS000I MESSAGE(S) FROM ID=SYS1 047
    0080      CCTL     PSEUDO-RTKN  RECOVERY-TOKEN   REGID  PSBNAME   STATUS
    0080      DBDCCICS                                                 ATTACHED
    0080                            9EDA1F61E11CFA02     6  PC3COCHD  ACTIVE
    0080                            9EDA1F4E9B571B02     5  PC3COCHD  ACTIVE
    0080      *88204/101241*
  3. 查找与您从 CEMT INQ TASK 屏幕中记录的恢复令牌 (在此示例中为9EDA1F61E11CFA02 ) 匹配的恢复令牌,然后在 REGID 列中记录该恢复令牌旁边的线程号 (在此示例中为 6)。
  4. 发出命令:
    /STOP THREAD n ABDUMP

    其中 n 是线程号。

    这将导致线程和事务在完成处理当前请求时终止,并导致执行转储。

    如果线程未停止,请使用以下命令:
    /STOP THREAD n CANCEL
    警告: 如果不需要,请勿使用 /STOP THREAD CANCEL ,因为这可能会导致 DBCTL 终止,并导致 U113 异常终止。