| 
 | 
The reason you can't get 4/29 after subtracting 3 days from 5/1, is because
there isn't a 4/31.
5/1 - 1 = 4/30
4/30 - 1 = 4/29
4/29 - 1 = 4/28.
Michael Schutte
                                                                           
             Bruce Vining                                                  
             <bvining@xxxxxxxx                                             
             om>                                                        To 
             Sent by:                  Midrange Systems Technical          
             midrange-l-bounce         Discussion                          
             s@xxxxxxxxxxxx            <midrange-l@xxxxxxxxxxxx>           
                                                                        cc 
                                                                           
             05/01/2006 01:10                                      Subject 
             PM                        Re: Date Conversion                 
                                                                           
                                                                           
             Please respond to                                             
             Midrange Systems                                              
                 Technical                                                 
                Discussion                                                 
             <midrange-l@midra                                             
                 nge.com>                                                  
                                                                           
                                                                           
I can't help you much with subtracting three days and getting 4/29 (my
program keeps getting 4/28 when subtracting three days from 5/01...) but
the following demonstrates one approach for V5R3 that will handle month
and year adjustments:
       PGM
       DCL        VAR(&CURDATE) TYPE(*CHAR) LEN(20)
       DCL        VAR(&YYMD) TYPE(*CHAR) LEN(8)
       DCL        VAR(&LILDATE) TYPE(*INT)
       RTVSYSVAL  SYSVAL(QDATETIME) RTNVAR(&CURDATE)
       CHGVAR     VAR(&YYMD) VALUE(%SST(&CURDATE 1 8))
       CALLPRC    PRC(CEEDAYS) PARM((&YYMD) ('YYYYMMDD') +
                    (&LILDATE) (*OMIT))
       CHGVAR     VAR(&LILDATE) VALUE(&LILDATE - 3)
       CALLPRC    PRC(CEEDATE) PARM((&LILDATE) ('YYYYMMDD') +
                    (&YYMD) (*OMIT))
       ENDPGM
and this is another approach if you happen to be on V5R4:
      PGM
      DCL        VAR(&CURDATE) TYPE(*CHAR) LEN(20)
      DCL        VAR(&YYMD) TYPE(*CHAR) STG(*DEFINED) LEN(8) +
                   DEFVAR(&CURDATE)
      DCL        VAR(&LILDATE) TYPE(*INT)
      RTVSYSVAL  SYSVAL(QDATETIME) RTNVAR(&CURDATE)
      CALLPRC    PRC(CEEDAYS) PARM((&YYMD) ('YYYYMMDD') +
                   (&LILDATE) (*OMIT))
      CHGVAR     VAR(&LILDATE) VALUE(&LILDATE - 3)
      CALLPRC    PRC(CEEDATE) PARM((&LILDATE) ('YYYYMMDD') +
                   (&YYMD) (*OMIT))
      ENDPGM
Both programs have &YYMD set to the current system date minus three days.
Bruce Vining
fbocch2595@xxxxxxx
Sent by: midrange-l-bounces+bvining=us.ibm.com@xxxxxxxxxxxx
05/01/2006 09:18 AM
Please respond to
Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>
To
midrange-l@xxxxxxxxxxxx
cc
Subject
Date Conversion
Hi, can someone explain how to use cl to calculate dates properly?
I'm using the following;
/* RETRIEVE THE CURRENT SYSTEM DATE & TIME */
             RTVSYSVAL  SYSVAL(QDATE) RTNVAR(&SYSDAT)
             RTVSYSVAL  SYSVAL(QTIME) RTNVAR(&SYSTIM)
/* CONVERT THE CURRENT DATE FROM MMDDYY TO YYYYMMDD */
             CVTDAT     DATE(&SYSDAT) TOVAR(&SYSYYMD) FROMFMT(*MDY) +
                          TOFMT(*YYMD) TOSEP(*NONE)
/* CREATE PREVIUOS FRIDAY'S DATE BY SUBTRACTING 3 FROM CURRENT DATE */
             CHGVAR     VAR(&PRVDAT#) VALUE(&SYSYYMD)
             CHGVAR     VAR(&PRVDAT#) VALUE(&PRVDAT# - 3)
             CHGVAR     VAR(&PRVDAT) VALUE(&PRVDAT#)
When I run the job on 0501 the pgm returns the date -3 as 20060498.  How
would I have to change the code so that it returns 0429?
Any examples appreciated.
Thanks
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.