Mainframe 这个多步骤排序JCL可以压缩吗?
我正在使用下面的JCL将DSNTEPZ查询的结果转换为所需的布局,以及添加标题和尾部。我已经能够完成我的任务了,但感觉很笨拙。有没有JCL向导能够压缩这些步骤?我真的很讨厌最后的排序,但是我找不到任何方法在格式MMYYYY的标题中输出日期Mainframe 这个多步骤排序JCL可以压缩吗?,mainframe,jcl,Mainframe,Jcl,我正在使用下面的JCL将DSNTEPZ查询的结果转换为所需的布局,以及添加标题和尾部。我已经能够完成我的任务了,但感觉很笨拙。有没有JCL向导能够压缩这些步骤?我真的很讨厌最后的排序,但是我找不到任何方法在格式MMYYYY的标题中输出日期 //**********remove extra output lines/reformat ******************* //SORT EXEC PGM=SORT, // REGION=2000K //SORTI
//**********remove extra output lines/reformat *******************
//SORT EXEC PGM=SORT,
// REGION=2000K
//SORTIN DD DSN=&&SORT1IN,DISP=(OLD,DELETE,DELETE) * pds of query results
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(20,5))
//SORTOUT DD DSN=&&SORT1OUT,
// DISP=(NEW,PASS,DELETE),
// AVGREC=K,LRECL=100,
// SPACE=(100,(900,100),RLSE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY -
INCLUDE COND=(97,1,CH,EQ,C'1',OR, * This removes the 'informational' Query lines
97,1,CH,EQ,C'2',OR,
97,1,CH,EQ,C'0') -
OUTREC FIELDS=(C'DTL',32,9,71,10,5X,49,19,2X,84,4,89,2, *Arranging the Output
92,2,97,1,43X)
/*
//************************ add hdr/trl ***********************
//SORT2 EXEC PGM=SORT,
// REGION=2000K
//SORTIN DD DSN=&&SORT1OUT,DISP=(OLD,DELETE,DELETE)
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(20,5))
//SORTOUT DD DSN=&&SORT2OUT,
// DISP=(NEW,PASS,DELETE),
// AVGREC=K,LRECL=100,
// SPACE=(100,(900,100),RLSE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
OUTFIL REMOVECC,
HEADER1=(C'HEADERENE',DATENS=(DM4),19:82X),
TRAILER1=(C'TRAILER',COUNT=(M11,LENGTH=9),83X)
/*
//************************ CONVERT DATE ***********************
//SORT3 EXEC PGM=SORT,
// REGION=2000K
//SORTIN DD DSN=&&SORT2OUT,DISP=(OLD,DELETE,DELETE)
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(20,5))
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
OUTREC IFTHEN=(WHEN=(1,7,CH,EQ,C'HEADERE'),
BUILD=(1,9,12,6,85X))
/*
//
首先,JCL是第一列和第二列中以//(以及/*)开头的内容。您需要的是分拣控制卡
OPTION COPY
INCLUDE COND=(97,1,CH,EQ,C'1',OR,
97,1,CH,EQ,C'2',OR,
97,1,CH,EQ,C'0')
INREC BUILD=(C'DTL',
32,9,
71,10,
5X,
49,19,
2X,
84,4,
89,2,
92,2,
97,1,
43X)
OUTFIL REMOVECC,
HEADER1=(01:C'HEADERENE',
10:DATENS=(DM4),
100:X),
TRAILER1=(C'TRAILER',
COUNT=(M11,LENGTH=9),
100:X)
这是您的前两个步骤。我删除了虚假的“-”s,我只删除了不合适的注释,您可以像以前一样使用内联注释,或者使用一整行,以*开头。我已经将字段更改为BUILD(字段从第一天开始就存在,并且在不同的上下文中有多种用途:BUILD已经存在了10年,每次您看到它(在INREC、OUTREC或OUTFIL上)时,它只意味着BUILD
正如您所发现的,HEADER1的内容仅限于允许的内容。要么接受它,要么如果HEADER1的内容不是您想要的,您可以制作自己的标题
您将:临时扩展记录以包括一个SEQNUM,它足够大,可以轻松地表示您的所有记录:在OUTFIL中,标识第一条记录,并使用斜杠运算符(/)输出两条记录,首先是页眉,您可以按需要格式化,然后是实际的数据记录(记住排除您临时扩展的任何数据)