Как подсчитать количество записей с помощью 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
для каждой записи и сортировки их по числовому полю и суммирования всех таких записей, что даст вам желаемый результат.