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 :

Chemin pour appeler des fichiers et des programmes


Sujet :

Macro

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Chemin pour appeler des fichiers et des programmes
    Bonjour,
    J'ai deux ordinateurs indépendant l'un de l'autre. Jusqu'à présent, tous mes programmes SAS était sur un seul ordinateur. Toutes les adresses sont écrites en dur ; aussi bien dans les importations de fichiers que dans le programme principal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %include 'P:\VI\ImpPh01Po.sas';
    %include 'P:\VI\ImpPh02Be.sas';
    ....
    Maintenant, il faut que mes programmes puissent tourner sur n'importe quel ordinateur. Sachant que le programme principal fait appel à une trentaine de fichiers, je ne sais pas comment faire pour avoir le moins de modifications à effectuer au niveau de l'adresse . J'ai essayé avec un %let pour définir le chemin mais la log dit que les fichiers n’existent pas.
    Mes programmes d’importation ressemblent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data Vi.ImpPoDi;
        %let _EFIERR_ = 0; 
        infile 'P:\Mes Documents\ViM\DMI\01\20180710\E1.txt' delimiter='09'x MISSOVER DSD lrecl=32767 firstobs=2 ;
    ...
    run;
    Est-ce que quelqu'un voit comment je peux m'en sortir?
    Merci d'avance.

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Chemin pour appeler des fichiers et des programmes
    Bonjour,

    Il faut utiliser des guillemets doubles autour du chemin pour que la macro-variable soit interprétée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1  %let path=e:\donnees\sas;
    2
    3  %include '&path.\autoexec.sas';
    WARNING: Physical file does not exist,
             C:\...\autoexec.sas.
    ERROR: Cannot open %INCLUDE file &path.\autoexec.sas.
    mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4  %let path=e:\donnees\sas;
    5
    6  %include "&path.\autoexec.sas";
    s'exécute correctement,

    Cordialement,

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut
    Bonjour,

    Pour saisir un chemin réseau en SAS 3 cas :

    1) vous travailler sur le "serveur" SAS ou bien SAS est directement installé en "dure" sur votre poste, vous pouvez utiliser ceci :

    Code chemin reseau : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\dossier

    2) vous travailler sur le "serveur" SAS en mode "client/serveur" , vous devez utiliser ceci :

    Code chemin reseau : Sélectionner tout - Visualiser dans une fenêtre à part
    \\serveur\dossier\...

    Quand vous travaillez en mode client/serveur sur SAS , en saisissant du "C:\" , vous exécute sur le C du serveur SAS et non votre poste !

    Pour envoyer des élèments du serveur SAS sur poste vous devez remplacer :

    Code chemin reseau : Sélectionner tout - Visualiser dans une fenêtre à part
    \\serveur\...
    par son IP ou le nom de votre machine .

  4. #4
    Membre éprouvé
    Avatar de Stackware
    Homme Profil pro
    ArchiDuc de la Sasserie
    Inscrit en
    Juillet 2013
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ArchiDuc de la Sasserie
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 439
    Points : 1 017
    Points
    1 017
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Il est généralement très déconseillé de mettre des adresses IP en dur dans les programmes. Les bonnes pratiques tendent à créer des "libname" dans la SMC, d'accorder des droits à ceux qui vont s'en servir, puis de simplement citer les libname (sans les définir puisque c'est déjà fait dans la SMC) dans le code.
    Quand on migrera d'un environnement à un autre, il n'y aura rien à faire, sauf recréer ces bibliothèques dans la SMC cible (ou bien exporter les définitions des bibliothèques depuis la SMC source et importer les métadonnées dans la SMC cible. Ça fait gagner un temps fou.
    Pour ceux qui n'aiment pas les métadonnées, ben continuez comme avant et perdez votre temps
    Dans Viya (dernière version de SAS, qui cohabite avec la plateforme 9 aujourd'hui), il n'y a plus de métadonnées, mais un équivalent existe, bien pratique. La SMC n'existe plus non plus, tout se fait dans Environnement Manager ou dans des interfaces équivalentes à la SMC (ça dépend des composants, mais tout tend à se fondre dans EV).
    My 2 cents.

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/05/2013, 19h56
  2. [WS 2003] Outil pour controle de l'activité des fichiers
    Par mims1664 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 22/02/2010, 11h18
  3. Réponses: 1
    Dernier message: 12/02/2009, 15h27
  4. Réponses: 9
    Dernier message: 29/04/2008, 13h38
  5. Chemin d'accès des fichiers dans des sous rep
    Par Le Veilleur dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/11/2004, 14h37

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