<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Running several SAS Program Files at once in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313559#M68154</link>
    <description>&lt;P&gt;Use Include statements &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000214504.htm" target="_blank"&gt;http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000214504.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 22 Nov 2016 18:42:15 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2016-11-22T18:42:15Z</dc:date>
    <item>
      <title>Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313552#M68151</link>
      <description>&lt;P&gt;I have several SAS programs in a folder that I run in sequence. &amp;nbsp;However I would like to create a batch program to run these SAS program files one-by-one instead of manually.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How would I code this? &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Jack&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 18:21:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313552#M68151</guid>
      <dc:creator>Jack1</dc:creator>
      <dc:date>2016-11-22T18:21:39Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313559#M68154</link>
      <description>&lt;P&gt;Use Include statements &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000214504.htm" target="_blank"&gt;http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000214504.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 18:42:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313559#M68154</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2016-11-22T18:42:15Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313569#M68157</link>
      <description>&lt;P&gt;It sounds like you want to fully automate the process but keep the code separated, possibly for individual logs/troubleshooting/future changes? Regardless, I think what I would do is create a batch file and add it to the Windows task scheduler.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The batch file (.bat) would look something like this and would generate a date stamped log for each run,&lt;/P&gt;&lt;PRE&gt;Start/w "Auto Metrics" "C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" -CONFIG "C:\Program Files\SASHome\SASFoundation\9.4\nls\en\sasv9.cfg" -sysin "Z:\blahblahblah\auto_metrics_code.sas" -log "Z:\blahblahblah\auto_metrics_log_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt" -print "Z:\blahblahblah\auto_metrics_log_%date:~-4,4%%date:~-7,2%%date:~-10,2%.lst"

Start/w "Auto Metrics" "C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" -CONFIG "C:\Program Files\SASHome\SASFoundation\9.4\nls\en\sasv9.cfg" -sysin "Z:\blahblahblah\auto_metrics_code_STEP2.sas" -log "Z:\blahblahblah\auto_metrics_log_STEP2_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt" -print "Z:\blahblahblah\auto_metrics_log_STEP2_%date:~-4,4%%date:~-7,2%%date:~-10,2%.lst"

Start/w "Auto Metrics" "C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" -CONFIG "C:\Program Files\SASHome\SASFoundation\9.4\nls\en\sasv9.cfg" -sysin "Z:\blahblahblah\auto_metrics_code_STEP3.sas" -log "Z:\blahblahblah\auto_metrics_log_STEP3_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt" -print "Z:\blahblahblah\auto_metrics_log_STEP3_%date:~-4,4%%date:~-7,2%%date:~-10,2%.lst"&lt;/PRE&gt;&lt;P&gt;Once you have the batch file working, just schedule it in the task scheduler at whatever cadence you see fit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A title="SAS Batch" href="http://support.sas.com/documentation/cdl/en/hostwin/67962/HTML/default/viewer.htm#p16esisc4nrd5sn1ps5l6u8f79k6.htm" target="_blank"&gt;http://support.sas.com/documentation/cdl/en/hostwin/67962/HTML/default/viewer.htm#p16esisc4nrd5sn1ps5l6u8f79k6.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 19:38:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313569#M68157</guid>
      <dc:creator>TheShark</dc:creator>
      <dc:date>2016-11-22T19:38:44Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313575#M68162</link>
      <description>&lt;P&gt;If you are running your programs on a SAS server you may want to consider using the batch and scheduling SAS jobs capabilities of SAS Management Console. It takes care of constructing correct SAS batch command lines without you having to construct them manually.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 20:01:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313575#M68162</guid>
      <dc:creator>SASKiwi</dc:creator>
      <dc:date>2016-11-22T20:01:36Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313580#M68166</link>
      <description>&lt;P&gt;On UNIX, I'd do&lt;/P&gt;
