Как использовать SORT для перемещения пустых строк в конец файла? - PullRequest
0 голосов
/ 29 июля 2011

У меня 9787 записей, из которых первые 17 строк пустые. Я хочу переместить эти 17 строк в конец файла. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

Ниже приведен порядок сортировки входного набора данных с пустыми строками в конце SORTOUT DD

// SORT EXEC PGM = SORT
// SYSOUT DD SYSOUT = *
// SORTWK01DD 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 символов, вам может потребоваться указать здесь фактическую ширину, иначе в конце могут не быть пустых строк.

1 голос
/ 30 января 2013

Нет необходимости сортировать данные. К счастью, строки данных были 1) в порядке, как и во всей записи, 2) в порядке по убыванию : -).

Это временно расширяет каждую запись путем добавления порядкового номера в конце каждой записи (пять цифр должны допускать расширение). С OUTFIL OMIT пустые строки из первых 17 записей данных удаляются. С TRAILER1 и «оператором слэша» «/», 17 «пустых» строк добавляются в «конец» файла. REMOVECC вызван тем, что в нем нет управляющего символа принтера, который иначе мог бы добавить TRAILER1 (функция отчетности). BUILD on OUTFIL должен вернуть запись к ее первоначальному размеру, отбрасывая 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=(/,/,/,/,/,/,/,/,/,/,/,/,/,/,/,/)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...