View previous topic :: View next topic
|
Author |
Message |
Delip
New User
Joined: 13 Sep 2007 Posts: 46 Location: Bangalore
|
|
|
|
Hi,
Is there any macro to calculate number of days between two dates in Easytrieve?
Thank you |
|
Back to top |
|
|
murmohk1
Senior Member
Joined: 29 Jun 2006 Posts: 1436 Location: Bangalore,India
|
|
|
|
Dil,
Few date Macros are available with 'Easytreive addons' (which ofcourse are paid ones ).
If you are lucky enough , those may be installed at your shop . |
|
Back to top |
|
|
Delip
New User
Joined: 13 Sep 2007 Posts: 46 Location: Bangalore
|
|
|
|
Is there any other method or programming logic for this? |
|
Back to top |
|
|
William Thompson
Global Moderator
Joined: 18 Nov 2006 Posts: 3156 Location: Tucson AZ
|
|
|
|
Delip wrote: |
Is there any other method or programming logic for this? |
Other?
You can use the programming function of EZT to calculate the difference between two dates. A small table of the number of days in each month would be a good starting point. The complexity increases if you have large multi-year spans and you really want a high degree of accuracy as you need to account for leap years. |
|
Back to top |
|
|
lcmontanez
New User
Joined: 19 Jun 2007 Posts: 50 Location: Chicago
|
|
|
|
If the date is Julian the calc may be a bit more simple.
you can use DATECONV to change format. |
|
Back to top |
|
|
Delip
New User
Joined: 13 Sep 2007 Posts: 46 Location: Bangalore
|
|
|
|
Is there any other method or programming logic for this? |
|
Back to top |
|
|
Delip
New User
Joined: 13 Sep 2007 Posts: 46 Location: Bangalore
|
|
|
|
I developed programming logic though a bit lengthy,it is working now.Thank you. |
|
Back to top |
|
|
CICS Guy
Senior Member
Joined: 18 Jul 2007 Posts: 2146 Location: At my coffee table
|
|
|
|
Delip wrote: |
I developed programming logic though a bit lengthy,it is working now.Thank you. |
It usually can be quite involved and lengthy, but I'm glad you got it working...... |
|
Back to top |
|
|
lcmontanez
New User
Joined: 19 Jun 2007 Posts: 50 Location: Chicago
|
|
|
|
Delip wrote: |
I developed programming logic though a bit lengthy,it is working now.Thank you. |
If you don't mind... please post your solution just in case some else has the same problem/question |
|
Back to top |
|
|
Delip
New User
Joined: 13 Sep 2007 Posts: 46 Location: Bangalore
|
|
|
|
Please find attahment.You may find it too lengthy.But I couldn't help it.
Code: |
MACRO DATE1 DATE2 DIFF
DEFINE WS-DATE1 W 8 N
DEFINE WSYY1 WS-DATE1 4 N
DEFINE WSMM1 WS-DATE1 +4 2 N
DEFINE WSDD1 WS-DATE1 +6 2 N
DEFINE WS-DATE2 W 8 N
DEFINE WSYY2 WS-DATE2 4 N
DEFINE WSMM2 WS-DATE2 +4 2 N
DEFINE WSDD2 WS-DATE2 +6 2 N
DEFINE WS-DAYS1 W 6 N VALUE 0.
DEFINE WS-DAYS2 W 6 N VALUE 0.
DEFINE WS-DAYS3 W 6 N VALUE 0.
DEFINE WS-YEAR-DIFF W 6 N VALUE 0
DEFINE WS-LEAP W 6 N VALUE 0
WS-DATE1 = &DATE1
WS-DATE2 = &DATE2
WS-DAYS1 = 0
WS-DAYS2 = 0
WS-DAYS3 = 0
WS-YEAR-DIFF = 0
WS-LEAP = 0
IF WSYY2 NE WSYY1
WS-LEAP = WSYY1 / 4
WS-LEAP = WS-LEAP * 4
IF ((WSMM1 = 3) OR (WSMM1 = 5) OR (WSMM1 = 7) OR (WSMM1 = 8) )
WS-DAYS1 = 31 - WSDD1
END-IF
IF ((WSMM1 = 10) OR (WSMM1 = 12) OR (WSMM1 = 01))
WS-DAYS1 = 31 - WSDD1
END-IF
IF ((WSMM1 = 4) OR (WSMM1 = 6) OR (WSMM1 = 9) OR (WSMM1 = 11))
WS-DAYS1 = 30 - WSDD1
END-IF
IF WSMM1 = 2
IF WS-LEAP = WSYY1
WS-DAYS1 = 29 - WSDD1
ELSE
WS-DAYS1 = 28 - WSDD1
END-IF
END-IF
DO WHILE WSMM1 < 12
WSMM1 = WSMM1 + 1
IF ((WSMM1 = 3) OR (WSMM1 = 5) OR (WSMM1 = 7) OR (WSMM1 = 8))
WS-DAYS1 = WS-DAYS1 + 31
END-IF
IF ((WSMM1 = 10) OR (WSMM1 = 12))
WS-DAYS1 = WS-DAYS1 + 31
END-IF
IF ((WSMM1 = 4) OR (WSMM1 = 6) OR (WSMM1 = 9) OR (WSMM1 = 11))
WS-DAYS1 = WS-DAYS1 + 30
END-IF
IF WSMM1 = 2
IF WS-LEAP = WSYY1
WS-DAYS1 = 29 + WS-DAYS1
ELSE
WS-DAYS1 = 28 + WS-DAYS1
END-IF
END-IF
END-DO
END-IF
DO WHILE WSMM2 > 0
WSMM2 = WSMM2 - 1
IF ((WSMM2 = 3) OR (WSMM2 = 5) OR (WSMM2 = 7) OR (WSMM2 = 8) )
WS-DAYS2 = WS-DAYS2 + 31
END-IF
IF ((WSMM2 = 10) OR (WSMM2 = 1))
WS-DAYS2 = WS-DAYS2 + 31
END-IF
IF ((WSMM2 = 4) OR (WSMM2 = 6) OR (WSMM2 = 9) OR (WSMM2 = 11))
WS-DAYS2 = WS-DAYS2 + 30
END-IF
IF WSMM2 = 2
WS-LEAP = WSYY2 / 4
WS-LEAP = WS-LEAP * 4
IF WS-LEAP = WSYY2
WS-DAYS2 = 29 + WS-DAYS2
ELSE
WS-DAYS2 = 28 + WS-DAYS2
END-IF
END-IF
END-DO
WS-DAYS2 = WS-DAYS2 + WSDD2
IF WSYY2 = WSYY1
DO WHILE WSMM1 > 0
WSMM1 = WSMM1 - 1
IF ((WSMM1 = 3) OR (WSMM1 = 5) OR (WSMM1 = 7) OR (WSMM1 = 8) )
WS-DAYS1 = WS-DAYS1 + 31
END-IF
IF ((WSMM1 = 10) OR (WSMM1 = 1))
WS-DAYS1 = WS-DAYS1 + 31
END-IF
IF ((WSMM1 = 4) OR (WSMM1 = 6) OR (WSMM1 = 9) OR (WSMM1 = 11))
WS-DAYS1 = WS-DAYS1 + 30
END-IF
IF WSMM1 = 2
WS-LEAP = WSYY1 / 4
WS-LEAP = WS-LEAP * 4
IF WS-LEAP = WSYY1
WS-DAYS1 = 29 + WS-DAYS1
ELSE
WS-DAYS1 = 28 + WS-DAYS1
END-IF
END-IF
END-DO
WS-DAYS1 = WS-DAYS1 + WSDD1
WS-DAYS3 = WS-DAYS2 - WS-DAYS1
ELSE
WS-YEAR-DIFF = WSYY2 - 1 - WSYY1
WS-LEAP = WS-YEAR-DIFF / 4
WS-DAYS3 = WS-DAYS1 + WS-DAYS2 + (WS-YEAR-DIFF * 365) + WS-LEAP
END-IF
|
|
|
Back to top |
|
|
|