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

Macro Discussion :

Lire macro catalogue sasmacr


Sujet :

Macro

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Lire macro catalogue sasmacr
    Bonjour,

    Je souhaite lire le code de macros compilées dans un catalogue sas. J'ai lu que la macro %copy pouvait peut etre me donner acces au code mais je n'arrive pas à l'utiliser.

    Merci de votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    hello,
    avec %copy , le code compilé est affiché dans la LOG.

    sinon il faut rajouté le outfile=;

    Exemple:
    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
     
     
     libname source "C:\temps";
     OPTIONS MSTORED SASMSTORE = source ;
     
     
     %macro test(arg) /store source
         des="discription de la macro";
     
    	 data test;
    	 set sashelp.class;
    	 if age=&arg;
    	 run;
     
    %mend ;      
     
    %copy test/source outfile="c:\temps\sas.sas";

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse,

    En effet la macro copy fonctionne pour récupérer une macro que je viens de compiler. Mais en fait mon problème est que j'ai récupéré un catalogue sas comprenant différentes macros et je voudrais accéder au code de ces macros. Or dans ce cas :

    %copy nom_de_la_macro / store source;

    ne me permet pas de visualiser le code.
    Existe-t-il une solution ?

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    bah,
    il faut poster ton code pour voir ce que t'as mis de dans.
    l'appel de macro compilé ce fait comme ceci.
    1- libname vers le repertoire où se trouve ton catalogue macro.
    2- utiliser les options suivantes: mstored ,....comme ceci;
    si t'as un macro déjà compilée qui s'appel TEST.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    libname rep "C:\temps\macro";
     
    options   mautosource SASMSTORE=rep  mstored;*sasautos=rep;
    %Test  ;

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Je suis désolée mais j'ai vraiment du mal à comprendre.

    1-j'ai fait le libname vers le répertoire contenant le catalogue de macro.

    Mon problème est que je n'ai jamais compilé ces macros puisque justement je ne connais leur code.
    Je peux acceder aux codes de macros que je n'ai jamais compilées ?

  6. #6
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    non , il faut compiler la macro avant de l'enregistrer.

  7. #7
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    je rajoute,
    Pour savoir s'il existent des macro compilées dans un répertoire donné

    tu peux faire ceci : (ici je teste : C:\temps\macro)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    libname rep "C:\temps\macro";
    proc sql noprint;
     
    create table mes_macro as select /*libname, objname as macro*/  * from dictionary.catalogs 
    where
         upcase (memname) ='SASMACR'
    and 
         UPCASE(libname)="REP";
    quit;

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    D'accord, étant donné que j'ai récupéré ce catalogue de macro et que je ne l'ai pas créé, ces macros n'ont pas été compilées.
    Je suppose qu'il n'est pas possible de récupérer dans ce cas le code.

    Merci.

  9. #9
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    as-tu essayé le code que je t'ai donné? ( le dernier)

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Désolée de ne pas super bien comprendre mais à quoi correspond
    dictionary.catalogs
    dans ton code ?

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Ca me crée une table vide : j'abandonne ces macros resteront des macros fantomes sans codes !
    Merci pour ton aide.

  12. #12
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Bon, pour faire simple on va dire c'est des vues (tables) cachées ( il y a que sas qui les voie, puis on ne peux les utiliser que dans la proc SQL).
    il y a l'équivalent de chaque vue dictionary dans la librerie Sashelp et pour les vues catalogue , tu trouves la mêmes chose dans "sashelp.vcatalg"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    data vue_cat;
    set sashelp.vcatalg;
    run;

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Oups je m'étais trompé ça me crée une table avec la description des macro (date de création, de modif).

  14. #14
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    bah oui c'est sa; tu trouves les noms de tes macro compilées dans la colonnes objname ajoutes
    pour voir les noms de colonnes.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    dans cette colonne je vois le noms des macros auxquelles je veux acceder ainsi que la macro test que tu m'a donnée.
    Lorsque je veux visualiser le code de la macro test il n'y a aucun problème par contre lorsque je veux faire la même opération avec les autres macro j'ai les messages d'erreur suivants qui s'afichent :

    L'option source n'a pas été spécifiée lorsque la macro Pat a été compilée

  16. #16
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    c'est ce que je disais , pour pouvoir réutilisé une macro déjà enregistrer dans un catalogue, il faut utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     libname source "C:\temp\macro";
     OPTIONS MSTORED SASMSTORE = source ;

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Voici un lien ou tu trouves un catalogue de macro :
    http://www.unige.ch/ses/sococ/eda/sas/welcome.html

    Je n'arrive toujours pas malgré toutes tes explications (encore merci) à voir le code de ces macros.

  18. #18
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour.
    Un catalogue de macros ne contient que des programmes déjà compilés. L'opération de compilation crypte partiellement le code. Si la personne qui a créé le catalogue n'a pas ajouté d'option SOURCE aux macro-programmes, et visiblement le message de %COPY va dans ce sens, c'est raté : tu ne verras jamais le source des macro-programmes.
    C'est d'ailleurs un des "avantages" des catalogues de macros : on peut les diffuser sans se faire pirater son code source.

    Tu peux toujours essayer d'exécuter les macros avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OPTION MPRINT MLOGIC SYMBOLGEN ;
    qui traceront l'exécution du code macro. Mais il faudra reconstruire le code source toi-même.
    Bon courage.
    Olivier

Discussions similaires

  1. Accéder aux macros du catalogue SASMACR
    Par cirtey dans le forum Macro
    Réponses: 2
    Dernier message: 08/01/2012, 20h14
  2. lire une macro definie par une variable
    Par L'elfe d'Azur dans le forum C
    Réponses: 5
    Dernier message: 20/09/2008, 14h29
  3. Lire l'ID Produit par Macro
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/07/2008, 10h56
  4. Utilisation de la macro XL4 LIRE.DOCUMENT
    Par Bigalo dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/02/2008, 20h58
  5. (VBA excel) lire les donnees d'un macro complementaire
    Par benmo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/12/2006, 19h38

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