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

Business date calculation


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

New User


Joined: 28 Apr 2005
Posts: 99

PostPosted: Wed Dec 12, 2007 4:50 pm
Reply with quote

Hi all ,

Is there any option to get the buisness date ? and my requirement is

1-----------------------------------------------------80
<file name>, count , today's date , today's date -1

aaaa.ddd.cccc, 96,20071202,20071130

How to calculate today's date - 1 and that should be business day( leaving sat/sun)

i used the below card
Code:

  OPTION COPY                                       
  OUTFIL TRAILER1=(FNAME,45:',',                   
    DATENS=(4MD),',',COUNT=(M10,LENGTH=8),',',DATE1-1),
    NODETAIL,REMOVECC
Back to top
View user's profile Send private message
murmohk1

Senior Member


Joined: 29 Jun 2006
Posts: 1436
Location: Bangalore,India

PostPosted: Wed Dec 12, 2007 6:06 pm
Reply with quote

Deepa,

Quote:
How to calculate today's date - 1 and that should be business day( leaving sat/sun)

Please remember 'Business days' are not standard across projects/shops.

You need to come with your 'own logic' which suits for your requirement. DONT EXPECT any generalized solution for this.
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Wed Dec 12, 2007 10:27 pm
Reply with quote

Quote:
How to calculate today's date - 1 and that should be business day( leaving sat/sun)


You mean if DATE-1 is a sat or sun, you want to use the previous Friday's date?

DFSORT does not have any built-in functions for doing that.
Back to top
View user's profile Send private message
Deepa.m

New User


Joined: 28 Apr 2005
Posts: 99

PostPosted: Mon Dec 17, 2007 2:45 pm
Reply with quote

Yes. I meant the same.

I just want to avoid sat and sun .Geography specific Holidays doesn't matter.

Moreover even to get previous day (DATE1-1) with the above code I am getting the below error

Code:

ICE280I 1 ORIGINAL STATEMENTS FROM SYSIN    FOLLOW                   
           OPTION COPY                                               
           OUTFIL TRAILER1=(FNAME,45:',',                             
           DATENS=(4MD),',',COUNT=(M10,LENGTH=8),',',DATE1-1),       
           NODETAIL,REMOVECC                                         
ICE282I 0 PERFORMING SYMBOL SUBSTITUTION AS NEEDED                   
           OUTFIL TRAILER1=(FNAME,45:',',                             
           DATENS=(4MD),',',COUNT=(M10,LENGTH=8),',',DATE1-1),       
                                                     $               
ICE283A 0 SYMBOL, SYNTAX OR DELIMITER ERROR                           
           NODETAIL,REMOVECC 


Can we do date manipulations using DATE in Trailer because I tried the DATE1-1 with outrec and it is working fine.
Back to top
View user's profile Send private message
murmohk1

Senior Member


Joined: 29 Jun 2006
Posts: 1436
Location: Bangalore,India

PostPosted: Mon Dec 17, 2007 2:53 pm
Reply with quote

Deepa,

