Guidelines for handling the YEARCUTOFF= system option for SAS® Fraud Management 6.2M1, SAS® Fraud Management 6.2, and earlier releases


You can use the YEARCUTOFF= system option when processing two-digit years to determine the century for SAS date values. YEARCUTOFF= specifies the first year of a 100-year span and influences the behavior of how SAS calculates date values that contain only a two-digit year. For additional information, see YEARCUTOFF= System Option.

Recently, the default value for the YEARCUTOFF= system option has changed from 1926 to 1940 in SAS® 9.4 and later. This SAS KB article shares guidelines about how to manage the YEARCUTOFF = system option for SAS Fraud Management 6.2M1, SAS Fraud Management 6.2, and earlier releases.

To update the option, complete the following instructions based on your currently installed version of SAS Fraud Management:

Table of Contents


SAS Fraud Management 6.2 and 6.2M1 

Impacted Areas 

Models and rules that use two-digit year formats are impacted by this issue.

Instructions

  1. Set the following property to 1940 in ose.properties:


    #

    # SAS

    #

    SAS_CWD = ${LOGS_DIR}

    SAS_CMD = ${SAS_ROOT}/bin/sas_en -memsize MAX -nodms -logparm write=immediate -sysin "${SERVER_HOME}/bin/jose.sas"

    YEARCUTOFF = 1926

    SAS_OPTIONS = linesize=max mlogic mprint mprintnest nocenter nodate nonumber noovp pagesize=max source yearcutoff=${YEARCUTOFF} DSOPTIONS=NOSTMTID CGOPTIMIZE=0

    SAS_SHM_KEY = 5018

  2. Set the following property to 1940 during OnDemand Decision Engine Server (ODE) and Transaction Analysis Server (TAS) start-up in functions.sh under the init_common_env function:


    function init_common_env

    {

        PROGRAM_DIR="$(absolute_path ${PROGRAM_NAME:?})"

        PROGRAM_NAME="${PROGRAM_NAME##*(?)/}"

        : ${SERVER_HOME:="$(absolute_path ${PROGRAM_DIR:?}/..)"}

        dir_writeable "${CONFIG_DIR:="${SERVER_HOME:?}/etc"}"       "CONFIG_DIR="

        dir_writeable "${LOGS_DIR:="${SERVER_HOME:?}/logs"}"        "LOGS_DIR="

        dir_writeable "${ARCHIVE_DIR:="${SERVER_HOME:?}/archive"}"  "ARCHIVE_DIR="

        dir_writeable "${TMPDIR:="${LOGS_DIR:?}"}"                    "TMPDIR="

        if [[ -z "${LIB_DIR}" && -d "${SERVER_HOME:?}/lib" ]] ; then

            LIB_DIR="${SERVER_HOME:?}/lib"

        fi

        file_executable "${JAVA:="${JAVA_HOME:?}/bin/java"}"        "JAVA="

        : ${ARCHIVE_COUNT_LIMIT:="30"}

        : ${JAVA_HEAP:="4G"}

        : ${JAVA_YOUNG_HEAP:=512M}

        : ${DATE_TIME:=$(date +\"%y%b%d_%H%M%S%Z\")}

        : ${ASCII_ENCODING:="ISO8859_1"}

        : ${EBCDIC_ENCODING:="cp1047"}

        : ${YEARCUTOFF:="1926"}

        TMP="${TMPDIR:?}/.${PROGRAM_NAME:?}.tmp.$$"

        echo >${TMP:?}

        trap "rm -f ${TMP:?}" 0 1 2 3 15

        if [ -n "${LIB_DIR}" ] ; then

            CLASS_DIRS="${CLASS_DIRS}:${LIB_DIR}"

        fi

        CLASSPATH="$CLASSPATH:$(check_dir ${CONFIG_DIR:?} CONFIG_DIR=)"

        init_os_env

        init_jvm_env

        OPTS="$OPTS $(assertion_opts)"

        OPTS="$OPTS $(encoding_opts)"

    }

  3. Restart the ODE and TAS servers.

Future Expectations

SAS has requested that the default value be updated to reflect the change. For additional information, see SAS KB0041792, "The default value for the YEARCUTOFF= system option has changed in SAS® 9.4 and beyond."

Since there is no confirmation for a date of change, the resolution steps are still strongly encouraged.


SAS® Fraud Management 6.1 Running on Base SAS® 9.4M7 (TS1M7)

Impacted Areas

Models and rules that use two-digit year formats are impacted by this issue. 

Instructions

  1. Set the following property to 1940 in ose.properties:

    #

    # SAS

    #

    SAS_CWD = ${LOGS_DIR}

    SAS_CMD = ${SAS_ROOT}/bin/sas_en -memsize MAX -nodms -logparm write=immediate -sysin "${SERVER_HOME}/bin/jose.sas"

    YEARCUTOFF = 1926

    SAS_OPTIONS = linesize=max mlogic mprint mprintnest nocenter nodate nonumber noovp pagesize=max source yearcutoff=${YEARCUTOFF} DSOPTIONS=NOSTMTID CGOPTIMIZE=0

    SAS_SHM_KEY = 5018

  2.  Set the following property to 1940 during ODE and TAS server start-up in functions.sh under the init_common_env function:

    function init_common_env

    {

        PROGRAM_DIR="$(absolute_path ${PROGRAM_NAME:?})"

        PROGRAM_NAME="${PROGRAM_NAME##*(?)/}"

        : ${SERVER_HOME:="$(absolute_path ${PROGRAM_DIR:?}/..)"}

        dir_writeable "${CONFIG_DIR:="${SERVER_HOME:?}/etc"}"       "CONFIG_DIR="

        dir_writeable "${LOGS_DIR:="${SERVER_HOME:?}/logs"}"        "LOGS_DIR="

        dir_writeable "${ARCHIVE_DIR:="${SERVER_HOME:?}/archive"}"  "ARCHIVE_DIR="

        dir_writeable "${TMPDIR:="${LOGS_DIR:?}"}"                    "TMPDIR="

        if [[ -z "${LIB_DIR}" && -d "${SERVER_HOME:?}/lib" ]] ; then

            LIB_DIR="${SERVER_HOME:?}/lib"

        fi

        file_executable "${JAVA:="${JAVA_HOME:?}/bin/java"}"        "JAVA="

        : ${ARCHIVE_COUNT_LIMIT:="30"}

        : ${JAVA_HEAP:="4G"}

        : ${JAVA_YOUNG_HEAP:=512M}

        : ${DATE_TIME:=$(date +\"%y%b%d_%H%M%S%Z\")}

        : ${ASCII_ENCODING:="ISO8859_1"}

        : ${EBCDIC_ENCODING:="cp1047"}

        : ${YEARCUTOFF:="1926"}

        TMP="${TMPDIR:?}/.${PROGRAM_NAME:?}.tmp.$$"

        echo >${TMP:?}

        trap "rm -f ${TMP:?}" 0 1 2 3 15

        if [ -n "${LIB_DIR}" ] ; then

            CLASS_DIRS="${CLASS_DIRS}:${LIB_DIR}"

        fi

        CLASSPATH="$CLASSPATH:$(check_dir ${CONFIG_DIR:?} CONFIG_DIR=)"

        init_os_env

        init_jvm_env

        OPTS="$OPTS $(assertion_opts)"

        OPTS="$OPTS $(encoding_opts)"

    }

  3. Restart the ODE and TAS servers

Future Expectations 

SAS will not provide additional code changes as these versions are in Limited Support. See SAS KB0041792, "The default value for the YEARCUTOFF= system option has changed in SAS® 9.4 and beyond" for the recommended resolution.


SAS Fraud Management 6.1 Running on Base SAS® 9.4M6 (TS1M6): 

Impacted Areas

Batch jobs, models, and rules that use two-digit year formats are impacted by this issue.

Instructions

  1. Set the YEARCUTOFF property on each of the servers with a SAS installation (ODE, Metadata, Rules server, and possibly others, depending on your configuration) in your sasv9_local.cfg file.

    <SASHome>/SASFoundation/9.4/sasv9_local.cfg

    /* This config file contains user-specific configuration options that override the installation default values. This file is left intact during the installation process, so modifications to this file remain after SAS Service Pack upgrades to the SAS system.

    However, the default config file, sasv9.cfg, is not generated during SAS Service Pack upgrades to the SAS system. Therefore, any user modifications made there are overwritten in the upgrade process.

    After applying a SAS Service Pack, you should compare the backed-up version of the configuration file with the newly generated version. You are encouraged to copy any configuration changes that you want to keep to this file instead of sasv9.cfg so that they can be retained after the installation of further SAS Service Packs. */

    -YEARCUTOFF 1940

  2. Set this property to 1940 in ose.properties:

    #

    # SAS

    #

    SAS_CWD = ${LOGS_DIR}

    SAS_CMD = ${SAS_ROOT}/bin/sas_en -memsize MAX -nodms -logparm write=immediate -sysin "${SERVER_HOME}/bin/jose.sas"

    YEARCUTOFF = 1926

    SAS_OPTIONS = linesize=max mlogic mprint mprintnest nocenter nodate nonumber noovp pagesize=max source yearcutoff=${YEARCUTOFF} DSOPTIONS=NOSTMTID CGOPTIMIZE=0

    SAS_SHM_KEY = 5018

  3. Set this property to 1940 during ODE and TAS server start-up in functions.sh under the init_common_env function:

    function init_common_env

    {

        PROGRAM_DIR="$(absolute_path ${PROGRAM_NAME:?})"

        PROGRAM_NAME="${PROGRAM_NAME##*(?)/}"

        : ${SERVER_HOME:="$(absolute_path ${PROGRAM_DIR:?}/..)"}

        dir_writeable "${CONFIG_DIR:="${SERVER_HOME:?}/etc"}"       "CONFIG_DIR="

        dir_writeable "${LOGS_DIR:="${SERVER_HOME:?}/logs"}"        "LOGS_DIR="

        dir_writeable "${ARCHIVE_DIR:="${SERVER_HOME:?}/archive"}"  "ARCHIVE_DIR="

        dir_writeable "${TMPDIR:="${LOGS_DIR:?}"}"                    "TMPDIR="

        if [[ -z "${LIB_DIR}" && -d "${SERVER_HOME:?}/lib" ]] ; then

            LIB_DIR="${SERVER_HOME:?}/lib"

        fi

        file_executable "${JAVA:="${JAVA_HOME:?}/bin/java"}"        "JAVA="

        : ${ARCHIVE_COUNT_LIMIT:="30"}

        : ${JAVA_HEAP:="4G"}

        : ${JAVA_YOUNG_HEAP:=512M}

        : ${DATE_TIME:=$(date +\"%y%b%d_%H%M%S%Z\")}

        : ${ASCII_ENCODING:="ISO8859_1"}

        : ${EBCDIC_ENCODING:="cp1047"}

        : ${YEARCUTOFF:="1926"}

        TMP="${TMPDIR:?}/.${PROGRAM_NAME:?}.tmp.$$"

        echo >${TMP:?}

        trap "rm -f ${TMP:?}" 0 1 2 3 15

        if [ -n "${LIB_DIR}" ] ; then

            CLASS_DIRS="${CLASS_DIRS}:${LIB_DIR}"

        fi

        CLASSPATH="$CLASSPATH:$(check_dir ${CONFIG_DIR:?} CONFIG_DIR=)"

        init_os_env

        init_jvm_env

        OPTS="$OPTS $(assertion_opts)"

        OPTS="$OPTS $(encoding_opts)"

    }

  4. Restart all servers where the configuration and functions file changes are made.

Future Expectations 

SAS will not provide additional code changes as these versions are in Limited Support. See SAS KB0041792, "The default value for the YEARCUTOFF= system option has changed in SAS® 9.4 and beyond" for the recommended resolution.


SAS® Fraud Management 3.3M1, SAS® Fraud Management 4.1M0, SAS® Fraud Management 4.3M0, and SAS® Fraud Management 4.4M1

Impacted Areas

Batch jobs, models, and rules that use two-digit year formats are impacted by this issue.

Instructions

  1. Set the YEARCUTOFF property on each of the servers with a SAS installation (ODE, Metadata, Rules server, and possibly others, depending on your configuration) in your sasv9_local.cfg file:

    <SASHome>/SASFoundation/9.4/sasv9_local.cfg


    /* This config file contains user-specific configuration options that override the installation default values. This file is left intact during the installation process, so modifications to this file remain after SAS Service Pack upgrades to the SAS system.

    However, the default config file, sasv9.cfg, is not generated during SAS Service Pack upgrades to the SAS system. Therefore, any user modifications made there are overwritten in the upgrade process.

    After applying a SAS Service Pack, you should compare the backed up version of the configuration file with the newly generated version. You are encouraged to copy any configuration changes that you want to keep to this file instead of sasv9.cfg so that they can be retained after the installation of further SAS Service Packs. */

    -YEARCUTOFF 1940

  2. Set this property to 1940 in ose.properties:

    #

    # SAS

    #

    SAS_CWD = ${LOGS_DIR}

    SAS_CMD = ${SAS_ROOT}/bin/sas_en -memsize MAX -nodms -logparm write=immediate -sysin "${SERVER_HOME}/bin/jose.sas"

    YEARCUTOFF = 1926

    SAS_OPTIONS = linesize=max mlogic mprint mprintnest nocenter nodate nonumber noovp pagesize=max source yearcutoff=${YEARCUTOFF} DSOPTIONS=NOSTMTID CGOPTIMIZE=0

    SAS_SHM_KEY = 5018

     

  3. Set this property to 1940 during ODE and TAS server start-up in functions.sh under the init_common_env function:

    function init_common_env

    {

        PROGRAM_DIR="$(absolute_path ${PROGRAM_NAME:?})"

        PROGRAM_NAME="${PROGRAM_NAME##*(?)/}"

     

        : ${SERVER_HOME:="$(absolute_path ${PROGRAM_DIR:?}/..)"}

        dir_writeable "${CONFIG_DIR:="${SERVER_HOME:?}/etc"}"       "CONFIG_DIR="

        dir_writeable "${LOGS_DIR:="${SERVER_HOME:?}/logs"}"        "LOGS_DIR="

        dir_writeable "${ARCHIVE_DIR:="${SERVER_HOME:?}/archive"}"  "ARCHIVE_DIR="

        dir_writeable "${TMPDIR:="${LOGS_DIR:?}"}"                    "TMPDIR="

        if [[ -z "${LIB_DIR}" && -d "${SERVER_HOME:?}/lib" ]] ; then

            LIB_DIR="${SERVER_HOME:?}/lib"

        fi

        file_executable "${JAVA:="${JAVA_HOME:?}/bin/java"}"        "JAVA="

        : ${ARCHIVE_COUNT_LIMIT:="30"}

        : ${JAVA_HEAP:="4G"}

        : ${JAVA_YOUNG_HEAP:=512M}

        : ${DATE_TIME:=$(date +\"%y%b%d_%H%M%S%Z\")}

        : ${ASCII_ENCODING:="ISO8859_1"}

        : ${EBCDIC_ENCODING:="cp1047"}

        : ${YEARCUTOFF:="1926"}

        TMP="${TMPDIR:?}/.${PROGRAM_NAME:?}.tmp.$$"

        echo >${TMP:?}

        trap "rm -f ${TMP:?}" 0 1 2 3 15

        if [ -n "${LIB_DIR}" ] ; then

            CLASS_DIRS="${CLASS_DIRS}:${LIB_DIR}"

        fi

        CLASSPATH="$CLASSPATH:$(check_dir ${CONFIG_DIR:?} CONFIG_DIR=)"

        init_os_env

        init_jvm_env

        OPTS="$OPTS $(assertion_opts)"

        OPTS="$OPTS $(encoding_opts)"

    }

  4. Restart all servers where the configuration and function file changes are made.

Future Expectations

SAS will not provide additional code changes as these versions are in Limited Support. See SAS KB0041792, "The default value for the YEARCUTOFF= system option has changed in SAS® 9.4 and beyond" for the recommended resolution.