Как я могу использовать 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,

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