|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Consultant informatique Inscription : mars 2002 Messages : 211 ![]() |
Bonjour,
J'ai le problème suivant. J'utilise un %window pour récupérer des macros variables. Jusque là, tout va bien Ces macro variables sont globales. J'ai un libname statement (qui n'est pas dans une macro): Code :
libname gvfile34 'F2F.CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00' access=readonly; par exemple: Code :
libname gvfile34 'F2F.CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00' access=readonly; Code :
libname gvfile34 'F2I.CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00' access=readonly; Le problème est que je n'arrive pas à faire interpréter ma variable par SAS. Je pensais faire quelque chose du genre Code :
libname gvfile34 '&prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00' access=readonly; Je me permets d'insister sur le fait que le code de libname n'est pas dans une macro. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Essaies les doubles quotes:
Code :
libname gvfile34 "&prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00 " access=readonly; |
|
|
00
|
|
|
#3 | |||
|
Membre habitué
![]() Consultant informatique Inscription : mars 2002 Messages : 211 ![]() |
Citation:
Voici le log: Code :
|
|||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
C'est peu être le fait de combiner %windows avec des macros qui marche pas
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Salut.
Oui, Brice a mis le doigt sur le souci : tout texte entre apostrophes n'est pas interprété par le compilateur macro. Cependant, dans ton cas précis, impossible de passer aux guillemets doubles : MVS n'accepte, je crois, que des apostrophes autour du chemin d'un LIBNAME. Ce qui correspond à l'erreur que tu obtiens. La solution qui devrait fonctionner consiste à laisser les apostrophes, puisqu'on ne peut pas faire sans, mais à les masquer au compilateur macro (pour ne pas le stresser. Le pauvre, avec tout ce qu'on lui demande, il faut le comprendre). Ca s'appelle du quoting. Une (parmi une dizaine) des macro-fonctions qui permet de faire cela s'appelle %BQUOTE. Code :
libname gvfile34 %BQUOTE(')&prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00%BQUOTE(') access=readonly; Code :
libname gvfile34 %STR(%')&prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00%STR(%') access=readonly; Bon courage. Olivier |
|
|
10
|
|
|
#6 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
C'est pas plus simple comme ça Olivier?
Code :
libname gvfile34 "%BQUOTE(&prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00)" access=readonly; |
|
|
00
|
|
|
#7 | |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Citation:
Code :
libname gvfile34 %BQUOTE('&prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00') access=readonly; Tant que ça fonctionne ! (Pour le moment, on ne le sait pas, d'ailleurs.) |
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
J'ai pas dit que c'est faux, j'ai du mal à comprendre les imbrications c'est tout!
C'est pas de ma faute mais de mon cerveau
|
|
|
00
|
|
|
#9 | |||||||||||
|
Membre habitué
![]() Consultant informatique Inscription : mars 2002 Messages : 211 ![]() |
Citation:
![]() Avant de le donner, j'ai découvert autre chose pour mon problème. Je lance ma ligne de commande en rsubmit; Ce qui fait donc que je dois aussi passer ma variable prefix en remote. J'ai donc utilisé le code suivant. Code :
Essai 1 Code :
libname gvfile34 %BQUOTE(')&remote_prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00%BQUOTE(') access=readonly; Code :
Code :
libname gvfile34 %STR(%')&remote_prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00%STR(%') access=readonly; Code :
Code :
libname gvfile34 "%BQUOTE(&remote_prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00)" access=readonly; Code :
Code :
libname gvfile34 %BQUOTE('&remote_prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00') access=readonly; Code :
Quel dommage... En tout cas, encore un tout grand merci pour votre aide. Bonne journée à vous
|
|||||||||||
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Salut.
Bon, déjà, un problème résolu, c'est bien. Maintenant il faut qu'on comprenne. Et ce qui est bien avec le quoting, c'est qu'on a toujours des surprises. J'aurais dû faire des tests sur mon PC avant de poster, j'aurais eu le même message que toi. 1) depuis le début, le souci c'était une macro-variable inconnue du serveur puisque non "remontée" par %SYSLPUT, plus des apostrophes qui bloquaient le compilateur macro 2) de ton essai 3, on peut conclure que les guillemets doubles fonctionnent très bien dans ce cas. Donc %BQUOTE est inutile et la solution moins compliquée Code :
libname gvfile34 "&remote_prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00" access=readonly; 3) visiblement le quoting est accueilli assez fraîchement par l'instruction LIBNAME. Il faut donc (après essais sur mon PC cette fois) masquer au compilateur macro (avec %STR ou%BQUOTE) les apostrophes, et ensuite éliminer ce masquage pour le compilateur SAS que ça perturbe (d'où la macro fonction %UNQUOTE !). Là, on touche à une belle saloperie. Code :
libname gvfile34 %UNQUOTE(%BQUOTE('&remote_prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00')) access=readonly; Bonne journée. Olivier |
|
|
20
|
|
|
#11 | |
|
Membre habitué
![]() Consultant informatique Inscription : mars 2002 Messages : 211 ![]() |
Citation:
Code :
libname gvfile34 "&remote_prefix..CY.DW.GVD0D$CY.ICDCY250.DS000.G1012V00" access=readonly; C'est fou cette différence entre simple et double quote! Merci encore pour votre aide |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com