Bonjour, je travaille sous SAS mais je suis néophyte. On m'a écrit une macro à mettre dans mon programme mais SAS me dit instruction incorrecte ou mal utilisée et surtout ne reconnait pas les 'if' et les 'then'. Il doit y avoir une erreur de syntaxe mais je ne la trouve pas. MERCI DE VOTRE AIDE.....
Voilà ce que j'ai écrit :
%macro recod(var);
If (&var eq 'AUCUNE DIFFICULTE') then &var=0;
If (&var eq 'QUELQUES DIFFICULTES') then &var=1;
If (&var eq 'BEAUCOUP DE DIFFICULTES') then &var=2;
If (&var eq 'INCAPABLE DE LE FAIRE') then &var=3;
%mend;
%recod(PEUT_HABILLER);
%recod(CHEVEUX);
%recod(CHAISE);
%recod(LEVER_LIT);
%recod(VIANDE);
%recod(PEUT_BOIRE);
%recod(BRIQUE);
%recod(MARCHER);
%recod(MONTER);
%recod(LAVER);
%recod(BAIGNER);
%recod(ASSEOIR);
%recod(PRENDRE);
%recod(BAISSER);
%recod(PORTE);
%recod(DEVISSER);
%recod(ROBINET);
%recod(FAIRE_COURSE);
%recod(VOITURE);
%recod(MENAGE);
%macro deuxdim (var1, var2, var3);
If (&var1 eq .) then &var3=&var2;
If (&var2 eq .) then &var3=&var1;
If (&var1 ge &var2) then &var3=&var1;
If (&var1 lt &var2) then &var3=&var2;
%mend;
%deuxdim(PEUT_HABILLER, CHEVEUX, haq1);
%deuxdim(CHAISE, LEVER_LIT, haq2);
%deuxdim(MARCHER,MONTER, haq4);
%deuxdim(PRENDRE, BAISSER, haq6);
%macro troisdim(var1, var2, var3, var4);
If(&var1 eq . or &var2 eq .) then &var4=&var3;
If(&var1 eq . or &var3 eq .) then &var4=&var2;
If(&var2 eq . or &var3 eq .) then &var4=&var1;
If(&var1 ge &var2) then &var4=&var1;
If(&var1 lt &var2) then &var4=&var2;
If(&var4 ge &var3) then &var4=&var4;
If(&var4 lt &var3) then &var4=&var3;
%mend;
%troisdim(VIANDE, PEUT_BOIRE, BRIQUE, haq3);
%troisdim(LAVER, BAIGNER, ASSEOIR, haq5);
%troisdim(PORTE, DEVISSER, ROBINET, haq7);
%troisdim(FAIRE_COURSE, VOITURE, MENAGE, haq8);
%macro recal(var1, var2);
If (&var1 eq 1 and &var2 eq .) then &var2=2;
If (&var1 eq 1 and &var2 lt 2) then &var2=2;
%mend;
%recal(ACCESS_HABIT,HAQ1); %recal(AIDE_HABIT,HAQ1);
%recal(CHAISE_SP,HAQ2); %recal(AIDE_LEVER,HAQ2);
%recal(USTENSILE,HAQ3);%recal(AIDE_MANGER,HAQ3);
%recal(CANNE,HAQ4);%recal(DEAMBU,HAQ4);%recal(BEQUILLE,HAQ4);
%recal(CHAISE_ROUE,HAQ4);%recal(AIDE_MARCHER,HAQ4);
%recal(WC,HAQ5);%recal(SIEGE_BAIN,HAQ5);%recal(LG_MANCHE_SALLE_BAIN,HAQ5);
%recal(POIGNEE_BAIN,HAQ5);%recal(HYGIENE,HAQ5);
%recal(ATTRAPE,HAQ6);%recal(ATTRAPER,HAQ6);
%recal(OUVRE_POT,HAQ7);%recal(SAISIR,HAQ7);
%recal(COURSES,HAQ8);
HAQ=sum(of HAQ1, HAQ2, HAQ3, HAQ4, HAQ5, HAQ6, HAQ7, HAQ8);
HAQ=HAQ/8;;