&lt;PRE&gt;sas sas1.sas&amp;amp;
sas sas2.sas&amp;amp;
sas sas3.sas&amp;amp;
wait&lt;/PRE&gt;
&lt;P&gt;The wait command will only finish once all the background jobs have finished.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 20:16:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313580#M68166</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2016-11-22T20:16:28Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313818#M68247</link>
      <description>&lt;P&gt;Great thanks.&lt;/P&gt;</description>
      <pubDate>Wed, 23 Nov 2016 15:53:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/313818#M68247</guid>
      <dc:creator>Jack1</dc:creator>
      <dc:date>2016-11-23T15:53:08Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/488685#M127408</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have another use case for this question.&amp;nbsp; I have a set of SAS programs that do share any dependencies that I wish to run in parallel.&amp;nbsp; At the end of the set, I wish to trap the return code from each job and fail the parent process if any of the child processes report an error.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I came up with the attached script, but it does not work in the way I need.&amp;nbsp; Per the man page for wait, once the child process terminates, the wait statement refers to a terminated process and Unix (Solaris in my case) returns a zero.&amp;nbsp; If I order the scripts in order the the amount of execution time required, then it works but I cannot predict precisely the completion order for all the steps in the job.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any suggestions on how to get this to work without pre-knowledge of the order of completion?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this example, the script runs 5 SAS programs.&amp;nbsp; Each one just sleeps for a set number of seconds and then aborts with a return code equal to the number of seconds the program sleeps.&amp;nbsp; The number of seconds is in the name of the program.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance for your help!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;#!/bin/sh

# Test the wait command

echo "Test RC Start "  `date`
 
SASEXE=/apps/sasconfig/Lev1/SASApp/sas.sh
UTC=\"`date -u +%Y-%m-%dT%H:%M:%S.000+0000`\"
TESTsrc=/data/testrc

# Launch TestRC jobs

$SASEXE -sysin $TESTSRC/test_rc_50.sas -set utc $UTC -sysparm none -log $TESTSRC/test_rc_50.log -noterminal -logparm WRITE=IMMEDIATE &amp;amp;
test_50_pid=$!

$SASEXE -sysin $TESTSRC/test_rc_40.sas -set utc $UTC -sysparm none -log $TESTSRC/test_rc_40.log -noterminal -logparm WRITE=IMMEDIATE &amp;amp;
test_40_pid=$!

$SASEXE -sysin $TESTSRC/test_rc_30.sas -set utc $UTC -sysparm none -log $TESTSRC/test_rc_30.log -noterminal -logparm WRITE=IMMEDIATE &amp;amp;
test_30_pid=$!

$SASEXE -sysin $TESTSRC/test_rc_20.sas -set utc $UTC -sysparm none -log $TESTSRC/test_rc_20.log -noterminal -logparm WRITE=IMMEDIATE &amp;amp;
test_20_pid=$!

$SASEXE -sysin $TESTSRC/test_rc_10.sas -set utc $UTC -sysparm none -log $TESTSRC/test_rc_10.log -noterminal -logparm WRITE=IMMEDIATE &amp;amp;
test_10_pid=$!

# Wait for all programs to complete

wait $test_50
test_50_rc=$?

wait $test_40
test_40_rc=$?

wait $test_30
test_30_rc=$?

wait $test_20
test_20_rc=$?

wait $test_10
test_10_rc=$?

#  Staging Phase 1 programs are complete - display all return codes

echo "Test RC Complete "  `date`
echo " "

echo "Test PID and RC Return Codes"
echo "__________________________________________"
echo "  test_50   $test_50_pid   $test_50_rc    "
echo "  test_40   $test_40_pid   $test_40_rc    "
echo "  test_30   $test_30_pid   $test_30_rc    "
echo "  test_20   $test_20_pid   $test_20_rc    "
echo "  test_10   $test_10_pid   $test_10_rc    "

#  Set a global return code 

