Как подсчитать количество записей с помощью Syncsort?

Мое требование - получить одинаковое количество записей, используя JCL - Syncsort.

Мой входной файл содержит упакованные десятичные значения в позиции 58-60. Мне нужно получить количество записей, когда вход в диапазоне от 01 до 05.

На самом деле я попытался преобразовать значения PD в ZD и сравнить с C'01'и C'05'.

Я не мог получить результат.

Пример: данные входного файла в 58-60 (3 байта в формате Comp-3)

07,2

05,2

04,0

45,7

02,4

Выход будет:

Значение RF | подсчитывать

02.4 1

04,0 1

Может кто-нибудь, пожалуйста, дайте мне знать, как добиться этого?

2 ответа

В ваших спецификациях указано, что поле имеет формат 3-байтового PD, но вы предоставляете примеры записей, которые содержат десятичную точку. Данные PD не могут содержать десятичную точку, поэтому я предполагаю, что подразумевается десятичная точка. 3-байтовые данные, которые соответствуют вашему значению 07.2, на самом деле будут содержать x'00072C'для следующих целей.

Чтобы облегчить понимание примера (и не зная деталей макета вашей записи), я обрабатываю 3-байтовое поле PD, как если бы оно начиналось в позиции 1 данных фиксированной длины. Не стесняйтесь изменить пример, чтобы он соответствовал вашему фактическому макету данных.

//SYSIN  DD  *   
 SORT FIELDS=(1,3,PD,A)   
 INCLUDE COND=(1,3,PD,GT,10,AND,1,3,PD,LT,50)   
 OUTREC FIELDS=(1,3,PD,ZDF,75X) 
 OUTFIL FILES=OUT,NODETAIL,
              SECTIONS=(1,5,
                TRAILER3=(1:1,4,C'.',5,1,COUNT))
/*

Для получения дополнительной поддержки обратитесь в службу поддержки клиентов, Syncsort Inc. zos_tech@syncsort.com

Попробуй это...

//SYSIN DD *
  INREC FIELDS=(1,4,C'00001')
  SORT FIELDS=(01,04,CH,A)
  SUM FIELDS=(05,05,ZD,A)
  OUTREC FIELDS=(01,04,05,05)
/*

Вкратце добавляю числовой 00001 для каждой записи и сортировки их по числовому полю и суммирования всех таких записей, что даст вам желаемый результат.

Другие вопросы по тегам