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.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.