如果我有,比如说,两个屏幕。第一个是提示屏幕,它要求输入某个记录键,下一个屏幕显示有关该记录的信息。现在,当我想要将控件转移到第二个屏幕时(在完成第一个屏幕的工作之后),我可以这样做:
exec cics
return(trans-id)
commarea(ws-commarea)
end exec. 其中trans是第二个屏幕的。
那么,当我们在cics中已经有了return()时,还需要使用像xctl这样的调用函数吗?
发布于 2015-06-09 19:48:05
使用XCTL、链接或动态调用将您的处理限制为一个CICS事务。
如果您愿意,您可以设计您的应用程序,将不同的业务功能分散到多个事务中,使用commarea传递数据。
从历史上看,这是由于许多原因而没有做到的。30年前,一些CICS Systems程序员认为事务ID是一种有限的资源,并鼓励应用程序设计人员将处理保持在尽可能少的事务数量。
CICS中的安全性是在事务级别处理的,因此您的用户必须具有执行所有事务的权限,这些事务构成了他们必须执行的业务功能。
诸如临时存储队列之类的资源通常部分使用事务ID来命名,以区分和保持它们的不同。
在CICS版本2(我认为)之前,这些事务之间共享的数据被限制为commarea大小(32K)。所有受支持的CICS版本现在都有通道和容器,允许您传递更大数量的数据。
我的经验是,如果代码都在一个事务中,那么编写代码会更简单,并且更容易维护带有屏幕交互的伪会话事务。你真的希望你的事务是伪会话或非会话的。我相信这是您看到事务设计为使用XCTL、链接或动态调用的最重要原因。
发布于 2018-11-08 18:06:13
XCTL也不允许动态路由(您总是停留在相同的CICS区域中),并且是单向的。如上所述的伪会话返回将允许用户更新屏幕,然后只有当他们按下注意标识符(如Enter)时,下一个程序才会运行。XCTL将立即运行。
https://stackoverflow.com/questions/30728436
复制相似问题