Portal | Manuals | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref
IBM Mainframe Forum Index
 
Register
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Profile Log in to check your private messages Log in
 
ADDMONS function - conclusion after original locked

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> SYNCSORT
View previous topic :: :: View next topic  
Author Message
sergeyken

Active Member


Joined: 29 Apr 2008
Posts: 636
Location: Maryland

PostPosted: Tue Nov 12, 2019 9:54 pm    Post subject: ADDMONS function - conclusion after original locked
Reply with quote

Whenever either SORT utility, or any other software behavior becomes unclear, or available manuals might give more questions than answers, I always run some little test - just to verify the specific question, and nothing else of a bigger task.

Such test would also prevent others from reading the manuals in reverse order.

The SORT manual is saying only
Quote:
When the unit is months or years, a valid output date will always be created. For example,
subtracting one month from a March 30th date will result in February 28th in a non-leap
year and February 29th in a leap year.

This only means that any wrong result of date calculation is replaced with the nearest correct date value. There is no clue why one can suppose that under any circumstances the correct date 20200228 must be "corrected" to 20200229?
For myself this is clear both from the SORT manual statement, and from common sense. To be sure I usually run specific test to eliminate any doubts.
Code:
//*=====================================================================
//SORT     EXEC  PGM=SORT                                               
//SYSOUT   DD    SYSOUT=*                                               
//SORTIN   DD    *                                                     
20190131                                                               
20190228                                                               
20190229                                                               
20190201                                                               
20190210                                                               
20190330                                                               
20190331                                                               
20190131                                                               
20190201                                                               
20190210                                                               
20190220                                                               
20190221                                                               
20190222                                                               
20190223                                                               
20190224                                                               
20190225                                                               
20190226                                                               
20190227                                                               
20190228                                                               
20190229                                                               
20190201                                                               
20190210                                                               
20190330                                                               
20190331                                                               
20190131                                                               
20190228                                                               
20190229                                                               
20190201                                                               
20190210                                                               
20190330                                                               
20190331                                                               
//*-+----1----+----2----+----3----+----4----+----5----+----6----+----7--
//SORTOUT  DD    SYSOUT=*                                               
//SYSIN    DD *                                                         
 SORT FIELDS=COPY                                                       
 INREC BUILD=(1,8,                                                     
            X,1,8,Y4T,ADDMONS,+1,TOGREG=Y4T,                           
            X,1,8,Y4T,ADDMONS,+12,TOGREG=Y4T,                           
            X,1,8,Y4T,ADDMONS,+13,TOGREG=Y4T)                           
 OUTFIL REMOVECC,                                                       
        BUILD=(/,                                                       
               1,8,                                                     
             X,10,8,                                                   
             X,19,8,                                                   
             X,28,8,C' <== ADDMONS',                                   
             /,8X,                                                     
             X,10,8,Y4T,LASTDAYM,TOGREG=Y4T,                           
             X,19,8,Y4T,LASTDAYM,TOGREG=Y4T,                           
             X,28,8,Y4T,LASTDAYM,TOGREG=Y4T,C' <== LASTDAYM'),         
       HEADER1=(C'YYYYMMDD +1 MONTH +12MONTH +13MONTH',                 
              /,C'-------- -------- -------- --------')                 
//*=====================================================================

The result is exactly what I expected from the very beginning
Code:
YYYYMMDD +1 MONTH +12MONTH +13MONTH                   
-------- -------- -------- --------                   
                                                     
20190131 20190228 20200131 20200229 <== ADDMONS       
         20190228 20200131 20200229 <== LASTDAYM     
                                                     
20190228 20190328 20200228 20200328 <== ADDMONS       
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190229 99999999 99999999 99999999 <== ADDMONS       
         99999999 99999999 99999999 <== LASTDAYM     
                                                     
20190201 20190301 20200201 20200301 <== ADDMONS       
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190210 20190310 20200210 20200310 <== ADDMONS       
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190330 20190430 20200330 20200430 <== ADDMONS       
         20190430 20200331 20200430 <== LASTDAYM     
                                                     
