好吧,我对整个大型机/JCL 的事情有点陌生。这绝对是一个n00b问题,但老实说我不知道答案。
我做了一些查找,但我没有看到这个应该是一个非常简单的问题的答案,IMO。在编写 JCL 过程时,我想要获取当前的生产数据集并使用版本号(如 &BUVER)对其进行备份。我正在复制的示例使用 IDCAMS,而 SYSIN DD 语句使用
ALTER 'HLQ.MY.PROD.DS01' NEWNM('HLQ.MY.PROD.DS01.VER100.D010122')
。
DS 名称周围的抽搐是否必要?我正在尝试编写一个过程来使用
HLQ.MY.PROD.DS01.&BUVERNO.&BUDATE
备份一组常规的 DS 名称以及版本和备份日期,我不确定是否可以将符号放在 tics 中,或者是否可以保留 tics关闭整个事情并按照上面的方式连接符号。
'HLQ.MY.PROD.DS01.&BUVERNO.&BUDATE'
有用吗?
如果没有,
HLQ.MY.PROD.DS01.&BUVERNO.&BUDATE
有用吗?
或者我正在尝试做一些根本不允许的事情?
感谢您对此提供任何帮助?
CoMo G-Dawg,
对于 PGM=IDCAMS,单引号不是必需的。即使它们存在,它也确保所包含的数据集是绝对数据集名称。然而,某些 IDCAMS 命令(例如 DEFINE CLUSTER)可以用作 TSO 命令。(使用 PGM=IKJEFT01)。在这种情况下,如果名称未用单引号引起来,系统可能会附加前缀(通常是您的 ID)作为第一个限定符。因此,根据您运行命令的方式,您可能需要单引号。
如果您想确保它在两种环境中都有效,请始终使用单引号。
需要导出符号&BUVERNO和&BUDATE,以便将它们导出到SYSIN。另请注意,作业运行的作业类需要定义 SYSSYM=ALLOW。
// your job card
// EXPORT SYMLIST=*
// SET BUVERNO=VER100
// SET BUDATE=D010122
//*
//STEP0100 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *,SYMBOLS=EXECSYS
ALTER 'HLQ.MY.PROD.DS01' -
NEWNAME('HLQ.MY.PROD.DS01.&BUVERNO..&BUDATE')
/*