0

我有 9787 条记录,其中前 17 行是空白的。我想将这 17 行移到文件末尾。我怎样才能做到这一点?

4

2 回答 2

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 *
SORT FIELDS=(1,80,CH, D)
//*

FIELDS=(1,80,CH,D) 表示使用字符数据从位置 1 降序排列 80 个字符。
如果您的数据集超过 80 个字符,您可能需要在此处输入实际宽度,否则可能不会将空行放在末尾。

于 2011-07-29T10:10:34.767 回答
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=(/,/,/,/,/,/,/,/,/,/,/,/,/,/,/,/)
于 2013-01-30T15:30:12.763 回答