2015-05-18 3 views
0

Я пытаюсь сортировать группу записей. (т. е.) по дате во второй строке «100» в первой строке - это начало записи. «BBB» - вторая строка записи. «CCC» - это третья строка записи.Сортировка групп записей по данным второй записи в группе

Вход:

100 AAAAA AAAA AAAA AAAAAAA 
    BBBBB BBBB BBB START :05/01/2014 AT 05:00:00 
      CCCC CCCC CCCC CCCC . 
200 AAAA1 AAAA1 AAAA AAAAAAA 
    BBBBB1 BBBB BBB START :01/01/2014 AT 05:00:00 
      CCCC1 CCCC CCCC CCCC . 

Я требую вывода как

200 AAAA1 AAAA1 AAAA AAAAAAA  
    BBBBB1 BBBB BBB START :01/01/2014 AT 05:00:00 
      CCCC1 CCCC CCCC CCCC . 
100 AAAAA AAAA AAAA AAAAAAA 
    BBBBB BBBB BBB START :05/01/2014 AT 05:00:00 
      CCCC CCCC CCCC CCCC . 

Просьба представить любые предложения о том, как получить выше выход.

+0

RECFM и LRECL? –

+0

Для вопросов мэйнфрейма, хорошо включить тег Mainframe. Это было бы замечено ранее. –

ответ

0

Предположения: ваши группы являются регулярными (три записи, всегда в этом порядке); RECFM F/FB (даже FBS); LRECL 80 (и вообще не «слишком большой»).

Для второй и третьей записи, IFTHEN = (ЕСЛИ = GROUP может быть легко использован для распространения даты второй записи на треть.

Как это помощь с первой записью? Нет. Таким образом, вместо этого, по определению первая запись группы, расширить записи и копирования первой записи на второй.

Теперь вам нужно всего лишь второй и третий альбом (как второй содержит первый).

Вам понадобится OUTFIL, чтобы исключить исходные первые записи и создать новые первые записи (используя оператор косой черты /).

OPTION EQUALS 
    INREC IFTHEN=(WHEN=GROUP, 
        BEGIN=(1,1,CH,NE,C' '), 
        RECORDS=2, 
        PUSH=(81:SEQ=1,1,80)), 
     IFTHEN=(WHEN=INIT, 
        BEGIN=(81,1,CH,EQ,C'2'), 
        RECORDS=2, 
        PUSH=(162:startposofdate,lengthofdate)) 
    SORT FIELDS=(162,length-of-date,CH,A) 
    OUTFIL OMIT=(81,1,CH,EQ,C'1'), 
      IFTHEN=(WHEN=(81,1,CH,EQ,C'2'). 
        BUILD=(82,80, 
          /, 
          1,80)), 
      IFTHEN=(WHEN=NONE, 
        BUILD=(1,80)) 

Это схема. Ожидает большего количества detials ....

Смежные вопросы