DATA Step, Macro, Functions and more

Put statements to the log dynamically within datastep

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 9
Accepted Solution

Put statements to the log dynamically within datastep

I'm running a long loop and I want to update the log every now and again so I can keep track of it's progress however Enterprise guide 5.1 running on a Linux server will only output once the datastep has completed, is there an option to force my put statements to output to the log when they happen?

 

Thanks

 

data _null_;
	do i = 1 to 10;
		do y = 1 to 100000000;
		end;
		put i;
	end;
run;

Accepted Solutions
Solution
‎02-13-2017 08:31 AM
SAS Super FREQ
Posts: 708

Re: Put statements to the log dynamically within datastep

Hi

 

Have a look at this blog entry Tracking progress in your program with SAS Enterprise Guide: another trick by @ChrisHemedinger

 

It shows how to use the DOSUBL functtion together with the SYSECHO statement. Together they will do what you need.

 

Bruno

View solution in original post


All Replies
Super User
Posts: 10,023

Re: Put statements to the log dynamically within datastep

putlog i ;
Super User
Posts: 7,766

Re: Put statements to the log dynamically within datastep

Even with logparm="write=immediate", the putlog entries will only appear after the data step has finished (SAS 9.2, EG 7.11).

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Solution
‎02-13-2017 08:31 AM
SAS Super FREQ
Posts: 708

Re: Put statements to the log dynamically within datastep

Hi

 

Have a look at this blog entry Tracking progress in your program with SAS Enterprise Guide: another trick by @ChrisHemedinger

 

It shows how to use the DOSUBL functtion together with the SYSECHO statement. Together they will do what you need.

 

Bruno

Occasional Contributor
Posts: 9

Re: Put statements to the log dynamically within datastep

[ Edited ]
Posted in reply to Bruno_SAS

I like it, this line does what I want;;

 

with a set statement;
rc = dosubl(cats('SYSECHO "OBS N=',_n_,'";'));

 

in a loop;

rc = dosubl(cats('SYSECHO "OBS N=',i,'";'));

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 180 views
  • 2 likes
  • 4 in conversation