传输输入和输出数据

执行此任务以查看如何在父活动与子活动之间传输数据。 该任务使用 "交付活动销售" 应用程序作为示例。

关于此任务

DFH0SAL2 根活动通过发出 DEFINE ACTIVITY 命令来创建 Delivery 子活动。
图 1。 创建交付活动
Delivery-Activity.
    .
    EXEC CICS DEFINE ACTIVITY('Delivery')
                 TRANSID('SDEL')
                 EVENT('Delivry-Complete')
             RESP(data-area) RESP2(data-area) END-EXEC
    .
    EXEC CICS GET CONTAINER(Order-Container)
                  ACTIVITY('Order') INTO(Order-Buffer)
             RESP(data-area) RESP2(data-area) END-EXEC
 
    EXEC CICS PUT CONTAINER(Order-Container)
                  ACTIVITY('Delivery') FROM(Order-Buffer)
             RESP(data-area) RESP2(data-area) END-EXEC
GET CONTAINER 命令检索 Order 活动返回的数据,并将其放入存储缓冲区中。 将从名为 Order的 Order 活动的输出数据容器中检索数据。
注: 子活动的数据容器可供其父代访问,即使在子活动完成后也是如此。 仅当销毁活动本身时,才会销毁该活动的容器。 活动已销毁:
  • 由 CICS®在其父代完成时自动执行。
  • 在此之前,如果其父代对其发出 DELETE ACTIVITY 命令。

PUT CONTAINER 命令将数据容器 (也名为 Order) 与 Delivery 活动相关联,并将检索到的数据放入其中。

图 2中显示了 "交付" 活动的实现。
图 2。 Delivery 活动的伪代码
Identification Division.
Program-id. DFH0DEL1.
Environment Division.
Data Division.
Working-Storage Section.
01  Event-Name              pic x(16).
    88  DFH-Initial         value 'DFHINITIAL'.
01  Order-Ptr               usage is pointer.
01  Order-Container         pic x(16) value 'Order'.
01  Delivery-Container      pic x(16) value 'Delivery'.
01  Deliver-Data.
    .
Linkage Section.
01  DFHEIBLK.
    .
01  Order-Details.
    05  Order-Number        pic 9(8).
    .
 
Procedure Division..
Begin-Process.
    .
    EXEC CICS RETRIEVE REATTACH EVENT(Event-Name)
             RESP(RC) END-EXEC
    .
    If RC NOT = DFHRESP(NORMAL)
      .
    End-If.
    .
    Evaluate True
      When DFH-Initial
        Perform Delivery-Work
        Perform End-Activity
      When Other
        .
    End Evaluate.
    .
    EXEC CICS RETURN END-EXEC
    .
Delivery-Work.
    .
    EXEC CICS GET CONTAINER(Order-Container) SET(Order-Ptr)
             RESP(data-area) RESP2(data-area) END-EXEC
    .
    set address of Order-Details to Order-Ptr.
    .
    EXEC CICS READ FILE .....
              RESP(data-area) RESP2(data-area) END-EXEC
    .
    .  logic to print delivery details
    .
    .
    EXEC CICS PUT CONTAINER(Delivery-Container) FROM(Delivery-Data)
             RESP(data-area) RESP2(data-area) END-EXEC
    .
End-Activity.
    .
    EXEC CICS RETURN ENDACTIVITY
             RESP(data-area) RESP2(data-area) END-EXEC

Delivery 活动发出 GET CONTAINER 命令以从名为 Order的数据容器中检索数据。 因为该命令未指定 ACTIVITY 选项,所以它引用与当前活动关联的数据容器; 换言之,它引用与 图 1中的 PUT CONTAINER 命令所引用的数据容器相同的 Order 数据容器。

Delivery 活动使用输入数据来执行其逻辑。 然后,它发出 PUT CONTAINER 命令以将其输出存储在名为 Delivery的数据容器中。 同样,未指定 ACTIVITY 选项,因此数据容器与当前 (交付) 活动相关联。