Systemeigenschaften einer Textdatei

Hallo,

wie kann man beim Einlesen einer Textdatei in SAS auf die Systemeigenschaften (Datum des letzten Zugriffs, Name der Datei etc.) zugreifen?

Danke im Voraus :-)

Kurze Suche erhab

Hi,

eine kurze Suche erhab z.B.:
http://209.85.135.132/search?q=cache:PAOf7Sk1fewJ:www.urz.uni-heidelberg.de/statistik/sas-ah/05.02/Tipps-Ksfe9.pdf+sas+dateieigenschaften&cd=4&hl=de&ct=clnk&gl=de(seite 164 bzw 32)

Das müsstest Du dann entsprechend anpassen. Es liesst einfach alle Dateien aus C:\temp mit deren Eigenschaften ein und gibt sie aus... kannte ich auch noch nicht :-)

Filename in PIPE "Dir C:\temp /A:-D/-C";;

Data Work.Contents (drop=start);
Length file $256 cDate $10 cTime $5 cSize $32 nDate nTime nSize 8;
Format nDate eurdfdd10. nTime time5.;
Infile in;Input;
If ( _infile_ Ne "");
If ( substr(_infile_,1,1) Ne " ");
Put _infile_;
cDate = scan(_infile_,1," ");
cTime = scan(_infile_,2," ");
cSize = scan(_infile_,3," ");
start = indexw(_infile_,cSize) + length(compress(cSize)) + 1;
file = substr(_infile_,start);
nDate = input(cDate,ddmmyy10.);
nTime = input(cTime,time5.);
nSize = input(cSize,best.);
Run;

Proc Print;
Run;

grüße
nico

Hallo Nico, danke, danke,

Hallo Nico,

danke, danke, danke! es hat wunderbar geklappt!

finfo()

Hallo,

ich würde hierfür die finfo()-Funktion verwenden. Allerdings funktioniert die nicht "beim Einlesen" einer Datei.

Anbei ein Code-Schnipsel, den ich mal verwendet habe um mir die 'Last Modified'- Eigenschaften von Excel-Dateien unter Windows anzuzeigen.

%let directory = d:\temp ;
%let extension = xls ;

data files_and_dates ( keep = NAME LAST_MODIFIED ) ;
length NAME $ 40 ;
format LAST_MODIFIED datetime19. ;

rc = filename( 'mydir' , "&directory" );
did = dopen( 'mydir' ) ;
do i = 1 to dnum( did );

NAME = dread( did , i );

if scan( NAME, 2, '.' ) = "&extension" then do;
rc = filename( 'myfile' , cats( "&directory", "\", NAME ) );
fid = fopen( 'myfile' );

LAST_MODIFIED = input( finfo( fid , 'Last Modified') , datetime19.);

rc = fclose( fid );
output;
end;
end;
rc = dclose( did );
rc = filename( 'myfile' , '' );
rc = filename( 'mydir' , '' );

run;

proc print data = files_and_dates;
run;

Unter dem SAS-Hilfe-Eintrag für finfo() findet man auch ein Beispiel dafür, wie man mit foptnum() und foptname() auf alle verfügbaren Dateieigenschaften zugreifen kann.

Viel Erfolg damit!
Alex

Hallo Alex, die Funktion

Hallo Alex,
die Funktion finfo() ist ein echt guter Tipp - habe noch nie was davon gehört, jetzt habe ich was dazugelernt, werde es gleich ausprobieren :-)
Vielen Dank!