Veröffentlicht am :
Administration CREATION_INTERNE

Verwaltung von Filerefs und Dateien

Dieser Code ist auch verfügbar auf: English Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Das Skript geht in mehreren Schritten vor. Es beginnt mit der Überprüfung der Existenz eines Filerefs ('curdirfl'), der noch nicht zugewiesen ist. Anschließend wird diesem Fileref ein Dateipfad ('c:\tmp333') zugewiesen. Es wird erneut die Existenz des Filerefs überprüft, dann die Existenz der physischen Datei, auf die der Fileref zeigt. Das Skript entscheidet, die Datei im Schreibmodus ('o') zu öffnen, wenn sie nicht existiert, oder im Lesemodus ('i'), wenn sie bereits existiert. Nach dem Öffnen werden verschiedene Informationen über die Datei über die Funktionen `foptnum`, `foptname` und `finfo` abgerufen und angezeigt. Schließlich wird die Datei geschlossen und der Fileref gelöscht.
Datenanalyse

Type : CREATION_INTERNE


Das Skript ist nicht von externen, bereits existierenden Daten abhängig. Es manipuliert eine Datei namens 'c:\tmp333', die es zu erstellen oder zu öffnen versucht. Alle verarbeiteten Daten (Existenz von Fileref/Datei, Dateiinformationen) werden intern von den SAS-Funktionen generiert oder abgerufen.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser `DATA`-Block verwendet mehrere SAS-Funktionen zur Dateimanipulation:
- `fexist('fileref')`: Überprüft, ob ein Fileref zugewiesen ist. Gibt 0 zurück, wenn nicht, 1, wenn ja.
- `filename('fileref', 'path')`: Weist einem Fileref einen physischen Pfad zu. Gibt 0 zurück, wenn erfolgreich.
- `fileref('fileref')`: Überprüft den Status eines Filerefs und der Datei, auf die er zeigt. Ein negativer Wert zeigt an, dass der Fileref existiert, aber die Datei nicht; Null zeigt an, dass beides existiert.
- `fileexist('path')`: Überprüft die Existenz einer physischen Datei. Gibt 1 zurück, wenn ja, 0, wenn nicht.
- `fopen('fileref', 'mode')`: Öffnet die dem Fileref zugeordnete Datei in einem angegebenen Modus ('i' für Input, 'o' für Output). Gibt bei Erfolg eine Nicht-Null-Datei-ID (FID) zurück.
- `foptnum(fid)`: Gibt die Anzahl der verfügbaren Informationsoptionen für eine geöffnete Datei zurück.
- `foptname(fid, index)`: Gibt den Namen einer bestimmten Informationsoption nach ihrem Index zurück.
- `finfo(fid, 'option_name')`: Gibt den Wert der angegebenen Information für die geöffnete Datei zurück.
- `fclose(fid)`: Schließt die durch die FID identifizierte Datei. Gibt 0 zurück, wenn erfolgreich.
- `fdelete('fileref')`: Löscht die Zuweisung des Filerefs. Gibt 0 zurück, wenn erfolgreich.
Das Skript gibt die Ergebnisse jedes Schritts aus (`put rc=;`, `put fid=;` usw.), um das Verhalten der Funktionen zu veranschaulichen. Der Pfad 'c:\tmp333' ist ein Windows-Dateipfad, aber die Funktionen sind mit SAS Viya 4 auf Linux-Betriebssystemen kompatibel, indem der Pfad entsprechend angepasst wird (z. B. `/tmp/tmp333`).
Kopiert!
1DATA a;
2 
3/* Does fileref "curdirfl" exist? No = 0 */
4 
5rc=fexist ("curdirfl");
6put;
7put "Fileref curdirfl exist? rc should be 0 (no); " rc=;
8 
9/* assign fileref */
10 
11rc=filename("curdirfl", "c:\tmp333");
12 
13/* RC=0 indicates success in assigning fileref */
14
15put "Fileref assigned - rc should be 0; " rc=;
16rc=fexist ("curdirfl");
17 
18/* Does file which "curdirfl" points to exist? No = 0 */
19/* Assigning a fileref doesn't create the file. */
20
21put "File still doesn't exist - rc should be 0; " rc=;
22rc=fileref ("curdirfl");
23 
24/* Does fileref "curdirfl" exist? */
25/* Negative means fileref exists, but file does not */
26/* Positive means fileref does not exist */
27/* Zero means both fileref and file exist */
28 
29put "Fileref now exists - rc should be negative; " rc=;
30put;
31 
32/* Does the file that the fileref points to exist? Should be no. */
33
34if ( fileexist ("./tmp333") ) then
35 /* if it does, open it for input */
36 do;
37 put "Open file for INPUT";
38 fid=fopen ("curdirfl", "i") ;
39 end;
40 else /* most likely scenario */
41 do;
42 put "Open file for OUTPUT";
43 fid=fopen ("curdirfl", "o");
44 end;
45 
46/* fid should be non-zero. 0 indicates failure. */
47put "File id is: " fid=;
48numopts = foptnum(fid);
49put "Number of information items should be 6; " numopts=;
50do i = 1 to numopts;
51optname = foptname (fid,i);
52put i= optname=;
53optval = finfo (fid, optname);
54put optval= ;
55end;
56rc=fclose (fid);
57rc=fdelete ("curdirfl");
58put "Closing the file, rc should be 0; "
59rc=; RUN;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.