我们想要创建一个嵌入了日期的文件,该文件派生自另一个文件。 考虑文件A包含处理日期'04 / 18/2015'。现在我们要创建一个名为“XXXX.YYYY.04182015”的文件。
可以使用COBOL和JCL完成吗?
答案 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编程指南中所述。