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 :

Automatisation lancement programme SAS


Sujet :

SAS Base

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Automatisation lancement programme SAS
    Bonjour à tous,

    Nouveau sur ce site, j'en appelle à vos connaissances. Après avoir parcouru le forum je n'ai rien trouvé qui me permettait de résoudre ma problématique.

    On m'a demandé d'automatiser le lancement de programmes SAS à une période donnée. J'ai donc créé un ".bat" dans lequel se trouve le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    echo Changement de repertoire vers SAS
    pushd "D:\Documents\S610763\Mes Documents\My SAS Files\9.1"
     
    echo Lancement de SAS
     
    "C:\Program Files\SAS\SAS 9.1\sas.exe" -SYSIN "D:\Documents and Settings\Desktop\Test Auto\Essai_auto.sas" -icon -log "D:\Documents and Settings\Desktop\Test Auto\Auto.log"
     
     
    echo Retour au r‚pertoire de lancement
    echo Fin du traitement : %DATE% %TIME%
    popd
    pause
    exit /B
    Je compte lancer ce ".bat" avec le planificateur de tâches de windows.

    Revenons plus précisément à mon problème. Lorsque j'execute mon ".bat", mon fichier log se créé bien, il y a une execution (SAS processing..) mais aucun table en sortie dans ma Work.Pourtant dans le log aucune erreur n'est spécifiée..

    D'ou cela pourrait-il venir?

    Merci pour votre précieuse aide.

    A bientôt

  2. #2
    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
    mais si tu écris dans ta WORK, ca disparaît à la fin de ta session non ? Comment tu peux vérifier son contenu ?
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Ce n'est pas moi qui écrit dans la WORK, c'est le sytème qui genere ma table dans ma WORK par défaut non?
    Quoi mettre dans mon script dans ce cas la pour lui donner le chemin d'une autre librairie?

  4. #4
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Ce n'est pas le système qui écrit dans la work, c'est la décision de celui qui développe.

    Pour sauvegarder une table il faut définir un libname autre que le work.
    La syntaxe est : libname alias "chemin_ de stoackage";

    Tu ajoutes l'alias avant le nom de la table dans l'étape data
    data alias.table_a_sauvegarder; set ....

    Ou si tu utilises des procs il faut l'ajouter dans la table de sortie, en général:
    out=data alias.table_a_sauvegarder.

    J'espère que c'est clair.
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  5. #5
    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
    C'est effectivement dans ton programme SAS que tu dois spécifier où écrire ta table finale.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord merci pour l'aide apportée car effectivement en créant une librairie et en mettant mes tables dedans ca marche (je n'avais pas pensé à ça car je ne fermais pas ma session SAS après le lancement automatique, donc pourquoi n'apparaissaient-elles pas dans ma WORK?). Du moins c'est réglé et ça m'a permis de pas mal avancer. Cependant je suis confronté à un nouveau problème.

    J'ai un programme qui se connecte a un entrepot de données (dans une entreprise) et qui va donc chercher des données pour constituer des tables et les manipuler. Lorsque je RUN depuis SAS, aucun problème, tout s'execute et mes tables sont créées dans une nouvelle librairie. Mais lorsque je le fais via mon script RIEN ne se passe, il n y a aucune connexion à l'entrepot de données..

    Il doit sans doute y avoir quelques instructions à rajouter dans le script..oui mais quoi...?

    Merci encore pour votre aide.

  7. #7
    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
    Et bien il doit manqué un LIBNAME vers cet entrepôt de données typiquement.

    Lorsque tu lances tes commandes depuis SAS, ce LIBNAME est probablement déjà en place dans un fichier autoexec.sas (supputation de ma part car je ne connais pas ton environnement).
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Je vais essayer de m'exprimer le plus clairement possible alors.
    J'ai mon programme SAS (rien de bien compliqué, il créé des tables et les manipule). Dans ce programme on y trouve en premier la connexion à l'entrepot soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    libname ENTREPOT ..... user=...... password= ....... path="......" 
    ACCESS=READONLY schema=ROC_DTW_ADMIN;
    En ensuite, mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    libname AUTO "D:\Documents and Settings\Biblio SAS"; /* Création et Allocation de la bibliotheque au chemin physique*/
     
    %global;
    %let table=tab.essai;
    %let annee1=2010;
    %let annee2=2011;
    %let chemin="D:\Documents and Settings\S610763\Desktop\Analyse 2012-01(TEST AUTOMATISATION)";
     
    data AUTO.base (keep= var1 var2 var3
    );
     
    set &table;
    run;
    Lorsque j'execute mon code via SAS, ca fonctionne, il y a bien connexion et manipulation des données.
    Mais quand je le fais à partir de mon script, il n'y a pas de connexion. Je ne peux donc pas travailler sur les tables de l'entrepot.

    Mais ce que je comprends c'est pourquoi cela marche via le RUN et pas le script. Mon script va uniquement chercher le programme dans lequel se trouve la connexion, donc elle devrait se produire..

    Merci encore.

  9. #9
    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
    Ton libname se nomme ENTREPOT et ton &table utilise tab.essai. Ce serait une explication ?
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Le fait est que je ne peux pas directement écrire dans l'entrepot donc je ne peux pas faire ENTREPOT.tableEssai pour qu'il me crée ma tableEssai dans l'entrepot, je n'ai pas les droits suffisants.
    Mais pour simplifier mon problème, si je prends uniquement le code pour la connexion (c'est à dire sans création de tables), il n'y a pas de connexion non plus à l'entrepot en l'executant via le script..

  11. #11
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Bonjour,

    tab.essai => tab est un libname qui doit être créé avant de l'utiliser dans l'étape data.

    Le fait d'utiliser le libname vers l’entrepôt n'implique pas forcement que tu vas écrire dedans.

    Exemple:
    data lib1.tab; set lib2.tab;
    run;

    Lib2 libname utilisé pour lire les données
    Lib1 libname utilisé pour stocker les résultats.

    Tu peux utiliser l'option access='readonly' dans définir un libname en lecture seul.
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par bahraoui Voir le message
    Bonjour,

    tab.essai => tab est un libname qui doit être créé avant de l'utiliser dans l'étape data.

    Le fait d'utiliser le libname vers l’entrepôt n'implique pas forcement que tu vas écrire dedans.

    Exemple:
    data lib1.tab; set lib2.tab;
    run;

    Lib2 libname utilisé pour lire les données
    Lib1 libname utilisé pour stocker les résultats.

    Tu peux utiliser l'option access='readonly' dans définir un libname en lecture seul.

    Merci encore pour votre aide.
    Pour simplifier mon problème, je vais repartir du début car j'ai l'impression que j'ai laissé des données qui n'étaient pas bonnes dans mon code ce qui a engendré des confusions.
    Donc, de nouveau, voici mon problème: Il s'agit d'un probleme de connexion à un entrepot de données


    Script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    libname ENTREPOT oracle user=******* password= ********* path="@*******" schema=ROC_DTW_ADMIN;
    Quand j'execute ce sript avec mon RUN de SAS, j'ai bien le repertoire ENTREPOT qui se créé avec toutes les tables à l'intérieur.

    Mais maintenant quand j'execute ce script via mon ".bat", la connexion ne s'effecue pas...et voici ce que je trouve dans le journal.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    "     180
    1  ! Friday, February 24, 2012
    AVERTISSEMENT: La chaîne entre guillemets en cours de traitement contient maintenant plus de 262 caractères. Il
                   se peut que vous ayez un nombre impair de guillemets.
    ERREUR 180-322: Instruction incorrecte ou mal utilisée.
     
    2
    3    NOTE: Impossible d'ouvrir SASUSER.REGSTRY. WORK.REGSTRY sera ouvert à la place.
    4    NOTE: Tous les changements effectués sur le registre seront perdus en fin de session.
    5
    3    NOTE: Impossible d'ouvrir SASUSER.REGSTRY. WORK.REGSTRY sera ouvert à la place.
                           -------------------------------------------------------------
    "
    Mais pourquoi alors que ca marche avec mon RUN, ca ne marche pas avec mon .bat...?

    Voila tout mon probleme j'espere que c'est plus clair

    Merci!

  13. #13
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    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 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello;
    tu veux dire que tu lances le même code en batch et sa ne marche pas ?

    peux-tu copier toute la partie du code qui plante. ??
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  14. #14
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    L'erreur survient au démarrage de SAS!!!
    Est ce que c'est un problème dans le CFG autoexec?
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  15. #15
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    tu peux remplacer ton code par
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par s_a_m Voir le message
    Hello;
    tu veux dire que tu lances le même code en batch et sa ne marche pas ?

    peux-tu copier toute la partie du code qui plante. ??
    Oui voila exactement!

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par bahraoui Voir le message
    L'erreur survient au démarrage de SAS!!!
    Est ce que c'est un problème dans le CFG autoexec?
    Je ne sais pas du tout si c'est un prob dans me CFG autoexec étant donné que je ne sais pas ce qu'il doit contenir...

    Le "proc option RUN", je dois le mettr ou exactement?

    Sinon j'ai trouvé une situation de contournement en mettant toutes mes tables créées dans ma librairie SASUSER..Ne me demandez pas pourquoi mais ca marche. L'inconvénient c'est que je dois réadapater tout mes programmes et c'est très long -je suis dans le cadre d'un projet informatique-.

    Encore merci

  18. #18
    Membre régulier Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 324
    Points : 115
    Points
    115
    Par défaut
    attention "ROC_DTW_ADMIN" c'est une nomenclature de la maison (on sait laquelle c'est pas les premiers venus), ça serait bien de masquer
    pareil pour ton matricule en clair... si un modo peut nettoyer

Discussions similaires

  1. Lancement d'un programme SAS sous Matlab
    Par matlabation dans le forum MATLAB
    Réponses: 3
    Dernier message: 28/07/2014, 16h14
  2. Lancement d'un programme SAS sous R
    Par matlabation dans le forum R
    Réponses: 4
    Dernier message: 28/07/2014, 15h43
  3. SAS Lancement programme en Batch
    Par ALLB dans le forum Administration et Installation
    Réponses: 3
    Dernier message: 17/09/2009, 16h17
  4. [Macro] Lancement d'un programme SAS en batch
    Par fafabzh6 dans le forum Macro
    Réponses: 0
    Dernier message: 30/07/2008, 14h39
  5. Lancement d'un programme SAS en batch
    Par benoitbrisefer dans le forum Administration et Installation
    Réponses: 1
    Dernier message: 22/07/2008, 17h54

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