BookmarkSubscribeRSS Feed
JHenkel
Calcite | Level 5

I wish to store a module defined in proc iml in file definition.sas and later load it by including the file. 

definition.sas looks like this:

proc iml;
	start f_w_submit(x,y);
		create plotting var {x y}; append; close plotting;
		submit;
		 proc sgplot data=plotting;
		 	series x=x y=y / markers;
		 run;
		endsubmit;
		call delete("plotting");
	finish f_w_submit;

	store module=_all_;
quit;

Then in another file I wish to use

 

%include "C:\definition.sas";

proc iml;

	load module=(f_w_submit);

	/* Use the function f_w_submit*/

quit;

But this does not work. I get a warning saying

WARNING: Module F_W_SUBMIT definition is left incomplete.

and the function is neither compiled nor stored. If I comment out the submit block, everything works fine. What am I doing wrong?

 

I am on SAS 9.2. with SAS/IML 9.22.

 

1 REPLY 1
Rick_SAS
SAS Super FREQ

Your program works in modern versions of SAS. It might have been an issue in 9.22, but I don't know. SAS 9.22 shipped in early 2010; 

there have been 7 releases of SAS/IML since 9.22.

 

To work around the issue, don't use the %INCLUDE statement.  Instead, use the RESET STORAGE function to point to the storage library, as discussed in the article "Storing and Loading Modules."   I don't have 9.22 to try it, but I think it will work.

 

BTW,  in SAS 9.4, the SERIES subroutine was introduced, which does what you are trying to do. For examples of SAS/IML graphics in modern releases, see the documentation examples.  If possible, I highly recommend upgrading to SAS 9.4 or later.

 

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!

Register now

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 1 reply
  • 1389 views
  • 1 like
  • 2 in conversation