<?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 Terminate execution of program based on a timeout in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Terminate-execution-of-program-based-on-a-timeout/m-p/548556#M152111</link>
    <description>&lt;P&gt;Hi experts,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a sas program that executes a bash in Linux:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test;

%do i = 1 %to 10;

data _null_;

extract = "/opt/tst/extract.sh" "xml&amp;amp;i.";
call system (extract);
run;
 
%end;

%mend;

%test;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Is there any way I can skip/terminate the current bash program when the interation takes more than x seconds?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;For example:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;timeout =40 seconds&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Iteration =1&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;command took 30 seconds to complete&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Iteration = 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;command is still executing and it has reached 40 seconds&lt;/P&gt;&lt;P&gt;terminate bash execution&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;iteration = 3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;command took 35 seconds to complete&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any inputs?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;</description>
    <pubDate>Thu, 04 Apr 2019 17:07:26 GMT</pubDate>
    <dc:creator>bsas94</dc:creator>
    <dc:date>2019-04-04T17:07:26Z</dc:date>
    <item>
      <title>Terminate execution of program based on a timeout</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Terminate-execution-of-program-based-on-a-timeout/m-p/548556#M152111</link>
      <description>&lt;P&gt;Hi experts,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a sas program that executes a bash in Linux:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test;

%do i = 1 %to 10;

data _null_;

extract = "/opt/tst/extract.sh" "xml&amp;amp;i.";
call system (extract);
run;
 
%end;

%mend;

%test;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Is there any way I can skip/terminate the current bash program when the interation takes more than x seconds?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;For example:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;timeout =40 seconds&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Iteration =1&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;command took 30 seconds to complete&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Iteration = 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;command is still executing and it has reached 40 seconds&lt;/P&gt;&lt;P&gt;terminate bash execution&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;iteration = 3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;command took 35 seconds to complete&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any inputs?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;</description>
      <pubDate>Thu, 04 Apr 2019 17:07:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Terminate-execution-of-program-based-on-a-timeout/m-p/548556#M152111</guid>
      <dc:creator>bsas94</dc:creator>
      <dc:date>2019-04-04T17:07:26Z</dc:date>
    </item>
    <item>
      <title>Re: Terminate execution of program based on a timeout</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Terminate-execution-of-program-based-on-a-timeout/m-p/548795#M152227</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/114275"&gt;@bsas94&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Use the linux timeout command.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As an example I made 2 small scripts, test1.sh (takes 10 seconds&amp;nbsp; to finish, and test2.sh (takes 20), and call them with the following macro, that is similar to yours with logging of iteration time added. The timeout command returns 124 if the command is timed out, otherwise the return code from the executed command.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test;
	%do Iteration = 1 %to 2;
		%let runstart = %sysfunc(time());
		%sysexec timeout 15s sh "/sasdata/prod/system/temp/test&amp;amp;Iteration..sh";
		%let runtime = %sysfunc(round(%sysevalf(%sysfunc(time())-&amp;amp;runstart)));
		%if &amp;amp;sysrc=124 %then %put &amp;amp;=Iteration - Command terminated after &amp;amp;runtime seconds;
		%else %put &amp;amp;=Iteration - Command completed in &amp;amp;runtime seconds;
	%end;
%mend;
%test;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;69    %macro test;
70        %do Iteration = 1 %to 2;
71            %let runstart = %sysfunc(time());
72            %sysexec timeout 15s sh "/sasdata/prod/system/temp/test&amp;amp;Iteration..sh";
73            %let runtime = %sysfunc(round(%sysevalf(%sysfunc(time())-&amp;amp;runstart)));
74            %if &amp;amp;sysrc=124 %then %put &amp;amp;=Iteration - Command terminated after &amp;amp;runtime seconds;
75            %else %put &amp;amp;=Iteration - Command completed in &amp;amp;runtime seconds;
76        %end;
77    %mend;
78    %test;
ITERATION=1 - Command completed in 10 seconds
ITERATION=2 - Command terminated after 15 seconds
&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;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Apr 2019 14:56:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Terminate-execution-of-program-based-on-a-timeout/m-p/548795#M152227</guid>
      <dc:creator>ErikLund_Jensen</dc:creator>
      <dc:date>2019-04-05T14:56:55Z</dc:date>
    </item>
  </channel>
</rss>

