SAS Scripts - Better Exit Codes

Normally, if a SAS script generates any warnings the exit code is 1, which is generally interpreted as an error by the terminal. To avoid this, we can run SAS through a batch script which converts exit code 1 to 0 (meaning OK).

The batch script can be found here.

:: Name:    sascli.cmd
:: Purpose: Run SAS scripts with more generous exit codes. Normally, if a SAS
::          script runs with warnings the exit code is 1 (interpreted as an
::          error). This script converts exit code 1 to 0 (meaning OK).
::          sas: 0 -> sascli: 0
::          sas: 1 -> sascli: 0
::          sas: i -> sascli: i, i != 0,1
::          sascli with no arguments -> sascli: 1
:: Author:  Peter Alping
:: Source:  https://gitlab.com/snippets/1948149
:: Updated: 2020-10-23
::
:: Example use:
:: sascli path/to/script.sas -nosplash -icon -log path/to/script.log

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

:: If no arguments exit with error code 1
IF "%~1" == "" ( EXIT /B 1 )

:: Run SAS with all command-line arguments and wait for it to finish
START /WAIT "sas" sas %*

:: Set exitcode to what is returned by SAS
SET exitcode=%ERRORLEVEL%

:: If only warnings (ERRORLEVEL==1) set exitcode to 0
IF %exitcode% == 1 (
    SET exitcode=0
    @ECHO ON
    ECHO WARNING: SAS exited with WARNINGS, check the logs
    @ECHO OFF
)

:: Exit with exitcode
EXIT /B %exitcode%

More from Peter Alping
All posts