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:
Models and rules that use two-digit year formats are impacted by this issue.
#
# 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
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)"
}
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.
Models and rules that use two-digit year formats are impacted by this issue.
#
# 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
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)"
}
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.
Batch jobs, models, and rules that use two-digit year formats are impacted by this issue.
#
# 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
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)"
}
Restart all servers where the configuration and functions file changes are made.
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.
Batch jobs, models, and rules that use two-digit year formats are impacted by this issue.
#
# 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
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)"
}
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.