DOPEN Function

Opens a directory, and returns a directory identifier value.

Category: External Files
See: DOPEN Function: Windows in SAS Companion for Windows
DOPEN Function: UNIX in SAS Companion for UNIX Environments
DOPEN Function: z/OS in SAS Companion for z/OS



Required Argument


is a character constant, variable, or expression that specifies the fileref assigned to the directory.

Restriction You must associate a fileref with the directory before calling DOPEN.


DOPEN opens a directory and returns a directory identifier value (a number greater than 0) that is used to identify the open directory in other SAS external file access functions. If the directory could not be opened, DOPEN returns 0, and you can obtain the error message by calling the SYSMSG function. The directory to be opened must be identified by a fileref. You can assign filerefs using the FILENAME statement or the FILENAME external file access function. Under some operating environments, you can also assign filerefs using system commands.
If you call the DOPEN function from a macro, then the result of the call is valid only when the result is passed to functions in a macro. If you call the DOPEN function from the DATA step, then the result is valid only when the result is passed to functions in the same DATA step.
Operating Environment Information: The term directory that is used in the description of this function and related SAS external file access functions refers to an aggregate grouping of files managed by the operating environment. Different operating environments identify such groupings with different names, such as directory, subdirectory, folder, MACLIB, or partitioned data set. For details, see the SAS documentation for your operating environment.


Example 1: Using DOPEN to Open a Directory

This example assigns the fileref MYDIR to a directory. It uses DOPEN to open the directory. DOPTNUM determines the number of system-dependent directory information items available, and DCLOSE closes the directory:
%let filrf=MYDIR;
%let rc=%sysfunc(filename(filrf,physical-name));
%let did=%sysfunc(dopen(&filrf));
%let infocnt=%sysfunc(doptnum(&did));
%let rc=%sysfunc(dclose(&did));

Example 2: Using DOPEN within a DATA Step

This example opens a directory for processing within a DATA step.
data _null_;
   drop rc did;
   if did > 0 then do;
      ...more statements...
   else do;
      put msg;