在cobol中创建具有动态名称的文件

时间:2015-04-28 09:56:03

标签: file cobol mainframe creation jcl

我们想要创建一个嵌入了日期的文件,该文件派生自另一个文件。 考虑文件A包含处理日期'04 / 18/2015'。现在我们要创建一个名为“XXXX.YYYY.04182015”的文件。

可以使用COBOL和JCL完成吗?

4 个答案:

答案 0 :(得分:2)

正如@BillWoodger所说,这通常是通过Control-M,CA-7等作业调度程序完成的。

IBM大型机的新手通常不了解生成数据组(GDG)。向您的同事询问操作系统内置的此功能。如果不构建具有日期作为其限定符之一的DSN,则可以解决您的问题。

如果必须拥有一个日期作为其DSN限定符之一的数据集,并且必须在COBOL程序中创建它,那么您可以通过动态创建它分配

现代大型机COBOL编译器可以调用C语言环境(LE)附带的C运行时例程。您可以从COBOL程序中调用fopen(),指定要使用的文件名。这是进行动态分配的一种方法。

此技术的缺点是您的文件名在JCL中无处可见。影响分析工具可能找不到您的程序创建此文件。

答案 1 :(得分:1)

您需要动态生成JCL或JCLPROC。使用COBOL程序/ sort来创建具有所需日期的JCL / JCLPROC。然后运行那个JCL。 但是,您提供的示例无法创建,因为最后一块04182015是所有数字。 DSN名称至少需要第一个字符作为字符。我们通常保留前缀DT。在你的情况下,它将是' XXXX.YYYY.DT041815'。

我个人的经验是,在需要FTP文件时创建这样的名称。如果是这样,您可以使用SORT更改FTP parm文件中的输出文件名。

答案 2 :(得分:0)

横向思考,但仍然是有效的响应:可以从用COBOL编写的CICS程序提交动态组装的JCL。

因此你会使用COBOL和JCL。

你还在组装DD DSN=......行(卡?)。其余的将是样板。提交的异步性质意味着如果随后需要,必须测试文件的存在。

调度预处理仍然是可接受的方式,
构建后,从临时文件或VAR中包含DD DSN=...。使用Control-M相对容易。

一种方法是将JCL作为后续提交的批处理cobol的输出文件。

答案 3 :(得分:0)

有一些相当简单的方法可以根据您的环境进行操作。如果不添加产品或自定义系统符号,则无法使用JCL轻松完成。

您可以使用其调用的批处理接口调用REXX或TSO,并将您想要分配的所需数据集名称传递给动态创建的DDNAME。

您可以调用与DYNALLOC宏相同的小型汇编程序。

您可以使用环境变量来描述要在纯Cobol中分配的文件,如http://www-01.ibm.com/support/docview.wss?uid=swg21046577和Enterprise Cobol编程指南中所述。