I want to convert a 10-digit character field which contains numeric data to an 8-byte binary to insert into a DB2 BIGINT field.
INPUT
-------
1531245800ABC
1531457890DEF
OUTPUT
-------
<8 byte numeric data>ABC
<8 byte numeric data>DEF
Load card
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))
Using DFSORT symbols, to make things easier for you and future users:
//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
Or traditional coding of start, length, type:
//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
Output is X'000000005B44F4E8' followed by ABC and X'000000005B483162' followed by DEF.