如何使用SORT将空行移动到文件的末尾?

时间:2011-07-29 04:55:08

标签: mainframe tso dfsort

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

2 个答案:

答案 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=(/,/,/,/,/,/,/,/,/,/,/,/,/,/,/,/)