%macro imlmed (data=, /* input data set */
var=, /* variable list to calculate */
/* the median from */
out=); /* output data set */
proc iml;
/* Read VAR into a temporary matrix. */
use &data var {&var};
read all into temp;
/* Transpose the matrix, calculate the median, */
/* retranspose the matrix, and horizontally */
/* concatenate the median to the input matrix. */
median=temp||median(temp`)`;
/* Create a matrix that contains the original */
/* variable names and a name for the median. */
/* This matrix will name the variables in the */
/* output data set. */
names={&var median};
/* Create a SAS data set that contains values from */
/* the input data set and values for the medians. */
create &out from median [colname=names];
append from median;
quit;
%mend imlmed;