Dear SAS Folks, The following part of my existing Retail Datawarehouse SAS script in production throws an error/warning when executed as mentioned below:
%let STORE_ID=%sysfunc(sysget(STORE_ID));
%put &STORE_ID;
LOG Message:
WARNING: An argument to the function SYSGET referenced by the %SYSFUNC or %QSYSFUNC macro function is out of range.
The system runs on Unix environment where basically a shell script executes the underlying SAS scripts. I am finding it dificult to understand the concept of operating variable as I read through the documentation for sysget function.
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000245954.htm
In the above link, i noticed this point-"If the value of the operating environment variable is truncated or the variable is not defined in the operating environment, SYSGET displays a warning message in the SAS log."
Please kindly advice a fix to my problem.
Use the built in macro function %SYSGET() instead of trying use %SYSFUNC() to call the data step function SYSGET().
%let store_id=%sysget(STORE_ID);
You could also try using a PIPE to read the output of an echo command, but that would not be operating system independent and requires that PIPE engine access is allowed.
data _null_;
infile 'echo $STORE_ID' pipe;
input;
call symputx('store_id',_infile_);
run;
Remember that on Unix environment variable names are case sensitive so STORE_ID is a different variable than store_id.
@Tom Thank you, I will try sincerely. Please accept my apologies for the duplication here and in SAS L.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.