Transactions 关闭事务

Transactions 关闭事务,transactions,db2,cobol,mainframe,cics,Transactions,Db2,Cobol,Mainframe,Cics,我有一个短程序COBOLCIS,它是一个基本的CRUD。在这个程序中,我有一个选项,当我按下F12我想退出,关闭我的交易 我想按F12键,交易结束 我可以在COBOL程序中编写任何命令来实现这一点吗 谢谢EXEC CICS RETURN将结束您的程序,但您仍然可以看到屏幕上的内容 如果您先执行CICS发送控制擦除命令,然后执行CICS返回,这将完成您的程序并清除屏幕。在伪对话3270 CICS事务中,您的代码通常首先通过检查EIBCALEN=0或EIBRESP=DFHRESP来检查这是否是“首次

我有一个短程序COBOLCIS,它是一个基本的CRUD。在这个程序中,我有一个选项,当我按下F12我想退出,关闭我的交易

我想按F12键,交易结束

我可以在COBOL程序中编写任何命令来实现这一点吗


谢谢

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


如果您先执行CICS发送控制擦除命令,然后执行CICS返回,这将完成您的程序并清除屏幕。

在伪对话3270 CICS事务中,您的代码通常首先通过检查EIBCALEN=0或EIBRESP=DFHRESP来检查这是否是“首次进入”(CHANNELERR)如果您使用的是容器而不是commarea,则在执行CICS GET容器之后

如果这是“首次进入”,您的代码通常会进行一些整理,然后执行
EXEC CICS SEND MAP
将BMS映射放到3270设备上。然后您的代码执行
EXEC CICS RETURN TRANSID(EIBTRNID)
并引用您的commarea或您的频道

如果这不是“第一次”您的代码通常检查commarea或其通道和EIBAID中的一个或多个容器以确定下一步要做什么,通常这是一个
EXEC CICS RECEIVE MAP
,以检索映射中字段的字段内容。然后,您的代码执行它需要的任何业务功能,可能修改映射和doi中的字段ng一个
EXEC CICS SEND MAP data only
,对您的容器和
EXEC CICS PUT容器中的commarea字段或字段进行适当修改,然后再次执行
EXEC CICS RETURN TRANSID(EIBTRNID)
,并引用您的commarea或通道

如果像您的情况一样,检查这些字段表明用户希望退出事务,则您的代码可能会执行
EXEC CICS SEND TEXT ERASE FREEKB
,其中FROM和LENGTH指包含指示事务结束的适当消息的字段。这将从屏幕上删除您的映射。然后,您的代码将执行
>EXEC CICS RETURN
不带TRANSID选项,结束伪对话


请注意,每个
EXEC CICS RETURN
都会执行一个隐含的
EXEC CICS SYNCPOINT
提交资源,例如DB2更新和MQ消息。

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

您描述的场景记录在此处的知识中心中


希望这对您有所帮助。您需要使用复印机DFHAID来捕获注意力。您可以做的是,在收到地图后,检查EIBAID=DFHPF12,然后通过EXEC CICS return返回终端。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.