20190331 20190430 20200331 20200430 <== ADDMONS       
         20190430 20200331 20200430 <== LASTDAYM     
                                                     
20190131 20190228 20200131 20200229 <== ADDMONS       
         20190228 20200131 20200229 <== LASTDAYM     
                                                     
20190201 20190301 20200201 20200301 <== ADDMONS       
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190210 20190310 20200210 20200310 <== ADDMONS       
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190220 20190320 20200220 20200320 <== ADDMONS       
         20190331 20200229 20200331 <== LASTDAYM     

20190221 20190321 20200221 20200321 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190222 20190322 20200222 20200322 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190223 20190323 20200223 20200323 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190224 20190324 20200224 20200324 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190225 20190325 20200225 20200325 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190226 20190326 20200226 20200326 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190227 20190327 20200227 20200327 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190228 20190328 20200228 20200328 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190229 99999999 99999999 99999999 <== ADDMONS     
         99999999 99999999 99999999 <== LASTDAYM     
                                                     
20190201 20190301 20200201 20200301 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190210 20190310 20200210 20200310 <== ADDMONS     
         20190331 20200229 20200331 <== LASTDAYM     
                                                     
20190330 20190430 20200330 20200430 <== ADDMONS     
         20190430 20200331 20200430 <== LASTDAYM     
                                                     
20190331 20190430 20200331 20200430 <== ADDMONS     
         20190430 20200331 20200430 <== LASTDAYM   
                                                   
20190131 20190228 20200131 20200229 <== ADDMONS   
         20190228 20200131 20200229 <== LASTDAYM   
                                                   
20190228 20190328 20200228 20200328 <== ADDMONS   
         20190331 20200229 20200331 <== LASTDAYM   
                                                   
20190229 99999999 99999999 99999999 <== ADDMONS   
         99999999 99999999 99999999 <== LASTDAYM   
                                                   
20190201 20190301 20200201 20200301 <== ADDMONS   
         20190331 20200229 20200331 <== LASTDAYM   
                                                   
20190210 20190310 20200210 20200310 <== ADDMONS   
         20190331 20200229 20200331 <== LASTDAYM   
                                                   
20190330 20190430 20200330 20200430 <== ADDMONS   
         20190430 20200331 20200430 <== LASTDAYM   
                                                   
20190331 20190430 20200331 20200430 <== ADDMONS   
         20190430 20200331 20200430 <== LASTDAYM   


I'm glad that my common sense matches completely with the official SORT manual.
Back to top
View user's profile Send private message

vasanthz

Global Moderator


Joined: 28 Aug 2007
Posts: 1661
Location: Tirupur

PostPosted: Tue Nov 12, 2019 9:59 pm    Post subject:
Reply with quote

Quote:
This only means that any wrong result of date calculation is replaced with the nearest correct date value.

This is the key take away here. When you pointed it out on your early reply, I understood this is how it worked and made sense. Logical and right. It need not be the last day if the resultant date is valid. Thank you
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> SYNCSORT All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
This topic is locked: you cannot edit posts or make replies. ADDMONS function rnimmala SYNCSORT 24 Fri Nov 08, 2019 8:55 pm
No new posts Call DB2 user defined function from C... Ziko13 DB2 5 Thu Mar 14, 2019 4:46 pm
No new posts IEFSJREQ or SWBREQTU following SSI Fu... sidinpsl PL/I & Assembler 0 Tue Jan 08, 2019 1:20 am
No new posts What is the Extract Function in JCL dharmaraok JCL & VSAM 3 Wed Jun 14, 2017 9:12 am
This topic is locked: you cannot edit posts or make replies. RANDOM Function in COBOL swapnil781 COBOL Programming 2 Tue Nov 15, 2016 6:17 pm

Facebook
Back to Top
 
Job Vacancies | Forum Rules | Bookmarks | Subscriptions | FAQ | Polls | Contact Us