IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

显示屏幕后控件将转到何处?


IBM大型机论坛 -> IMS数据库/ DC
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
西达拉
警告:1

新的用户


已加入:2005年2月19日
帖子:27
地点:印度海德拉巴

发布发表:2007年2月15日,星期四,下午6:56
引用回复

我在IMS DC中有一个基本问题。

有一个500行的IMS DB DC程序。我正在显示此程序的屏幕。第200行有相应的ISRT呼叫。

例如:

码:

使用ISRT I-O-PCB I-O区域致电“ CBLTDLI”。


现在将显示屏幕。用户将在屏幕上输入一些值,然后按“输入”。那么控件将去哪里?是返回到201线还是返回到程序部门的第一线?
回到顶部
查看用户资料 发送私信
比特纳克

CICS主持人


加入:2005年11月7日
帖子:1104
地点:19洞荷兰

发布发表:2007年2月15日,星期四,下午7:47
引用回复

基本问题应该得到基本答案。发送消息后,您将离开发送屏幕的应用程序。用户输入数据并按ENTER键后,一条消息将发送到消息队列。 IMS将在适当的时候调用属于该事务的应用程序,因为它已经从消息队列中读取了一条消息。您的应用程序可能在该区域中,也可能不在该区域中(取决于繁忙的流量),但将从一开始就开始:对消息队列执行GU。通常在此之前,SPA的GU才能确定必须处理应用程序的哪一部分。还要记住,只有一个应用程序可以服务数百个终端。由于用户的处理是异步的,因此当输入第一个交易代码时,每个终端都有一个SPA。这样,应用程序就知道下一步该怎么做,而无需知道从哪个终端发送了消息。

所以不……不是语句201,虽然这可能是处理终端响应的语句;但总是在邮件的GU之后。
回到顶部
查看用户资料 发送私信

警告:1

新的用户


已加入:2005年5月13日
帖子:8

发布发表:2007年2月15日,星期四,10:46 pm
引用回复

上面的答案是针对伪对话程序的,对于非对话程序,当该程序使用ISRT调用在屏幕上发送数据时,该程序结束并且根本不等待用户输入数据,这就是多个用户如何运行同一个程序。同样,因为IMS DC是单线程的,即一次仅从事务队列处理一个请求),因此在您的情况下,如果您外出喝咖啡并在30分钟后返回,则逻辑上程序不应等待那么长时间时间。

之后,当您输入一些数据并按Enter时,请求将进入事务队列,程序将从头开始运行。现在,您的设计必须注意,您还必须将第二个屏幕中的键值也传递给主程序,以便他知道我必须处理哪些数据。如果您的MOD没有足够的空间,并且您在屏幕上没有任何密钥字段可以标识记录的密钥,那么最好使用SPA。
回到顶部
查看用户资料 发送私信
比特纳克

CICS主持人


加入:2005年11月7日
帖子:1104
地点:19洞荷兰

发布发表:2007年2月15日,星期四,下午11:52
引用回复

阿米特

在做出反应之前,请仔细阅读;您描述的正是我发布的内容。当我写“在适当的时间”时,这意味着应用程序将在计划时被调用,因为消息是由它引起的。在适当的时间意味着该事务可能具有较低的优先级,或者有很多消息要从其他终端处理。

引用:
还要记住,只有一个应用程序可以服务数百个终端。由于用户的处理是异步的,因此当输入第一个交易代码时,每个终端都有一个SPA。这样,应用程序就知道下一步该怎么做,而无需知道从哪个终端发送了消息。


由于我喜欢关于IMS DB / DC的讨论,因此邀请您确切地告诉我我们的帖子之间的区别是什么 icon_wink.gif

PS:至少结论是相同的:不,它不会继续执行语句201,因为它只是程序中的下一个。
回到顶部
查看用户资料 发送私信
西达拉
警告:1

新的用户


已加入:2005年2月19日
帖子:27
地点:印度海德拉巴

发布发表:2007年2月16日,星期五,下午5:07
引用回复

嗨乔治和阿米斯,
非常感谢您的宝贵及时回复。我需要您更多的帮助。在我的程序中,我抛出一个屏幕,即screen1。然后,我将从screen1接收值并进行操作。基于此,我需要使用一些选项来抛出screen2。用户将选择这些选项之一,然后单击“ ENTER”。根据在screen2中输入的值,我们必须将screen3带有一些选项,以此类推。同样,在任何时间点,我们都可以切换到另一笔交易,这也基于从任何屏幕接收的值。所有这些都必须在一个程序中处理,每个交易都会有一个程序。为此,我想到了使用SPA(当然,我不确定如何使用SPA)。但是还有其他方法可以在不使用SPA的情况下进行处理吗?

