我有一个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之后的数据集是我正在编译的程序的依赖项。我不明白的是,版本化是如何在Copybook中工作的。它将在数据集中的限定符"xxx..xxx..xxx.CPY“下拉入任何内容。我如何知道所有需要的复制本(编译错误?)并且它们是原始程序员打算使用的正确版本。对于MQ-Series Copybook数据集,在名称"MQS710A“中似乎有一个版本号。在z/OS上应该是这样的吗?另一个数据集"xxx..xxx..xxx.CPY“的名称中没有任何类似版本的内容,"xxx”只是一堆字母。
发布于 2021-07-29 14:39:54
当一个复制本被引用时,它是基于找到该复制本的第一个数据集来选择的。编译器不会查看您看到版本号的数据集名称。版本号是一种约定,用于控制何时将新更改引入环境。
例如,假设安装了新版本的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,就会出现编译错误。
https://stackoverflow.com/questions/68577869
复制相似问题