Statistical programming, matrix languages, and more

matrix multiplication inIML within a SAS macro

Posts: 0

matrix multiplication inIML within a SAS macro

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!! (


SAS Employee
Posts: 94

Re: matrix multiplication inIML within a SAS macro


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;
Posts: 3,620

Re: matrix multiplication inIML within a SAS macro

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 (/* ... */).
Ask a Question
Discussion stats
  • 2 replies
  • 3 in conversation