sasjs run¶
The sasjs run command enables developers to submit SAS code for execution from the commandline.
The log will be returned as a file in the current directory. The source file must have a ".sas" extension.
Note - an additional variable macro variable will be added by the adapter, with the value of the target appLoc and the filename (equivalent to %let _program=/My/AppLoc/runfilename.sas;). This is actually added as a session variable, so will not be visible in the logs.
Prerequisites¶
Before using this command, you will need to install the SASJS CLI and add a deployment target.
Syntax¶
<sourcecode> can be a local file path or a URL.
Additional arguments may include:
-
--log(alias-l) - The full or relative (to the folder in which the command is invoked) path to the log file being created. If ommitted, the log will be created in the current directory, with a timestamp. -
--source(alias-s) - Path to a JSON file that can be used to inject macro variables into the session. Useful for running existing programs in a "job like" fashion. The JSON file should have the following structure:{"macroVars": {"varname": "value", "var2": "val2"}}. This will result in the following code being injected into the session:
-
--target(alias-t) - the target environment in which to deploy the services. If not specified, default target will be used, mentioned insasjsconfig.json. The target can exist either in the local project configuration or in the global.sasjsrcfile. -
--compile(alias-c) - optional argument that is used to compile the program prior to execution. Useful for including dependent macros and includes. Seesasjs compile.
Using Github Urls¶
If using a URL from github, be sure to link to the raw version of the file, eg: https://raw.githubusercontent.com/sasjs/core/main/base/mf_getattrc.sas
As opposed to: https://github.com/sasjs/core/blob/main/base/mf_getattrc.sas
If you click the links above you will see the difference. Whenever <sourcecode> begins with http:// or https:// we simply fetch the contents from the URL - so the raw value should be SAS code and nothing else.
You can find the raw version by clicking on the 'raw' button when viewing the program on github (next to the 'blame' button)
Examples¶
Running some local SAS code:
# create minimal SAS program
cat > ./somecode.sas <<'EOL'
%put hello from SASjs;
EOL
# run the SAS code on the target
sasjs run somecode.sas -t myTarget
Running some SAS code from github:
sasjs run https://raw.githubusercontent.com/sasjs/template_jobs/master/includes/someprogram.sas -t viya
Log checking¶
The log this command receives is read for ERRORs, WARNINGs and the notes that flag a problem, and reported when there is anything in it. Pass --logcheck to fail the command on what the log says - a program can print ERROR and still return cleanly, which is the case this catches. See sasjs logcheck for the policy, the suppressions and the output formats.
Roadmap¶
We plan to support the following:
- keeping sessions alive
- extracting items from the session
If there are items you are looking for, or have problems / ideas, do raise an issue.