Macro XSET (from Fraktal SAS Programming)
Version vom 12. August 2014, 09:26 Uhr von Wolf-Dieter Batz (Diskussion | Beiträge)
What it does
This SAS Macro transfers the environment from the particular operating system to SAS Macro variables.
- Characters "not appreciated" by SAS are removed from variable values.
- If a specific variable name is supplied, this will be the only one transferred.
Code executed | Function performed |
---|---|
|
Start Macro definition with name and positional parameter xvar |
|
Open source for text data of type pipe pointing to OS command |
|
Start datastep run group to create a view |
|
Declare variables xvar and xval by length in bytes |
|
Utilize data stream from data source path |
|
Define structure of data stream path with variables xvar and xval |
|
Remove unwanted characters from variable xvar |
|
Specify branch on macro parameter xvar for using code segment |
|
Restrict properties kept to name in macro parameter xvar |
|
End branch on macro parameter xvar |
|
End data step run group |
|
Initialize SQL interpreter in silent mode |
|
Query values in data field xvar |
|
Generate macro variable xvar_l from blank-separated list-of-values |
|
Use data step view ecotope |
|
Trigger immediate query execution |
|
Terminate SQL interpreter |
|
|
|
Start datastep run group without creating a dataset |
|
|
|
Transfer variable values to symbol table |
|
End data step run group |
|
Close source for text data |
|
End Macro definition with name |
How it is done
- The Macro first defines the OS command "SET" as text data source (SAS file reference) of type "PIPE" that delivers a dynamic two-column matrix with delimiter "=" upon reference to the fileref.
- This fileref is then used to dynamically "populate" a "data step view" that serves as data source for subsequent processing.
- From the left side of the matrix accessed the SQL procedure obtains the names of the OS environment variables and stores them as blank-separated list into a macro variable for use later on.
- Finally a data step with name "_NULL_" is used to write the two-variable dataset delivered by the data step view into the global symbol table.