Hi Rick,
I know its been a few weeks, but I've had an error pop up that I can't figure out why. Here's the code:
proc iml;
dsNames = cats("&home_team","_H_",'class_1':'class_10'); /*Read in home team matrices */
MatNames = dsNames;
do i = 1 to ncol(dsNames);
use (dsNames[i]);
read all var _ALL_ into X;
tmp = X;
X = j(nrow(X) + 8, ncol(X), 0);
rows = setdif(1:nrow(X), do(4,32,4));
X[rows, ] = tmp;
print X;
call valset(MatNames[i], X);
close (dsNames[i]);
end;
free X rows tmp dsNames MatNames;
dsNames = cats("&away_team","_a_",'class_1':'class_10'); /*Read in away team matrices */
MatNames = dsNames;
do i = 1 to ncol(dsNames);
use (dsNames[i]);
read all var _ALL_ into X;
tmp = X;
X = j(nrow(X) + 8, ncol(X), 0);
rows = setdif(1:nrow(X), do(4,32,4));
[rows, ] = tmp;
print X;
call valset(MatNames[i], X);
close (dsNames[i]);
end;
I thought maybe the free statement would help, but it hasn't made a difference. Here's the error, then the rest of the code
1 ;*';*";*/;quit;run;
2 OPTIONS PAGENO=MIN;
3 %LET _CLIENTTASKLABEL='final home and away sim';
4 %LET _CLIENTPROCESSFLOWNAME='Process Flow (3)';
5 %LET _CLIENTPROJECTPATH='C:\Users\jblon\Documents\My SAS Files\baseball_3.egp';
6 %LET _CLIENTPROJECTPATHHOST='DESKTOP-BLJ64FN';
7 %LET _CLIENTPROJECTNAME='baseball_3.egp';
8 %LET _SASPROGRAMFILE='C:\Users\jblon\Documents\My SAS Files\9.4\final home and away sim.sas';
9 %LET _SASPROGRAMFILEHOST='DESKTOP-BLJ64FN';
10
11 ODS _ALL_ CLOSE;
12 OPTIONS DEV=ACTIVEX;
13 FILENAME EGSR TEMP;
14 ODS tagsets.sasreport13(ID=EGSR) FILE=EGSR
15 STYLE=HtmlBlue
16 STYLESHEET=(URL="file:///C:/Program%20Files/SASHome/SASEnterpriseGuide/7.1/Styles/HtmlBlue.css")
17 NOGTITLE
18 NOGFOOTNOTE
19 GPATH=&sasworklocation
20 ENCODING=UTF8
21 options(rolap="on")
22 ;
NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR
23
24 proc iml;
NOTE: IML Ready
25 dsNames = cats("&home_team","_H_",'class_1':'class_10');
25 ! /*Read in home team matrices */
26 MatNames = dsNames;
27 do i = 1 to ncol(dsNames);
28
28 ! use (dsNames[i]);
29
29 ! read all var _ALL_ into X;
29 !
30
30 ! tmp = X;
31
31 ! X = j(nrow(X) + 8, ncol(X), 0);
32
32 ! rows = setdif(1:nrow(X), do(4,32,4));
33
33 ! X[rows, ] = tmp;
34
34 ! print X;
35
35 ! call valset(MatNames[i], X);
36
36 ! close (dsNames[i]);
37 end;
38
38 ! free X rows tmp dsNames MatNames;
39 dsNames = cats("&away_team","_a_",'class_1':'class_10');
39 ! /*Read in away team matrices */
40 MatNames = dsNames;
41 do i = 1 to ncol(dsNames);
2 The SAS System 22:35 Thursday, April 20, 2017
42
42 ! use (dsNames[i]);
43
43 ! read all var _ALL_ into X;
43 !
44
44 ! tmp = X;
45
45 ! X = j(nrow(X) + 8, ncol(X), 0);
46
46 ! rows = setdif(1:nrow(X), do(4,32,4));
47
47 ! [rows, ] = tmp;
_
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
48
48 ! print X;
49
49 ! call valset(MatNames[i], X);
50
50 ! close (dsNames[i]);
51 end;
ERROR: END does not occur within DO group at line=51 col=1.
52
53 %LET _CLIENTTASKLABEL=;
54 %LET _CLIENTPROCESSFLOWNAME=;
55 %LET _CLIENTPROJECTPATH=;
56 %LET _CLIENTPROJECTPATHHOST=;
57 %LET _CLIENTPROJECTNAME=;
58 %LET _SASPROGRAMFILE=;
59 %LET _SASPROGRAMFILEHOST=;
60
61 ;*';*";*/;quit;
NOTE: Exiting IML.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE IML used (Total process time):
real time 1.25 seconds
cpu time 0.86 seconds
61 ! run;
62 ODS _ALL_ CLOSE;
63
64
65 QUIT; RUN;
66
So the first block of code to read in the first set of datasets is running fine, but then it has an error when it goes to read in the second set. Any suggestions?
Thank you.
I think I figured it out, the second block of code was missing the X in front of X[rows, ].
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!
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.