首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用return()将控制传递给不同程序与使用xctl调用程序的区别

使用return()将控制传递给不同程序与使用xctl调用程序的区别
EN

Stack Overflow用户
提问于 2015-06-09 17:40:37
回答 2查看 475关注 0票数 0

如果我有,比如说,两个屏幕。第一个是提示屏幕,它要求输入某个记录键,下一个屏幕显示有关该记录的信息。现在,当我想要将控件转移到第二个屏幕时(在完成第一个屏幕的工作之后),我可以这样做:

代码语言:javascript
复制
 exec cics
    return(trans-id)
    commarea(ws-commarea)
 end exec.    

其中trans是第二个屏幕的。

那么,当我们在cics中已经有了return()时,还需要使用像xctl这样的调用函数吗?

EN

回答 2

Stack Overflow用户

发布于 2015-06-09 19:48:05

使用XCTL、链接或动态调用将您的处理限制为一个CICS事务。

如果您愿意,您可以设计您的应用程序,将不同的业务功能分散到多个事务中,使用commarea传递数据。

从历史上看,这是由于许多原因而没有做到的。30年前,一些CICS Systems程序员认为事务ID是一种有限的资源,并鼓励应用程序设计人员将处理保持在尽可能少的事务数量。

CICS中的安全性是在事务级别处理的,因此您的用户必须具有执行所有事务的权限,这些事务构成了他们必须执行的业务功能。

诸如临时存储队列之类的资源通常部分使用事务ID来命名,以区分和保持它们的不同。

在CICS版本2(我认为)之前,这些事务之间共享的数据被限制为commarea大小(32K)。所有受支持的CICS版本现在都有通道和容器,允许您传递更大数量的数据。

我的经验是,如果代码都在一个事务中,那么编写代码会更简单,并且更容易维护带有屏幕交互的伪会话事务。你真的希望你的事务是伪会话或非会话的。我相信这是您看到事务设计为使用XCTL、链接或动态调用的最重要原因。

票数 4
EN

Stack Overflow用户

发布于 2018-11-08 18:06:13

XCTL也不允许动态路由(您总是停留在相同的CICS区域中),并且是单向的。如上所述的伪会话返回将允许用户更新屏幕,然后只有当他们按下注意标识符(如Enter)时,下一个程序才会运行。XCTL将立即运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30728436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档