Как я могу использовать SyncSort для преобразования данных в неподписанный упакованный формат?
У меня есть требование преобразовать числовые данные (сохраняемые как символы на входе) в упакованные подписанные или упакованные неподписанные форматы. Я могу конвертировать в упакованные / подписанные в формате "PD", но мне сложно получить неподписанные упакованные данные.
Например, мне нужно число ZD, например 14723, преобразованное в:
042
173
Используя PD, я получаю это (что нормально):
0173
042C
Какие-либо предложения? У нас нет COBOL в этом магазине, и мы полагаемся на SyncSort для обработки этих преобразований данных. Я не вижу опции "PK" в SyncSort, но я пропустил вещи раньше!
1 ответ
Таким образом, вам не нужен упакованный десятичный знак, который всегда имеет знак (даже если F для без знака) в младшем полубайте. Вы хотите двоичный код десятичного числа (BCD).
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INREC IFTHEN=(WHEN=INIT,OVERLAY=(1,5,ZD,MUL,+10,TO=PD,LENGTH=4)),
IFTHEN=(WHEN=INIT,BUILD=(1,3))
//SORTIN DD *
14723
Даст вам в вертикальном гексе:
042
173
Чтобы использовать существующий BCD, посмотрите на тип поля PD0
,