IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Transform data of 12 months a year to 1 record with 12 month


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
tjdlut

New User


Joined: 06 Apr 2009
Posts: 2
Location: Dalian,China

PostPosted: Thu Apr 30, 2009 9:18 am
Reply with quote

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
View user's profile Send private message
Skolusu

Senior Member


Joined: 07 Dec 2007
Posts: 2205
Location: San Jose

PostPosted: Thu Apr 30, 2009 9:20 pm
Reply with quote

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
View user's profile Send private message
tjdlut

New User


Joined: 06 Apr 2009
Posts: 2
Location: Dalian,China

PostPosted: Mon May 04, 2009 6:10 pm
Reply with quote

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
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
No new posts How to save SYSLOG as text data via P... All Other Mainframe Topics 4
No new posts Store the data for fixed length COBOL Programming 1
No new posts How to split large record length file... DFSORT/ICETOOL 10
No new posts Populate last day of the Month in MMD... SYNCSORT 2
No new posts SFTP Issue - destination file record ... All Other Mainframe Topics 2
Search our Forums:

Back to Top