@ - Date logic function
The @ function returns a boolean true or false (1 or 0), based on whether the input string is true for the day that is being evaluated.
The following string allows IF statements
and other REXX based commands to make decisions, based on the characteristics
of the date being checked.
@(“<input-string>”,[<date>],[”<additional-keywords>”])
For example, the string IF @(FRI) & @(WORKDAY) THEN would only be true if the date being checked was both a
Friday and a workday.
The following list shows the valid values for <input-string>:
- Day of the week:
MON TUE WED THU FRI SAT SUN - Part of the week:
WEEKDAYorWEEKEND - Day type:
WORKDAYorFREEDAY(W,WORK,FandFREEare also valid) - Day of the month:
D01–D31 - Month of the year:
M01–M12 - Name of the month:
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC - Year:
Y00–Y99 - yymmdd: a specific date
- A valid
ADRULEstring, for exampleONLY LAST(1) DAY(FRIDAY) MONTH. For details about how you specify the ADRULE statement, see Managing the Workload.
<input-string> should be contained
within single or double quotes if it contains ( or ), otherwise quotes are optional.By default, the date being checked is either the input arrival date for jobs controlled by HCL Workload Automation for Z, or the current date for jobs not controlled by HCL Workload Automation for Z. This date can be overridden by specifying a date as the second argument of the function. The date can either be a specific date in the format yymmdd or a relative date, using plus or minus to offset from the default date for this function.
For example, the string IF @(FRI) & @(FREEDAY,+1)
THEN is true if the scheduled date for the job is a Friday
and the following day is a Free day.
When checking WORKDAY and FREEDAY, the calendar to be used is determined as follows:
- If the job is controlled by HCL Workload Automation for Z, the calendar associated with the controlling occurrence is used.
- If the job is run outside of HCL Workload Automation for Z, the calendar specified by
OPTIONS CALENDARorCALENDARset within EQQYPARM is used. - If no calendar is set, the calendar named
DEFAULTis used.
The CALENDAR can be overridden by specifying
the CALENDAR keyword within the third argument.
For example, the string IF @(WORK,,”CALENDAR(NATIONAL)”)
& @(FREE,,”CALENDAR(LOCAL)”) THEN is
true if the date being checked is a Workday in the National calendar
and a Freeday in the Local calendar.
WORKDAY or FREEDAY. To exploit Workday
End Time, you can use the ADRULE statement.
Where you use an ADRULE statement, the rule
is checked to see if it would generate a match for the date being
checked.CALENDAR- Sets the calendar to use. If not specified, the calendar is decided
using the same method as with
WORKDAYandFREEDAYinput strings. FDAYRULE(1|2|3|4|E)- Sets the free day rule. By default, this is set to 3 which does not adjust the date.
IAT(hhmm)- Sets the input arrival time to evaluate against the rule, for Calendar Work Day End Time processing. By default, this will use the input arrival time of the job running the command, if it is controller by HCL Workload Automation for Z, otherwise it will use 0000 for a job outside of HCL Workload Automation for Z control.
For example:
@(“EVERY DAY(FREEDAY) WEEK”,,”CALENDAR(MYCAL) IAT(0300)”)evaluates whether 3am on the date being checked is a Freeday, taking into account the Work Day End Time of calendarMYCAL.@(“ONLY LAST(1) DAY(FRIDAY) MONTH”,-3)evaluates whether it was the last Friday of the month 3 days ago.@(“ONLY LAST(1) DAY(FRIDAY) MONTH”,,”FDAYRULE(1)”)evaluates whether this is the last working day before or on the last Friday of the month.
<additional-keywords> must be
specified within single or double quotes, because it contains opening
and closing parenthesis.The date logic expressions can also be used in the CRITERIA user fields for the ALTIF and RUNIF commands.