if (( test_50_rc          &amp;lt;= 1 &amp;amp;&amp;amp;  \
      test_40_rc          &amp;lt;= 1 &amp;amp;&amp;amp;  \
      test_30_rc          &amp;lt;= 1 &amp;amp;&amp;amp;  \
      test_20_rc          &amp;lt;= 1 &amp;amp;&amp;amp;  \
      test_10_rc          &amp;lt;= 1     )); then
  echo "All programs completed sucessfuly"
  rval=0
else
  echo "There was an problem in the test process.  Kindly review the logs for details"
  rval=2
fi

echo "Test RC Ending "  `date`
echo "Return Code = $rval"
exit $rval
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Aug 2018 19:15:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/488685#M127408</guid>
      <dc:creator>KenMac</dc:creator>
      <dc:date>2018-08-21T19:15:50Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/488734#M127427</link>
      <description>&lt;P&gt;Parallel processing is much more easily achieved if you have SAS/CONNECT available to you. If you do then you can do it all in your SAS code and don't need a controlling script at all.&lt;/P&gt;</description>
      <pubDate>Tue, 21 Aug 2018 22:25:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/488734#M127427</guid>
      <dc:creator>SASKiwi</dc:creator>
      <dc:date>2018-08-21T22:25:46Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/488785#M127440</link>
      <description>&lt;P&gt;This is a test I just set up on AIX with ksh and bash:&lt;/P&gt;
&lt;P&gt;Script testback1:&lt;/P&gt;
&lt;PRE&gt;sleep 1
exit 1
&lt;/PRE&gt;
&lt;P&gt;Script testback2:&lt;/P&gt;
&lt;PRE&gt;sleep 2
exit 2
&lt;/PRE&gt;
&lt;P&gt;Script testback:&lt;/P&gt;
&lt;PRE&gt;./testback1&amp;amp;
tb1=$!
./testback2&amp;amp;
tb2=$!
wait $tb2
rc2=$?
wait $tb1
rc1=$?

echo RC1=$rc1
echo RC2=$rc2
&lt;/PRE&gt;
&lt;P&gt;You can see that I check in reverse sequence, so the "shorter" script has already finished when I test the "longer" one.&lt;/P&gt;
&lt;P&gt;The result of running testback is this:&lt;/P&gt;
&lt;PRE&gt;$ ./testback
RC1=1
RC2=2
&lt;/PRE&gt;
&lt;P&gt;So you can see that the returncodes are dutifully captured. If I reverse the testing order, the result stays the same.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So I think your basic approach is correct, and your test_XX_rc variables should hold the correct return codes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BTW I would use&lt;/P&gt;
&lt;PRE&gt;/apps/sasconfig/Lev1/SASApp/BatchServer/sasbatch.sh&lt;/PRE&gt;
&lt;P&gt;for batch jobs, and I would never tolerate a return code ne 0. SAS programs that have a WARNING have failed, period.&lt;/P&gt;</description>
      <pubDate>Wed, 22 Aug 2018 07:01:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/488785#M127440</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-08-22T07:01:53Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/489063#M127576</link>
      <description>You recommend using 'sasbatch.sh' - any particular reason?&lt;BR /&gt;</description>
      <pubDate>Wed, 22 Aug 2018 21:49:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/489063#M127576</guid>
      <dc:creator>KenMac</dc:creator>
      <dc:date>2018-08-22T21:49:04Z</dc:date>
    </item>
    <item>
      <title>Re: Running several SAS Program Files at once</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/489123#M127612</link>
      <description>&lt;P&gt;sasbatch.sh is specifically designed to run batch jobs. It is what scheduling through SMC uses.&lt;/P&gt;</description>
      <pubDate>Thu, 23 Aug 2018 03:59:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Running-several-SAS-Program-Files-at-once/m-p/489123#M127612</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-08-23T03:59:25Z</dc:date>
    </item>
  </channel>
</rss>

