传输输入和输出数据
执行此任务以查看如何在父活动与子活动之间传输数据。 该任务使用 "交付活动销售" 应用程序作为示例。
关于此任务
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 选项,因此数据容器与当前 (交付) 活动相关联。