Annual calendar creation and review

The SEQQWAPL library has DATE members containing public holidays for some countries; you can use them to create variables containing dates for public holidays. For countries without DATE members, use VARDATE to create your own rules for public holidays.

The following example shows a sample job for creating public holidays in the calendar for the forthcoming year (CALNL).

//RUNWAPL  EXEC EQQYXJPX,
//         SUBSYS=WSJC 
//SYSIN    DD * 
OPTIONS DBMODE(UPDATE) 
VARDATE = YEAR(+1)
INCLUDE EQQFILE(DATENL)
CLSTART CALENDAR(CALNL) DESCR(NEDERLANDSE KALENDER) 
CLDAY DAY(MONDAY) STATUS(W) DESCR(MAANDAG)
CLDAY DAY(TUESDAY) STATUS(W) DESCR(DINSDAG)
CLDAY DAY(WEDNESDAY) STATUS(W) DESCR(WOENSDAG)
CLDAY DAY(THURSDAY) STATUS(W) DESCR(DONDERDAG)
CLDAY DAY(FRIDAY) STATUS(W) DESCR(VRIJDAG)
CLDAY DAY(SATURDAY) STATUS(F) DESCR(ZATERDAG)
CLDAY DAY(SUNDAY) STATUS(F) DESCR(ZONDAG) 
CLDATE DATE(!FD_GOEDE_VRIJDAG) STATUS(F) DESCR(GOEDE VRIJDAG)
CLDATE DATE(!FD_TWEEDE_PAASDAG) STATUS(F) DESCR(TWEEDE PAASDAG) 
CLDATE DATE(!FD_KONINGINNEDAG) STATUS(F) DESCR(KONINGINNEDAG) 
CLDATE DATE(!FD_HEMELVAARTSDAG) STATUS(F) DESCR(HEMELVAARTSDAG)
CLDATE DATE(!FD_TWEEDE_PINKSTERDAG) STATUS(F) DESCR(TWEEDE PINKSTERDAG)
CLDATE DATE(!FD_EERSTE_KERSTDAG) STATUS(F) DESCR(EERSTE KERSTDAG)
CLDATE DATE(!FD_TWEEDE_KERSTDAG) STATUS(F) DESCR(TWEEDE KERSTDAG)
You can then export the calendar dates into a flat file by running a job similar to the following:
//RUNWAPL  EXEC EQQYXJPX, 
//         SUBSYS=WSJC
//OUTDATA  DD DISP=SHR,DSN=ADCDMST.CZ.JCL(CALDATES) 
//SYSIN    DD * 
OPTIONS FIELDSEP(,) 
OUTPUT CLSD DATA(OUTDATA) FIELDS(CLSDDATE,CLSDDESC) LABEL(NONE) 
SELECT CL CALENDAR(CALNL) SELECT(Y) 

The flat file will contain all the dates contained within the calendar, for as many years as the calendar covers. You can use it with the EQQWXHTM WAPLEXEC to extract specific years and produce the HTML versions. Because the input file contains dates for 2 years, you can run 2 steps which can each concentrate on an individual year by use of the YEAR keyword.

The following example shows a sample job for exporting calendar dates into a flat file (CALUNLD).
//EXP2012  EXEC EQQYXJPX, 
//         ARGS='YEAR(2012)', 
//         CMD=EQQWXHTM, 
//         SUBSYS=WSJC
//OUTHTML  DD DISP=SHR,DSN=ADCDMST.CZ.JCL(CAL2012)
//CLSDDATE DD DISP=SHR,DSN=ADCDMST.CZ.JCL(CALDATES)
//SYSIN    DD * 
DAYS(M D W D V Z Z)
MONTHS(JANUARI FEBRUARI MAART APRIL MEI JUNI 
       JULI AUGUSTUS SEPTEMBER OKTOBER NOVEMBER DECEMBER)
PROCESS(CLSDDATE) HILITE(gray-yellow)
/* 
//EXP2013  EXEC EQQYXJPX, 
//         ARGS='YEAR(2013)',
//         CMD=EQQWXHTM,
//         SUBSYS=WSJC 
//OUTHTML  DD DISP=SHR,DSN=ADCDMST.CZ.JCL(CAL2013)
//CLSDDATE DD DISP=SHR,DSN=ADCDMST.CZ.JCL(CALDATES) 
//SYSIN    DD * 
DAYS(M D W D V Z Z)
MONTHS(JANUARI FEBRUARI MAART APRIL MEI JUNI
       JULI AUGUSTUS SEPTEMBER OKTOBER NOVEMBER DECEMBER)
PROCESS(CLSDDATE) HILITE(gray-yellow)
You can then send the output file to review the dates for the forthcoming year, or simply use it as a reference to view the free days.
Figure 1. US calendar for 2015
The complete American calendar for year 2015