问候,
回到顶部
查看用户资料 发送私信
比特纳克

CICS主持人


加入:2005年11月7日
帖子:1104
地点:19洞荷兰

发布发表:2007年2月16日,星期五,下午7:40
引用回复

赛达尔(Saidhar),

通常,有两种方法可以将控制权传递给另一个应用程序。一种方法是修改SPA中的事务代码,另一种方法是执行变更调用(CHNG),后跟一条消息,供应用程序接管控制权。在此消息中,您可以发送应用程序需要的信息。

我个人更喜欢使用SPA,因为您可以存储中间结果(计数器,开关等),并且在备用应用程序完成工作之后,主应用程序将获得控制权。因此,重新获得控制权后,主应用程序应执行的逻辑很容易存储在SPA中。对于每个应用程序,您都可以在SPA中为其保留空间。

对于CHNG呼叫,您将需要一个PCB类型TP,并且MODIFY = YES,并且在您的应用中需要IO-PCB,然后是ALTERNATE-IO-PCB。在我的签名中的第一个链接后找到更多信息,然后搜索CHNG。在此论坛中也可能找到一些帖子。
回到顶部
查看用户资料 发送私信
比特纳克

CICS主持人


加入:2005年11月7日
帖子:1104
地点:19洞荷兰

发布发表:2007年2月16日,星期五,下午7:48
引用回复

还可以看看krishna_mf的主题。他终于(几乎)成功进行了CHNG通话工作 icon_wink.gif
回到顶部
查看用户资料 发送私信
西达拉
警告:1

新的用户


已加入:2005年2月19日
帖子:27
地点:印度海德拉巴

发布发表:2007年2月22日,星期四,下午3:24
引用回复

嗨乔治,
非常感谢您的答复。现在我还有另一个疑问。如前所述,我正在从程序中抛出一个屏幕(请注意,我为每个交易拥有一个程序),并且根据用户输入的值,我必须抛出另一个屏幕,依此类推。每当我收到用户响应时,我每次都要比较是否向我抛出的值相同。但是,如果我们在抛出屏幕之前将这些值存储在工作存储中,那么这些值将在我们重新进入程序之前消失,然后如何保存这些值。从您的答复中,我发现我们可以为此使用SPA。
1)只能由于这个原因使用SPA(存储中间值)吗?还有其他方法吗?(在书中读到我们可以使用SPA以外的屏幕或数据库,但效率不高)。

2)如果使用SPA,是否需要仅通过SPA切换交易,还是可以通过ISRT调用来进行交易。我的意思是说,我们已经定义了SPA,可以通过CHNG调用切换交易吗?这意味着我们仅使用SPA来存储中间值。

3)让我们假设一个系统中有50个事务。我定义了SPA的30个交易和没有SPA的20个交易。我们是否仍可以从这20个中的一个切换到这30个中的一个,反之亦然?请记住,我们没有使用SPA在交易之间进行切换。我们在这里拥有SPA的目的仅是存储中间值。

4)如果我们想在使用SPA的交易之间进行切换,那该怎么做(尽管您在前面的答复中已经提到过,请提供更多详细信息吗?)?为此,在交易的定义中有什么要提及的吗?


等待您的宝贵答复,

问候,
回到顶部
查看用户资料 发送私信
比特纳克

CICS主持人


加入:2005年11月7日
帖子:1104
地点:19洞荷兰

发布发表:2007年2月22日,星期四,下午4:27
引用回复

引用:

1)只能由于这个原因使用SPA(存储中间值)吗?还有其他方法吗?(在书中读到我们可以使用SPA以外的屏幕或数据库,但效率不高)。


一个MPP可以服务数百个终端(用户)。因此,该区域有一个MPP副本,其中有一个工作存储或pli-declaration。每个终端的开关,计算等值都不同(T1在阶段1中,T2在阶段2中),这意味着必须在MPP开始处理消息之前将所有声明都初始化为初始值。 MPP必须知道如何处理消息。这在每个终端上都不同(在哪个阶段是处理流程,在特定阶段的前一阶段如何使用集合变量或计算变量来进行处理以及在何处进行)。这就是为什么我们使用暂存区存储这些变量的原因。从每个终端发送第一个交易代码后,每个终端都有一个SPA。在创建SPA时,它将是低价值的,因此MPP知道这是该特定终端的全新起点。当由于从终端发送消息而调用MPP时,它首先确保将变量设置为初始值,使用消息队列上的GU读取SPA,然后使用消息的GN读取SPA。可以决定使用SPA中存储的变量或将它们映射到工作存储中的变量。 SPA还可以用于将控制权转移到另一个MPP。因为SPA的终端ID已存储,所以来自该终端的所有MPP处​​理消息都知道将响应发送到哪里。它是存储在内存中还是存储在DASD上,取决于SPA的大小。您可能会猜哪一个表现更好 icon_wink.gif CICS具有类似于COMM-AREA的名称,尽管处理方式与IMS不同。


