Statistical programming, matrix languages, and more

matrix multiplication inIML within a SAS macro

Reply
N/A
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!! (steveseoul@yahoo.com)

Thanks,

Steve
SAS Employee
Posts: 94

Re: matrix multiplication inIML within a SAS macro

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;
SAS Super FREQ
Posts: 3,233

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 (/* ... */).
Post a Question
Discussion Stats
  • 2 replies
  • 249 views
  • 0 likes
  • 3 in conversation