0

我需要将数字数据(在输入中存储为字符)转换为打包的有符号或打包的无符号格式。我可以使用“PD”格式转换为打包/签名,但我很难获得未签名的打包数据。

例如,我需要像 14723 这样的 ZD 编号转换为:

042

173

使用 PD,我得到了这个(这很好):

0173

042C

有什么建议么?我们这家商店没有 COBOL,我们依靠 SyncSort 来处理这些数据转换。我在 SyncSort 中没有看到“PK”选项,但我之前错过了一些东西!

4

1 回答 1

0

所以你不想要一个压缩十进制,它在低位半字节中总是有一个符号(即使 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,请查看 field-type PD0

于 2013-11-11T19:27:42.000 回答