get_last_day_of

The days_in_month statement sets a variable to contain the number of days in the specified month.

Syntax

get_last_day_ofyyyyMMasvarName

Details

The get_last_day_of statement will set the value of the variable called varName to contain the number of days in the month specified by yyyyMM where yyyy is a four-digit year and MM is a 2-digit month.

The statement will take leap years into account.

Example

#
# Check a specific date to see if it is the last day of a month
#
var somedate = 20180228
gosub detect_end_of_month(${somedate})

if (${is_last_day} == TRUE) {
    print ${somedate} is the last day of a month
} else {
    print ${somedate} is not the last day of a month
}

#
# Check todays date to see if it is the last day of the month
#
gosub detect_end_of_month()
if (${is_last_day} == TRUE) {
    print Today is the last day of the month
} else {
    print Today is not the last day of the month
}

# This subroutine determines whether a date is the last
# day of a month or not
#
# If no argument is provided it defaults to the current system
# time, else it uses the supplied yyyyMMdd format argument
#
# It sets a variable called 'is_last_day' to TRUE or FALSE

subroutine detect_end_of_month {

    if (${SUBARG.COUNT} == 0) {
        get_last_day_of ${YEAR}${MONTH} as last_day

        if (${last_day} == ${DAY}) {
            var is_last_day = TRUE
        } else {
            var is_last_day = FALSE
        }
        return
    }

    # Verify argument format
    match date "^([0-9]{8})$" ${SUBARG_1}
    if (${date.STATUS} != MATCH) {
        print Error: the provided argument is not in yyyyMMdd format
        terminate with error
    }

    # Get the day portion of the argument    
    match day "^[0-9]{6}([0-9]{2})$" ${SUBARG_1}
    var day_to_check = ${day.RESULT}

    # Get the yyyyMM portion of the argument
    match yyyyMM "^([0-9]{6})" ${SUBARG_1}
    var month = ${yyyyMM.RESULT}

    get_last_day_of ${month} as last_day

    if (${last_day} == ${day_to_check}) {
        var is_last_day = TRUE
    } else {
        var is_last_day = FALSE
    }
}

Last updated