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 :

Connaitre le répertoire courant du programme où s'exécute le code et le stocker dans une macro variable


Sujet :

Macro

  1. #1
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut Connaitre le répertoire courant du programme où s'exécute le code et le stocker dans une macro variable
    Bonjour,

    Est-il possible de connaitre le répertoire courant du programme où s'exécute le code?

    J'ouvre le fichier "c:\MonProgramme\MonCode.sas" , je voudrais à l'exécution de MonCode.sas qu'une macro variable monDir soit créée de valeur monDir=c:\MonProgramme

    Merci

  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 Jérome;
    tout est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    proc sql;
    create table files as select * from dictionary.EXTFILES;
    quit;
    il y a une fonction qui permet de régupérer le nom de ton PGM mais j'ai oublié le nom

  3. #3
    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
    Et sous Windows on peut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %sysget(SAS_EXECFILENAME)
    pour le nom du fichier (sans le répertoire), tandis que pour répertoire + fichier on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %sysget(SAS_EXECFILEPATH)
    Ce qui fait que pour ton répertoire il faut demander
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %SUBSTR(%SYSGET(sas_execfilepath),1,
                 %EVAL(%LENGTH(%SYSGET(sas_execfilepath))-
                       %LENGTH(%SYSGET(sas_execfilename))-1))
    (beurk)

  4. #4
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Dans le même ordre d'idée, connaitre le répertoire courant du programme où s'exécute le code, c'est possible ?
    Depuis EG ou en batch ?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    En SAS normal sur serveur, c'est pour faire un programme "portable" avec des tables associées qui ont pour vocation d'être dans la même arborescence que le code du programme, comme ça inutile de changer le chemin à chaque fois si SAS sait le trouver.

    Merci à s_a_m et Olivier.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par jerome_pdv2 Voir le message
    En SAS normal sur serveur, c'est pour faire un programme "portable" avec des tables associées qui ont pour vocation d'être dans la même arborescence que le code du programme, comme ça inutile de changer le chemin à chaque fois si SAS sait le trouver.

    Merci à s_a_m et Olivier.
    MERCI D'UTILISER CES CODES

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var appdir: string;
    AppDir := ExtractFilePath(Application.ExeName);
    //OU ENCORE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppDir := ExtractFilePath(ParamStr(0));

    MATHIEU KODIO

  7. #7
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Citation Envoyé par mattkodio Voir le message
    MERCI D'UTILISER CES CODES

    //var appdir: string;

    //AppDir := ExtractFilePath(Application.ExeName);

    //OU ENCORE

    //AppDir := ExtractFilePath(ParamStr(0));


    MATHIEU KODIO
    Bonjour,

    hors sujet, mais merci quand même

    Quand à l'impératif...

    Bon vent

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 244
    Points : 138
    Points
    138
    Par défaut Chemin courant existe
    Bonjour à tous ce message est assez ancien mais peut-être qu'il peut servir à d'autre.

    Alors il faut utiliser un arborescence comme la mienne sinon il faut changer les calcules des longueurs.
    Voici une images des dossiers :

    Nom : liste_dossiers.png
Affichages : 1709
Taille : 7,7 Ko

    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
     
    * ===========================================================================;
    * ===========================================================================;
    * =========================         DEMARRAGE          ======================;
    * ===========================================================================;
    * ===========================================================================;
    * On nomme la librairie;
    %let rep=TON_ACRONYME;
    %let maversion=TA_VERSION;
    * On choisit un répertoire de travail à executer à chaque ouverture de programme;
    %let longueur1=%EVAL(%LENGTH(%SYSGET(sas_execfilepath))-%LENGTH(%SYSGET(sas_execfilename))-1);
    %let longueur2=%EVAL(&longueur1.-4); /* le programme se trouve dans le dossier "\SAS" donc moins 4 caractères */
    %let chemin=%SUBSTR(%SYSGET(sas_execfilepath),1,&longueur2.);
     
    libname &rep. "&chemin.\TABLES" ;
     
    * On créer les répertoires ci-dessous dans le répertoire racine de l''analyse;
    * On désigne les répertoires de stockage des sorties et des programmes;
    %let source=&chemin.\SOURCES;
    %let sortie=&chemin.\SORTIES;
     
    * On ouvre la librairie des programmes SAS macro et on charge les macros;
    * Attention il faut changer la lettre selon son arborescence;
    libname CMRUN 'W:\MACRO_SAS' ; 
     
    options mstored sasmstore=CMRUN ;
    * ===========================================================================;
    voilà bon courage à tous

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/03/2012, 15h31
  2. Réponses: 4
    Dernier message: 01/04/2010, 15h20
  3. comment utiliser un programme comme une fonction dans une macro exel
    Par ERICKO dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2007, 23h39
  4. Connaitre le répertoire courant
    Par SheikYerbouti dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 22/03/2006, 13h50
  5. [Débutant] Connaitre le répertoire courant
    Par The Wretched dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/06/2005, 12h51

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