Hi, please help me create a UNIX module to run and rerun sas programs dependently. If sample1.sas fails will rerun and not continue will sample2.sas and sample3.sas
Look at the conditional operators in UNIX shells:
command1 && command2
means that command2 will only be run if command1 succeeds
command1 && command2 || command3
if command1 succeeds, run command2, else run command3
for loop structures in UNIX shells, see https://www.tutorialspoint.com/unix/unix-shell-loops.htm. You'll also find lots of other information for shell scripoting on that website.
I'd use a scheduler like LSF for a production system. Enterprise grade schedulers are built for handling such dependencies.
Thank you for you replies,really helpful. In the UNIX Script. create a loop to test the sas program is fail or success. If Fail sleep for a minute to check error. Script will rerun until success then go to next sas progran.
f=sasprogram
for f in saslist
do
sas sasdirectory/$f -log /sas_log/$f.$date.log
until [ $? -eq 0 ];
do
echo "Processing $f: job fail...\n"
echo "Please see error details" /sas_log/$f.$date.log
sleep 60 *1 minute
sas $sas_dir/$f -log $sas_log/$f.$dateparm.log
done
"Processing $f: job success...\n"
done
exit 0
I'd add a failsafe that exits with a non-zero return code after a certain number of repeats, to avoid an infinite loop.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.