logo

ODS : bug dans ODS OUTPUT avec la procédure FREQ

Bonjour,

Je souhaite faire une sortie ods d’une proc freq.
J’ai donc fait la manip « ods trace on … » pour avoir le nom de la sortie (crosstabfreqs) mais à l’éxecution du freq, le message suivant apparait dans la log : « ERREUR: La valeur Fréquence n’est pas un nom SAS valide. »
Comment faire ? merci

 

Il s’agit d’un bug de la version 9.1 en français, qui a été corrigé par un hotfix d’ailleurs. Sans rien changer à votre installation de SAS, voilà comment faire et d’où vient le problème.

Le « pourquoi » : l’ODS Output capture dans une table une image fidèle des résultats affichés dans la fenêtre Output, et prend pour noms de variables les noms des différentes colonnes. Dans la version française, la 1e colonne calculée des sorties de la proc Freq se nomme « Fréquence » avec un accent, et SAS essaye (sans succès) de créer une variable du même nom. Les caractères accentués sont effectivement interdits par défaut dans les noms de variables.

Le « comment s’en sortir » :

  1. faire précéder le programme de l’option système VALIDVARNAME=ANY qui va autoriser les caractères accentués dans les noms.
  2. Faire un RENAME dès que possible pour se débarrasser de l’accent et pouvoir repositionner VALIDVARNAME à sa valeur initiale, V7.
OPTION VALIDVARNAME=ANY ;
 ODS OUTPUT crossTabFreqs = work.maSortie (RENAME = ("Fréquence"n = Frequence)) ; 
PROC FREQ DATA = ... ;
    TABLE ... ;
 RUN ;
 OPTION VALIDVARNAME=V7 ;