IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Reconstituer un programme sas de création de formats à partir d'un catalogue de formats


Sujet :

SAS Base

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 108
    Points
    108
    Par défaut Reconstituer un programme sas de création de formats à partir d'un catalogue de formats
    Bonjour,
    disposant d'un catalogue de formats que je peux lire bien-sur (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    proc format library=ici.formats fmtlib; 
       *select $cntry ny;
       *exclude $cntry ny;
    run;


    , est ce que je peux obtenir un programme sas de création des formats, c'est à dire quelqu chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc format lib=ici;
       value $ cntry 'FR' = 'France'
                     'DE' = 'Germany'
                     'UK' = 'United-Kingdom';
       value ny      0    = 'Non'
                     1    = 'Yes';
    run;

  2. #2
    Membre éprouvé
    Avatar de steelspirit
    Homme Profil pro
    SAS discute
    Inscrit en
    Janvier 2008
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SAS discute
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 472
    Points : 916
    Points
    916
    Par défaut
    Bonjour !
    Etant donné qu'un programme SAS est un fichier texte comme les autres, c'est tout à fait possible d'écrire avec SAS dans un fichier texte : instructions FILE et PUT.

    L'idée est la suivante :
    1) Export du catalogue de format en dataset SAS
    2) Lecture du dataset et écriture dans un fichier texte :
    -> On commence par écrire "proc format; value ..."
    -> Puis les formats 'FR'='France'
    -> On termine par "Run;"

    Voici un exemple qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    /* Format de test dans la WORK que l'on veut obtenir en résultat */
    proc format;
    	value $ pays 'FR'='France'
    				 'DE'='Germany';
    	value yn 	  1='Yes'
    				  2='No';
    run;
     
    /* Export en dataset */
    proc format lib=work cntlout=fmt_export;
    run;
     
    proc sort data=fmt_export;
    	by fmtname start;
    run;
     
    /* Ecriture du programme */
    data test;
    	file 'C:\temp\format.sas';
     
    	length start label $200;
    	set fmt_export end=eof;
    	by fmtname;
     
    	label=cats("'",label,"'"); /* On met entre quotes */
    	if type="C" then start=cats("'",start,"'"); /* On met entre quotes */
     
                  /* On comment avec "proc format" */
    	if _n_=1 then put "proc format lib=work;";
     
                  /* pour chaque format on écrit value <format> ou value $ <format> en fonction du type */
    	if first.fmtname then do;
    		put "        value " @;
    		if type="C" then put " $ " @;
    		put fmtname start "=" label ; 
    	end;
    	else do;
    		put "                  " start "=" label;
    	end;
    	if last.fmtname then put "                   ;";
     
                  /* à la fin du dataset on ferme la proc format généré par Run; */
    	if eof then put "run;";
    run;
    Bon courage,
    Steel
    Avant de poser votre question, n'oubliez pas :
    FAQ, SAS DOC et de ce forum

Discussions similaires

  1. [Macro] optimisation de programmes SAS
    Par bar_79 dans le forum Macro
    Réponses: 4
    Dernier message: 25/11/2008, 15h51
  2. retain et programmation SAS
    Par morenita2107 dans le forum SAS STAT
    Réponses: 4
    Dernier message: 29/08/2008, 09h58
  3. [Macro] Lancement d'un programme SAS en batch
    Par fafabzh6 dans le forum Macro
    Réponses: 0
    Dernier message: 30/07/2008, 14h39
  4. Lancement d'un programme SAS en batch
    Par benoitbrisefer dans le forum Administration et Installation
    Réponses: 1
    Dernier message: 22/07/2008, 17h54
  5. reconstituer une table sas selon un schéma
    Par nostress dans le forum SAS Base
    Réponses: 1
    Dernier message: 27/05/2008, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo