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

Syncsort - dates must be Monday and Sunday.


IBM Mainframe Forums -> SYNCSORT
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Fri Nov 09, 2012 4:39 am
Reply with quote

Thanks Gerry. I was fearing I'd have to look at the other one :-)
Back to top
View user's profile Send private message
ramsri

Active User


Joined: 18 Oct 2008
Posts: 380
Location: India

PostPosted: Fri Nov 09, 2012 7:30 am
Reply with quote

Bill, thanks for the links.

Gerry, why would I subtract greater (20121106) value from lesser (20121101) value icon_confused.gif

Thanks.
Back to top
View user's profile Send private message
ramsri

Active User


Joined: 18 Oct 2008
Posts: 380
Location: India

PostPosted: Fri Nov 09, 2012 7:34 am
Reply with quote

Gerry, but I tried below values and got an invalid date icon_sad.gif

Sort:
Code:

//STEP0001 EXEC PGM=SORT           
//SORTIN   DD *                     
20121126 20121202                   
//SYSIN    DD *                     
 OPTION COPY                       
 OUTREC FIELDS=(1:12,6,Y2T,SUB,+6) 
//SORTOUT  DD SYSOUT=*             
//SYSOUT   DD SYSOUT=*             


Output:
Code:

********************************* TOP OF DATA **********************************
       20121196                                                                 
******************************** BOTTOM OF DATA ********************************


Thanks.
Back to top
View user's profile Send private message
bodatrinadh

Active User


Joined: 05 Jan 2007
Posts: 101
Location: chennai (India)

PostPosted: Fri Nov 09, 2012 3:07 pm
Reply with quote

Hi Ramsri

Quote:

Bill Woodger got me right.....Is it possible to achieve it in SYNCSORT?


It can be achieved in SYNCSORT 1.4.0.1R.. Not sure in 1.3.2...

The below code will give you Day for your Date Vales...

Code:



//STEP010  EXEC PGM=SORT                                   
//SORTIN   DD *
20121008 20121014
20121023 20121028
20121105 20121113
//SORTOUT  DD  SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSIN    DD *
  SORT FIELDS=COPY
  INREC IFTHEN=(WHEN=INIT,
  OVERLAY(21:7,2,23:5,2,25:1,4,61:16,2,63:14,2,65:10,4,
                  29:(21,2,ZD,
                     ADD,
                     ((+26,MUL,(23,2,ZD,ADD,+1)),DIV,+10),
                     ADD,
                     25,4,ZD,
                     ADD,
                     (25,4,ZD,DIV,+4),
                     ADD,
                     (+6,MUL,(25,4,ZD,DIV,+100)),
                     ADD,
                     (25,4,ZD,DIV,+400)),MOD,+7,
                  69:(61,2,ZD,
                     ADD,
                     ((+26,MUL,(63,2,ZD,ADD,+1)),DIV,+10),
                     ADD,
                     65,4,ZD,
                     ADD,
                     (65,4,ZD,DIV,+4),
                     ADD,
                     (+6,MUL,(65,4,ZD,DIV,+100)),
                     ADD,
                     (65,4,ZD,DIV,+400)),MOD,+7,
                     80:X)),
              IFTHEN=(WHEN=(5,2,ZD,EQ,1,OR,5,2,ZD,EQ,2),
          OVERLAY(21:7,2,23:5,2,ZD,ADD,+12,TO=ZD,LENGTH=2,
                  25:1,4,ZD,SUB,+1,TO=ZD,LENGTH=4,
                  29:(21,2,ZD,
                     ADD,
                   ((+26,MUL,(23,2,ZD,ADD,+1)),DIV,+10),
                                      ADD,
                                      25,4,ZD,
                                      ADD,
                                      (25,4,ZD,DIV,+4),
                                      ADD,
                                      (+6,MUL,(25,4,ZD,DIV,+100)),
                                      ADD,
                                      (25,4,ZD,DIV,+400)),MOD,+7,
                                   80:X)),
              IFTHEN=(WHEN=(14,2,ZD,EQ,1,OR,14,2,ZD,EQ,2),
          OVERLAY(61:16,2,63:14,2,ZD,ADD,+12,TO=ZD,LENGTH=2,
                  65:1,4,ZD,SUB,+1,TO=ZD,LENGTH=4,
                  69:(61,2,ZD,
                     ADD,
                   ((+26,MUL,(63,2,ZD,ADD,+1)),DIV,+10),
                                      ADD,
                                    65,4,ZD,
                                    ADD,
                                    (65,4,ZD,DIV,+4),
                                    ADD,
                                    (+6,MUL,(65,4,ZD,DIV,+100)),
                                    ADD,
                                    (65,4,ZD,DIV,+400)),MOD,+7,
                                 80:X)),
             IFTHEN=(WHEN=(43,1,ZD,EQ,0),
                   BUILD=(1:C'SAT ',5:1,17,83:83,1)),
             IFTHEN=(WHEN=(43,1,ZD,EQ,1),
                   BUILD=(1:C'SUN ',5:1,17,83:83,1)),
             IFTHEN=(WHEN=(43,1,ZD,EQ,2),
                   BUILD=(1:C'MON ',5:1,17,83:83,1)),
             IFTHEN=(WHEN=(43,1,ZD,EQ,3),
                   BUILD=(1:C'TUE ',5:1,17,83:83,1)),
             IFTHEN=(WHEN=(43,1,ZD,EQ,4),
                   BUILD=(1:C'WED ',5:1,17,83:83,1)),
             IFTHEN=(WHEN=(43,1,ZD,EQ,5),
                    BUILD=(1:C'THU ',5:1,17,83:83,1)),
              IFTHEN=(WHEN=(43,1,ZD,EQ,6),
                    BUILD=(1:C'FRI ',5:1,17,83:83,1))
       OUTREC IFTHEN=(WHEN=(83,1,ZD,EQ,0),
                    OVERLAY=(25:C'SAT ')),
              IFTHEN=(WHEN=(83,1,ZD,EQ,1),
                    OVERLAY=(25:C'SUN ')),
              IFTHEN=(WHEN=(83,1,ZD,EQ,2),
                    OVERLAY=(25:C'MON ')),
              IFTHEN=(WHEN=(83,1,ZD,EQ,3),
                    OVERLAY=(25:C'TUE ')),
              IFTHEN=(WHEN=(83,1,ZD,EQ,4),
                    OVERLAY=(25:C'WED ')),
              IFTHEN=(WHEN=(83,1,ZD,EQ,5),
                    OVERLAY=(25:C'THU ')),
              IFTHEN=(WHEN=(83,1,ZD,EQ,6),
                    OVERLAY=(25:C'FRI '))


