View previous topic :: View next topic
Author
Message
tjdlut New User Joined: 06 Apr 2009Posts: 2 Location: Dalian,China
I want to transform the format of the input file (1 year with 12 months data) to 1 output file with 1 record including 12 months data.
As following are my input and output files.
I don't know how to transfer the month data to the right place in the output file. For example, when month=3 ,how to put the amount of month 3 to Mar.
Thank You !
input file
Code:
1234567890123456789012
ID YEAR MONTH AMOUNT
0001 2009 1 100
0002 2009 2 200
0003 2009 3 300
0004 2009 4 400
0005 2009 5 500
0006 2009 6 600
LAYOUT:
DATA BYTE
ID (1-4) 1-5
YEAR (6-9) 6-10
MONTH (11-12) 11-16
AMOUNT(17-20) 17-22
middle file
Code:
12345678901234567890123456789012345678901234567890123456789
ID YEAR JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
0001 2009 100 0 0 0 0 0 0 0 0 0 0 0
0002 2009 0 200 0 0 0 0 0 0 0 0 0 0
0003 2009 0 0 300 0 0 0 0 0 0 0 0 0
0004 2009 0 0 0 400 0 0 0 0 0 0 0 0
0005 2009 0 0 0 0 500 0 0 0 0 0 0 0
0006 2009 0 0 0 0 0 600 0 0 0 0 0 0
LAYOUT:
ID (1-4) 1-5
YEAR (6-9) 6-11
JAN (12-15)12-15
FEB (16-19)16-19
MAR (20-23)20-23
APR (24-27)24-27
MAY (28-31)28-31
JUN (32-35)32-35
JULY (36-39)36-39
AUT (40-43)40-43
SEP (44-47)44-47
OCT (48-51)48-51
NOV (52-55)52-55
DEC (56-59)56-59
output file
Code:
12345678901234567890123456789012345678901234567890123456789
ID YEAR JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
0001 2009 100 200 300 400 500 600 0 0 0 0 0 0
LAYOUT:
ID (1-4) 1-5
YEAR (6-9) 6-11
JAN (12-15)12-15
FEB (16-19)16-19
MAR (20-23)20-23
APR (24-27)24-27
MAY (28-31)28-31
JUN (32-35)32-35
JULY (36-39)36-39
AUT (40-43)40-43
SEP (44-47)44-47
OCT (48-51)48-51
NOV (52-55)52-55
DEC (56-59)56-59
Back to top
Skolusu Senior Member Joined: 07 Dec 2007Posts: 2205 Location: San Jose
tjdlut,
The following JCL will give you the desired results
Code:
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
0001 2009 1 100
0002 2009 2 200
0003 2009 3 300
0004 2009 4 400
0005 2009 5 500
0006 2009 6 600
//SORTOUT DD SYSOUT=*
//SYSIN DD *
INREC IFTHEN=(WHEN=INIT,OVERLAY=(23:36C'0')),
IFTHEN=(WHEN=(11,2,CH,EQ,C'1'),OVERLAY=(23:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'2'),OVERLAY=(26:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'3'),OVERLAY=(29:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'4'),OVERLAY=(32:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'5'),OVERLAY=(35:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'6'),OVERLAY=(38:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'7'),OVERLAY=(41:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'8'),OVERLAY=(44:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'9'),OVERLAY=(47:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'10'),OVERLAY=(50:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'11'),OVERLAY=(53:17,3)),
IFTHEN=(WHEN=(11,2,CH,EQ,C'12'),OVERLAY=(56:17,3))
SORT FIELDS=(6,4,CH,A)
SUM FIELDS=(23,8,31,8,39,8,47,8,55,4),FORMAT=ZD
OUTFIL BUILD=(1,10,X,23,3,X,26,3,X,29,3,X,32,3,X,
35,3,X,38,3,X,41,3,X,44,3,X,47,3,X,
50,3,X,53,3,X,56,3),
HEADER1=('ID YEAR ',
'JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC')
Back to top
tjdlut New User Joined: 06 Apr 2009Posts: 2 Location: Dalian,China
Skolusu, Thank You Very Much!
I have used your code and it works fine after I made some tiny revise on it.
Here is my code:
Code:
****** ***************************** データの始め *****************************
000001 //EV6871M1 JOB (F9500B,LD21X,32),
000002 // EV6871ADAM,REGION=4096K,
000003 // CLASS=A,MSGCLASS=M,NOTIFY=EV6871
000004 //*--------------------------------------------------------------------
000005 //* DELETE THE PRE_SORT_OUT DS
000006 //*---------------------------------------------------------
000007 //DEL EXEC MSSSCR2
000008 SCRATCH DSN=HW07I.EV6871.IG20.DS.REC1MO12
000009 //*--------------------------------------------------------------------
000010 //* SORT OUT REFORMATED DATA
000011 //*---------------------------------------------------------
000012 //SORT EXEC NEWSORT
000013 //SYSOUT DD SYSOUT=*
000014 //SORTIN DD DSN=HW07I.EV6871.IG20.DS.REC1MON1,DISP=SHR
000015 //SORTOUT DD DSN=HW07I.EV6871.IG20.DS.REC1MO12,
000016 // DISP=(,CATLG),
000017 // SPACE=(TRK,(1,1),RLSE),
000018 // DCB=(RECFM=FB,LRECL=58)
000019 //SYSIN DD *
000020 INREC IFTHEN=(WHEN=INIT,OVERLAY=(23:36C'0')),
000021 IFTHEN=(WHEN=(11,2,CH,EQ,C'01'),OVERLAY=(23:17,3)),
000022 IFTHEN=(WHEN=(11,2,CH,EQ,C'02'),OVERLAY=(26:17,3)),
000023 IFTHEN=(WHEN=(11,2,CH,EQ,C'03'),OVERLAY=(29:17,3)),
000024 IFTHEN=(WHEN=(11,2,CH,EQ,C'04'),OVERLAY=(32:17,3)),
000025 IFTHEN=(WHEN=(11,2,CH,EQ,C'05'),OVERLAY=(35:17,3)),
000026 IFTHEN=(WHEN=(11,2,CH,EQ,C'06'),OVERLAY=(38:17,3)),
000027 IFTHEN=(WHEN=(11,2,CH,EQ,C'07'),OVERLAY=(41:17,3)),
000028 IFTHEN=(WHEN=(11,2,CH,EQ,C'08'),OVERLAY=(44:17,3)),
000029 IFTHEN=(WHEN=(11,2,CH,EQ,C'09'),OVERLAY=(47:17,3)),
000030 IFTHEN=(WHEN=(11,2,CH,EQ,C'10'),OVERLAY=(50:17,3)),
000031 IFTHEN=(WHEN=(11,2,CH,EQ,C'11'),OVERLAY=(53:17,3)),
000032 IFTHEN=(WHEN=(11,2,CH,EQ,C'12'),OVERLAY=(56:17,3))
000033 SORT FIELDS=(6,4,CH,A)
000034 SUM FIELDS=(23,3,26,3,29,3,32,3,35,3,38,3,41,3,44,3,47,3,50,3,53,3,
000035 56,3),FORMAT=ZD
000036 OPTION ZDPRINT
000037 OUTFIL BUILD=(1,10,X,23,3,X,26,3,X,29,3,X,32,3,X,
000038 35,3,X,38,3,X,41,3,X,44,3,X,47,3,X,
000039 50,3,X,53,3,X,56,3)
000040 /*
****** **************************** データの終り ****************************
Back to top
Please enable JavaScript!