Quote:
OUTFIL TRAILER1=(FNAME,45:',',

What happend to 'c' after '45:'?
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Mon Dec 17, 2007 9:35 pm
Reply with quote

Deepa,

Quote:
Can we do date manipulations using DATE in Trailer because I tried the DATE1-1 with outrec and it is working fine.



You can use DATE1-1 in BUILD and OVERLAY of the INREC, OUTREC and OUTFIL statements, but you can't use it in TRAILER1.

Murali,

C before a constant is optional in TRAILER1. ',' and C',' are equivalent in TRAILER1.
Back to top
View user's profile Send private message
Skolusu

Senior Member


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

PostPosted: Mon Dec 17, 2007 9:52 pm
Reply with quote

The following DFSORT JCL will give you the desired results. The Control cards calculate the day of the week and if it is sat/sun/mon then it picks the last friday date.

Code:

//STEP0100 EXEC PGM=ICEMAN                                           
//SYSOUT   DD SYSOUT=*                                             
//SYMNAMES DD *                                                     
FNAME,C'INPUT FILENAME'                                             
//SORTIN   DD DSN=your input file,
//            DISP=SHR
ABCDEFGHIJKLMNOPQRSTUVWXYZ                                         
//SORTOUT  DD DSN=&&T1,DISP=(,PASS),SPACE=(TRK,(1,1))     
//SYSIN    DD *                                                     
  OPTION COPY                                                       
  OUTREC OVERLAY=(81:DATE1,C',',DATE1-1,C',',DATE1-2,C',',DATE1-3) 
  OUTFIL REMOVECC,NODETAIL,                                         
  TRAILER1=(01:FNAME,45:C',',COUNT=(M10,LENGTH=8),',',81,35)       
//*                                               
//STEP0200 EXEC PGM=ICEMAN                                   
//SYSOUT   DD SYSOUT=*                                     
//SORTIN   DD DSN=&&T1,DISP=SHR                   
//SORTOUT  DD SYSOUT=*                                     
//SYSIN    DD *                                           
 OPTION COPY,NOSZERO                                       
 INREC IFTHEN=(WHEN=INIT,                                 
      OVERLAY=(101:55,04,ZD,MOD,+4,EDIT=(T),               
               102:55,04,ZD,MOD,+100,EDIT=(TTT),           
               105:55,04,ZD,MOD,+400,EDIT=(TTT)),HIT=NEXT),
       IFTHEN=(WHEN=(105,3,ZD,EQ,0,OR,                     
                    (101,1,ZD,EQ,0,AND,102,3,ZD,GT,0)),   
      OVERLAY=(108:C'L'),HIT=NEXT),                       
                                                           
       IFTHEN=(WHEN=(59,02,ZD,EQ,01,AND,                   
                     61,02,ZD,GT,31),                     
      OVERLAY=(110:C'INVALID'),HIT=NEXT),                 
                                                           
       IFTHEN=(WHEN=(108,01,CH,NE,C'L',AND,               
                     059,02,ZD,EQ,02,AND,                 
                     061,02,ZD,GT,28),                     
      OVERLAY=(110:C'INVALID'),HIT=NEXT),                 
                                                           
       IFTHEN=(WHEN=(108,01,CH,EQ,C'L',AND,               
                     059,02,ZD,EQ,02,AND,                 
                     061,02,ZD,GT,29),                     
      OVERLAY=(110:C'INVALID'),HIT=NEXT),                 
                                                           
       IFTHEN=(WHEN=(59,02,ZD,EQ,03,AND,     
                     61,02,ZD,GT,31),       
      OVERLAY=(110:C'INVALID'),HIT=NEXT),   
                                             
       IFTHEN=(WHEN=(59,02,ZD,EQ,04,AND,     
                     61,02,ZD,GT,30),       
      OVERLAY=(110:C'INVALID'),HIT=NEXT),   
                                             
       IFTHEN=(WHEN=(59,02,ZD,EQ,05,AND,     
                     61,02,ZD,GT,31),       
      OVERLAY=(110:C'INVALID'),HIT=NEXT),   
                                             
       IFTHEN=(WHEN=(59,02,ZD,EQ,06,AND,     
                     61,02,ZD,GT,30),       
      OVERLAY=(110:C'INVALID'),HIT=NEXT),   
                                             
       IFTHEN=(WHEN=(59,02,ZD,EQ,07,AND,     
                     61,02,ZD,GT,31),       
      OVERLAY=(110:C'INVALID'),HIT=NEXT),   
                                             
       IFTHEN=(WHEN=(59,02,ZD,EQ,08,AND,     
                     61,02,ZD,GT,31),       
      OVERLAY=(110:C'INVALID'),HIT=NEXT),   
                                             
       IFTHEN=(WHEN=(59,02,ZD,EQ,09,AND,     
                     61,02,ZD,GT,30),       
      OVERLAY=(110:C'INVALID'),HIT=NEXT),   
                                             
       IFTHEN=(WHEN=(59,02,ZD,EQ,10,AND,     
                     61,02,ZD,GT,31),       
      OVERLAY=(110:C'INVALID'),HIT=NEXT),   
                                             
       IFTHEN=(WHEN=(59,02,ZD,EQ,11,AND,     
                     61,02,ZD,GT,30),       
      OVERLAY=(110:C'INVALID'),HIT=NEXT),   
                                             
       IFTHEN=(WHEN=(59,02,ZD,EQ,12,AND,                         
                     61,02,ZD,GT,31),                             
      OVERLAY=(110:C'INVALID'),HIT=NEXT),                         
                                                                 
       IFTHEN=(WHEN=(59,02,ZD,GT,12,OR,                           
                     55,04,ZD,LT,1600,OR,                         
                     55,04,ZD,GT,9999),                           
      OVERLAY=(110:C'INVALID'),HIT=NEXT),                         
                                                                 
       IFTHEN=(WHEN=NONE,                                         
      OVERLAY=(110:7X))                                           
                                                                 
   OUTREC IFTHEN=(WHEN=(110,07,CH,EQ,C' ',AND,                     
                      059,02,ZD,LT,3),                           
      OVERLAY=(120:+01,SUB,55,04,ZD,EDIT=(TTTT),                 
               124:+10,ADD,59,02,ZD,EDIT=(TT)),HIT=NEXT),         
        IFTHEN=(WHEN=(110,07,CH,EQ,C' ',AND,                     
                      59,02,ZD,GE,3),                             
      OVERLAY=(120:55,04,                                         
               124:+02,SUB,59,02,ZD,EDIT=(TT)),HIT=NEXT),         
        IFTHEN=(WHEN=(110,07,CH,EQ,C' '),                         
      OVERLAY=(127:120,4,ZD,DIV,+100,EDIT=(TTTT),                 
               131:120,4,ZD,MOD,+100,EDIT=(TT),                   
               135:((+26,MUL,124,2,ZD),SUB,+2),DIV,+10,LENGTH=8, 
               143:135,8,SFF,ADD,                                 
                   061,2,ZD,ADD,                                 
                   131,2,ZD,LENGTH=8,                             
               151:143,8,SFF,ADD,                                 
                   (131,2,ZD,DIV,+4),ADD,                         
                   (127,4,ZD,DIV,+4),                             
                   LENGTH=8,                                     
               159:(151,8,SFF,SUB,                               
                   (+2,MUL,127,4,ZD)),MOD,+7,LENGTH=8),HIT=NEXT),
        IFTHEN=(WHEN=(159,8,SFF,LT,0),                           
       OVERLAY=(170:+7,ADD,159,8,SFF,EDIT=(T)),HIT=NEXT),         
        IFTHEN=(WHEN=(159,8,SFF,GE,0),                           
       OVERLAY=(170:159,8,SFF,EDIT=(T)))   

   OUTFIL IFOUTLEN=71,                         
        IFTHEN=(WHEN=(110,07,CH,EQ,C' ',AND,
                      170,01,CH,EQ,C'0'),   
       BUILD=(01,63,73,8)),                 
        IFTHEN=(WHEN=(110,07,CH,EQ,C' ',AND,
                      170,01,CH,EQ,C'1'),   
       BUILD=(01,63,82,8)),                 
        IFTHEN=(WHEN=NONE,                   
       BUILD=(01,71))                       
/*                                                                 
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 Replacing 'YYMMDD' with date, varying... SYNCSORT 3
No new posts Modifying Date Format Using DFSORT DFSORT/ICETOOL 9
No new posts Need to convert date format DFSORT/ICETOOL 20
No new posts Need help to append a date&tsp at... DFSORT/ICETOOL 9
No new posts Null values are considered in Total c... DFSORT/ICETOOL 6
Search our Forums:

Back to Top