Output :-

Code:

MON 20121008 20121014   SUN
TUE 20121023 20121028   SUN                                   
MON 20121105 20121113   TUE 


2. This Step will give your desire output...

Code:

//*
//STEP010  EXEC PGM=SORT
//SORTIN   DD *
MON 20121008 20121014   SUN
TUE 20121023 20121028   SUN
MON 20121105 20121113   TUE
//SORTOUT  DD  SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSIN    DD *
  INREC IFTHEN=(WHEN=(1,3,CH,EQ,C'TUE'),
    OVERLAY=(1:C'MON ',5:DATEADD=(5,8,DTNS=(4MD),-1,DAY))),
        IFTHEN=(WHEN=(25,3,CH,EQ,C'TUE'),
    OVERLAY=(25:C'MON ',14:DATEADD=(14,8,DTNS=(4MD),-1,DAY)))
  SORT FIELDS=COPY



Output:-

Code:

MON 20121008 20121014   SUN
MON 20121022 20121028   SUN
MON 20121105 20121112   MON


Note :- The above code is tested on SYNCSORT FOR Z/OS 1.4.0.1R

Thanks
-3nadh
Back to top
View user's profile Send private message
ramsri

Active User


Joined: 18 Oct 2008
Posts: 380
Location: India

PostPosted: Sat Nov 10, 2012 7:43 am
Reply with quote

Hi 3nadh, Thank you very much.

Got the results with 1st solution you've provided icon_biggrin.gif
2nd solution failed because we are still at SYNCSORT FOR Z/OS 1.3.2.2R icon_sad.gif

Code:

SYSIN :                                                     
  INREC IFTHEN=(WHEN=(1,3,CH,EQ,C'TUE'),                     
    OVERLAY=(1:C'MON ',5:DATEADD=(5,8,DTNS=(4MD),-1,DAY))), 
                         *                                   
        IFTHEN=(WHEN=(25,3,CH,EQ,C'TUE'),                   
    OVERLAY=(25:C'MON ',14:DATEADD=(14,8,DTNS=(4MD),-1,DAY)))
  SORT FIELDS=COPY                                           
WER268A  INREC STATEMENT   : SYNTAX ERROR                   
WER449I  SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE               


Wish you a great and bright Diwali.
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 -> SYNCSORT

 


Similar Topics
Topic Forum Replies
No new posts Compare only first records of the fil... SYNCSORT 7
No new posts Amount of days between two dates PL/I & Assembler 8
No new posts Count Records with a crietaria in a f... DFSORT/ICETOOL 5
No new posts DFSORT/SYNCSORT/ICETOOL JCL & VSAM 8
No new posts Syncsort "Y2C" Function SYNCSORT 1
Search our Forums:

Back to Top