COBOL Copybook 版本控制

COBOL Copybook Versioning

我有一个不是我编写的 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 之后的数据集是我正在编译的程序的依赖项。我不明白的是 Copybooks 的版本控制是如何工作的。它将提取数据集中限定符“xxx..xxx..xxx.CPY”下的任何内容。我怎么知道需要所有 Copybook(编译错误?)并且它们是原始程序员打算使用的正确版本。 对于 MQ 系列 Copybook 数据集,名称“MQS710A”中似乎有一个版本号。 z/OS 应该是这样吗? 另一个数据集“xxx..xxx..xxx.CPY”在名称中没有任何类似版本的东西,“xxx”只是一串字母。

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

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

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

//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,您将遇到编译错误。