compilation - COBOL Copybook 版本控制

标签 compilation versioning cobol zos

我有一个 COBOL 编译作业,但不是我编写的,我正在尝试了解它是如何工作的。它看起来像这样:

//COB      EXEC PGM=IGYCRCTL,COND=(0,NE,TRN),
//             PARM=('DTR,NUMPROC(PFD),NOADV,LIST,LIB,TRUNC(BIN)',     *
//             'NOSEQ,DYN,RMODE(ANY),OUT(SYSPRINT),MAP')
//STEPLIB  DD DISP=SHR,DSN=SYS1.IGY.SIGYCOMP
//SYSPRINT DD DSN=xxx..xxx..xxx.LST(&NAME),DISP=SHR
//SYSUT1   DD UNIT=SYSDA,SPACE=(460,(1700,1000))
...
//SYSLIB   DD DISP=SHR,DSN=xxx..xxx..xxx.CPY
//         DD DISP=SHR,DSN=SYSQ.MQS710A.SCSQCOBC         MQ-SERIES

这不是真正的工作,我将一些部分更改为“xxx”,因为我无法给出真正的代码。 我知道SYSLIB之后的数据集是我正在编译的程序的依赖项。我不明白的是抄写本的版本控制是如何工作的。它将提取数据集中限定符“xxx..xxx..xxx.CPY”下的所有内容。我如何知道需要所有 Copybook(编译错误?)并且它们是原始程序员打算使用的正确版本。 对于 MQ-Series Copybook 数据集,名称“MQS710A”中似乎有一个版本号。 z/OS 上应该是这样吗? 另一个数据集“xxx..xxx..xxx.CPY”的名称中没有类似版本的内容,“xxx”只是一堆字母。

最佳答案

引用 COPYBOOK 时,将根据找到 COPYBOOK 的第一个数据集来选择它。编译器不会查看您看到版本号的数据集名称。版本号是一种约定,用于控制何时将新更改引入环境。

举个例子,假设安装了新版本的 MQ,可以更改数据集以引用新版本。这将取决于系统程序员如何将变化引入环境。这是一个比您的帖子所涉及的更复杂的答案。

如果您要进行“版本控制”,您需要对串联中的数据集序列进行排序。例如,您可能会看到类似以下内容:

//SYSLIB   DD DISP=SHR,DSN=xxx.DEV.xxx.CPY
//         DD DISP=SHR,DSN=xxx.PROD.xxx.CPY
//         DD DISP=SHR,DSN=SYSQ.MQS710A.SCSQCOBC         MQ-SERIES 

这种方法允许开发人员选取正在作为新功能的一部分进行修改的副本,然后从当前生产版本中检索剩余的副本。

总而言之,如果您使用源管理系统,其编译过程将与简单的串联过程不同。

如果未找到 COPYBOOK,您将收到编译错误。

关于compilation - COBOL Copybook 版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68577869/

相关文章:

java - 为什么三元运算必须返回一个值?

compilation - 在另一台 Windows 机器上运行 Rust 编译程序有什么要求?

go - 使用 make 为不同的体系结构构建动态目标?

javascript - 为什么 JavaScript 会被编译成机器码?

cobol - COBOL 中的小数

cobol - 如何在cobol中打印小数点?

ruby-on-rails - 如何自定义 Rails 4 render() 查找文件的方式?

java - 如何查看 Eclipse 内置插件的特定版本

dll - 为现有的 .dll 设置版本信息?

cobol - MULTIPLY 的行为与我预期的不同