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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| dm log 'clear';
dm output 'clear';
option nosymbolgen nomprint nomlogic;
/* On doit passer par des macrovariables globales pour utiliser les valeurs des paramètres du macroprogramme dans les puts */
%Global stELibDest;
%Global stTableDest;
%Global stLibDest;
%Macro Tmt(MyMois,MyAnnee,MyPeriode,MyLibDest,MyTableDest);
/* Ajout d'un espace devant nom table de destination pour programme SAS généré automatiquement avec les put */
%let stELibDest=" &MyLibDest";
%let stLibDest="&MyLibDest";
%let stTableDest="&MyTableDest";
Proc Sql;
Create table listeFichiers as select distinct Fichier, Mois, Annee, Periode, FicOk, NBENREG
From AppliCft.Ficrecusdet;
Quit;
/* Ajout d'un commentaire pour créer le fichier quoi qu'il arrive */
data _null_;
file "&lecteur.&chemMacros.\tempScript.sas";
put '%Macro temp();';
run;
data _null_;
/* MOD pour ajouter au fichier existant sans l'écraser */
file "&lecteur.&chemMacros.\tempScript.sas" MOD;
set listeFichiers;
PrefD="D_";
PrefC="C_";
Post="A_TRAITER\";
RepIn="&fichiersAImporter";
IF Periode='A' then Rep=catx('\',RepIn,Annee,Mois,'ANNUEL',Post);
IF Periode='M' then Rep=catx('\',RepIn,Annee,Mois,'MENSUEL',Post);
If Mois eq &MyMois and Annee eq &MyAnnee and Periode eq &MyPeriode and FicOk eq 1 Then Do;
put 'Libname L "' Rep '";';
Cmd=catt('%if %sysfunc(exist(',&stLibDest,'.',&stTableDest,')) eq 1 %Then %Do; Data ',&stELibDest,'.',&stTableDest,'; Set ',&stElibDest,'.',&stTableDest,' L.',PrefD,Fichier,'; Run; %End;');
put Cmd;
Cmd=catt('%Else %Do; Data ',&stELibDest,'.',&stTableDest,'; Set L.',PrefD,Fichier,'; Run;%End;');
put Cmd;
End;
run;
data _null_;
/* MOD pour ajouter au fichier existant sans l'écraser */
file "&lecteur.&chemMacros.\tempScript.sas" MOD;
put '%Mend;';
run;
%Mend;
/* Début du traitement */
dm log 'clear';
/* Génère le fichier sas à partir des enregistrements de la table listeFichiers */
%Tmt('12','2009','A',AppliCft,Agreg122009a);
/* Exécute le fichier sas généré */
%Include "&lecteur.&chemMacros.\tempScript.sas";
/* Exécute la macro qui a été créée par l'exécution du chier sas généré automatiquement */
dm log 'clear';
%temp(); |
Partager