Macro XSET (from Fraktal SAS Programming)
Version vom 11. August 2014, 19:58 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 |
|
|
|
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 condition on macro parameter xvar for using code segment |
|
Conditionally executed code |
|
End condition on macro parameter xvar |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Start datastep run group |
|
|
|
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 macro 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.