Portal | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref

Author Message
Steve Ironmonger

New User

Joined: 19 Oct 2015
Posts: 15
Location: UK

 Posted: Tue Dec 15, 2015 3:57 pm    Post subject: Convert Date to Absolute Date Hi Guys, wondering if you can help. Is there any way of converting a date (yyyymmdd) into an Absolute Date, I work for a bank and we use an absolute date in quite a lot of programs, but just wondered if there was any way of converting it in sort or icetool ? We define the absolute date as the number of days since 1st Jan 1900 So today (15th Dec 2015 -20151215) would be 42322 cheers Steve

Bill Woodger

Moderator Emeritus

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

 Posted: Tue Dec 15, 2015 4:52 pm    Post subject: Reply to: Convert Date to Absolute Date You want to have a look at DATEDIFF. You're going to have to put the 1900 date into a temporary extension to the record to have access to it. Exactly the best way to use it depends on exactly what you want to do, both generally and case-by-case perhaps as well.
Steve Ironmonger

New User

Joined: 19 Oct 2015
Posts: 15
Location: UK

 Posted: Tue Dec 15, 2015 5:38 pm    Post subject: Reply to: Convert Date to Absolute Date Hi Bill, As an example I want to convert 20151215 to 42322 42322 being the number of days since 1st Jan 1900 or 19000131 to 00031
Bill Woodger

Moderator Emeritus

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

Posted: Tue Dec 15, 2015 6:20 pm    Post subject: Reply to: Convert Date to Absolute Date

Here's an example with converting a date to a number with DATEDIFF. To save adjusting by one, I used 18991231 not 19000101.
 Code: OPTION COPY   INREC OVERLAY=(10:C'18991231',                  20:1,8,Y4T,                   DATEDIFF,                    10,8,Y4T)                                 //SORTIN   DD * 19000131 20151215

The output is:

 Code: 19000131 18991231  +0000031 20151215 18991231  +0042352

An eight-position field with a leading sign is created as the result of DATEDIFF. The + indicates that the second field is larger (- would indicate the opposite). Offset by three to get your desired result (23,5,CH for instance).

You need to temporarily "extend" each record to contain the base date, and the resultant difference. You can abut the fields, I've just left padding to more easily read the output.

For a fixed-length record, you extend after the end of the record. For a variable-length record extend at the beginning, using BUILD:

 Code: INREC BUILD=(1,4,C'18991231',8X,5)

You have to return the data to its original size after using the DATEDIFF (can be in OUTREC or OUTFIL).
 All times are GMT + 6 Hours
 Page 1 of 1

Search our Forum:

 Topic Author Forum Replies Posted Similar Topics Hex Value - vb file replace old date ... premnath DFSORT/ICETOOL 10 Sat Oct 17, 2020 3:15 am COnvert a column with mix of hex ,cha... shub2204 DB2 5 Fri Oct 02, 2020 2:20 pm Required Date Format in Include Sort ... vivky_vivek DFSORT/ICETOOL 6 Fri Aug 14, 2020 6:52 am Trying to add current date in place o... shub2204 DFSORT/ICETOOL 8 Wed Aug 12, 2020 4:14 pm To convert numeric to Packed Decimal vinu78 DFSORT/ICETOOL 9 Fri Jul 31, 2020 7:14 pm

 © 2003-2020 IBM MAINFRAME Software Support Division
 Job Vacancies | Forum Rules | Bookmarks | Subscriptions | FAQ | Polls | Contact Us