Hi,
From the definition of the two:
INOBS= is restricting the number of input rows
OBS= is specifying the last observation
Based on that, I couldn't think of a scenario where the two are different. Are they logically the same thing?
Thanks
1) INOBS= is Proc SQL spacific,
2) OBS= is global option and data set option
3) INOBS= produces a warning
4) OBS= can overwrite INOBS=
See this:
1 proc sql INOBS=10;
2 select * from sashelp.class;
WARNING: Only 10 records were read from SASHELP.CLASS due to INOBS= option.
3 quit;
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
4
5
6 proc sql INOBS=10;
7 select * from sashelp.class(obs=5);
8 quit;
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
9
10 proc sql;
11 select * from sashelp.class(obs=5);
12 quit;
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds
13
14 data test1;
15 set sashelp.class(obs=5);
16 run;
NOTE: There were 5 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK.TEST1 has 5 observations and 5 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
17
18 data test2;
19 set sashelp.class(inobs=5);
-----
22
ERROR 22-7: Invalid option name INOBS.
20 run;
NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.TEST2 may be incomplete. When this step was stopped there were 0
observations and 0 variables.
WARNING: Data set WORK.TEST2 was not replaced because this step was stopped.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
Bart
1) INOBS= is Proc SQL spacific,
2) OBS= is global option and data set option
3) INOBS= produces a warning
4) OBS= can overwrite INOBS=
See this:
1 proc sql INOBS=10;
2 select * from sashelp.class;
WARNING: Only 10 records were read from SASHELP.CLASS due to INOBS= option.
3 quit;
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
4
5
6 proc sql INOBS=10;
7 select * from sashelp.class(obs=5);
8 quit;
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
9
10 proc sql;
11 select * from sashelp.class(obs=5);
12 quit;
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds
13
14 data test1;
15 set sashelp.class(obs=5);
16 run;
NOTE: There were 5 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK.TEST1 has 5 observations and 5 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
17
18 data test2;
19 set sashelp.class(inobs=5);
-----
22
ERROR 22-7: Invalid option name INOBS.
20 run;
NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.TEST2 may be incomplete. When this step was stopped there were 0
observations and 0 variables.
WARNING: Data set WORK.TEST2 was not replaced because this step was stopped.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
Bart
inObs= specifies the total number of rows to read in. obs= specifies the row number where you should stop reading. The firstObs= option specifies the first row of data tobe read, and it's easier to see the difference between obs= and inObs= if you apply firstOBS= in conjunction with those options and compare the results:
/* inObs= vs obs= with firstObs=*/
proc sql inobs=50 number;
title 'InObs=50, firstObs=20';
select *
from sashelp.cars(firstObs=20)
;
quit;
title 'obs=50, firstObs=20';
proc sql number;
title 'obs=50, firstObs=20';
select *
from sashelp.cars(firstObs=20 obs=50)
;
quit;
Note that the first query returns 50 rows, but the second query only returns 31 rows.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.
Find more tutorials on the SAS Users YouTube channel.