jeudi 2 décembre 2010

Créer un ensemble de macro variables avec SQL: sysmaxlong

La variable macro & sysmaxlong permet de créer l'élément  supérieure de la  macro, c'est à dire que l'élément n-ième est créé, correspondant au nombre maximum de lignes dans la table.
 
   proc sql noprint;
      select distinct ville
             into :ville-ville&sysmaxlong.
        from monfichier;
          %let n_ville = &sqlobs;
     quit;

     %do i = 1 %to &n_ville;
        &&&ville&i;
     %end;

Lire un champ de plus de 1024 chr


Dans SAS la limite maximum par défaut d'un champ caractère est de 1024,
Pour lire un champ plus long depuis une base de donnée il faut employer l’option DBMAX_TEXT=4096  maximum 32767



LIBNAME Malib ODBC  DATASRC=MaSource  SCHEMA=dbo  USER=dwh001  PASSWORD= xxxx DBMAX_TEXT=3264 ;

mercredi 17 novembre 2010

Comment définir la position d'une colonne dans une table sas existante

Les commandes KEEP ou DROP ne change pas l'ordre des attributs, il faut donc créer une nouvelle table.
Le plus simple et le plus rapide c'est de créer une nouvelle table en SQL, ainsi les attributs hériteront des longueurs, format et label de la table originale.

proc sql;
 create table matable
 as select nom, prenom, dnaiss,naff,ncon,rm
 from anciennetable
;

Lire le contenu d'un dossier

Lecture du directory des jobs déployé en SAS DI, sans employé de commande externe, la table comporte 2 champs l’un avec le nom du programme et l’autre le contenu de chaque ligne de programme.


filename monfich "E:\SAS\backtier\Lev1\SASApp\SASEnvironment\SASCode\Jobs\*.sas";
data Lectdir;
  length filename $256 sasfile $64;
  retain sasfile;
  infile monfich filename=filename eov=eov length=L;
  input line $varying256. l;  
  if _n_ eq 1 or eov then do;
   sasfile = scan(filename,-2,'.\');
   eov  = 0;
  end;
 run;