BookmarkSubscribeRSS Feed
deleted_user
Not applicable
SAS uses the "*" for comments.
IML uses the "*" for matrix multiplication.

How can I use matrix multiplication in SAS/IML? It makes the text after the "*" purple indicating a comment???
-- Note: I am using Proc IML in a macro. Shouldn't matter though as the "*" is for comments in macros, just as in base SAS.

Please also email me directly your answers!! (steveseoul@yahoo.com)

Thanks,

Steve
2 REPLIES 2
Hutch_sas
SAS Employee
Steve,

The "*" signals a comment only if it is the first character of a new source statement. In the context of a binary operation it is treated as a matrix multiplication operator :

proc iml;
a = 1;
b = 1;
* this is a comment;
y = a * b; /* this is a matrix multiply operation */
print y;
Rick_SAS
SAS Super FREQ
You can use the "alternative commment" (asterisk ... semicolon) at the end of lines, like this:

proc iml;
A = {1 2, 3 4}; * matrix assignment statment;
x = {5, 6}; * vector assignment statment;
y = A*x; * matrix multiplication;
print y;

As Hutch points out, they are also valid on separate lines. The matrix operator is in the middle of a statement, so the IML parser can distinguish that it is not a comment.

It sounds like the color-coding shown in your editor is getting confused by the alternate comment syntax. Just ignore the color-coding, or use traditional slash-star comments (/* ... */).

sas-innovate-white.png

Missed SAS Innovate in Orlando?

Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.

 

Register now

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 2 replies
  • 1606 views
  • 0 likes
  • 3 in conversation