Ces petits trucs qui manquent à la syntaxe de SAS 9.4

Voici quelques fonctionnalités manquantes qui seraient pratiques pour les programmeurs SAS.

Signalez les problèmes réels, pas les problèmes potentiels

Dans les premières versions du langage SAS, il était possible et courant de réduire la longueur d’une variable dans une étape data en définissant la longueur de la variable avant l’instruction set, sans générer de message d’avertissement dans le journal.

Depuis lors, les choses ont changé. L’option globale contrôlant la longueur des variables génère un message d’alerte : varlenchk=warn.

*options varlenchk=warn;

data demo;
    set sashelp.class (keep=name sex where=(length(name)=4));
run;

data demo;
    length name $4;
    set demo;
run;
WARNING: Multiple lengths were specified for the variable name by input data set(s). This can cause truncation of data.

Plutôt que de suggérer que les valeurs pourraient être tronquées, il serait préférable que le système vérifie lui-même et ne m’en informe que si c’est effectivement le cas.

Lister plusieurs noms de datasets dans une procédure pour l’option data=

Dans cet exemple, il n’est pas possible d’afficher tous les datasets commençant par demo en utilisant demo: dans la procédure proc print.

data demo_male;
    set sashelp.class (keep=name sex where=(sex='M'));
run;

data demo_female;
    set sashelp.class (keep=name sex where=(sex='F'));
run;

*La syntaxe suivant n'est pas acceptée avec SAS 9.4;
proc print data=demo:;
run;

Signaler par défaut les problèmes de merge

Un message signalant des problèmes de fusion n’apparaît dans le journal que lorsque l’option globale msglevel=i.

Il s’agit uniquement d’un message d’« Information ».

Ce message important est difficile à repérer pour les raisons suivantes :

  • Les messages « Information » sont écrits en noir.
  • Ce message important se perd au milieu de nombreux autres messages « Information » non pertinents.
  • Dans SAS Studio, seuls les messages ERROR, WARNING et NOTES sont pris en compte dans le filtre du journal.
options msglevel=i;

Il serait donc très utile que ce message figure au minimum dans les NOTEs importantes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *