删除a&&;JCL中的临时数据集

删除a&&;JCL中的临时数据集,jcl,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 //*******************************************************

我有以下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清除 删除KAMSP2T.#TEST2.RAPW1RDW清除 删除KAMSP2T.#TEST2.RAPW2RDS清除 删除KAMSP2T.#TEST2.RAXY0RDA清除 删除KAMSP2T.#TEST2.RASV0RDA清除

有什么办法可以删除这些吗

谢谢你的建议

谢谢
Martin

IEFBR14是一个不执行任何操作的步骤(它代表分支R14,在大型机汇编程序中,分支R14是标准的程序返回。IEFBR14不执行任何操作

您可以使用IDCAM,如:

//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更灵活。这也可以在SAS中完成。请注意,在z/OS中,该单元通常默认为SYSDA之类的值,因此在当今的大多数商店中是可选的。另一方面,由于MOD参数,SAS不允许在这段特定代码中对单元进行编码。此外对于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访问数据的方式一致-通过页面而不是块。还要注意,sim对于TSO PDS,在空间参数中编码RLSE是不明智的

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

TEMP01文件仅包含程序的结果集,然后您可以使用IEFBR14立即删除该文件。TEMP01确实包含用于删除SYSIN的输入。您正在调用的程序可能有问题。我尝试使用delete IDCAMS://STEP1 EXEC PGM=IDCAMS//SYSIN DD*delete&&TEMP01 PURGE//SYSPRINT DD SYSOUT=X,但是我也不喜欢这样…你想做什么?Bruce comment回答了。感谢使用IDCAMS删除数据集还有两件好事。如果其中一个数据集不存在,你可以在
删除
后使用
如果lastc=8
如果MAXCC=8
作为最后一个ca来抑制CC 8rd.(请注意,除了不在目录中之外,可以出于其他原因返回8。)此外,现在两个当前级别JES都通过
SYMBOLS=
关键字支持流内DDs中的符号替换,您可以在控制卡中指定符号。确保相关符号位于
EXPORT
JCL语句中。