SAS Functions and CALL Routines under Windows |
Category: | External Files |
Windows specifics: | available info-items |
See: | FINFO Function in SAS Language Reference: Dictionary |
Syntax | |
Details | |
Example of Obtaining File Information | |
See Also |
Syntax |
FINFO(file-id, info-item) |
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. Info-item is either a variable that contains a file information name or the file information name that has been enclosed in quotation marks.
info-item for disk files can be one of these file information items:
Create Time: ddmmmyyyy:hh:mm:ss
Note: The Create Time date/time information item will be localized to the site's locale. The date/time format might appear slightly different in the locale.
Last Modified: ddmmmyyyy:hh:mm:ss
Filename
info-item for pipe files can be one of these file information items:
Details |
The FINFO function returns the value of a system-dependent information item for an external file that was previously opened and assigned a file-id by the FOPEN function. FINFO returns a blank if the value given for info-item is invalid.
Example of Obtaining File Information |
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=256 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;
See Also |
FOPEN Function in SAS Language Reference: Dictionary
Copyright © 2010 by SAS Institute Inc., Cary, NC, USA. All rights reserved.