Bonjour !
Etant donné qu'un programme SAS est un fichier texte comme les autres, c'est tout à fait possible d'écrire avec SAS dans un fichier texte : instructions FILE et PUT.
L'idée est la suivante :
1) Export du catalogue de format en dataset SAS
2) Lecture du dataset et écriture dans un fichier texte :
-> On commence par écrire "proc format; value ..."
-> Puis les formats 'FR'='France'
-> On termine par "Run;"
Voici un exemple qui fonctionne :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
/* Format de test dans la WORK que l'on veut obtenir en résultat */
proc format;
value $ pays 'FR'='France'
'DE'='Germany';
value yn 1='Yes'
2='No';
run;
/* Export en dataset */
proc format lib=work cntlout=fmt_export;
run;
proc sort data=fmt_export;
by fmtname start;
run;
/* Ecriture du programme */
data test;
file 'C:\temp\format.sas';
length start label $200;
set fmt_export end=eof;
by fmtname;
label=cats("'",label,"'"); /* On met entre quotes */
if type="C" then start=cats("'",start,"'"); /* On met entre quotes */
/* On comment avec "proc format" */
if _n_=1 then put "proc format lib=work;";
/* pour chaque format on écrit value <format> ou value $ <format> en fonction du type */
if first.fmtname then do;
put " value " @;
if type="C" then put " $ " @;
put fmtname start "=" label ;
end;
else do;
put " " start "=" label;
end;
if last.fmtname then put " ;";
/* à la fin du dataset on ferme la proc format généré par Run; */
if eof then put "run;";
run; |
Bon courage,
Steel
Partager