Auto-évaluation


SAS® Le langage MACRO : techniques avancées (AMACR)

Cochez la meilleure réponse pour chaque question. Lorsque vous avez terminé cliquez sur Soumettre questionnaire.   

  1. Quelle instruction est fausse?

     a.   Le traitement des fonctions macro a toujours lieu durant  la phase d'exécution de l'étape DATA
     b.   Les références faites à des macro variables dans une étape DATA sont toujours résolues avant la phase de compilation de l'étape DATA
     c.   Une instruction %LET provoque la création d'une macro variable par le macro processeur avant la phase de compilation de l'étape DATA
     d.   La routine SYMPUTX crée une macro variable basée sur les données calculées dans l'étape DATA


  2. Quelle étape DATA crée une macro variable nommée Region et lui assigne la valeur  EAST ou WEST  selon la valeur de la variable  Location?

     a.  
    data new;
    set sasuser.all;
    if Location='Boston' then do;
    call symputx('Region',
    'East');
    end;
    else do;
    call symputx('Region',
    'West');
    end;
    run;
     b.  
    data new;
    set sasuser.all;
    if Location='Boston' then do;
    %let Region=East;
    end;
    else do;
    %let Region=West;
    end;
    run;
     c.  
    data new;
    set sasuser.all;
    if Location='Boston' then do;
    call symputx(Region, "East");
    end;
    else do;
    call symputx(Region, "West");
    end;
    run;
     d.  
    data new;
    set sasuser.all;
    if Location='Boston' then do;
    symputx(Region, East);
    end;
    else do;
    symputx(Region, West);
    end;
    run;


  3. Quel exemple crée correctement une macro variable dans l'étape PROC SQL?

     a.  
    select Fee/Days format=dollar8. 
    into Daily_Fee from sasuser.all;
     b.  
    select Fee/Days format=dollar8.
    into :Daily_Fee from sasuser.all;
     c.  
    %let Daily_Fee=put(Fee/Days, dollar8.);
     d.  
    call symputx(Daily_Fee, put(Fee/Days, dollar8.);


  4. Considérons la table des symboles suivante:

    Global Symbol Table
    TEACH1 Hallis, Dr. George
    TEACH2 Wickam, Dr. Alice
    TEACH3 Forest, Mr. Peter
    CRS 3

    Quelle valeur produit une référence faite à: &&TEACH&CRS?

     a.   TEACH3
     b.   &TEACH3
     c.   &TEACH&CRS
     d.   Forest, Mr. Peter


  5. Quel exemple définit une macro nommée Print qui implémente correctement les paramètres nommés vars et  total?

     a.  
    %macro Print(&vars, &total);
    proc print data=classes;
    var vars;
    sum total;
    run;
    %mend Print;
     b.  
    %macro Print(vars, total);
    proc print data=classes;
    var &vars;
    sum &total;
    run;
    %mend Print;
     c.  
    %macro Print('vars', 'total');
    proc print data=classes;
    var &vars;
    sum &total;
    run;
    %mend Print;
     d.  
    %macro Print(vars, total);
    proc print data=classes;
    var :vars;
    sum :total;
    run;
    %mend Print;


  6. Quel exemple crée une macro variable nommée Class dans une table de symboles locale? Supposons que chaque programme est soumis dans une nouvelle session SAS.

     a.  
    data _null_;
    set sasuser.courses;
    %let Class=Course_Title;
    run;
     b.  
    data _null_;
    set sasuser.courses;
    call symputx('Class', Course_Title);
    run;
     c.  
    %macro sample(dsn);
    %global Class;
    %let Class=Course_Title;
    data _null_;
    set &dsn;
    run;
    %mend;

    %sample(courses)
     d.  
    %macro sample(dsn);
    %let Class=Course_Title;
    data _null_;
    set &dsn;
    run;
    %mend;

    %sample(courses)


  7. En supposant que l'on ait ouvert une session SAS aujourd'hui, quelle instruction assigne correctement la  macro variable CurrDate à la date du jour? 

     a.   %let CurrDate = today();
     b.   %let CurrDate = %sysfunc(&sysdate);
     c.   %let CurrDate = put(today(),worddate.);
     d.   %let CurrDate = %sysfunc(today(),worddate.);


  8. Quel exemple  compare correctement la valeur de la macro variable MacVar à une valeur nulle ?

     a.  
    %macro test;
    %if &MacVar = %then %do;
    %put value of MacVar is null;
    %end;
    %mend;
     b.  
    %macro test;
    %if &MacVar = _null_ %then %do;
    %put value of MacVar is null;
    %end;
    %mend;
     c.  
    %macro test;
    %if &MacVar = " " %then %do;
    %put value of MacVar is null;
    %end;
    %mend;
     d.  
    %macro test;
    %if "MacVar" = %then %do;
    %put value of MacVar is null;
    %end;
    %mend;


  9. Quel exemple crée une séquence de macro variables, allant de DSN1 à DSNn?

     a.  
    data _null_;
    set sashelp.vstabvw;
    where libname='WORK';
    call symputx('DSN'||_n_, memname);
    run;
     b.  
    data _null_;
    set sashelp.vstabvw;
    where libname='WORK';
    call symputx('DSN', memname);
    run;
     c.  
    data _null_;
    set sashelp.vstabvw;
    where libname='WORK';
    call symputx('DSN'||left(_n_), memname);
    run;
     d.  
    data _null_;
    set sashelp.vstabvw;
    where libname='WORK';
    %let DSN=memname;
    run;


  10. Considérant la table des symboles globale suivante:

    Global Symbol Table
    DSN1 employee
    DSN2 payroll
    DSN3 customer
    N 3


    Quel  macro programme produit une liste de données pour chaque nom de table stocké dans DSN1 jusqu'à  DSN3?

     a.  
    %macro Test;
    %do i=1 %to n;
    proc print data=&&DSN&i;
    run;
    %end;
    %mend;
     b.  
    %macro Test;
    %do i=1 %to &n;
    proc print data=&&DSN&i;
    run;
    %end;
    %mend;
     c.  
    %macro Test;
    %do i=1 %to &n;
    proc print data=&DSN&i;
    run;
    %end;
    %mend;
     d.  
    %macro Test;
    %do &i=1 %to &n;
    proc print data=&&DSN&i;
    run;
    %end;
    %mend;