Hello,
In the following code, the macro-variables :
Annee, Mois, Periode and FicOk have no value affected at the first run of the code.
Annee, Mois, Periode are affected at the second run and FicOk at the third time.
How could I do to make the programme run at the first time ?
Thanks.
%Macro CreeTableMensuelle(MyTableRef, MyLibIn, MyTableOut, MyAnnee, MyMois, MyPeriode);
%Global PrefD;
%Global PrefC;
%Global PostRep;
%Global stRep;
%Global stFichier;
%Global Annee;
%Global Mois;
%Global Periode;
%Global FicOk;
%Global Nom;
/* Préfixe pour tables de données : Les tables s'appellent D_ suivi du nom du fichier d'origine */
%Let PrefD=D_;
/* Préfixe pour table de tests de contraintes */
%let prefC=C_;
/* PostFixe pour répertoire de tables à traiter (nom de la feuille de l'arborescence) */
%Let PostRep=A_TRAITER;
/* On parcourt la table MyTableRef */
Data _NULL_;
Set &MyTableRef;
/* Si l'enregistrement courant présente les bonnes condition alors on ajoute */
/* Le fichier qu'il désigne à MyTableOut */
Call SymputX('Annee',input(Annee,best.));
Call SymputX('Mois',input(Mois,best.));
Call SymputX('Periode',Periode);
Call SymputX('FicOk',input(FicOk,best.));
%If &Annee eq &MyAnnee and &Mois eq &MyMois and &Periode eq &MyPeriode and &FicOk eq 1 %Then %Do;
/* Constitution du répertoire physique où se situe la table */
/* des données à intégrer à la table mensuelle des données */
%If &MyPeriode eq A %Then %Let stRep=&MyLibIn.\&MyAnnee.\&MyMois.\ANNUEL;
%If &MyPeriode eq M %Then %Let stRep=&MyLibIn.\&MyAnnee.\&MyMois.\MENSUEL;
Libname LibSrc "&stRep.\&PostRep";
%put &stRep.\&PostRep;
/* Nom de la table à intégrer */
Call SymputX('Nom',Fichier);
%Let stFichier=&PrefD.&Nom;
%put MyTableRef = &MyTableRef - stFichier = &stFichier;
/* Ajout de la table à MyTableOut */
%IntegreTable(LibSrc.&StFichier,&MyTableOut);
/* Constitution du nom de la table des tests à intégrer à la table mensuelle des tests */
%End;
Run;
%Mend;