关闭交易CICS

时间:2019-01-24 13:57:58

标签: transactions db2 cobol mainframe cics

我有一个简短的程序COBOL CICS,它是一个基本的CRUD。在此程序中,我有一个选项,当我按F12键时要退出,请关闭我的交易。

我想按F12键,然后交易结束。

我可以在COBOL程序中编写任何命令来执行此操作吗?

谢谢

5 个答案:

答案 0 :(得分:5)

假设您有一个伪对话程序,则每次调用它时,按下的键都将在EIBAID中

您描述的方案记录在此处的知识中心 https://www.ibm.com/support/knowledgecenter/SSGMCP_5.5.0/applications/designing/dfhp31i.html

希望有帮助

答案 1 :(得分:2)

EXEC CICS RETURN将结束您的程序,但是您仍然会看到屏幕上的内容。

如果先执行EXEC CICS SEND CONTROL ERASE命令,然后再执行EXEC CICS RETURN,则将完成程序并清除屏幕。

答案 2 :(得分:2)

IMO,请使用本抄写本DFHAID来吸引“按键”或注意。 收到地图后,检查EIBAID = DFHPF12,然后返回RETURN 请参阅下面的段落以获得更好的理解-

P9000-RETURN-TERM.
      IF EIBAID = DFHPF12 
         EXEC CICS
              RETURN
         END-EXEC
      END-IF.

但是,最好在返回前释放键盘和所有键盘。 因此,代码变成了这样的东西-

P9000-RETURN-TERM.
      IF EIBAID = DFHPF12 
         EXEC CICS
              SEND CONTROL FREEKB ERASE
         END-EXEC
         EXEC CICS
              RETURN
         END-EXEC
      END-IF.

答案 3 :(得分:1)

在伪对话3270 CICS事务中,您的代码通常开始于检查{{1}之后是EIBCALEN = 0还是EIBRESP = DFHRESP( CHANNELERR ),以检查这是否是“第一次”。 }}(如果您使用的是容器而不是逗号)。

如果这是“第一次”,您的代码通常会做一些内务处理,然后执行EXEC CICS GET CONTAINER将BMS映射放在3270设备上。然后,您的代码执行EXEC CICS SEND MAP并引用您的逗号或您的频道。

如果这不是“第一次”,那么您的代码通常会检查其通道和EIBAID中的逗号或一个或多个容器以确定下一步该做什么,通常这是一个EXEC CICS RETURN TRANSID(EIBTRNID)来检索字段内容地图中的字段。然后,您的代码将执行所需的任何业务功能,可能会修改映射中的字段并执行EXEC CICS RECEIVE MAP,并对逗号字段或容器中的字段以及EXEC CICS SEND MAP DATAONLY进行适当的修改,然后再次执行EXEC CICS PUT CONTAINER并引用您的逗号或您的频道。

如果像您一样检查这些字段指示用户希望退出交易,则您的代码可能会执行EXEC CICS RETURN TRANSID(EIBTRNID),其中FROM和LENGTH引用包含指示交易结束的适当消息的字段。这将从屏幕上删除您的地图。然后,您的代码将执行EXEC CICS SEND TEXT ERASE FREEKB 而没有 TRANSID选项,从而结束伪对话。

请注意,每个 EXEC CICS RETURN会隐式EXEC CICS RETURN提交诸如DB2更新和MQ消息之类的资源。

答案 4 :(得分:1)

您需要使用本抄本DFHAID来吸引注意力。您可以做的是,在获取地图后,检查EIBAID = DFHPF12,然后通过EXEC CICS RETURN返回到终端