Cobol 在CICS中读取动态命名的平面文件

Cobol 在CICS中读取动态命名的平面文件,cobol,mainframe,cics,Cobol,Mainframe,Cics,假设我有一个批处理作业,它以前运行并创建了一个固定记录长度的平面输出文件。(每次运行作业时,输出文件名都会有所不同。) 我有一个在服务器环境中运行的CICS程序,它将接收来自web浏览器的作业结果请求,我希望读取文件并返回内容。(假定要使用的特定文件名将包含在文本中。) 我正在尝试解决如何在CICS中实际访问该文件 我曾设法使用CEEENV动态指定文件名,但后来发现我无法使用本机的OPEN/READ命令。 我知道有CICS读取和浏览命令,但它们似乎都需要事先将文件定义到CICS?我还看到过使用瞬

假设我有一个批处理作业,它以前运行并创建了一个固定记录长度的平面输出文件。(每次运行作业时,输出文件名都会有所不同。)

我有一个在服务器环境中运行的CICS程序,它将接收来自web浏览器的作业结果请求,我希望读取文件并返回内容。(假定要使用的特定文件名将包含在文本中。)

我正在尝试解决如何在CICS中实际访问该文件

我曾设法使用CEEENV动态指定文件名,但后来发现我无法使用本机的OPEN/READ命令。 我知道有CICS读取和浏览命令,但它们似乎都需要事先将文件定义到CICS?我还看到过使用瞬态数据队列访问顺序文件的引用,但同样,队列需要预定义

该文件没有任何特定的结构或合适的键,因此看起来我应该使用BDAM file命令。这似乎需要一个。但我找不到任何像样的例子来说明如何做到这一点

显然,web服务可以被频繁并发地调用,因此我需要某种临时将文件与访问它的方法相关联的方法,一旦使用完它,我就可以释放它


显然,我对CICS环境不太熟悉。我觉得我要么错过了一些简单的事情,要么就是有一个根本的原因让我无法做到这一点。欢迎向任何一方指点

我已经通过从COBOL调用C运行时例程来处理Unix系统服务文件
FOPEN
等可供您使用

程序在开放的TCB上执行并且是线程安全的,这一点至关重要。

如果您运行的是CICS TS 4.2或更高版本,则必须将您的程序定义为
并发(必需)
,以便您知道它位于打开的TCB上,而不是QR TCB上。在QR TCB上执行I/O不利于性能和吞吐量,并可能影响您的继续就业。如果执行I/O的程序不是事务中的第一个程序,则必须
链接到它,而不是动态地
调用它,以便TCB切换自动进行

如果您运行的是CICS TS 4.1或更早版本,则必须跳过一些限制,将事务强制到开放的TCB上。希望您使用的是更新的版本

向您的CICS系统程序员解释这一点,您将执行QSAM I/O,但您将确保您处于开放的TCB上,以避免性能问题

如果您不知道不同的TCB是关于什么的,请查阅文档。有一个覆盖TCB的系统。这很值得你花时间


另一种方法是在批处理作业结束时将数据加载到DB2表中(如果您的商店有DB2)。

我通过调用COBOL中的C运行时例程来处理Unix系统服务文件
FOPEN
等可供您使用

程序在开放的TCB上执行并且是线程安全的,这一点至关重要。

如果您运行的是CICS TS 4.2或更高版本,则必须将您的程序定义为
并发(必需)
,以便您知道它位于打开的TCB上,而不是QR TCB上。在QR TCB上执行I/O不利于性能和吞吐量,并可能影响您的继续就业。如果执行I/O的程序不是事务中的第一个程序,则必须
链接到它,而不是动态地
调用它,以便TCB切换自动进行

如果您运行的是CICS TS 4.1或更早版本,则必须跳过一些限制,将事务强制到开放的TCB上。希望您使用的是更新的版本

向您的CICS系统程序员解释这一点,您将执行QSAM I/O,但您将确保您处于开放的TCB上,以避免性能问题

如果您不知道不同的TCB是关于什么的,请查阅文档。有一个覆盖TCB的系统。这很值得你花时间


实现这一点的另一种方法是在批处理作业结束时将数据加载到DB2表中(如果您的车间有DB2)。

您可以使用CICS SPI动态地为文件定义资源,但这不是一个好主意,实际上更麻烦的是,有太多的考虑因素--高可用性,在哪个文件拥有地区,令人头痛的事情比比皆是

任何事情都可以做,毕竟它只是一台计算机,但您将违反过去半个世纪左右构建CICS/TS框架时的所有假设。它管理资源以获得运行的所有任务的最大并发性,从而实现所有机器资源的最大效率。按照你的建议去做可能会让整个区域进入操作系统等待状态,并锁定所有东西,除非你把它们都做好


如果它只是一个简单的平面文件,那么在创建它的作业结束时将其复制到预定义的ESD中,并触发CICS任务从那里读取它,您的调试过程将更加轻松,您的CICS sysprog不会永远恨您和诅咒您的名字。或者,您可以使用键入唯一文件名和记录序列号的KSD,并使用STARTBROWSE/READNEXT/ENDBROWSE处理这些记录。

您可以使用CICS SPI动态地为文件定义资源,但这不是一个好主意,实际上更让人头疼,要考虑的因素太多了——高可用性、哪个文件拥有区域、头痛的问题比比皆是

任何事情都可以做,毕竟它只是一台计算机,但您将违反过去半个世纪左右构建CICS/TS框架时的所有假设。它管理资源以获得运行的所有任务的最大并发性,从而实现所有机器资源的最大效率。做你想做的事