我有个主意,我不知道它在Cobol中是否可行,我想在在线程序中使用Online VSAM文件,因此我的在线VSAM文件具有多个记录,并且我想知道是否有新记录我的在线程序将记录添加到文件中,并检测到该记录并进行一些处理,是否可行,请给我一些提示
答案 0 :(得分:3)
您所描述的基本上是基于事件的触发器。您将COBOL描述为语言,但是为了实现所需的功能,还需要选择运行时环境。诸如CICS,IMS Db2,WebSphere(Java),MQ等。
VSAM本身不提供触发机制。一种可以开始实现所需目标的方法是创建一个MQ队列,该队列处理要写入的记录,并且他们可以写入记录并采取其他措施。 MQ跨越了上面列出的所有运行时,并且可能是最可靠的。
另一种选择是使用Db2,您可以在其中创建触发器或用户定义的函数来实现所需的功能。这是reference article that describes many methods。
以下是上述链接中一些文章的列表:
Utilizing Triggers within DB2来自Aleksey Shevchenko
Using Stored Procedures as Communication Mechanism to a Mainframe由 罗伯特·卡特尔(Robert Catterall)
Workload Manager Implementation and Exploitation
Stored Procedures, UDFs and Triggers-Common Logic or Common Problem?
如果您要处理简单地从任何来源写入VSAM的记录,那么在定义VSAM数据集的访问方法服务中,实际上并没有实现该功能的固有功能。
在继续设计时,您需要考虑运行时环境,功能和目标。
答案 1 :(得分:0)
如果这是大量应用程序,则可以考虑使用IBM的“ Change Data Capture”产品。每次更新选定的VSAM文件时,它将记录的前后映像转储到消息队列中。然后可以根据您选择的语言和平台进行处理。
还值得考虑的是,如果“在线”是指CICS应用程序,则VSAM文件将由单个CICS区域专有,并且所有更新将由在该区域中运行的程序处理。您也许可以调整应用程序以启动一些后期处理(只需将“ EXEC CICS START yourtransacion ...”添加到现有程序中即可。
答案 2 :(得分:0)
签出CICS Events。您可以为写入VSAM文件的时间设置事件,并使用COBOL程序对其进行操作。事件适配器有几个,您可能会对写入TS队列的适配器感兴趣。