我正在使用以下JCL将DSNTEPZ查询的结果转换为所需的布局,以及在标题和预告片上打耳机。我已经完成了我的任务,但感觉很笨拙。任何JCL向导都可以压缩这些步骤中的任何一个?我真的很讨厌最后的排序,但我找不到任何方法在格式MMYYYY的标题内输出日期。
//**********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))
/*
//
答案 0 :(得分:2)
首先,JCL是第一和第二列中以//(以及/ *)开头的东西。你想要的是SORT控制卡。
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,我只删除了你的评论,因为它们不合适,你可以像过去那样拥有内联注释,或者以*开头的整行。我已经将FIELDS改为BUILD(FIELDS自第一天起就已经存在,并且在不同的环境中有多种用途:BUILD已经存在了10年,每次你看到它(在INREC,OUTREC或OUTFIL)它只有它意味着建立。
正如您所发现的,HEADER1的内容仅限于允许的内容。要么就是这样,要么HEADER1的内容不是你想要的,你可以制作自己的标题。
您将:暂时扩展记录以包含一个SEQNUM,其大小足以轻松代表您的所有记录:在OUTFIL中,识别第一条记录,并使用斜杠运算符(/)输出两条记录,首先是标题,您可以格式化您想要的格式,然后是实际数据记录(记住排除您暂时扩展的所有数据)。