Les exemples utilisent des données générées (datalines) ou des fichiers temporaires créés par l'agent. Les données SASHELP sont utilisées lorsque c'est approprié pour les procédures d'exportation/impression.
1 Bloc de code
DATA STEP Data
Explication : Cet exemple utilise l'instruction `INFILE` pour spécifier un fichier externe (`/tmp/input-file.txt`) comme source de données. L'instruction `INPUT` lit les données dans les variables `PatientID`, `Week1`, `Week8` et `Week16`. Une nouvelle variable `loss` est calculée, puis la procédure `PRINT` affiche le contenu du jeu de données `weight`.
Copié !
/* 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 Bloc de code
DATA STEP Data
Explication : Cet exemple montre comment spécifier directement le chemin physique complet d'un fichier externe dans l'instruction `INFILE`. SAS lit les données de ce fichier pour créer le jeu de données `weight_direct`.
Copié !
/* 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 Bloc de code
DATA STEP Data
Explication : Cet exemple illustre l'écriture de données dans un fichier externe en spécifiant directement son chemin physique dans l'instruction `FILE`. Les instructions `PUT` écrivent des informations conditionnelles basées sur la variable `loss` dans le fichier `/tmp/output_status.txt`.
Copié !
/* 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 Bloc de code
%INCLUDE Data
Explication : La macro-instruction `%INCLUDE` est utilisée pour insérer et exécuter le contenu d'un fichier externe (`/tmp/source_program.sas`) directement dans le flux du programme SAS. Cela permet de modulariser le code ou d'exécuter des scripts préexistants.
Copié !
/* 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 Bloc de code
FILENAME, DATA STEP Data
Explication : L'instruction `FILENAME` assigne un nom court (fileref `mydata`) à un fichier externe. Ce fileref est ensuite utilisé dans l'instruction `INFILE` pour lire les données, offrant une abstraction du chemin physique du fichier.
Copié !
/* 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 Bloc de code
FILENAME, PROC IMPORT Data
Explication : Un fileref (`mydata`) est attribué à un fichier délimité. `PROC IMPORT` utilise ce fileref pour importer les données dans un jeu de données SAS nommé `shoes`, en spécifiant le délimiteur et l'inclusion des noms de colonnes.
Copié !
/* 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 Bloc de code
FILENAME, DATA STEP Data
Explication : Après avoir calculé la variable `loss` à partir de données temporaires, un fileref (`myreport_output`) est assigné à un fichier de sortie. L'instruction `FILE` dans une étape DATA `_null_` utilise ensuite ce fileref pour écrire les résultats dans le fichier spécifié.
Copié !
/* 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 Bloc de code
FILENAME, PROC EXPORT
Explication : Cet exemple utilise `PROC EXPORT` pour exporter le jeu de données `SASHELP.SHOES` vers un fichier externe (`/tmp/exported_shoes.txt`) dont le nom est défini par le fileref `myreport_export`. Les données sont exportées en tant que données délimitées par des espaces.
Copié !
/* 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 Bloc de code
FILENAME, %INCLUDE Data
Explication : Un fileref (`mypgm`) est assigné à un fichier contenant des instructions SAS. La macro-instruction `%INCLUDE` utilise ce fileref pour inclure et exécuter le code du fichier, permettant une exécution dynamique de scripts externes.
Copié !
/* 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 Bloc de code
FILENAME
Explication : L'instruction `FILENAME` peut être utilisée pour diriger la sortie vers un périphérique physique (comme une imprimante) en spécifiant le type de périphérique et les options de l'hôte. Pour cet exemple, un fichier temporaire est utilisé pour simuler la sortie vers un périphérique.
Copié !
/* 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 Bloc de code
FILENAME Data
Explication : L'instruction `FILENAME` est utilisée pour assigner un fileref (`mydir`) à un répertoire. Cela permet de référencer tous les fichiers de ce répertoire de manière concise.
Copié !
/* 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 Bloc de code
DATA STEP Data
Explication : Un fileref (`mydir`) est assigné à un répertoire. L'instruction `INFILE` utilise ce fileref avec le nom du fichier entre parenthèses (`(qrt1.data)`) pour lire un fichier spécifique situé dans ce répertoire. Cela simplifie la gestion des chemins de fichiers.
Copié !
/* 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 Bloc de code
DATA STEP Data
Explication : Un fileref (`mydir`) est assigné à un répertoire. L'instruction `FILE` utilise ce fileref avec le nom du fichier entre parenthèses (`(awards.txt)`) pour écrire un fichier spécifique dans ce répertoire, simplifiant ainsi la gestion des sorties vers des emplacements communs.
Copié !
/* 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 Bloc de code
%INCLUDE Data
Explication : Un fileref (`mydir`) est assigné à un répertoire. La macro-instruction `%INCLUDE` utilise ce fileref avec le nom du fichier programme entre parenthèses (`(whole.program.sas)`) pour inclure et exécuter le code de ce fichier, facilitant la gestion des modules de code.
Copié !
/* 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 Bloc de code
FILENAME Data
Explication : Cette section présente divers spécificateurs d'accès pour l'instruction `FILENAME`, permettant de référencer des fichiers via des méthodes telles que `DATAURL` (pour les données encodées directement), `URL` (pour les ressources web), et `ZIP` (pour les fichiers archivés). D'autres spécificateurs comme `CATALOG`, `FTP`, `Hadoop`, `SOCKET` et `WebDAV` sont mentionnés pour des scénarios d'accès plus spécifiques (la plupart sont des placeholders nécessitant une configuration externe pour fonctionner réellement).
Copié !
/* 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 */
Explication : Cet exemple démontre la lecture de données binaires en SAS. Il crée d'abord un fichier binaire factice avec deux entiers de 2 octets. Ensuite, une étape DATA lit ce fichier en utilisant l'option `RECFM=N` pour le flux binaire et l'informat `IB2.` pour interpréter les octets comme des entiers binaires.
Copié !
/* 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 Bloc de code
DATA STEP Data
Explication : Pour lire des données binaires par colonne, l'instruction `INFILE` doit spécifier `RECFM=F` (Fixed record format) et `LRECL=160` (longueur d'enregistrement logique). L'exemple crée un fichier texte simple pour la démonstration, mais dans un scénario réel, des informats binaires spécifiques (`CBw.`, `ROWw.d`) seraient utilisés avec l'instruction `INPUT` pour interpréter correctement le contenu binaire.
Copié !
/* 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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Ce guide explore la mécanique de précision de SAS pour l'acquisition et l'exportation de données. Au-delà de la simple lecture de fichiers, c'est la notion d'abstraction qui est ici primordiale.
La puissance du Fileref : Utiliser un FILENAME plutôt qu'un chemin physique en dur dans vos instructions INFILE ou FILE est une règle d'or en développement. Cela rend votre code portable : pour changer de répertoire ou de serveur, vous n'avez qu'une seule ligne à modifier au début de votre programme.
L'agilité des méthodes d'accès : SAS ne se limite pas à votre disque dur. Grâce aux moteurs spécialisés (URL, FTP, ZIP, Hadoop), vous traitez une ressource distante comme s'il s'agissait d'un fichier local. L'exemple du moteur ZIP est particulièrement utile : il permet de lire ou d'écrire directement dans une archive sans étape de décompression manuelle, économisant ainsi un espace disque précieux.
Le défi du binaire : La lecture de données binaires (options RECFM=N ou F) montre que SAS peut descendre au niveau de l'octet. C'est indispensable pour interfacer SAS avec des instruments de mesure ou des formats propriétaires anciens. L'utilisation correcte des informats (comme IB2.) garantit que la conversion des octets respecte l'architecture de la donnée source.
Modularité avec %INCLUDE : Cette instruction est le ciment de vos projets complexes. Elle permet d'appeler des bibliothèques de fonctions ou des sous-programmes stockés à l'extérieur, facilitant la maintenance et la réutilisation du code.
Mon conseil : Pour la gestion de projets volumineux, utilisez les filerefs agrégés (pointant vers un répertoire). Cela vous permet de référencer vos fichiers via une syntaxe simplifiée mydir(fichier.txt), ce qui rend votre gestion documentaire beaucoup plus claire et évite les erreurs de saisie dans les longs chemins de dossiers »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.