Die Beispiele verwenden generierte Daten (Datalines) oder temporäre Dateien, die vom Agenten erstellt wurden. SASHELP-Daten werden gegebenenfalls für Export-/Druckverfahren verwendet.
1 Codeblock
DATA STEP Data
Erklärung : Dieses Beispiel verwendet die Anweisung `INFILE`, um eine externe Datei (`/tmp/input-file.txt`) als Datenquelle anzugeben. Die Anweisung `INPUT` liest die Daten in die Variablen `PatientID`, `Week1`, `Week8` und `Week16`. Eine neue Variable `loss` wird berechnet, und dann zeigt die Prozedur `PRINT` den Inhalt des Datensatzes `weight` an.
Kopiert!
/* Création d'un fichier d'entrée factice */
filename mydata_example1 "/tmp/input-file.txt";
data _null_;
file mydata_example1;
put "101 70 68 65";
put "102 80 78 75";
put "103 90 88 85";
run;
data weight;
infile mydata_example1;
input PatientID $ Week1 Week8 Week16;
loss=Week1-Week16;
run;
proc print data=weight;
run;
1
/* Création d'un fichier d'entrée factice */
2
filename mydata_example1 "/tmp/input-file.txt";
3
DATA _null_;
4
file mydata_example1;
5
put "101 70 68 65";
6
put "102 80 78 75";
7
put "103 90 88 85";
8
RUN;
9
10
DATA weight;
11
INFILE mydata_example1;
12
INPUT PatientID $ Week1 Week8 Week16;
13
loss=Week1-Week16;
14
RUN;
15
16
PROC PRINTDATA=weight;
17
RUN;
2 Codeblock
DATA STEP Data
Erklärung : Dieses Beispiel zeigt, wie der vollständige physische Pfad einer externen Datei direkt in der Anweisung `INFILE` angegeben wird. SAS liest die Daten aus dieser Datei, um den Datensatz `weight_direct` zu erstellen.
Kopiert!
/* Création d'un fichier d'entrée factice */
filename temp_input_direct "/tmp/direct_input.txt";
data _null_;
file temp_input_direct;
put "A01 70 65";
put "B02 80 72";
put "C03 90 83";
run;
data weight_direct;
infile '/tmp/direct_input.txt'; /* Chemin direct vers le fichier */
input idno $ week1 week16;
loss=week1-week16;
run;
proc print data=weight_direct;
run;
INFILE'/tmp/direct_input.txt'; /* Chemin direct vers le fichier */
12
INPUT idno $ week1 week16;
13
loss=week1-week16;
14
RUN;
15
16
PROC PRINTDATA=weight_direct;
17
RUN;
3 Codeblock
DATA STEP Data
Erklärung : Dieses Beispiel veranschaulicht das Schreiben von Daten in eine externe Datei, indem ihr physischer Pfad direkt in der Anweisung `FILE` angegeben wird. Die Anweisungen `PUT` schreiben bedingte Informationen basierend auf der Variablen `loss` in die Datei `/tmp/output_status.txt`.
Kopiert!
/* Création de données factices pour calculer 'loss' */
filename temp_input_for_status "/tmp/direct_input_for_status.txt";
data _null_;
file temp_input_for_status;
put "A01 70 65"; /* loss = 5 */
put "B02 80 70"; /* loss = 10 */
put "C03 90 70"; /* loss = 20 */
run;
data weight_for_status;
infile temp_input_for_status;
input idno $ week1 week16;
loss=Week1-Week16;
run;
/* Écriture du statut dans un fichier externe */
filename temp_output_status "/tmp/output_status.txt";
data _null_;
set weight_for_status;
file temp_output_status; /* Chemin direct vers le fichier de sortie */
if loss ge 5 and loss le 9 then
put idno loss 'AWARD STATUS=3';
else if loss ge 10 and loss le 14 then
put idno loss 'AWARD STATUS=2';
else if loss ge 15 then
put idno loss 'AWARD STATUS=1';
run;
/* Affichage du contenu du fichier de sortie */
%inc "/tmp/output_status.txt";
1
/* Création de données factices pour calculer 'loss' */
file temp_output_status; /* Chemin direct vers le fichier de sortie */
21
IF loss ge 5 and loss le 9THEN
22
put idno loss 'AWARD STATUS=3';
23
ELSEIF loss ge 10 and loss le 14THEN
24
put idno loss 'AWARD STATUS=2';
25
ELSEIF loss ge 15THEN
26
put idno loss 'AWARD STATUS=1';
27
RUN;
28
29
/* Affichage du contenu du fichier de sortie */
30
%inc "/tmp/output_status.txt";
4 Codeblock
%INCLUDE Data
Erklärung : Die Makroanweisung `%INCLUDE` wird verwendet, um den Inhalt einer externen Datei (`/tmp/source_program.sas`) direkt in den SAS-Programmfluss einzufügen und auszuführen. Dies ermöglicht die Modularisierung von Code oder die Ausführung bereits bestehender Skripte.
Kopiert!
/* Création d'un fichier source factice avec des instructions SAS */
filename source_pgm_include "/tmp/source_program.sas";
data _null_;
file source_pgm_include;
put "data example; x=1; y=2; run;";
put "proc print data=example; run;";
run;
%include '/tmp/source_program.sas'; /* Inclusion directe du fichier */
1
/* Création d'un fichier source factice avec des instructions SAS */
%include '/tmp/source_program.sas'; /* Inclusion directe du fichier */
5 Codeblock
FILENAME, DATA STEP Data
Erklärung : Die Anweisung `FILENAME` weist einem externen Datei einen kurzen Namen (Fileref `mydata`) zu. Dieser Fileref wird dann in der Anweisung `INFILE` zum Lesen der Daten verwendet, was eine Abstraktion des physischen Dateipfads bietet.
Kopiert!
/* Création d'un fichier d'entrée factice */
filename mydata_ref_input "/tmp/ref_input.txt";
data _null_;
file mydata_ref_input;
put "ID001 50 45";
put "ID002 60 55";
run;
/* Assignation d'un fileref au fichier */
filename mydata "/tmp/ref_input.txt";
data weight_ref;
infile mydata; /* Utilisation du fileref */
input idno $ week1 week16;
loss=week1-Week16;
run;
proc print data=weight_ref; run;
1
/* Création d'un fichier d'entrée factice */
2
filename mydata_ref_input "/tmp/ref_input.txt";
3
DATA _null_;
4
file mydata_ref_input;
5
put "ID001 50 45";
6
put "ID002 60 55";
7
RUN;
8
9
/* Assignation d'un fileref au fichier */
10
filename mydata "/tmp/ref_input.txt";
11
DATA weight_ref;
12
INFILE mydata; /* Utilisation du fileref */
13
INPUT idno $ week1 week16;
14
loss=week1-Week16;
15
RUN;
16
PROC PRINTDATA=weight_ref; RUN;
6 Codeblock
FILENAME, PROC IMPORT Data
Erklärung : Ein Fileref (`mydata`) wird einer delimiterten Datei zugewiesen. `PROC IMPORT` verwendet diesen Fileref, um die Daten in einen SAS-Datensatz namens `shoes` zu importieren, wobei der Delimiter und die Einbeziehung der Spaltennamen angegeben werden.
Kopiert!
/* Création d d'un fichier d'entrée délimité factice */
filename mydata_ref_import "/tmp/ref_import.txt";
data _null_;
file mydata_ref_import;
put "Brand,Size,Color";
put "Nike,10,Black";
put "Adidas,9,White";
run;
/* Assignation d'un fileref au fichier */
filename mydata "/tmp/ref_import.txt";
proc import datafile=mydata /* Utilisation du fileref */
out=shoes dbms=dlm replace;
delimiter=',';
getnames=YES;
run;
proc print data=shoes; run;
1
/* Création d d'un fichier d'entrée délimité factice */
2
filename mydata_ref_import "/tmp/ref_import.txt";
3
DATA _null_;
4
file mydata_ref_import;
5
put "Brand,Size,Color";
6
put "Nike,10,Black";
7
put "Adidas,9,White";
8
RUN;
9
10
/* Assignation d'un fileref au fichier */
11
filename mydata "/tmp/ref_import.txt";
12
PROC IMPORT datafile=mydata /* Utilisation du fileref */
13
out=shoes dbms=dlm replace;
14
delimiter=',';
15
getnames=YES;
16
RUN;
17
PROC PRINTDATA=shoes; RUN;
7 Codeblock
FILENAME, DATA STEP Data
Erklärung : Nachdem die Variable `loss` aus temporären Daten berechnet wurde, wird ein Fileref (`myreport_output`) einer Ausgabedatei zugewiesen. Die Anweisung `FILE` in einem DATA Step `_null_` verwendet dann diesen Fileref, um die Ergebnisse in die angegebene Datei zu schreiben.
Kopiert!
/* Création de données d'entrée factices pour générer 'loss' */
data temp_input_for_report;
input idno $ week1 week16;
cards;
ID1 100 90
ID2 80 75
;
run;
/* Calcul de 'loss' et écriture dans un fichier externe via fileref */
filename myreport_output "/tmp/my_report.txt";
data _null_;
set temp_input_for_report;
file myreport_output; /* Utilisation du fileref pour la sortie */
loss = week1 - week16;
put idno "Loss=" loss;
run;
/* Affichage du contenu du fichier de sortie */
%inc "/tmp/my_report.txt";
1
/* Création de données d'entrée factices pour générer 'loss' */
2
DATA temp_input_for_report;
3
INPUT idno $ week1 week16;
4
CARDS;
5
ID1 10090
6
ID2 8075
7
;
8
RUN;
9
10
/* Calcul de 'loss' et écriture dans un fichier externe via fileref */
11
filename myreport_output "/tmp/my_report.txt";
12
DATA _null_;
13
SET temp_input_for_report;
14
file myreport_output; /* Utilisation du fileref pour la sortie */
15
loss = week1 - week16;
16
put idno "Loss=" loss;
17
RUN;
18
19
/* Affichage du contenu du fichier de sortie */
20
%inc "/tmp/my_report.txt";
8 Codeblock
FILENAME, PROC EXPORT
Erklärung : Dieses Beispiel verwendet `PROC EXPORT`, um den Datensatz `SASHELP.SHOES` in eine externe Datei (`/tmp/exported_shoes.txt`) zu exportieren, deren Name durch den Fileref `myreport_export` definiert ist. Die Daten werden als durch Leerzeichen getrennte Daten exportiert.
Kopiert!
/* Assignation d'un fileref au fichier de sortie */
filename myreport_export "/tmp/exported_shoes.txt";
proc export data=sashelp.shoes /* Utilisation d'un jeu de données SASHELP */
outfile=myreport_export dbms=dlm replace;
delimiter=' ';
run;
/* Affichage du contenu du fichier de sortie */
%inc "/tmp/exported_shoes.txt";
1
/* Assignation d'un fileref au fichier de sortie */
PROC EXPORTDATA=sashelp.shoes /* Utilisation d'un jeu de données SASHELP */
4
outfile=myreport_export dbms=dlm replace;
5
delimiter=' ';
6
RUN;
7
8
/* Affichage du contenu du fichier de sortie */
9
%inc "/tmp/exported_shoes.txt";
9 Codeblock
FILENAME, %INCLUDE Data
Erklärung : Ein Fileref (`mypgm`) wird einer Datei zugewiesen, die SAS-Anweisungen enthält. Die Makroanweisung `%INCLUDE` verwendet diesen Fileref, um den Code aus der Datei einzuschließen und auszuführen, was eine dynamische Ausführung externer Skripte ermöglicht.
Kopiert!
/* Création d'un fichier source factice avec des instructions SAS */
filename mypgm_source "/tmp/program_with_fileref.sas";
data _null_;
file mypgm_source;
put "data another_example; a=10; b=20; result = a+b; run;";
put "proc print data=another_example; run;";
run;
/* Assignation d'un fileref au fichier programme */
filename mypgm "/tmp/program_with_fileref.sas";
%include mypgm; /* Inclusion du fichier via le fileref */
1
/* Création d'un fichier source factice avec des instructions SAS */
put "data another_example; a=10; b=20; result = a+b; run;";
6
put "proc print data=another_example; run;";
7
RUN;
8
9
/* Assignation d'un fileref au fichier programme */
10
filename mypgm "/tmp/program_with_fileref.sas";
11
%include mypgm; /* Inclusion du fichier via le fileref */
10 Codeblock
FILENAME
Erklärung : Die Anweisung `FILENAME` kann verwendet werden, um die Ausgabe an ein physisches Gerät (z. B. einen Drucker) zu leiten, indem der Gerätetyp und die Hostoptionen angegeben werden. Für dieses Beispiel wird eine temporäre Datei verwendet, um die Ausgabe an ein Gerät zu simulieren.
Kopiert!
/* Cet exemple assigne un fileref à un périphérique de sortie. */
/* Il ne peut pas être rendu autonome sans une configuration de périphérique spécifique. */
/* Pour la démonstration, nous l'assignerons à un fichier factice. */
filename myprinter "/tmp/dummy_printer_output.txt";
data _null_;
file myprinter;
put "Ceci est une sortie de test vers un fichier d'imprimante factice.";
run;
%inc "/tmp/dummy_printer_output.txt";
1
/* Cet exemple assigne un fileref à un périphérique de sortie. */
2
/* Il ne peut pas être rendu autonome sans une configuration de périphérique spécifique. */
3
/* Pour la démonstration, nous l'assignerons à un fichier factice. */
put "Ceci est une sortie de test vers un fichier d'imprimante factice.";
8
run;
9
%inc "/tmp/dummy_printer_output.txt";
11 Codeblock
FILENAME Data
Erklärung : Die Anweisung `FILENAME` wird verwendet, um einem Verzeichnis einen Fileref (`mydir`) zuzuweisen. Dies ermöglicht die prägnante Referenzierung aller Dateien in diesem Verzeichnis.
Kopiert!
/* Création d'un répertoire factice */
%let temp_dir = /tmp/my_sas_files;
%sysexec mkdir -p &temp_dir;
filename mydir "&temp_dir"; /* Assigne le fileref au répertoire */
1
/* Création d'un répertoire factice */
2
%let temp_dir = /tmp/my_sas_files;
3
%sysexec mkdir -p &temp_dir;
4
5
filename mydir "&temp_dir"; /* Assigne le fileref au répertoire */
12 Codeblock
DATA STEP Data
Erklärung : Ein Fileref (`mydir`) wird einem Verzeichnis zugewiesen. Die Anweisung `INFILE` verwendet diesen Fileref mit dem Dateinamen in Klammern (`(qrt1.data)`), um eine bestimmte Datei in diesem Verzeichnis zu lesen. Dies vereinfacht die Verwaltung von Dateipfaden.
Kopiert!
/* Création d'un répertoire factice */
%let temp_dir = /tmp/my_sas_files;
%sysexec mkdir -p &temp_dir;
/* Création d'un fichier de données factice dans le répertoire */
filename qrt1data "&temp_dir/qrt1.data";
data _null_;
file qrt1data;
put "P01 100 90";
put "P02 110 95";
run;
filename mydir "&temp_dir"; /* Assigne le fileref au répertoire */
data weight_aggr;
infile mydir(qrt1.data); /* Référence le fichier dans le répertoire via le fileref */
input idno $ week1 week16;
loss=Week1-Week16;
run;
proc print data=weight_aggr; run;
1
/* Création d'un répertoire factice */
2
%let temp_dir = /tmp/my_sas_files;
3
%sysexec mkdir -p &temp_dir;
4
5
/* Création d'un fichier de données factice dans le répertoire */
6
filename qrt1data "&temp_dir/qrt1.data";
7
DATA _null_;
8
file qrt1data;
9
put "P01 100 90";
10
put "P02 110 95";
11
RUN;
12
13
filename mydir "&temp_dir"; /* Assigne le fileref au répertoire */
14
15
DATA weight_aggr;
16
INFILE mydir(qrt1.DATA); /* Référence le fichier dans le répertoire via le fileref */
17
INPUT idno $ week1 week16;
18
loss=Week1-Week16;
19
RUN;
20
PROC PRINTDATA=weight_aggr; RUN;
13 Codeblock
DATA STEP Data
Erklärung : Ein Fileref (`mydir`) wird einem Verzeichnis zugewiesen. Die Anweisung `FILE` verwendet diesen Fileref mit dem Dateinamen in Klammern (`(awards.txt)`), um eine bestimmte Datei in diesem Verzeichnis zu schreiben, was die Verwaltung von Ausgaben an gemeinsame Speicherorte vereinfacht.
Kopiert!
/* Création d'un répertoire factice */
%let temp_dir = /tmp/my_sas_files;
%sysexec mkdir -p &temp_dir;
/* Création de données d'entrée factices pour générer 'loss' */
data temp_input_for_awards;
input idno $ week1 week16;
cards;
A1 70 65
B2 80 70
C3 90 70
;
run;
filename mydir "&temp_dir"; /* Assigne le fileref au répertoire */
data _null_;
set temp_input_for_awards;
file mydir(awards.txt); /* Écrit dans awards.txt dans le répertoire 'mydir' */
loss = week1 - week16;
if loss ge 5 and loss le 9 then
put idno loss 'AWARD STATUS=3';
else if loss ge 10 and loss le 14 then
put idno loss 'AWARD STATUS=2';
else if loss ge 15 then
put idno loss 'AWARD STATUS=1';
run;
/* Affichage du contenu du fichier de sortie */
filename show_awards "&temp_dir/awards.txt";
%inc show_awards;
1
/* Création d'un répertoire factice */
2
%let temp_dir = /tmp/my_sas_files;
3
%sysexec mkdir -p &temp_dir;
4
5
/* Création de données d'entrée factices pour générer 'loss' */
6
DATA temp_input_for_awards;
7
INPUT idno $ week1 week16;
8
CARDS;
9
A1 7065
10
B2 8070
11
C3 9070
12
;
13
RUN;
14
15
filename mydir "&temp_dir"; /* Assigne le fileref au répertoire */
16
17
DATA _null_;
18
SET temp_input_for_awards;
19
file mydir(awards.txt); /* Écrit dans awards.txt dans le répertoire 'mydir' */
20
loss = week1 - week16;
21
IF loss ge 5 and loss le 9THEN
22
put idno loss 'AWARD STATUS=3';
23
ELSEIF loss ge 10 and loss le 14THEN
24
put idno loss 'AWARD STATUS=2';
25
ELSEIF loss ge 15THEN
26
put idno loss 'AWARD STATUS=1';
27
RUN;
28
29
/* Affichage du contenu du fichier de sortie */
30
filename show_awards "&temp_dir/awards.txt";
31
%inc show_awards;
14 Codeblock
%INCLUDE Data
Erklärung : Ein Fileref (`mydir`) wird einem Verzeichnis zugewiesen. Die Makroanweisung `%INCLUDE` verwendet diesen Fileref mit dem Programmdateinamen in Klammern (`(whole.program.sas)`), um den Code aus dieser Datei einzuschließen und auszuführen, was die Verwaltung von Code-Modulen erleichtert.
Kopiert!
/* Création d'un répertoire factice */
%let temp_dir = /tmp/my_sas_files;
%sysexec mkdir -p &temp_dir;
/* Création d'un fichier programme factice dans le répertoire */
filename whole_program "&temp_dir/whole.program.sas";
data _null_;
file whole_program;
put "data final_check; a=5; b=10; result = a+b; run;";
put "proc print data=final_check; run;";
run;
filename mydir "&temp_dir"; /* Assigne le fileref au répertoire */
%include mydir(whole.program.sas); /* Inclut le fichier programme via le fileref */
1
/* Création d'un répertoire factice */
2
%let temp_dir = /tmp/my_sas_files;
3
%sysexec mkdir -p &temp_dir;
4
5
/* Création d'un fichier programme factice dans le répertoire */
put "data final_check; a=5; b=10; result = a+b; run;";
10
put "proc print data=final_check; run;";
11
RUN;
12
13
filename mydir "&temp_dir"; /* Assigne le fileref au répertoire */
14
%include mydir(whole.program.sas); /* Inclut le fichier programme via le fileref */
15 Codeblock
FILENAME Data
Erklärung : Dieser Abschnitt stellt verschiedene Zugriffsspezifizierer für die Anweisung `FILENAME` vor, die es ermöglichen, Dateien über Methoden wie `DATAURL` (für direkt kodierte Daten), `URL` (für Webressourcen) und `ZIP` (für archivierte Dateien) zu referenzieren. Andere Spezifizierer wie `CATALOG`, `FTP`, `Hadoop`, `SOCKET` und `WebDAV` werden für spezifischere Zugriffsszenarien erwähnt (die meisten sind Platzhalter, die eine externe Konfiguration erfordern, um tatsächlich zu funktionieren).
Kopiert!
/* Assignation d'un fileref avec le spécificateur DATAURL - Exemple autonome */
filename myfile_dataurl dataurl 'data:text/plain;base64,SGVsbG8sIFdvcmxkIQ=='; /* "Hello, World!" encodé en Base64 */
data _null_;
infile myfile_dataurl;
input;
put _infile_;
run;
/* Assignation d'un fileref avec le spécificateur URL */
/* Note: Pour une exécution réelle, cela tenterait de se connecter à la ressource distante. */
filename myfile_url URL 'https://www.example.com/index.html';
/* Pour lire le contenu, utilisez:
data _null_;
infile myfile_url;
input;
put _infile_;
run;
*/
/* Assignation d'un fileref avec le spécificateur ZIP - Exemple autonome */
/* Création d'un répertoire factice pour le fichier ZIP */
%let zip_dir = /tmp/myzipfiles;
%sysexec mkdir -p &zip_dir;
filename file_to_zip "&zip_dir/internal_file.txt";
data _null_;
file file_to_zip;
put "Contenu à l'intérieur du zip.";
run;
/* Création du fichier ZIP et ajout du fichier interne */
filename ziptool ZIP "&zip_dir/myarchive.zip";
data _null_;
file ziptool(internal_file.txt);
put "Contenu à l'intérieur du zip.";
run;
filename ziptool clear;
filename myfile_zip ZIP "&zip_dir/myarchive.zip(internal_file.txt)";
data _null_;
infile myfile_zip;
input;
put _infile_;
run;
/* Exemples de fileref avec d'autres spécificateurs (placeholders) */
/* FILENAME mycat catalog 'my.catalog' <catalog-options>; */
/* FILENAME myfile_ftp FTP '/path/to/remote/file.txt' host='ftp.example.com' user='myuser' password='mypassword' debug; */
/* FILENAME myfile_hadoop hadoop '/user/sas/data.csv' <hadoop-options>; */
/* FILENAME myfile_socket SOCKET 'localhost:12345' <tcpip-options>; */
/* FILENAME myfile_socket_server SOCKET ':54321' SERVER <tcpip-options>; */
/* FILENAME myfile_webdav WEBDAV 'https://webdav.example.com/docs/file.txt' <webdav-options>; */
1
/* Assignation d'un fileref avec le spécificateur DATAURL - Exemple autonome */
Erklärung : Dieses Beispiel demonstriert das Lesen binärer Daten in SAS. Zuerst wird eine Dummy-Binärdatei mit zwei 2-Byte-Integern erstellt. Anschließend liest ein DATA Step diese Datei unter Verwendung der Option `RECFM=N` für den Binärstrom und des Informats `IB2.`, um die Bytes als Binärinteger zu interpretieren.
Kopiert!
/* Création d'un fichier binaire factice */
filename bindata "/tmp/binary_example.bin";
data _null_;
file bindata recfm=N; /* N pour le flux binaire */
/* Écriture de deux valeurs entières de 2 octets */
put 12345 ib2. @; /* écrit 12345 comme entier de 2 octets */
put 6789 ib2.; /* écrit 6789 comme entier de 2 octets */
run;
data read_binary;
infile bindata recfm=N;
input Value1 ib2. Value2 ib2.; /* Lecture des entiers de 2 octets avec informat IB2. */
run;
proc print data=read_binary;
run;
1
/* Création d'un fichier binaire factice */
2
filename bindata "/tmp/binary_example.bin";
3
DATA _null_;
4
file bindata recfm=N; /* N pour le flux binaire */
5
/* Écriture de deux valeurs entières de 2 octets */
6
put 12345 ib2. @; /* écrit 12345 comme entier de 2 octets */
7
put 6789 ib2.; /* écrit 6789 comme entier de 2 octets */
8
RUN;
9
10
DATA read_binary;
11
INFILE bindata recfm=N;
12
INPUT Value1 ib2. Value2 ib2.; /* Lecture des entiers de 2 octets avec informat IB2. */
13
RUN;
14
15
PROC PRINTDATA=read_binary;
16
RUN;
17 Codeblock
DATA STEP Data
Erklärung : Zum spaltenweisen Lesen binärer Daten muss die Anweisung `INFILE` `RECFM=F` (Fixed record format) und `LRECL=160` (logische Datensatzlänge) angeben. Das Beispiel erstellt eine einfache Textdatei zur Demonstration, aber in einem realen Szenario würden spezifische Binärformate (`CBw.`, `ROWw.d`) mit der Anweisung `INPUT` verwendet, um den binären Inhalt korrekt zu interpretieren.
Kopiert!
/* Création d'un fichier factice avec des données binaires par colonne simulées */
/* Dans un vrai scénario, ce fichier contiendrait des données binaires spécifiques. */
/* Ici, nous créons un fichier texte simple pour illustrer le concept d'INFILE. */
filename colbindata "/tmp/column_binary_example.txt";
data _null_;
file colbindata;
put 'Test'; /* Simule quelques octets, non réellement binaire pour cet exemple */
run;
data out_col_binary;
infile colbindata recfm=f lrecl=160; /* Options nécessaires pour les données binaires par colonne */
/* Pour un vrai fichier binaire par colonne, des informats comme CBw. ou ROWw.d seraient utilisés */
/* input var1 cb2.; ou input var1 row1. ; */
input var1 $; /* Lecture simple pour la démo, adapter selon le format réel */
run;
proc print data=out_col_binary;
run;
1
/* Création d'un fichier factice avec des données binaires par colonne simulées */
2
/* Dans un vrai scénario, ce fichier contiendrait des données binaires spécifiques. */
3
/* Ici, nous créons un fichier texte simple pour illustrer le concept d'INFILE. */
put 'Test'; /* Simule quelques octets, non réellement binaire pour cet exemple */
8
RUN;
9
10
DATA out_col_binary;
11
INFILE colbindata recfm=f lrecl=160; /* Options nécessaires pour les données binaires par colonne */
12
/* Pour un vrai fichier binaire par colonne, des informats comme CBw. ou ROWw.d seraient utilisés */
13
/* input var1 cb2.; ou input var1 row1. ; */
14
INPUT var1 $; /* Lecture simple pour la démo, adapter selon le format réel */
15
RUN;
16
17
PROC PRINTDATA=out_col_binary;
18
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.
« Der effiziente Umgang mit externen Dateien ist das Fundament jeder Datenintegration. SAS bietet hierfür mit den Anweisungen INFILE/INPUT (Lesen) und FILE/PUT (Schreiben) eine hochgradig anpassbare Engine.
Um Ihre Programme robuster und wartungsfreundlicher zu gestalten, sollten Sie folgende Experten-Strategien anwenden:
Nutzen Sie konsequent Filerefs: Verwenden Sie die FILENAME-Anweisung, um indirekte Referenzen (Filerefs) zu erstellen, anstatt Pfade direkt in den DATA Step zu schreiben. Dies ermöglicht es Ihnen, den Speicherort einer Datei an einer einzigen Stelle im Programm zu ändern, ohne den gesamten Code durchsuchen zu müssen.
Strukturieren Sie Verzeichnisse: Filerefs können nicht nur auf Dateien, sondern auch auf ganze Verzeichnisse zeigen. Durch die Syntax Infile Fileref(Dateiname); können Sie innerhalb eines Programms flexibel auf verschiedene Dateien in einem aggregierten Speicherort zugreifen.
Wählen Sie die richtige Zugriffsmethode: SAS ist nicht auf lokale Dateien beschränkt. Mit Filerefs können Sie über spezifische Engines wie ZIP (komprimierte Dateien), URL (Webressourcen) oder FTP direkt auf Daten zugreifen, ohne diese vorher manuell herunterzuladen oder zu entpacken.
Präzision bei Binärdaten: Verwenden Sie beim Umgang mit nicht-textuellen Daten unbedingt die Optionen RECFM=N (Binary Stream) oder RECFM=F (Fixed Length) in der INFILE-Anweisung. Nur so stellen Sie sicher, dass SAS die Daten byteweise korrekt interpretiert und nicht an Zeilenumbruchzeichen hängen bleibt. »
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.