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 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

Multiple Linear Regression in SAS

Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.

Find more tutorials on the SAS Users YouTube channel.

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