Returns the value of an information item for an external file.
Category: | External Files |
Windows specifics: | available info-items |
See: | FINFO Function in SAS Functions and CALL Routines: Reference |
specifies the identifier that was assigned when the file was opened, generally by the FOPEN function.
specifies the name of the file information item to be retrieved. This item is a character value.
data a; /* Does fileref "curdirfl" exist? No = 0 */ rc=fexist ("curdirfl"); put; put "Fileref curdirfl exist? rc should be 0 (no); " rc=; /* assign fileref */ rc=filename("curdirfl", "c:\tmp333"); /* RC=0 indicates success in assigning fileref */ put "Fileref assigned - rc should be 0; " rc=; rc=fexist ("curdirfl"); /* Does file which "curdirfl" points to exist? No = 0 */ /* Assigning a fileref doesn't create the file. */ put "File still doesn't exist - rc should be 0; " rc=; rc=fileref ("curdirfl"); /* Does fileref "curdirfl" exist? */ /* Negative means fileref exists, but file does not */ /* Positive means fileref does not exist */ /* Zero means both fileref and file exist */ put "Fileref now exists - rc should be negative; " rc=; put; /* Does the file that the fileref points to exist? Should be no. */ if ( fileexist ("./tmp333") ) then /* if it does, open it for input */ do; put "Open file for input"; fid=fopen ("curdirfl", "i") ; end; else /* most likely scenario */ do; put "Open file for output"; fid=fopen ("curdirfl", "o"); end; /* fid should be non-zero. 0 indicates failure. */ put "File id is: " fid=; numopts = foptnum(fid); put "Number of information items should be 6; " numopts=; do i = 1 to numopts; optname = foptname (fid,i); put i= optname=; optval = finfo (fid, optname); put optval= ; end; rc=fclose (fid); rc=fdelete ("curdirfl"); put "Closing the file, rc should be 0; " rc=; run;
NOTE: PROCEDURE PRINTTO used (Total process time): real time 0.36 seconds cpu time 0.00 seconds 291 data a; 292 293 /* Does fileref "curdirfl" exist? No = 0 */ 294 295 rc=fexist ("curdirfl"); 296 put; t297 put "Fileref curdirfl exist? rc should be 0 (no); " rc=; 298 299 /* assign fileref */ 300 301 rc=filename("curdirfl", "c:\tmp333"); 302 303 /* RC=0 indicates success in assigning fileref */ 304 305 put "Fileref assigned - rc should be 0; " rc=; 306 rc=fexist ("curdirfl"); 307 308 /* Does file which "curdirfl" points to exist? No = 0 */ 309 /* Assigning a fileref doesn't create the file. */ 310 311 put "File still doesn't exist - rc should be 0; " rc=; 312 rc=fileref ("curdirfl"); 313 314 /* Does fileref "curdirfl" exist? */ 315 /* Negative means fileref exists, but file does not */ 316 /* Positive means fileref does not exist */ 317 /* Zero means both fileref and file exist */ 318 319 put "Fileref now exists - rc should be negative; " rc=; 320 put; 321 322 /* Does the file that the fileref points to exist? Should be no. */ 323 324 if ( fileexist ("./tmp333") ) then 325 /* if it does, open it for input */ 326 do; 327 put "Open file for input"; 328 fid=fopen ("curdirfl", "i") ; 329 end; 330 else /* most likely scenario */ 331 do; 332 put "Open file for output"; 333 fid=fopen ("curdirfl", "o"); 334 end;
335 336 /* fid should be non-zero. 0 indicates failure. */ 337 put "File id is: " fid=; 338 numopts = foptnum(fid); 339 put "Number of information items should be 6; " numopts=; 340 do i = 1 to numopts; 341 optname = foptname (fid,i); 342 put i= optname=; 343 optval = finfo (fid, optname); 344 put optval= ; 345 end; 346 rc=fclose (fid); 347 rc=fdelete ("curdirfl"); 348 put "Closing the file, rc should be 0; " 349 rc=; run; Fileref curdirfl exist? rc should be 0 (no); rc=0 Fileref assigned - rc should be 0; rc=0 File still doesn't exist - rc should be 0; rc=0 Fileref now exists - rc should be negative; rc=-20006 Open file for output File id is: fid=1 Number of information items should be 6; numopts=6 i=1 optname=Filename optval=c:\tmp333 i=2 optname=RECFM optval=V i=3 optname=LRECL optval=32767 i=4 optname=File Size (bytes) optval=0 i=5 optname=Last Modified optval=13Mar2007:13:12:23 i=6 optname=Create Time optval=13Mar2007:13:12:23 Closing the file, rc should be 0; rc=0 NOTE: The data set WORK.A has 1 observations and 6 variables. NOTE: DATA statement used (Total process time): real time 0.12 seconds cpu time 0.09 seconds 350 proc printto; run;