之前在“IML 编程的基本函数概况”博文中有过简单的概述,这里的例子更详尽。
http://www.stat.ucl.ac.be/SMCS/serveur/SAS/samples/iml/samp_iml.html
ods html body='datademo.html' ; run ; /*--create filename for class data--*/ %macro filedef; %if &sysscp=OS %then %str(filename classf '&class' recfm=vb lrecl=300 blksize=15825;); %else %if &sysscp=CMS %then %str(filename classf 'class dat';); %else /* other hosts */ %str(filename classf 'class.dat';); %mend ; %filedef /*--create external file for class information--*/ data _null_; file classf; input name $ sex $ age height weight; put name $ sex $ age height weight; cards; JOYCE F 11 51.3 50.5 THOMAS M 11 57.5 85.0 JAMES M 12 57.3 83.0 JANE F 12 59.8 84.5 JOHN M 12 59.0 99.5 LOUISE F 12 56.3 77.0 ROBERT M 12 64.8 128.0 ALICE F 13 56.5 84.0 BARBARA F 13 65.3 98.0 JEFFREY M 13 62.5 84.0 CAROL F 14 62.8 102.5 HENRY M 14 63.5 102.5 ALFRED M 14 69.0 112.5 JUDY F 14 64.3 90.0 JANET F 15 62.5 112.5 MARY F 15 66.5 112.0 RONALD M 15 67.0 133.0 WILLIAM M 15 66.5 112.0 PHILIP M 16 72.0 150.0 ; proc iml; /*--read in data file for class and create class data set--*/ name="12345678"; sex="m"; create class var{name sex age height weight}; infile classf; do data; input name $ sex $ age height weight; append; end; close class; closefile classf; /*--basic listing--*/ use class; show datasets; show contents; list all; list; list point 5; list next; list next; list; list point {2 4 9}; p={2 4 9}; print p; list point p; list var{name sex}; list point p var {name age}; v={name sex age}; list var v; list all var v where(sex="M"); list all where(age>13); /*--find--*/ find all where(age>13) into p; print p; list point p; find all where(age>14) into q; print p q; list point q; /*--read---*/ read point q; show names; print name age height weight; read point 8; print name age height weight; read all var{name height} where(height>62); print name height; create new var{name height}; append; close new class; /*--where clause--*/ use class var{name}; list all; list all where(name=:"J"); list all where(name=:"JA"); list all where(name=*"LOIS"); list all where(name=*"PHILLIP"); list all where(name?"AL"); list all where(name={alfred carol judy}); list all where(name=*{jon jan }); close class; /*--replace--*/ edit class; list all where(name="JOHN"); age=13; replace point 5 var {age}; list point 5; read point 5; age=18; height=62.; weight=99; append; list point 20; close class; /*--sort--*/ sort class out=class2 by age; use class2; list all; /*--index--*/ index name; list all where(name=:"JO"); list next; list next; close class2; /*--summary--*/ use class; summary var{height weight} class{age} stat{mean std}; close class; quit; ods html close ; run ;