Statistical programming, matrix languages, and more

Nested Do-Loops in proc IML

New Contributor
Posts: 3

Nested Do-Loops in proc IML

Hello all,

I am using SAS version 9.2 TS2 M3 & have a small question about the
following proc IML code.

proc iml;
do i=1 to 4;
print i;
do j=1 to 4;
print j;

When I run this code, the log file (see below) doesnt show the 'quit'
part, even though I submitted the entire code. The Editor window shows "Filename* PROC IML running".Submitting any additional code gives the following message:
"IML is currently suspended. To resume processing submitted statements
return to the Output window and enter either BOTTOM; FORWARD or END."

388 proc iml;
389 do i=1 to 4;
390 print i;
391 do j=1 to 4;
392 print j;
393 end;
394 end;

I have to explicitly enter an 'end' in command bar of Output window, after which the
following lines appear in the log file
395 quit;
NOTE: Exiting IML.
NOTE: PROCEDURE IML used (Total process time):
real time 23.03 seconds
cpu time 0.39 seconds

I have figured that it has something to do with the presence of 2 do
loops within each other.It works fine if I remove the 2nd do loop
(indexed by j).

Could someone please explain why this is happening & how I can correct

Thanks in advance,
SAS Employee
Posts: 94

Re: Nested Do-Loops in proc IML

I don't seem to be able to re-create your problem. From your explanation of what happened, it appears that something is happening in the SAS system to cause IML to suspend processing. I recommend you contact SAS Technical Support.
New Contributor
Posts: 3

Re: Nested Do-Loops in proc IML

Thank you for the reply. The problem is specific to my installation. A friend ran the code on his machine & he didnt run into this problem either. I have contacted SAS Tech Support.
New Contributor
Posts: 3

Re: Nested Do-Loops in proc IML

Just heard from the Tech Support. The solution is at and resolves the problem. Thanks for suggesting...
Ask a Question
Discussion stats
  • 3 replies
  • 2 in conversation