Ok,
I have removed one parenthesis in the code :
here is the whole log :
[PRE]
34198 %Mend;
34199
34200 /* Test de constitution de la table mensuelle annuelle de Décembre 2009
34200 ! */
34201 dm log 'clear';
34202 dm output 'clear';
34203
34204 option nomlogic symbolgen nomprint notes;
34205 %Global MyRepIn;
34206 %Let MyRepIn="C:\FichiersAImporter\";
34207 %CreeTableMensuelle(AppliCft.Ficrecusdet,&MyRepIn,'AppliCft','Agreg2009
34207 ! 12A',2009,12,'A');
SYMBOLGEN : Macro variable MYREPIN traitée dans "C:\FichiersAImporter\"
SYMBOLGEN : Macro variable MYTABLEREF traitée dans AppliCft.Ficrecusdet
NOTE: La table WORK.TEMP a été créée, avec 4 lignes et 5 col.
NOTE: Procédure SQL a utilisé (Durée totale du traitement) :
temps réel 0.04 secondes
temps UC 0.00 secondes
SYMBOLGEN : Macro variable MYREPIN traitée dans "C:\FichiersAImporter\"
SYMBOLGEN : Macro variable MYANNEE traitée dans 2009
SYMBOLGEN : Macro variable MYMOIS traitée dans 12
SYMBOLGEN : Macro variable MYPERIODE traitée dans 'A'
SYMBOLGEN : Macro variable MYLIBOUT traitée dans 'AppliCft'
SYMBOLGEN : Macro variable MYTABLEOUT traitée dans 'Agreg200912A'
NOTE: Valeurs caractères converties en valeurs numériques
aux emplacements indiqués par : (Ligne):(Colonne).
2:212 2:233
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans AppliCft.C_Agreg200912A
SYMBOLGEN : Macro variable BTABLEEXISTE traitée dans 1
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans AppliCft.C_Agreg200912A
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans AppliCft.C_Agreg200912A
SYMBOLGEN : Macro variable MYTABLESOURCE traitée dans
LibSrc.C_A0200161CERTIV59UCANS1X359
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans AppliCft.C_Agreg200912A
SYMBOLGEN : Macro variable BTABLEEXISTE traitée dans 1
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans AppliCft.C_Agreg200912A
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans AppliCft.C_Agreg200912A
SYMBOLGEN : Macro variable MYTABLESOURCE traitée dans
LibSrc.C_K1422244CERTI06UCANS1V01F
NOTE: 4 observation(s) lue(s) dans la table WORK.TEMP.
NOTE: L'étape DATA a utilisé (Durée totale du traitement) :
temps réel 0.04 secondes
temps UC 0.00 secondes
NOTE: CALL EXECUTE a généré une ligne.
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans
SYMBOLGEN : Macro variable BTABLEEXISTE traitée dans 1
1 + %IntegreTable LibSrc.D_A0200161CERTIV59UCANS1X359
,AppliCft.D_Agreg200912A
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans
SYMBOLGEN : Macro variable MYTABLESOURCE traitée dans
NOTE: 4 observation(s) lue(s) dans la table WORK.TEMP.
NOTE: La table WORK.DATA4 a 4 observation(s) et 5 variable(s).
NOTE: L'étape DATA a utilisé (Durée totale du traitement) :
temps réel 0.00 secondes
temps UC 0.00 secondes
-----------------------------------
180
ERROR 180-322: Instruction incorrecte ou mal utilisée.
2 +
3 + data AppliCft.C_Agreg200912A;
NOTE: Ligne générée par la routine CALL EXECUTE.
3 + set AppliCft.C_Agreg200912A
---
180
3 !+LibSrc.C_A0200161CERTIV59UCANS1X359; run;
ERROR 180-322: Instruction incorrecte ou mal utilisée.
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans
SYMBOLGEN : Macro variable BTABLEEXISTE traitée dans 1
4 + %IntegreTable LibSrc.D_K1422244CERTI06UCANS1V01F
,AppliCft.D_Agreg200912A
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans
SYMBOLGEN : Macro variable MYTABLEDEST traitée dans
SYMBOLGEN : Macro variable MYTABLESOURCE traitée dans
NOTE: 4 observation(s) lue(s) dans la table WORK.DATA4.
NOTE: La table WORK.DATA5 a 4 observation(s) et 5 variable(s).
NOTE: L'étape DATA a utilisé (Durée totale du traitement) :
temps réel 0.00 secondes
temps UC 0.00 secondes
----------------------------------
180
ERROR 180-322: Instruction incorrecte ou mal utilisée.
5 +
6 + data AppliCft.C_Agreg200912A;
NOTE: Ligne générée par la routine CALL EXECUTE.
6 + set AppliCft.C_Agreg200912A
LibSrc.C_K1422244CERTI06UCANS1V01F
---
180
6 !+; run;
ERROR 180-322: Instruction incorrecte ou mal utilisée.
NOTE: Suppression de WORK.TEMP (memtype=DATA).
NOTE: Procédure DELETE a utilisé (Durée totale du traitement) :
temps réel 0.00 secondes
temps UC 0.00 secondes
34208
34209 /* Vérif des résultats */
34210 proc sql;
34211 select fichier, input(nbenreg,best.) as total from
34211 ! applicft.ficrecusdet where annee eq '2009' and mois eq '12' and periode
34211 ! eq 'A' and FicOk eq 1;
34212 quit;
NOTE: Procédure SQL a utilisé (Durée totale du traitement) :
temps réel 0.01 secondes
temps UC 0.00 secondes
34213
34214
34215 proc sql;
34216 select count(1) as total from applicft.d_Agreg200912A;
34217 quit;
NOTE: Procédure SQL a utilisé (Durée totale du traitement) :
temps réel 0.01 secondes
temps UC 0.00 secondes
[/PRE]
And the whole code :
[PRE]
%Global PrefD;
%Global PrefC;
%Global PostRep;
%Global Annee;
%Global Mois;
%Global Periode;
%Global FicOk;
%Global Nom;
%Global Nb;
%Macro CreeTableMensuelle(MyTableRef, MyRepIn, MyLibOut, MyTableOut, MyAnnee, MyMois, MyPeriode);
/* Récupération des informations utiles au traitement des fichiers */
Proc Sql NoPrint;
Create Table temp As
Select Distinct Fichier,Mois,Annee,Periode,FicOk
From &MyTableRef;
Quit;
/* On parcourt la liste des fichiers */
DATA _NULL_;
SET temp;
PrefD="D_";
PrefC="C_";
Post="A_TRAITER\";
MyRepIn=&MyRepIn;
MyAnnee=&MyAnnee;
MyMois=&MyMois;
MyPeriode=&MyPeriode;
MyLibOut=&MyLibOut;
MyTableOut=&MyTableOut;
/* Cats et CatX enlèvent les blancs aux extrêmités */
/* CatX permet d'insérer un séparateur (1er argument) entre chaque (autre) argument dans la chaîne résultat */
IF Annee eq MyAnnee AND Mois eq MyMois AND Periode eq MyPeriode AND FicOk eq 1 then do;
IF MyPeriode='A' then stRep=catx('\',MyRepIn,MyAnnee,MyMois,'ANNUEL',Post);
If MyPeriode='M' then stRep=catx('\',MyRepIn,MyAnnee,MyMois,'MENSUEL',Post);
rc=libname('LibSrc',stRep);
/* Agrégation fichier de données */
stFichierIn=cats(PrefD,Fichier);
stTableOut=cats(MyLibOut,'.',PrefD,MyTableOut);
CALL EXECUTE ('%NRSTR(%IntegreTable LibSrc.'||StFichierIn||','||stTableOut||')');
/* Agrégation fichier de tests */
stFichierIn=cats(PrefC,Fichier);
stTableOut=cats(MyLibOut,'.',PrefC,MyTableOut);
CALL EXECUTE ('%NRSTR(%IntegreTable LibSrc.'||StFichierIn||','||stTableOut||')');
end;
run;
/* Suppression des tables temporaires */
Proc Delete Data=temp; Run;
%mend;
%Macro IntegreTable(MyTableSource, MyTableDest);
/* Vérification si MyTableDest existe */
%local bTableExiste;
%let bTableExiste=%sysfunc(exist(&MyTableDest));
/* Si table existe déjà alors ajout de MyTableSource */
%if %eval(&bTableExiste) eq 1 %then %do;
data &MyTableDest;
set &MyTableDest &MyTableSource;
run;
%end;
/* Si la table n'existe pas alors création */
%else %do;
data &MyTableDest;
set &MyTableSource;
run;
%end;
%Mend;
/* Test de constitution de la table mensuelle annuelle de Décembre 2009 */
dm log 'clear';
dm output 'clear';
option nomlogic symbolgen nomprint notes;
%Global MyRepIn;
%Let MyRepIn="C:\FichiersAImporter\";
%CreeTableMensuelle(A.Fichier,&MyRepIn,'A','Agreg200912A',2009,12,'A');
[/PRE]
Message was edited by: phil27