logo

Macro : faire un SET avec un nombre de tables variable

J’ai un nombre de tables (de 1 à 40 ou 50, il faut que soit un paramètre) et avec un SET j’en crée une seule. Comment écrire ça sans répéter 40 ou 100 fois le noms des tables dans le SET.

<strong>data ww.CMb;</strong>
<strong>  set </strong>
<strong>     ww.CM1b</strong>
<strong>     ww.CM2b</strong>
<strong>     ...</strong>
<strong>     ww.CM40b;</strong>
<strong>run;</strong>

Merci

Bonjour, et merci de votre question.

Vous pouvez utiliser un programme comme celui-ci :

%MACRO empilement (nbTables) ;
   DATA ww.CMb ;
      SET
        %DO i=1 %TO &amp;nbTables ;
          ww.CM&amp;i.b
        %END ;
      ;
    RUN ;
 %MEND empilement ;
%empilement (40)

A partir de SAS 9.2, plus besoin de macros ! Vous pouvez écrire directement

SET ww.CM1-ww.CM40 ;

dans votre étape Data. Par contre, comme dans votre cas le nom des tables ne se termine pas par un nombre, il faudra rester à la solution macro.