首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JCL符号传递给流中数据集

将JCL符号传递给流中数据集
EN

Stack Overflow用户
提问于 2011-08-09 23:41:44
回答 2查看 23.8K关注 0票数 5

我尝试这样创建和删除数据集名称中包含JCL符号的数据集:

代码语言:javascript
复制
//    SET DATE=20110809
//* DELETE DATASET
//DEL01 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
           DELETE DATASET.TEMP.&DATE                PURGE
           SET MAXCC = 0
//* CREATE DATASET
//STEP01   EXEC PGM=IEFBR14
//DELDD    DD DSN=DATASET.TEMP.&DATE,
//            DISP=(NEW,CATLG,DELETE)

问题是我不能在一个实例中使用JCL符号(SYSIN DD *)。我不能确定数据集是否已经存在,所以我不能只使用DISP=(修改、删除、删除)。有没有其他方法可以删除数据集?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-10 01:44:50

正如您已经发现的那样,JCL不支持内联数据中的符号替换。

以下内容应该适用于您:

代码语言:javascript
复制
//DEL01   EXEC PGM=IEFBR14          
//DELDD    DD DSN=DATASET.TEMP.&DATE, 
//         DISP=(MOD,DELETE,DELETE), 
//         SPACE=(TRK,0)             

添加空间参数。如果数据集不存在,则会因为MOD部署而创建它。则它将在步骤完成时被删除。Net的结果是,在此步骤之后,命名的数据集将不存在。

我看到的唯一真正的问题是:

代码语言:javascript
复制
//    SET DATE=20110809

您提供的日期长度为8个字符(最大限定符长度),但不是以字母或国家字符开头(以数字开头)。这将导致无效的数据集名称。如果只向数据集日期限定符添加一个alpha前缀,它将变得太长。解决此问题的常用方法是使用儒略日期,如: 2011221。在儒略日期前加上alpah或国家字符,如: D2011221。因此,您的SET指令将如下所示:

代码语言:javascript
复制
//    SET DATE=D2011221

一切都会好起来的。

票数 8
EN

Stack Overflow用户

发布于 2013-10-11 21:30:14

从z/OS2.1(发布于2013年9月30日)开始,可以通过将SYMBOLS关键字添加到DD语句来在JES2流数据中使用符号。可能的值包括:

  • SYMBOLS=JCLONLY:替换流中的JCL符号和JES符号data.
  • SYMBOLS=EXECSYS:替换作业期间在系统上定义的JCL符号、JES符号和系统符号execution.
  • SYMBOLS=CNVTSYS:替换JCL转换期间在系统上定义的JCL符号、JES符号和系统符号。

符号必须已导出。

下面是一个示例,来自2

代码语言:javascript
复制
// EXPORT SYMLIST=(DSN,VOL)
// SET DSN='ABC.DATA',VOL='123456'
//STEP1 EXEC PGM=USERPGM1
//DATA     DD DSN=&DSN,DISP=SHR
//SYSIN    DD *,SYMBOLS=EXECSYS
  SYSTEM=&SYSNAME,DSNAME=&DSN,VOLUME=&VOL
  FUNCTION='&APPL_NAME'
/*

有关更多信息,包括配置符号替换日志的位置的语法,请参阅:

  • 1
  • 2,第20-24页
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6998907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档