我有一个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. 从JCL批次调用CICS程序
- 3. Delphi应用程序调用cobol应用程序 - >错误
- 4. 从Cobol程序调用C函数
- 5. COBOL DB2程序
- 6. 调用子程序
- 7. 试图运行COBOL .EXE使用C++程序
- 8. 作为子应用程序运行MVC应用程序?
- 9. 如何使用脚本/程序(如java)通过调用cobol的compile/run命令来编译/运行cobol?
- 10. 使用Windows调度程序运行控制台应用程序
- 11. C程序运行Mac应用程序
- 12. 如何使用Random运行子程序()
- 13. 调试运行LUA应用程序
- 14. 运行java程序作为调度程序而不使用crontab
- 15. 如何运行子程序
- 16. 使用来自Cobol程序的Java API
- 17. COBOL程序不写文件
- 18. 从fortran调用C++子程序时运行时中止
- 19. 试图运行基于电子的应用程序的问题?
- 20. 保护iOS应用程序免于运行时钩子
- 21. 程序内程序调用
- 22. 运行Flex应用程序
- 23. 运行的应用程序
- 24. 运行WinCE应用程序
- 25. 运行Yaws应用程序
- 26. 运行Java应用程序
- 27. 运行rcp应用程序
- 28. 用参数运行程序?
- 29. 运行EJB应用程序
- 30. 运行PowerBuilder应用程序
从JCL的角度来看,程序'A'处理文件还是程序'B'的确不重要,因为它们都在同一步骤中执行。 – NealB
我创建了JCL ...并且还通过为这个文件添加了相同的select子句并在FD部分中将此文件声明为EXTERNAL来更新了我的主pgm和子pgm。我测试了我的JCL。它工作正常。非常感谢:) – Saisha