I needed to extract some SAS identity related metadata today using the Metacoda Identity Sync Utils on GitHub. That repository contains some macros we publish to help our customers and partners when they need to get hold of some identity related metadata in SAS tables for custom Identity Sync processing or other reporting requirements (if the standard SAS %MDUEXTR macro doesn’t meet their needs).
Since I use these macros on a semi-regular basis, I decided to make them available to the SAS platform as autocall macros so I could just use them in my SAS code without having to remember where they were stored and %include them. I thought I’d post some brief notes on how to set it up in case you want to do the same (and for when I need it on another SAS platform installation).
Decide on a file system location on the SAS server where you want to clone the GitHub repository and make the macros available from. I chose /opt/sas94m6/metacoda-idsync-utils. Login and git clone the repo:
ssh sas@sas94m6srv
cd /opt/sas94m6
git clone https://github.com/Metacoda/idsync-utils.git metacoda-idsync-utils
# or: git clone git@github.com:Metacoda/idsync-utils.git metacoda-idsync-utils
Edit the sasv9_usermods.cfg file for the SAS Application Server where you want to make the macros available as autocalls:
vi /opt/sas94m6/config/Lev1/SASApp/sasv9_usermods.cfg
Add the necessary SAS system config option to sasv9_usermods.cfg to add the /opt/sas94m6/metacoda-idsync-utils/sasautos directory to the autocall search path. I used -insert to add the directory to the front of the search path. You might instead use -append to add it to the end of the search path (we name all our macros with a metacoda prefix so they shouldn’t conflict with any other autocall macros you have):
-insert sasautos "/opt/sas94m6/metacoda-idsync-utils/sasautos"
Save the changes and test. All newly spawned SASApp servers should now have access to the Metacoda Identity Sync Utils macros so you can test them in code like so:
%metacodaAuthDomainExtract(table=work.authDomains)
options ls=max ps=max;
proc print data=work.authDomains;
var name desc outboundOnly trustedOnly metadataCreatedUTC metadataUpdatedUTC;
format name $60. desc $60.;
run;
If you have any comments or questions on this topic please post them below. Additionally, if you have any suggestions for improvements to the macros, please post an issue on the GitHub repo (or send us a pull request).