|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Bonjour, j'essai de faire tourner le code suivant:
Code :
Maintenant je prends une table à une colonne intitulée ID qui contient les valeurs allant de 1 à 15000, je rajoute là où il y a écrit /*FUTUR AJOUT*/ : Code :
Code :
Merci d'avance pour votre intérêt à mon problème et le temps que vous y passez. |
||||||
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Un petit up de mon topic
juste pour informer que j'ai mis à jour le code pour que si une personne s'interesse à mon problème elle ait juste à copier coller le code, par contre n'ayant plus accés à la touche EDIT il reste des petites coquilles quand à mes rectifications dans le texte.Merci à l'âme charitable qui m'aidera à régler mon problème
|
|
|
00
|
|
|
#3 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Hello,
Sans avoir lu ton code, Connais-tu les tables de paramétrages? Je voie que tu t'embrouilles avec les %syslput. et %sysrput. Mis en oeuvre : 1-tu renseignes dans un fichier texte, Excel, ou dans une table SAS tous tes paramètres. 2- t'envoies ta table de paramétrages à chaque fois que tu te connectes à une session sas via une proc upload. 3- dans les sessions serveurs tu récupères tes paramètres dans des macro variables de la table avec des call symput. et au finale si tu veux changer tes paramètres tu les changes dans la table(fichier de paramétrage). pour les paramètres ,j'opte pour un fichier Excel, c'est plus sexy et simple à modifier. |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Eh bien il faudra que j'y pense en effet, ça à l'air de simplifier amplement la mise en oeuvre.
Par contre, concernant mon problème, il s'agit plus d'une macro-variable qui marche tout le temps et d'un coup dans l'étape DATA disparaît... c'est plus là que se situe mon interrogation. |
|
|
00
|
|
|
#5 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Pour débuguer, le mieux c'est de rajouter des options
comme : Code :
options nomprintnest mprint symbolgen mlogic; *et autres; pour voir ce qui se passe réellement dans tes sessions serveur. |
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Je sais pas ce que tu cherches à faire mais la syntaxe n'est pas bonne. Il fallait écrire ceci
Code :
|
||
|
|
00
|
|
|
#7 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
si la macro variable loop_combis_server contient que des chiffres la syntaxe est bonne.
Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
C'est exactement mon problème... mais si je met un %PUT &m_var par exemple, juste avant l'étape DATA, là il a pas de problème, et c'est ça que j'arrive pas à comprendre...
Mais je vais regarder avec les options dont tu me parles si j'arrive à avoir un début d'explication même si j'en doute vue que j'ai déjà fait tourner avec les options: mprint, symbolgen, mlogic sans pouvoir pointer du doigt la provenance du problème... |
|
|
00
|
|
|
#9 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
|
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
En fait, si tu fais tourner la première version de la macro que j'ai mise, sans l'étape DATA et avec un %SCAN &loop_combis_server. à la place, il m'affiche pour chaque itération sur chaque process les différentes valeurs prises par &loop_combis_server. .
Par contre si je m'amuse à rajouter l'étape DATA, soit celle qui fait qu'à chaque itération sur chaque process je créé une matrice contenant une colonne et une ligne valant la valeur de &loop_combis_server. traitée, alors là il me dit qu'il reconnaît pas la macro-variable &loop_combis_server. . C'est ce que je n'arrive pas à comprendre, apparement ma macro-variable est correctement créée sur chaque process et ne pose pas de problème sauf quand je veux m'en servir dans une étape DATA... |
|
|
00
|
|
|
#11 | ||||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Code :
Code :
alors, quand tu démarres une session serveur le programme macro de la session client ne sera pas reconnu. Donc après le rsubmit; c'est une autre session SAS qui démarre , les seuls paramétres que tu peux passer de la session client vers la session serveur c'est les macro variables et non pas les macro programmes %macro;.... %mend; |
||||
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Ok, bon je crois avoir compris le problème donc, par contre si je veux pouvoir faire marcher mon exemple? je dois créer la macro à part et faire un appel à l'interieur de mon rsubmit?
Si c'est bien celà il me faudra charger ma macro sur le nouveau process via une proc UPLOAD? Je me tate à reformuler mon programme avec tes notes, mais avant j'aimerais être sur d'avoir bien compris... Au passage, merci Sam pour ton aide précieuse! |
|
|
00
|
|
|
#13 | ||
|
Membre expérimenté
![]() Inscription : avril 2009 Messages : 537 ![]() |
Plus que jamais avec les macros il faut procéder par étapes.
afin de bien comprendre je te propose de tester ce code et de l'adapter à ton besoin: Code :
|
||
|
|
00
|
|
|
#14 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Pourquoi une proc upload si tu n’utilises pas les tables de paramétrages?
Bon, pour éviter de reformuler / bidouiller ton code , la solution c’est de rester sur ce que t’as fait. Déclarer les paramètres dans la session mère (client) avec un %SYSLPUT tu passes tes paramètres aux sessions serveurs. ce que tu dois comprendre c'est quand tu fais rsubmit, c'est une autre session SAS qui s'ouvre dans une autre GALAXY donc il faut coder comme si t'ouvre une autre session SAS. sur ton poste. Si un jour les tables de paramétrages te tente, bah tu n’as plus besoin de %syslput , il suffit juste d’envoyer ta table de paramétrage dans chacune des session filles(serveurs) et de récupérer tes macro variables avec un call symput. (l'avantage des tables de paramétrages c'est qu'on n'a pas besoin d'ouvrir le code et modifier à chaque fois les paramètres , il suffit de remplir un ficheir excel avec les paramètres souhaiter et le programme sas sera piloter via Excel) |
|
|
00
|
|
|
#15 | ||
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Merci pour toutes ces infos Brice, Xav et Sam! je n'avais absolument pas compris que sous SAS pour paralléliser il fallait penser comme ça... en fait je pensais que c'était exactement la même manière de procédés que sous R!
J'ai bricolé ce code du coup qui semble marcher, alors cet exemple on se rend pas compte de si ça passe ou pas mais sur le vrai programme sur lequel je travaille on voit que ça marche. Encore merci à tous les 3! Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com