首先我有两个问题是主要问题。 1.我能够在cics地图中显示日期,但我需要的是,我希望它能够勾选,即应该每隔一秒更新一次。 2.我有一个COBOL-DB2程序,它自动将数据库(DB2)中的数据插入到文件中。我希望以时间戳为基础调用该程序,即每1小时,2小时或每天。
谢谢
答案 0 :(得分:2)
您可以这样做,但您需要更改修改传统的伪对话方法。您可以使用当前的commarea在几秒钟后启动tran并退出,而不是返回并等待用户事件。如果在该时间内发生用户事件,您可以取消启动请求,如果没有,则可以刷新屏幕时间戳并重复。
让时间戳刷新是一种痛苦。除非你有充分的理由,否则没有多大意义。
DB2的东西很简单。使用间隔控制开始你的tran,与上面描述的START AFTER()相同,你可以让它每小时,或两小时或其他任何时候运行。
答案 1 :(得分:2)
我认为您不需要修改伪对话方法来实现您的需求。只需发出一个EXEC CICS START命令,延迟一秒钟(只需执行一次),即可向终端设备发出发送映射(或TC写入)的小程序。理想情况下,在屏幕上保留一个公共区域,以便所有交易都可以使用共同的程序。在某些时候,当不再需要更新时,取消START请求。我看到它的方式,定时器更新事务将与您用户启动的事务流很好地混合。如果在启动计时器弹出时用户事务处于活动状态,则计时器更新程序将稍微延迟。
虽然这应该有效,但您需要记住,每个用户每小时可能会有3,600笔交易。这个功能真的值得吗?
答案 2 :(得分:1)
你无法在CICS中真正做到这一点,CICS最多只是为伪交互式响应而设计的。它被设计用于在终端被发送整页或屏幕的大型机上,程序按原样读取屏幕(有一些用户会更新的字段,如果你没有更改它们,终端没有发回数据)然后,CICS事务占用了包含更改的屏幕的一部分,将响应发回并退出。
这使得数据输入和查询程序非常有效。但是要意识到,当程序完成处理屏幕后,它就会退出,它就会消失,而且它甚至不再存在于内存中,所有资源都已被回收。这允许公司运行具有300个终端和10兆字节实内存的大型机,因为当程序等待您响应时,它根本不使用任何资源,如果有200个人运行数据输入程序,正在运行一个可重入的程序,其中所有200个程序运行相同程序的相同副本,并且他们唯一使用的是每个用户1K的可写存储空间,用于必须读取屏幕或文件的部分记录并做一些计算。考虑一下,200个人正在运行相同的程序,所有这些程序同时使用一个模块,该模块使用20K内存用于应用程序 - 对于每个单独的程序,它都是相同的20K - 每个实际读取数量为1K /写数据。
考虑一下,启动该数据输入程序的第一个用户为应用程序使用20K内存,为可写数据使用1K。之后正在该程序上处理的每个用户使用额外的1K内存,这就是全部。当他们坐在那里看着终端时,他们可能正在使用的是表中的4个字节,告诉系统有一个终端连接。根本没有使用任何资源。
为了能够定期更新屏幕意味着必须继续运行,这不是CICS做得很好的事情。 CICS不能用于PC的交互式处理,因为您实际上是在PC上实时运行。
答案 3 :(得分:0)
这在使用地图的标准CICS中是不可能的。 3270协议不适合不断更新屏幕。大多数自动更新屏幕(如控制台和监视显示)使用本机VTAM方法,构建自己的数据流。
使用无格式数据可能会这样做,但我不建议在CICS中使用。伪对话CICS在屏幕显示期间没有控制程序,并且非常不鼓励对话编程。
答案 4 :(得分:0)
EXEC CICS ASK TIME END-EXEC更新时间戳。 EXEC CICS仅发送地图数据END-EXEC以更新屏幕。
然而,使用建议 EXEC CICS START TRANSID(' name' | namefld) 延迟时间) END-EXEC。 实际上是更好的方式。