我有9787条记录,其中前17行为空白。我想将这17行移动到文件的末尾。 我怎么能这样做?
答案 0 :(得分:2)
下面将使用SORTOUT DD
末尾的空白行对输入数据集进行排序 // SORT EXEC PGM = SORT
// SYSOUT DD SYSOUT = *
// SORTWK01 DD SPACE =(CYL,(10,5),RLSE)
// SORTWK02 DD SPACE =(CYL,(10,5),RLSE)
// SORTWK03 DD SPACE =(CYL,(10,5),RLSE)
// SORTIN DD DSN = INPUT.DATASET,DISP = SHR
// SORTOUT DD SYSOUT = *
// SYSIN DD *
排序场=(1,80,CH,D)
// *
FIELDS =(1,80,CH,D)表示使用字符数据从位置1按降序排序80个字符。
如果数据集超过80个字符,则可能需要在此处放置实际宽度,或者可能不会在最后放置空白行。
答案 1 :(得分:1)
无需对数据进行排序。幸运的是,数据行按照整个记录顺序排列1),2)降序顺序: - )。
这通过在每条记录的“结尾”添加序列号来临时扩展每条记录(五个数字应允许扩展)。使用OUTFIL OMIT,将删除来自数据前17个记录的空白行。使用TRAILER1和“斜杠运算符”“/”,将17个空行添加到文件的“结尾”。 REMOVECC是由于需要不具有TRAILER1(报告功能)否则将添加的打印机控制字符。 OUTFIL上的BUILD是将记录恢复为原始大小,丢弃5位序列号。
OPTION COPY
INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,5,ZD))
OUTFIL OMIT=((1,80,CH,EQ,C' ',
AND,81,5,ZD,LE,17)),
BUILD=(1,80),
REMOVECC,
TRAILER1=(/,/,/,/,/,/,/,/,/,/,/,/,/,/,/,/)