FETCH Function

Reads the next non-deleted observation from a SAS data set into the Data Set Data Vector (DDV).

Category: SAS File I/O


Required Argument


is a numeric variable that specifies the data set identifier that is returned by the OPEN function.

Optional Argument


prevents the automatic passing of SAS data set variable values to macro or DATA step variables even if the SET routine has been called.


FETCH returns a 0 if the operation is successful, ≠0 if it is not successful, and − 1 if the end of the data set is reached. FETCH skips observations marked for deletion.
If the SET routine has been called previously, the values for any data set variables are automatically passed from the DDV to the corresponding DATA step or macro variables. To override this behavior temporarily so that fetched values are not automatically copied to the DATA step or macro variables, use the NOSET option.


This example fetches the next observation from the SAS data set MYDATA. If the end of the data set is reached or if an error occurs, SYSMSG retrieves the appropriate message and writes it to the SAS log. Note that in a macro statement that you do not enclose character strings in quotation marks.
%let dsid=%sysfunc(open(mydata,i));
%let rc=%sysfunc(fetch(&dsid));
%if &rc ne 0 %then
  %put %sysfunc(sysmsg());
      ...more macro statements...
%let rc=%sysfunc(close(&dsid));