我有一个COBOL pgm A,它调用另一个COBOL pgm B. 在pgm BI中需要一个文件。我如何编写JCL以便能够在pgm B中访问此文件?我在B.JCL用于运行COBOL程序调用子程序
回答
写SELECT子句和FD进入该文件必须包含在JCL对于如果文件存在执行程序A.
的步骤DD statement,那是很容易的。
//ABCDEFGH DD DISP=SHR,DSN=your.file.name.here
ABCDEFGH在哪里,你是在计划B.你的SELECT语句中使用的名称
如果要创建一个新的文件,你必须考虑到空间的估计值的文件将使用你想去的地方放置它。
//ABCDEFGH DD DISP=(NEW,CATLG,DELETE),
// DSN=your.file.name.here,
// AVGREC=K,
// RECFM=FB,
// LRECL=your-lrecl-here,
// MGMTCLAS=your-management-class-here,
// SPACE=(your-lrecl-here,(primary-number-of-records,secondary),RLSE)
这仅仅是写意的,你真的应该看看JCL Reference和JCL User's Guide。
- 在步骤中包含DD语句。
- 程序B甚至不一定是COBOL。
- 理想的设计,使程序B是一个服务程序 - 根据 请求和您的需求打开,关闭,读取,写入重新写入。如果预期这种封装,它会让你的生活变得更容易。
我已经看到了这个,其中B是汇编程序,当不是交互式运行时刷新写入磁盘,但在调试时立即写入。
你不需要改变程序来改变“冲洗”,只需要将DD改为解锁就可以了(假设阻塞在程序中没有被硬编码)。我完全不知道会给你带来什么样的好处,但是你就是这么做的。没有涉及的代码。 –
好处是调试。诸如Expeditor或Intertest等产品说。生产中的缓冲历史上会产生性能提升。可能是红鲱鱼。我试图展示子模块的完整“服务”性质。通常,这种大量的文件处理是在顶层执行的。 – mckenzm
那么,在任何情况下,你都必须修改程序的行为来使用它的调试工具,对我来说看起来并不怎么样。我确定他们可以展示缓冲区,但我们走了。至少有一个解释。 –
- 1. 如何自动运行jcl在主机上运行cobol程序
- 2. COBOL - 调用程序
- 3. JCL一个COBOL表读/插入程序
- 4. 从Cobol调用Java程序
- 5. 从JCL批次调用CICS程序
- 6. Delphi应用程序调用cobol应用程序 - >错误
- 7. 从Cobol程序调用C函数
- 8. COBOL DB2程序
- 9. JCL如何将PRTOUTA,...等链接到Cobol程序?
- 10. 从子程序调用子程序
- 11. 调用子程序
- 12. 试图运行COBOL .EXE使用C++程序
- 13. 如何从DB2上的COBOL存储过程调用COBOL批处理程序
- 14. 作为子应用程序运行MVC应用程序?
- 15. 如何使用脚本/程序(如java)通过调用cobol的compile/run命令来编译/运行cobol?
- 16. 使用Windows调度程序运行控制台应用程序
- 17. 如何在Web应用程序中运行调度程序实用程序
- 18. C程序运行Mac应用程序
- 19. 如何使用Random运行子程序()
- 20. 调试运行LUA应用程序
- 21. 调用另一个程序在我的IDL程序中运行
- 22. 运行java程序作为调度程序而不使用crontab
- 23. 运行node.js应用程序与监督程序调试
- 24. 如何运行JCL程序来启动SQL查询?
- 25. 如何运行子程序
- 26. 使用来自Cobol程序的Java API
- 27. 在COBOL程序中使用BINARY
- 28. 调用perl的子程序
- 29. R调用Fortran子程序
- 30. COBOL程序中的逻辑
从JCL的角度来看,程序'A'处理文件还是程序'B'的确不重要,因为它们都在同一步骤中执行。 – NealB
我创建了JCL ...并且还通过为这个文件添加了相同的select子句并在FD部分中将此文件声明为EXTERNAL来更新了我的主pgm和子pgm。我测试了我的JCL。它工作正常。非常感谢:) – Saisha