logo

Formats : Format à partir d’une table

Bonjour,

Je fais un format à partir d’une table sas, jusque-là pas de problème. Mon souci est lorsque j’applique ce format, pour les valeurs qu’il ne trouve pas il n’applique aucun format. Je voudrais ajouter dans mon format une ligne pour les « other » valeurs. Voilà mon pgm :

<b>data format.fmtDRCourt; 
 set tdbprod.BaseCourtiers (keep=gc DR rename=(gc=start dr=label)); 
 by start; 
 type="N"; /* N Numérique */ 
 fmtname="DRCOURT"; 
run; 
proc format lib=format cntlin = format.fmtDRCourt /*fmtlib*/; 
run;</b>

 

Je vous propose la variante suivante. 

DATA format.fmtDRCourt ; 
   SET tdbprod.BaseCourtiers (KEEP = gc dr RENAME=(gc=start)) ; 
   BY start ;
   LENGTH label $32 ;
   type="N" ; /* N Numérique */ 
   fmtname="DRCOURT" ; 
   IF _N_=1 THEN DO ;
     hlo = "O" ; /* ligne OTHER */
     label = "Autres" ;
     OUTPUT ;
   END ;
   hlo = " " ;
   label = dr ; /* ou PUT(dr, format.) si DR est une variable numérique */
   OUTPUT ;
 RUN ; 
 PROC FORMAT LIB=format CNTLIN = format.fmtDRCourt FMTLIB ; 
 RUN ;

La variable HLO (High, Low, Other) permet de repérer les lignes « spéciales » dans le descriptif d’un format : celles qui utilisent un de ces trois mots-clés. La variable HLO vaut alors « L », « H » ou « O » selon les cas.