Вычтите значение в столбце A файла A из столбца B файла B, используя JCL sorting/syncsort. ОТОБРАЗИТЬ РЕЗУЛЬТАТ В ФАЙЛЕ3 (новый файл)
Есть входной файл1:
C1 C2 C3
5102;22680372 =0000000001
5111;21840112 =0000000002
5363;21980235 =0000000002
5363;22700216 =0000000001
Входной файл 2:
5111;21840112 =0000000002
5363;21980235 =0000000001
5363;22700216 =0000000001
Ожидаемый результат: должен быть отсортирован по нижнему пути,
JOINKEYS FILES=F1,FIELDS=(1,04,A,6,8,A,16,10,a)
JOINKEYS FILES=F2,FIELDS=(1,04,A,6,8,A,16,10,a)
REFORMAT FIELDS=(F1:1,.. and... )
Мне нужен выходной файл с этим swquence
File1 C1 File1 C2 file1C3 [file1C3 - file2 C3] value
5102; 22680372 =0000000001 =00000 *(no records in second file for it)
5111; 21840112 =0000000002 =00000 *(1-1 =0)
5363; 21980235 =0000000002 =00001 *(2-1= 1)
5363; 22700216 =0000000001 =00000 *(1-1 =0)
просто чтобы объяснить, что вы пытаетесь это прямо сейчас
ВАРИАНТ КОПИЯ
СОВМЕСТНЫЕ КЛЮЧИ F1 = INA, FIELDS = (1,4, A, 6,8, A)
JOINKEYS F2 = INB, FIELDS = (1,4, A, 6,8, A)
ПОЛЕ РЕФОРМА = (F1: 1,25, F2: 16,10)
INREC BUILD = (1,25,26,10, SFF, SUB, 36,10, SFF, EDIT = (STTTTTT))
Результат:
5060;22222222 =0000000001 (blank) i just need 0001 - nothin(0) = 1 simply 1 here
5102;22680372 =0000000001;000000000
5105;22222222 =0000000002 (blank) need 2 here same 2-0 or nothing(unmatched) = 2
1 ответ
Вы близки. Однако SFF не нужен. Это подписанный свободный формат, и у вас есть неподписанный номер фиксированного формата. Используйте ZD. Ваш EDIT недостаточно велик для 10 цифр. Это не проблема, если ваш результат никогда не может, и я имею в виду, никогда не превышать шесть цифр. С "=", который у вас нет кода для создания, неясно, где вы ожидаете, что знак будет идти (он лидирует в поле в данный момент).
Имея то, что у вас есть, вы получите только те записи, которые совпадают между двумя файлами. Тебе понадобится:
JOIN UNPAIRED,F1
После второго JOINKEYS, если вы хотите, чтобы несравненные записи из F1 в вашем выводе.
Если у вас нет совпадения, вычитание будет проблематичным, поэтому вам понадобится некоторый код для этого. Как вы код, который зависит от того, есть ли у вас DFSORT
или же SyncSort
,
Если один или оба входных файла, вы должны указать SORTED в соответствующей инструкции JOINKEYS. С DFSORT
, но нет SyncSort
Вы также можете указать NOSEQCHK.
С дальнейшей информацией мы прогрессируем:
OPTION COPY
JOINKEYS F1=INA,FIELDS=(1,4,A,6,8,A)
JOINKEYS F2=INB,FIELDS=(1,4,A,6,8,A)
JOIN UNPAIRED,F1
REFORMAT FIELDS=(F1:1,25,F2:16,10),FILL=X'FF'
INREC IFTHEN=(WHEN=(35,1,CH,EQ,X'FF'),
OVERLAY=(26:C'+',10C'0')),
IFTHEN=(WHEN=NONE,
OVERLAY=(26:16,10,ZD,SUB,26,10,ZD,
EDIT=(STTTTTTTTTT),SIGNS=(+,-)))
UNPAIRED,F1
означает, что вместе с парными записями (совпадениями) непарные записи из F1 представляются главной задаче.
REFORMAT
оператор определяет запись данных, которую будет использовать основная задача. В этом примере включена вся запись F1 (F1:1,25) и только 10-значное число из F2 (F2:16,10).
FILL=
говорит SORT, что устанавливать значения для любой отсутствующей записи в случае непарной записи. В этом случае 26,10 из REFORMAT
запись будет установлена на все X'FF'.
IFTHEN=(WHEN=(logical-expression
затем используется для идентификации X'FF 'в позиции один из числа из данных F2. Если присутствует X'FF ', то совпадения нет. В этом случае байты, полученные из F2, устанавливаются на любое значение по умолчанию, которое вы действительно хотите.
IFTHEN=(WHEN=NONE
активен для любых записей, которые не удовлетворяют IFTHEN=(WHEN=(logical-expression
, Расчет сделан, и результат расчета отформатирован.
Если любой из входных файлов уже находится в нужном вам порядке, посмотрите предыдущий совет.
Если вы хотите, чтобы выходные данные из главной задачи были в другом порядке, вы просто кодируете оператор SORT и удаляете OPTION COPY.
Точный формат вывода, который вы хотите, неясен, но вы должны быть в состоянии исправить это для того, что вы хотите.
Вам нужно получить руководство по SyncSort. Они свободно доступны в формате PDF для сайтов с лицензией SyncSort. Если никто не знает, как его дать, выясните, кто является контактным лицом в SyncSort, и попросите их обратиться за помощью в службу поддержки SyncSort. Укажите только пару деталей, и вы получите копию, вероятно, по электронной почте.