logo

Macro : Arrêt du déroulement d’un macro-programme

J’aimerai savoir s’il est possible de faire s’arrêter le programme et annuler les éventuelles instructions suivant l’appel du MP (un sorte de break ), si une certaine condition est vérifiée.

%if &Nberr=0 %then %do;
     « arrêter tout »
%end ;

Si c’est possible comment faire ?

Avec les versions de SAS antérieures à la 9, on ne peut traiter le problème qu’à « l’ancienne » avec un %GOTO vers un autre point du programme (après lequel on ne fera plus rien).

%macro MP1 ;
  %if condition %then %do;
      %goto exit;
  %end;
  %exit:
%mend MP1;

Avec la version 9 apparaissent deux instructions %ABORT  et %RETURN qui permettent d’arrêter l’exécution du macro-programme. %ABORT arrête le MP avec un message d’erreur tandis que %RETURN arrête le MP sans erreur.