View previous topic :: View next topic
Author
Message
techslam New User Joined: 03 Dec 2010Posts: 87 Location: India
Hi,
I have below SQL in my sort input file -
Code:
SELECT *
FROM XYZ.TABLE1
WHERE EFFECTIVE_DATE = 'DD.MM.YYYY'
AND END_DATE = 'DD.MM.YYYY'
I want to run a SYNCSORT job and get an output file with date changed to previous months day 1 as shown below
Code:
SELECT *
FROM XYZ.TABLE1
WHERE EFFECTIVE_DATE = '01.11.2014'
AND END_DATE = '30.11.2014'
Can someone pleae help me with this.
Thanks for all the help.
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
Check on SYMNAMES
Back to top
JAYACHANDRAN THAMPY New User Joined: 06 Jun 2006Posts: 8
Which version of Syncsort you are using?. If you are using Syncsort v1.4, you can try the below JCL. Apart from sort, you can use simple Rexx,Filemanager etc to achieve the same.
Code:
//STEP010 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
SELECT *
FROM XYZ.TABLE1
WHERE EFFECTIVE_DATE = 'DD.MM.YYYY'
AND END_DATE = 'DD.MM.YYYY'
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:DATE(DM4.),81:C'01',
81:DATEADD=(81,10,DT=(DM4.),-1,DAY),
91:C'01',93:83,8,101:SEQNUM,1,ZD)),
IFTHEN=(WHEN=(101,1,ZD,EQ,3),OVERLAY=(25:91,10)),
IFTHEN=(WHEN=(101,1,ZD,EQ,4),OVERLAY=(17:81,10))
OUTFIL BUILD=(1,80)
Output:
Code:
SELECT *
FROM XYZ.TABLE1
WHERE EFFECTIVE_DATE = '01.11.2014'
AND END_DATE = '30.11.2014'
Back to top
Arun Raj Moderator Joined: 17 Oct 2006Posts: 2481 Location: @my desk
Alternatively, you can use the LASTDAYM subparameter to achieve the same:
Code:
//STEP01 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SORTIN DD *
SELECT *
FROM XYZ.TABLE1
WHERE EFFECTIVE_DATE = 'DD.MM.YYYY'
AND END_DATE = 'DD.MM.YYYY'
//SYSIN DD *
OPTION COPY
INREC IFTHEN=(WHEN=INIT,
OVERLAY=(81:DATE2-1,C'01',91:81,8,Y4T,LASTDAYM,TOGREG=Y4W(.),
81:91,10,84:C'01')),
IFTHEN=(WHEN=(1,1,CH,EQ,C'W'),OVERLAY=(25:81,10)),
IFTHEN=(WHEN=(1,1,CH,EQ,C'A'),OVERLAY=(17:91,10))
Back to top
Please enable JavaScript!