Have you ever needed to run code based on the client application that you are using? Or have you needed to know the version of SAS® software that you are running and the operating system that you are running it on? This blog post describes a few automatic macro variables that can help with gathering this information.
You can use the &_CLIENTAPP macro variable to obtain the name of the client application. Here are some details:
- Referencing &_CLIENTAPP in SAS® Studio returns a value of SAS Studio
- Referencing &_CLIENTAPP in SAS® Enterprise Guide® returns a value of ‘SAS Enterprise Guide’
Note: The quotation marks around SAS Enterprise Guide are part of the value.
You can use the &SYSPROCESSNAME macro variable to obtain the name of the current SAS process. Here are some details:
- Referencing &SYSPROCESSNAME interactively within the DMS window returns a value of DMS Process
- Referencing &SYSPROCESSNAME in the SAS windowing environment of your second SAS session returns a value of DMS Process (2)
- Referencing &SYSPROCESSNAME in SAS Enterprise Guide or SAS Studio returns a value of Object Server
- Referencing &SYSPROCESSNAME in batch returns the word Program followed by the name of the program being run (for example: Program 'c:test.sas')
Note: For information about other techniques for retrieving the program name, see SAS Note 24301: “How to retrieve the program name that is currently running in batch mode or interactively.”
The following code illustrates how you can use both of these macro variables to check which client application you are using and display a message in the SAS log based on that result:
%macro check; %if %symexist(_clientapp) %then %do; %if &_clientapp = SAS Studio %then %do; %put Running SAS Studio; %end; %else %if &_clientapp= 'SAS Enterprise Guide' %then %do; %put Running SAS Enterprise Guide; %end; %end; %else %if %index(&sysprocessname,DMS) %then %do; %put Running in Display Manager; %end; %else %if %index(&sysprocessname,Program) %then %do; %let prog=%qscan(%superq(sysprocessname),2,%str( )); %put Running in batch and the program running is &prog; %end; %mend check; %check
SAS Session Run Mode or Server Type
Another helpful SAS read-only automatic macro variable is &SYSPROCESSMODE. You can use &SYSPROCESSMODE to obtain the current SAS session run mode or server type name. Here is a list of possible values:
• SAS Batch Mode
• SAS/CONNECT Session
• SAS DMS Session
• SAS IntrNet Server
• SAS Line Mode
• SAS Metadata Server
• SAS OLAP Server
• SAS Pooled Workspace Server
• SAS Share Server
• SAS Stored Process Server
• SAS Table Server
• SAS Workspace Server
Operating System and Version of SAS
Having the information detailed above is helpful, but you might also need to know the operating system and exact version of SAS that you are running. The following macro variables help with obtaining this information.
You can use &SYSSCP and &SYSSCPL to obtain an abbreviation of the name of your operating system. Here are some examples:
For a complete list of values, see the “SYSSCP and SYSSCPL Automatic Macro Variables” section of SAS® 9.4 Macro Language: Reference, Fourth Edition.
&SYSVLONG4 is the most informative of the macro variables that provide SAS release information. You can use it to obtain the release number and maintenance level of SAS as well as a four-digit year. Here is an example:
This code would print something similar to the following in the log:
Here is what this output means:
SAS release: 9.04.01
Maintenance level: M3
Ship Event date: D06292015
I hope that some of the tools described above are useful to you for obtaining information about your SAS environment. If you have any questions, please contact SAS Technical Support, and we will be happy to assist you. Thank you for using SAS!