Si erreur / try catch / swith pour gérer une exception
Bonjour,
Je possède 5 fichiers Excel qui ont le même schèma :
Citation:
"N° Police"n > text format
Application > text format
"Nature événement"n text format
"Cause événement"n > text format
"Anomalie(s)"n > text format
"Date rejet initial"n > numeric format
Acteur > text format
Statut > text format
"Analyse Gestion"n > text format
"Analyse MOE" > text format
"Date correction"n > text format (si la colonne excel est vide) , date format (si la colonne contient au moins une date) .
Lead > text format
Une fois par jour j'importe mes fichiers excel dans mon prgramme SAS sans savoir par avance su la colonne "Date correction"n est vide ou contient au moins une valeur.
A cause de ce cas je voudrais utiliser un switch.
Si la colonne est vide (le format d'entrée étant du texte), je veux exécuter une requête qui va me convertir la colonne au format date :
Code:
call execute (' proc sql ; create table '!!tp_1!!'2 as select "N° Police"n , Application , "Nature événement"n , "Cause événement"n , "Anomalie(s)"n , "Date rejet initial"n , acteur , statut , "Analyse Gestion"n , "Analyse MOE"n , '!!' case when "Date correction"n like '' then ''d end as dtcorr '!!' , Lead from work.'!!tp_1!!' ; run ; ');
Sinon j’exécute ma requête de traitement standard des dates :
Code:
call execute (' proc sql ; create table '!!tp_1!!'2 as select "N° Police"n , Application , "Nature événement"n , "Cause événement"n , "Anomalie(s)"n , "Date rejet initial"n , acteur , statut , "Analyse Gestion"n , "Analyse MOE"n , '!!' case when "Date correction"n < 0 then "Date correction"n else ''d end as dtcorr '!!' , Lead from work.'!!tp_1!!' ; run ; ');
Mon programme a cette tête :
Code:
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
| options compress=yes sortsize=max;
/* macro d'import des données de Excel */
%impxlsx2('\\serveur\underfile\INPUT_test\8X_DECES-SUIVI_ANO_FCT.xlsx', huitX_DECES_imp , 'Anomalies à traiter');
%impxlsx2('\\serveur\underfile\INPUT_test\8X_SUIVI_ANO_FCT.xlsx', huitX_imp , 'Anomalies à traiter');
%impxlsx2('\\serveur\underfile\INPUT_test\OBSEQUES_SUIVI_ANO_FCT.xlsx', OBSEQUES_imp , 'Anomalies à traiter');
%impxlsx2('\\serveur\underfile\INPUT_test\PEGASE_DECES-SUIVI_ANO_FCT.xlsx', PEGASE_DECES_imp , 'Anomalies à traiter');
%impxlsx2('\\serveur\underfile\INPUT_test\PEGASE_SUIVI_ANO_FCT.xlsx', PEGASE_imp , 'Anomalies à traiter');
/* conversion du champ date de correction en champ date vide lorsque celui ci n'est pas renseigné */
%let tp1='huitX_DECES_imp';
%let tp2='huitX_imp';
%let tp3='OBSEQUES_imp';
%let tp4='PEGASE_DECES_imp';
%let tp5='PEGASE_imp';
data _null_ ;
tp_1=&tp1;
tp_2=&tp2;
tp_3=&tp3;
tp_4=&tp4;
tp_5=&tp5;
/* il faut réussir à mettre une sortir de si/erreur comme sur Excel un genre de try catch en java */
/* if " call excuete 1 " >> generate an error */
/* " call execute 2 " */
/* else */
/* " call execute 1 " */
run; |
C'est possible d'avoir une structure de programme qui a la tronche suivante ? :weird:
Merci de l'aiguillage ;)