CHKDATE

The CHKDATE instruction verifies the validity of an input date and derives variables from the input date. It accepts dates in the following formats:
Keyword
Formats
DATE1()
YYYYMMDD, YYMMDD, YYYY/MM/DD, and YY/MM/DD
DATE2()
DDMMYYYY, DDMMYY, DD/MM/YYYY, and DD/MM/YY

If the date is valid, the CHKDATE instruction provides the value of the following variables that are based on the input date. The value reported in the table is calculated with an input date equal to 1997/09/28.

Table 1. Chkdate Instruction Variables
Variable DescriptionValue
XYMDDate in YYYYMMDD format 19970928
XYMD1Date in YYMMDD format970928
XYMD2Date in YY/MM/DD format97/09/28
XYMD3Date in YYYY/MM/DD format1997/09/28
XDMYDate in DDMMYYYY format28091997
XDMY1Date in DDMMYY format280997
XDMY2 Date in DD/MM/YY format 28/09/97
XDMY3Date in DD/MM/YYYY format 28/09/1997
XDAYDay of the week: 1–7; 1 = Monday, 2 = Tuesday…7
XDAYD Day of the week (MON, TUE, WED, THU, FRI, SAT, or SUN)SUNDAY
XDDDay of the month in DD format28
XDDD Day of the year in DDD format (Julian day)271
XDDDYY Date as a Julian date in DDYYYY format27197
XDDDYYYY Date as a Julian date in DDDYYYY format2711997
XDE®Ten-day period in the year28
XFDAYFirst day of the month: 1 = Monday, 2 = Tuesday…1
XFDAYD First day of the month MONDAY
XFDAYJFirst day of the month in DDD format (Julian day)244
XFDAYJ1First day of the month in YYYYDDD format1997244
XFFHalf of the month: 1 = first half, 2 = second half2
XFIRSTDE First day of a 10-day period in a month19970921
XFIRSTQ First day of the quarter in YYYYMMDD format19970901
XLASTDD Last day of the month in DD format30
XLASTDDN Last day of the next month 31
XLASTDDPLast day of the previous month31
XLASTDD1Last day of the month in YYYYMMDD format19970930
XLASTDD2 Last day of the month in YYMMDD format970930
XLASTDD3 Last day of the month in DDMMYYYY format30091997
XLASTDD4 Last day of the month in DDMMYY format300997
XLSTDDJ Last day of the month in DDD format (Julian day)273
XLSTDDJ1 Last day of the month in YYYYDDD format1997273
XMMMonth in MM format09
XMMYYMonth and year in MMYY format0997
XMYDate in MMYYYY format091997
XMMNAMEName of the monthSEPTEMBER
XMMP1Previous month in MM format08
XMMN1Next month in MM format10
XQUARTERQuarter of the year3
XTOTWWM Number of weeks in the month: 1–65
XWW1 Week of the year 39
XWWDWeek of the year and day of the week397
XWWLAST Last week of the month: Y or NN
XWWMONTHWeek of the month: 1–6 4
XYMDate in YYYMM format199709
XYYDDDDate as a Julian date in YYDDD format97271
XYYYYDDD Date as a Julian date YYYYDDD format1997271
XYYYear in YY format97
XYYYYYear in YYYY format1997
XYYMMYear and month in YYMM format9709
XYYP Previous year in YY format 96
XYYYYPPrevious year in YYYY format1996
XYYMMPPrevious month in YYMM format9708
XYYYYMMP Previous month in YYYYMM format199708
XYYN Next year YY format 98
XYYYYNNext year in YYYY format1998
XYYMMNNext month in YYMM format9710
XYYYYMMNNext month in YYYYMM format199710
X1MONDFirst Monday of the month in YYYYMMDD format19970901
X1MONDJ First Monday of the month in DDD format (Julian day)244
X1MONDJ1First Monday of the month in YYYYDDD format (Julian day)1997244
X2MONDSecond Monday of the month in YYYYMMDD format19970908
X2MONDJ Second Monday of the month in DDD format (Julian day)251
X2MONDJ1Second Monday of the month in YYYYDDD format (Julian day)1997251
X3MONDThird Monday of the month in YYYYMMDD format19970915
X3MONDJ Third Monday of the month in DDD format (Julian day)258
X3MONDJ1Third Monday of the month in YYYYDDD format (Julian day)1997258
X4MONDFourth Monday of the month in YYYYMMDD format19970922
X4MONDJ Fourth Monday of the month in DDD format (Julian day)265
X4MONDJ1Fourth Monday of the month in YYYYDDD format (Julian day)1997265
X5MONDFifth Monday of the month in YYYYMMDD format19970929
X5MONDJ Fifth Monday of the month in DDD format (Julian day)272
X5MONDJ1Fifth Monday of the month in YYYYDDD format (Julian day)1997272
XFREEDAYF = free day, W = work dayF
XYMDN1Calendar day + 1 in YYYYMMDD format19970929
XDDN1 Calendar day + 1 in DD format29
XYMDN1 Calendar day + 1 in DDMMYYYY format29091997
XYMDN2 Calendar day + 2 in YYYYMMDD format19970930
XYMDN3 Calendar day + 3 in YYYYMMDD format19971001
XYMDN4 Calendar day + 4 in YYYYMMDD format19971002
XYMDN5 Calendar day + 5 in YYYYMMDD format19971003
XYMDN6 Calendar day + 6 in YYYYMMDD format19971004
XYMDN7 Calendar day + 7 in YYYYMMDD format19971005
XYMDN8 Calendar day + 8 in YYYYMMDD format19971006
XYMDN9 Calendar day + 9 in YYYYMMDD format19971007
XYMDN10 Calendar day + 10 in YYYYMMDD format19971008
XYMDN11 Calendar day + 11 in YYYYMMDD format19971009
XYMDN12 Calendar day + 12 in YYYYMMDD format19971010
XYMDN13 Calendar day + 13 in YYYYMMDD format19971011
XYMDN14 Calendar day + 14 in YYYYMMDD format19971012
XYMDN15 Calendar day + 15 in YYYYMMDD format19971013
XYMDN16 Calendar day + 16 in YYYYMMDD format19971014
XYMDN17 Calendar day + 17 in YYYYMMDD format19971015
XYMDN18 Calendar day + 18 in YYYYMMDD format19971016
XYMDN19 Calendar day + 19 in YYYYMMDD format19971017
XYMDN20 Calendar day + 20 in YYYYMMDD format19971018
XYMDN21 Calendar day + 21 in YYYYMMDD format19971019
XYMDN22 Calendar day + 22 in YYYYMMDD format19971020
XYMDN23 Calendar day + 23 in YYYYMMDD format19971021
XYMDN24 Calendar day + 24 in YYYYMMDD format19971022
XYMDN25 Calendar day + 25 in YYYYMMDD format19971023
XYMDN26 Calendar day + 26 in YYYYMMDD format19971024
XYMDN27 Calendar day + 27 in YYYYMMDD format19971025
XYMDN28 Calendar day + 28 in YYYYMMDD format19971026
XYMDN29 Calendar day + 29 in YYYYMMDD format19971027
XYMDN30 Calendar day + 30 in YYYYMMDD format19971028
XWDDN1 Work day + 1 in DD format 29
XWDMYN1Work day + 1 in DDMMYYYY format29091997
XWYMDN1 Work day + 1 in YYYYMMDD format19970929
XWYMDN2 Work day + 2 in YYYYMMDD format19970930
XWYMDN3 Work day + 3 in YYYYMMDD format19971001
XWYMDN4 Work day + 4 in YYYYMMDD format19971002
XWYMDN5 Work day + 5 in YYYYMMDD format19971003
XWYMDN6 Work day + 6 in YYYYMMDD format19971006
XWYMDN7 Work day + 7 in YYYYMMDD format19971007
XWYMDN8 Work day + 8 in YYYYMMDD format19971008
XWYMDN9 Work day + 9 in YYYYMMDD format19971009
XWYMDN10 Work day + 10 in YYYYMMDD format19971010
XWYMDN11 Work day + 11 in YYYYMMDD format19971013
XWYMDN12 Work day + 12 in YYYYMMDD format19971014
XWYMDN13 Work day + 13 in YYYYMMDD format19971015
XWYMDN14 Work day + 14 in YYYYMMDD format19971016
XWYMDN15 Work day + 15 in YYYYMMDD format19971017
XWYMDN16 Work day + 16 in YYYYMMDD format19971020
XWYMDN17 Work day + 17 in YYYYMMDD format19971021
XWYMDN18 Work day + 18 in YYYYMMDD format19971022
XWYMDN19 Work day + 19 in YYYYMMDD format19971023
XWYMDN20 Work day + 20 in YYYYMMDD format19971042
XWYMDN21 Work day + 21 in YYYYMMDD format19971027
XWYMDN22 Work day + 22 in YYYYMMDD format19971028
XWYMDN23 Work day + 23 in YYYYMMDD format19971029
XWYMDN24 Work day + 24 in YYYYMMDD format19971030
XWYMDN25 Work day + 25 in YYYYMMDD format19971031
XWYMDN26 Work day + 26 in YYYYMMDD format19971103
XWYMDN27 Work day + 27 in YYYYMMDD format19971104
XWYMDN28 Work day + 28 in YYYYMMDD format19971105
XWYMDN29 Work day + 29 in YYYYMMDD format19971106
XWYMDN30 Work day + 30 in YYYYMMDD format19971107
XYDDP1 Calendar day - 1 in DD format27
XYMDP1 Calendar day - 1 in YYYYMMDD format19970927
XYMDP2 Calendar day - 2 in YYYYMMDD format19970926
XYMDP3 Calendar day - 3 in YYYYMMDD format19970925
XYMDP4 Calendar day - 4 in YYYYMMDD format19970924
XYMDP5 Calendar day - 5 in YYYYMMDD format19970923
XYMDP6 Calendar day - 6 in YYYYMMDD format19970922
XYMDP7 Calendar day - 7 in YYYYMMDD format19970921
XYMDP8 Calendar day - 8 in YYYYMMDD format19970920
XYMDP9 Calendar day - 9 in YYYYMMDD format19970919
XYMDP10 Calendar day - 10 in YYYYMMDD format19970918
XYMDP11 Calendar day - 11 in YYYYMMDD format19970917
XYMDP12 Calendar day - 12 in YYYYMMDD format19970916
XYMDP13 Calendar day - 13 in YYYYMMDD format19970915
XYMDP14 Calendar day - 14 in YYYYMMDD format19970914
XYMDP15 Calendar day - 15 in YYYYMMDD format19970913
XYMDP16 Calendar day - 16 in YYYYMMDD format19970912
XYMDP11 Calendar day - 17 in YYYYMMDD format19970916
XYMDP18 Calendar day - 18 in YYYYMMDD format19970910
XYMDP19 Calendar day - 19 in YYYYMMDD format19970909
XYMDP20 Calendar day - 20 in YYYYMMDD format19970908
XYMDP21 Calendar day - 21 in YYYYMMDD format19970907
XYMDP22 Calendar day - 22 in YYYYMMDD format19970906
XYMDP23 Calendar day - 23 in YYYYMMDD format19970905
XYMDP24 Calendar day - 24 in YYYYMMDD format19970904
XYMDP25 Calendar day - 25 in YYYYMMDD format19970903
XYMDP26 Calendar day - 26 in YYYYMMDD format19970902
XYMDP27 Calendar day - 27 in YYYYMMDD format19970901
XYMDP28 Calendar day - 28 in YYYYMMDD format19970831
XYMDP29 Calendar day - 29 in YYYYMMDD format19970830
XYMDP30 Calendar day - 30 in YYYYMMDD format19970829
XWDDP1 Work day - 1 in DD format 26
XWDMYP1Work day - 1 in DDMMYYYY format26091997
XWYMDP1 Work day - 1 in YYYYMMDD format19970926
XWYMDP2 Work day - 2 in YYYYMMDD format19970925
XWYMDP3 Work day - 3 in YYYYMMDD format19970924
XWYMDP4 Work day - 4 in YYYYMMDD format19970923
XWYMDP5 Work day - 5 in YYYYMMDD format19970922
XWYMDP6 Work day - 6 in YYYYMMDD format19970919
XWYMDP7 Work day - 7 in YYYYMMDD format19970918
XWYMDP8 Work day - 8 in YYYYMMDD format19970917
XWYMDP9 Work day - 9 in YYYYMMDD format19970916
XWYMDP10 Work day - 10 in YYYYMMDD format19970915
XWYMDP11 Work day - 11 in YYYYMMDD format19970912
XWYMDP12 Work day - 12 in YYYYMMDD format19970911
XWYMDP13 Work day - 13 in YYYYMMDD format19970910
XWYMDP14 Work day - 14 in YYYYMMDD format19970909
XWYMDP15 Work day - 15 in YYYYMMDD format19970908
XWYMDP16 Work day - 16 in YYYYMMDD format19970905
XWYMDP17 Work day - 17 in YYYYMMDD format19970904
XWYMDP18 Work day - 18 in YYYYMMDD format19970903
XWYMDP19 Work day - 19 in YYYYMMDD format19970902
XWYMDP20 Work day - 20 in YYYYMMDD format19970901
XWYMDP21 Work day - 21 in YYYYMMDD format19970829
XWYMDP22 Work day - 22 in YYYYMMDD format19970828
XWYMDP23 Work day - 23 in YYYYMMDD format19970827
XWYMDP24 Work day - 24 in YYYYMMDD format19970826
XWYMDP25 Work day - 25 in YYYYMMDD format19970825
XWYMDP26 Work day - 26 in YYYYMMDD format19970822
XWYMDP27 Work day - 27 in YYYYMMDD format19970821
XWYMDP28 Work day - 28 in YYYYMMDD format19970820
XWYMDP29 Work day - 29 in YYYYMMDD format19970819
XWDYMD30 Work day - 30 in YYYYMMDD format19970818