引用:

2)如果使用SPA,是否需要仅通过SPA切换交易,还是可以通过ISRT调用来进行交易。我的意思是说,我们已经定义了SPA,可以通过CHNG调用切换交易吗?这意味着我们仅使用SPA来存储中间值。


通过将SPA中的事务代码修改为要切换到的所需MPP的事务代码,可以完成使用SPA的程序间切换。通过IO-PCB插入SPA后,您会在MPP上输入一条消息(也要通过IO-PCB插入)。如果您通过SPA转移,请勿使用CHNG。

引用:

3)让我们假设一个系统中有50个事务。我定义了SPA的30个交易和没有SPA的20个交易。我们是否仍可以从这20个中的一个切换到这30个中的一个,反之亦然?请记住,我们没有使用SPA在交易之间进行切换。我们在这里拥有SPA的目的仅是存储中间值。


您可以通过SPA或CHNG切换到所有交易;通过SPA值也被传输,通过CHNG只是向另一个MPP发送一条消息,告诉它该怎么做。然后,另一个MPP也执行CHNG,以将控制权返回给调用MPP。

引用:

4)如果我们想在使用SPA的交易之间进行切换,那该怎么做(尽管您在前面的答复中已经提到过,请提供更多详细信息吗?)?为此,在交易的定义中有什么要提及的吗?


我在第一个答案中对此做了一些解释。您将使用SPA单独回答需求。
回到顶部
查看用户资料 发送私信
西达拉
警告:1

新的用户


已加入:2005年2月19日
帖子:27
地点:印度海德拉巴

发布发表:2007年2月22日,星期四,下午6:41
引用回复

嗨乔治,
非常感谢。您的回答对我们在项目进行中的帮助很大。在这方面,我还有一个疑问。

1)致电SPA的费用如何?我的意思是,我们发出GU调用作为过程分区中的第一个调用,以将SPA复制到程序中,并且每次抛出屏幕时,我们都会发出ISRT调用来保存SPA。

这些调用会影响系统的性能吗?我们可以将这些调用与正常的数据库调用在成本/时间方面进行比较吗?有人告诉我们,两次SPA(GU,ISRT)调用等于一个数据库调用。您能在这方面澄清一下吗?

等待您的另一个有价值的答案,
问候,
回到顶部
查看用户资料 发送私信
比特纳克

CICS主持人


加入:2005年11月7日
帖子:1104
地点:19洞荷兰

发布发表:2007年2月22日,星期四,下午6:53
引用回复

就像我在SPA可能位于存储内存或DASD上之前写的那样。您将了解,尽管这两种方法都需要IO-PCB上的GU和ISRT,但Memory-SPA速度更快。 IO-PCB上的调用是存在的最优化的调用,因为您没有为其定义自己的DBD等。 IO-PCB是指消息队列。不必担心成本和/或性能。在我看来,出于优化原因,我们将SPA数据存储在消息中的时间远远落后于我们。请与系统管理员联系,确认您的SPA允许使用哪个K进行内存存储。
回到顶部
查看用户资料 发送私信
比特纳克

CICS主持人


加入:2005年11月7日
帖子:1104
地点:19洞荷兰

发布发表:2007年2月22日,星期四,下午7:00
引用回复

要了解有关SPA的更多信息,请单击我签名中的第一个链接并搜索SPA。除其他外,您会发现 这个 并且 这个
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> IMS数据库/ DC

 


类似主题
话题 论坛 回覆
没有新帖 同步排序错误-超出控制范围... 同步排序 10
该主题已锁定:您无法编辑帖子或回复。 Control-M信息。 清单和REXX 1
没有新帖 我正在ISPF SC中获得一条垂直线... TSO / ISPF 3
没有新帖 使用REXX命名新打开的屏幕 清单和REXX 2
没有新帖 如何从CICS scr启动网页... CICS 2
搜索我们的论坛:

回到顶部