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,您将遇到编译错误。
我有一个不是我编写的 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,您将遇到编译错误。