1 XWW is the variable updated by CHKDATE to show the week of the year, in terms of week number. It is a fixed calculation that starts the first day of the year and has a fixed length of seven days. It is assumed that week number 1 begins on January 1st, regardless of what day of the week it is.

The IBM Z Workload Scheduler-supplied variable are calculated on the occurrence input arrival date and time, whereas the OCL variables are calculated on an input date, such as a date provided with a promptable variable.

The following table describes the keywords that can be used.

KeywordRequirementMultiple Values AllowedDescription Abbreviation Format
DATE1()Required¹NoThe input date in the following formats: YYYYMMDD, YYYY/MM/DD, YYMMDD, or YY/MM/DD.

DATE1() and DATE2() are mutually exclusive.

YYMMDD
DATE2() Required¹ NoThe input date in the following formats: DDMMYYYY, DD/MM/YYYY, DDMMYY, or DD/MM/YY.

DATE2() and DATE1() are mutually exclusive.

DDMMYY
CALNAME() Optional NoThe scheduler default calendar ID. It defaults to DEFAULT.CAL
SUBSYS()OptionalNoThe scheduler subsystem name. It overrides the subsystem ID specified in a previous INIT instruction or in the EQQYRPRM member, except when you specify the SUBSYS() keyword in the EQQYPARM DD card.
MSG()OptionalNoIt can be YES or NO. It specifies whether the program is to display the description and the values of the calculated variables in the OCL SYSOUT. It defaults to YES.
INCVALUE() Optional NoThis value indicates the decreasing value for the variables calculation. OCL will add days to, or subtract days from, an input date up to the incvalue. (OCL will calculate the new date +/- n work days or calendar days, where n is a value in the range 1–incvalue.) incvalue can be a value in the range 1–30 and overlays the value specified in PARMLIB. INC
Note: Mutually exclusive with another keyword.
Examples:
CHKDATE  DATE2(&datac) MSG(NO) INC(15) CAL(calend01)
CHKDATE  DATE2(201097) MSG(NO)
The CHKDATE instruction can be an extension to the scheduler SETVAR directive. For example, you can use it to perform a double arithmetic calculation on an input date. If you need to calculate a date that corresponds to the occurrence input arrival date plus 2 workdays and plus 20 calendar days, you can use the following OCL instructions:
CHKDATE  DATE1(&OYMD1) INC(2) MSG(NO)
CHKDATE  DATE1(XWYMDN2) INC(20)
SETUPD var1 = XYMDN20
The first CHKDATE instruction calculates the occurrence input arrival date plus 2 workdays. The result is stored in the variable XWYMDN2. The second CHKDATE instruction uses the variable XWYMDN2 as the input date to calculate the new date: XWYMDN2 + 20 calendar days. The result is stored in variable XYMDN20, which you can use, for example, to update the default value of a variable in a variable table.
The CHKDATE instruction returns one of the following return codes:
RESULT = 0
Valid date.
RESULT = 8
Invalid date. Refer to the error messages.
Note: When using the CHKDATE instruction, the variable name must be put between single quotation marks. For example:
       CHKDATE  DATE1('XWYMDN2') INC(20)