使用 DFSORT 将 10 位字符数据转换为 DB2 BIGINT 类型

Converting 10-digit char data to DB2 BIGINT-type using DFSORT

我想将包含数字数据的 10 位字符字段转换为 8 字节二进制以插入到 DB2 BIGINT 字段中。

INPUT
-------
1531245800ABC
1531457890DEF

OUTPUT
-------
<8 byte numeric data>ABC
<8 byte numeric data>DEF

加载卡片

LOAD DATA                      
LOG NO                       
REPLACE                      
UNICODE  CCSID(01208,00000,00000)
SORTDEVT SYSDA               
SORTNUM 12                   
INTO TABLE                   
<TABLE-NAME>                
KEEPDICTIONARY               
(                               
QUOTEID   POSITION (1) 
BIGINT   
,                              
GEO                             
POSITION (     9  )  CHAR MIXED(3))      

使用 DFSORT 符号,让您和未来的用户更轻松:

//TOBIGINT EXEC PGM=SORT 
//SYMNAMES DD * 
INPUT-CHARACTER-NUMERIC,1,10,ZD 
INPUT-CHARACTER-REST,*,3,CH 
//SYMNOUT DD SYSOUT=*
//SYSOUT   DD SYSOUT=* 
//SORTOUT  DD SYSOUT=* 
//SYSIN    DD * 
  OPTION COPY 

  INREC BUILD=(INPUT-CHARACTER-NUMERIC,
                TO=BI, 
                LENGTH=8, 
               INPUT-CHARACTER-REST) 
//SORTIN   DD * 
1531245800ABC 
1531457890DEF 

或者开始、长度、类型的传统编码:

//TOBIGINT EXEC PGM=SORT 
//SYSOUT   DD SYSOUT=* 
//SORTOUT  DD SYSOUT=* 
//SYSIN    DD * 
  OPTION COPY 

  INREC BUILD=(1,10,ZD, 
                TO=BI, 
                LENGTH=8, 
                11,3) 
//SORTIN   DD * 
1531245800ABC 
1531457890DEF 

输出是 X'000000005B44F4E8' 后跟 ABC 和 X'000000005B483162' 后跟 DEF。