删除JCL中的&& TEMP数据集

时间:2017-06-22 18:51:13

标签: jcl

我有以下JCL:

//REGTEST3 JOB 00000000,'REG COPY CDB  ',MSGLEVEL=(1,1),
//             NOTIFY=&SYSUID,CLASS=I,MSGCLASS=X,REGION=1200M
/*JOBPARM S=ESYS
//PROCLIB JCLLIB ORDER=PWSX.KAMSP2T.PROCLIB
//****************************************************************
//*****    SETUP TEST RAPW, RAP2, RAXY, RASV IMS DATABASES
//****************************************************************
//RENAME   EXEC FINDREP,FIND=KAMSP2T,REPLACE=&SYSUID,
//         OUTFILE=&&TEMP01
//SORTUSER.SORTIN DD *

  DELETE KAMSP2T.#TEST2.RAPW0RDS PURGE
  DELETE KAMSP2T.#TEST2.RAPW1RDW PURGE
  DELETE KAMSP2T.#TEST2.RAPW2RDS PURGE
  DELETE KAMSP2T.#TEST2.RAXY0RDA PURGE
  DELETE KAMSP2T.#TEST2.RASV0RDA PURGE
/*
//DEL01   EXEC PGM=IEFBR14
//DELDD    DD DSN=&&TEMP01,
//         DISP=(MOD,DELETE,DELETE),
//         SPACE=(TRK,0)
//SYSPRINT DD SYSOUT=X

The PROC does this:
//FINDREP  PROC FIND=,
//         REPLACE=,
//         INPFILE=,
//         OUTFILE=
//**********************************************************************
//C1PARM01 EXEC PGM=PARMCOPY,
//             PARM='  SORT FIELDS=COPY'
//PARMFILE DD DSN=&&PARM,DISP=(NEW,PASS,DELETE),UNIT=DISK,
//         SPACE=(6233,(3),RLSE),DCB=(LRECL=80,BLKSIZE=1680,RECFM=FB)
//SYSPRINT DD   DUMMY
//**********************************************************************
//C1PARM02 EXEC PGM=PARMCOPY,
//             PARM=' OUTREC  FINDREP=(INOUT=(JP1,JP2))'
//PARMFILE DD DSN=&&PARM,DISP=(MOD,PASS,DELETE),UNIT=DISK,
//         SPACE=(6233,(3),RLSE),DCB=(LRECL=80,BLKSIZE=1680,RECFM=FB)
//SYSPRINT DD   DUMMY
//**********************************************************************
//SORTUSER EXEC PGM=SORT,PARM='JP1"&FIND",JP2"&REPLACE"'
//SORTLIB  DD   DSN=SYS1.SORTLIB,DISP=SHR
//SYSOUT   DD   SYSOUT=*
//SORTIN   DD  DISP=SHR,DSN=&INPFILE
//SORTOUT  DD  DSN=&OUTFILE,
//             DISP=(NEW,PASS),
//             DCB=(RECFM=FB,BLKSIZE=6240,LRECL=80),
//             UNIT=DISK,SPACE=(TRK,(1,1),RLSE)
//SORTWK01 DD   UNIT=SYSDA,SPACE=(32016,(428,1600))
//SORTWK02 DD   UNIT=SYSDA,SPACE=(32016,(428,1600))
//SORTWK03 DD   UNIT=SYSDA,SPACE=(32016,(428,1600))
//SORTWK04 DD   UNIT=SYSDA,SPACE=(32016,(428,1600))
//SORTWK05 DD   UNIT=SYSDA,SPACE=(32016,(428,1600))
//SYSIN    DD   DISP=(OLD,DELETE),DSN=&&PARM
//       PEND

但是我的问题是&& TEMP01数据集并没有删除列出的所有文件:

删除KAMSP2T。#TEST2.RAPW0RDS PURGE   删除KAMSP2T。#TEST2.RAPW1RDW PURGE   删除KAMSP2T。#TEST2.RAPW2RDS PURGE   删除KAMSP2T。#TEST2.RAXY0RDA PURGE   删除KAMSP2T。#TEST2.RASV0RDA PURGE

有什么方法可以删除这些吗?

感谢任何建议。

由于 马丁

2 个答案:

答案 0 :(得分:2)

IEFBR14是一个无所作为的步骤(它代表分支R14,它在大型机汇编程序中是标准程序返回.IEFBR14不做anthing

您可以使用IDCAMS:

//DELETE   EXEC  PGM=IDCAMS
//SYSPRINT  DD   SYSOUT=*
//SYSIN     DD   *
   DELETE KAMSP2T.#TEST2.RAPW0RDS PURGE
   DELETE KAMSP2T.#TEST2.RAPW1RDW PURGE
   DELETE KAMSP2T.#TEST2.RAPW2RDS PURGE
   DELETE KAMSP2T.#TEST2.RAXY0RDA PURGE
   DELETE KAMSP2T.#TEST2.RASV0RDA PURGE
/*

在你的情况下,你可以做

//DELETE   EXEC  PGM=IDCAMS
//SYSPRINT  DD   SYSOUT=*
//SYSIN     DD   DSN=&&TEMP01,DISP=SHR

IEFBR14删除编码如

//DELETE EXEC PGM=IRFBR14
//DEL01   DD  DSN=KAMSP2T.#TEST2.RAPW0RDS,DISP=(MOD,DELETE),
//            SPACE=(TRK,(1,1))
//DEL02   DD  DSN=KAMSP2T.#TEST2.RAPW1RDW,DISP=(MOD,DELETE),
//            SPACE=(TRK,(1,1)) 
//DEL04   DD  DSN=KAMSP2T.#TEST2.RAXY0RDA,DISP=(MOD,DELETE),
//            SPACE=(TRK,(1,1))
//DEL05   DD  DSN=KAMSP2T.#TEST2.RASV0RDA,DISP=(MOD,DELETE),
//            SPACE=(TRK,(1,1))  

传统上,IDCAMS比IEFBR14删除更灵活

答案 1 :(得分:0)

这也可以在SAS中完成。意识到在z / OS中,UNIT通常默认为SYSDA,因此在大多数商店中都是可选的。另一方面,由于MOD参数,SAS不允许在这段特定代码中编码UNIT。同样对于SAS程序员来说,这意味着这对于SAS库本身也是有效的,因为SAS正在改变访问方法 - 从SAS定制设计的EXCP到BSAM - 就像IEFBR14那样做什么"没有"因为它只是开始并分支到注册14 - 完成 - 处理中要求的任何内容 - 在这种情况下"删除" - 无论构建该文件的访问方法如何,都将发生。

filename dd1 'myid.x.saslib' disp=(mod,delete) space=(trk,0);
filename dd1 clear;

SAS程序员 - 还意识到这种删除SAS库的方法 - 而不是SAS库中的SAS数据集 - 不在任何SAS文档中。这就是!!

然后当然要将其内联分配,然后再对其进行编码。请注意,对于辅助节点,任何大于300的内容都需要具有dsntype = large。最后,由于这不是使用QSAM或BSAM而是使用EXCP,因此阻塞因子应该与SAS访问数据的方式一致 - 通过页面而不是块。另请注意,与TSO PDS类似,在SPACE参数中编写RLSE是不明智的。

libname dd1 'myid.x.saslib' disp=(,catlg,delete) space=(cyl,(50,500)) dsntype=large unit=(sysallda,59) blksize=6144;