Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Administration
Administration Forum d'entraide sur les fonctionnalités d'administration de SAS : installation, portal, serveurs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/03/2011, 13h58   #1
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Par défaut Parallélisme sous SAS

Bonjour, je commence à faire la récolte d'information au sujet du parallélisme sous SAS.

En effet dans ma boîte SAS est implanté sur plusieurs serveurs et (à l'instar de revolutionR pour ceux qui connaissent) je cherche à adapter ma macro assez lourde en terme de traitement de manière à pouvoir lancer certaines étapes en parallèle sur les différents serveurs disponibles.

J'ai lu à la va vite sur je ne sais plus quel site que désormais celà était possible aussi je souhaitais vous demander si vous connaissez certains site ou ouvrage disponible sur le net permettant d'en savoir plus, voir fournissant les modifications à faire sur la syntaxe d'un macro-pogramme SAS de base. Par la même occasion, si certains ont déjà procédé à ce type de manipulation, leur demander si c'est accessible ou réservé à des gens beaucoup plus experts.

En vous remerciant d'avance pour votre intérêt à mon topic.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 14h09   #2
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
http://www.sas.com/offices/europe/fr...ss_CONNECT.pdf

La parallélisation nécessite la modification de ton programme!!!
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 14h16   #3
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Merci bahraoui
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 12h14   #4
Membre habitué
 
Femme Géraldine CADE DESCHAMPS
Support Clients SAS (France et Europe)
Inscription : février 2010
Messages : 62
Détails du profil
Informations personnelles :
Nom : Femme Géraldine CADE DESCHAMPS
Localisation : France

Informations professionnelles :
Activité : Support Clients SAS (France et Europe)
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 62
Points : 139
Points : 139
Bonjour,

En effet le parallélisme est possible grâce à MP Connect : on désigne soit-même la machine sur laquelle telle partie du code va s'exécuter.

Maintenant, si l'on a une architecture de type OMA avec l'ordonnanceur LSF, on peut aller plus loin avec le Grid : http://support.sas.com/rnd/scalability/grid/
On va désigner plusieurs machines potentielles, sur lesquelles tournent un service LSF. Quand on lance le programme, LSF va déterminer la/les machines les plus disponibles pour exécuter le programme.
En amont le programme est construit pour une soumission en MP Connect. C'est LSF qui va gérer l'exécution en parallèle sur plusieurs machines.

Géraldine Cade-Deschamps
Support Clients SAS.
Géraldine_Cade_SAS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 17h49   #5
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Bonjour, je reviens à la charge au sujet du parallélisme sous SAS étant donné que j'ai enfin 2-3 jours à pouvoir m'y consacrer!

Contexte:
De nombreux marqueurs que je cherche à combiner entre eux (toutes les combinaisons possibles en fait <- encore une fois: merci Olivier!) et l'application de méthodes comme la régression logistique ou l'analyse discriminante sur toutes ces combinaisons.

Ca (grâce à Sam, Brice et Olivier! mici mici mici mici!!!) je l'ai en macro grâce à une boucle DO qui parcours toutes les combinaisons existantes.

Objectif:
Estimer plusieurs combinaisons en même temps grâce au parallélisme.

Déjà j'ignore si ce type de parallélisme peut être fait sous SAS, la doc "améliorer sa productivité grâce aux traitements parallèles: SAS Multi-Process CONNECT" ne semble pas décrire ce cas mais plutot le traitement de table tout cours.
La doc sur "Introduction to SAS Grid Computing" semble plus approprié à ma problématique (j'avoue avoir juste parcouru à la va-vite mais ce soir je vais y jeter un oeil plus assidu).
Ensuite j'ai d'assez bonnes notions sur le principe du parallélisme étant donné que j'en bouffe depuis pas mal de jours avec RevolutionR.

En résumé mes questions de débutant seraient: est-ce que le type de parallélisation qui m'intéresse est faisable sous SAS? sachant que finalement il faudrait (pour commencer) juste l'appliquer sur une boucle DO, est-ce que c'est relativement facil à ceci prés que la table des résultats finaux qui se construit itération par itération devra être conçu et mis à jour autrement?

Merci pour vos précédentes réponses et votre intérêt à mon topic.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 17h30   #6
Membre du Club
 
Homme
Inscription : septembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2009
Messages : 60
Points : 52
Points : 52
Hello,

Oui, pourvu que tu puisses faire du sas/connect avec chacun de tes serveurs, tu peux effectuer à chaque incrément d'une boucle, lancer une session MP Connect distincte sur un de tes serveurs et donc paralléliser l'exécution global de ton traitement.

Il faut juste gérer que chacune de tes sessions MP Connect est indépendante des autres et va générer un bout de data, qu'il faudra sans doute rassembler en un seul morceau une fois que toutes les sessions MP Connect auront abouti.

De mémoire, cela se gère avec des macro variables qui permettent de connaître l'état de chaque session connect.
wise2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 18h03   #7
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Merci pour ton intérêt à mon topic et ta réponse wise2!

Finalement je me fais la main avec la première doc qu'on m'a conseillé: "améliorer sa productivité grâce aux traitements parallèles: SAS Multi-Process CONNECT"

Et j'ai déjà un souci sur l'exemple qu'on peut trouver page 16:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
16         OPTION autosignon = yes;
17         rsubmit process = task1 wait = no sascmd = 'sas';
NOTE: Remote signon TO TASK1 commencing (SAS Release 9.02.02M0P011509).
ERROR: A communication subsystem partner link setup request failure has occurred.
ERROR: Cannot start remote process.
ERROR: Command could NOT be executed.
NOTE: Subsequent LINES will be ignored until ENDRSUBMIT.
ERROR: Remote submit TO TASK1 canceled.
18         rsubmit process = task2 wait = no sascmd = 'sas';
NOTE: Remote signon TO TASK2 commencing (SAS Release 9.02.02M0P011509).
ERROR: A communication subsystem partner link setup request failure has occurred.
ERROR: Cannot start remote process.
ERROR: Command could NOT be executed.
NOTE: Subsequent LINES will be ignored until ENDRSUBMIT.
ERROR: Remote submit TO TASK2 canceled.
NOTE: There are no active tasks/transactions.
19         waitfor _all_ task1 task2;
20         DATA entworld;
21         merge world world2;
ERROR: File WORK.WORLD.DATA does NOT exist.
ERROR: File WORK.WORLD2.DATA does NOT exist.
22         BY indnr;
23         run;
Est ce que peut être la cause de mon problème ou au vue du message d'erreur ça vient d'autre chose? SAS étant installé sur un serveur, je me dis qu'il n'arrive pas à trouver la commande SAS à utiliser pour lancer la session, j'attends de voir avec mon administrateur réseau mais pas moyen de le croiser de toute la journée
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 00h06   #8
Membre du Club
 
Homme
Inscription : septembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2009
Messages : 60
Points : 52
Points : 52
Oui dans sascmd, il faut indiquer la ligne de commande qui permet de lancer une nouvelle session SAS fille.

Si ton administrateur sas est un pro, il aura déjà renseigné cette option au démarrage de ta session.

par exemple :

Code :
OPTIONS SASCMD="%sysget(SASEXE)/sas -CONFIG /applications/sas/cfg/sasv9.cfg";
Après pour faire une boucle tu peux utiliser un programme du type :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
%LET workpere =%sysfunc(pathname(WORK, L));
 
%do i=1 %TO &fin;
 
    signon CONNECTREMOTE=sas&i.;
 
    %LPUT_PARAM(session=sas&i.);    
 
    RSUBMIT CONNECTREMOTE = sas&i. CONNECTWAIT = no CMACVAR = sas&i. LOG="&path_logs./PGM_&i..log";
 
        libname workpere &workpere;
 
        %include "&path_pgm./PGM_&i..sas";
 
    ENDRSUBMIT;
 
%end;
et

waitfor _all_ ; pour indiquer d'attendre la fin de toutes les sessions MP Connect.
wise2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 11h44   #9
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Bonjour Wise2, je viens de voir mon admin et de tester tes syntaxes (merci sincérement pour ton intérêt à mon problème, je gagne un temps fou grace à toi!) et j'ai un souci, voici mon code:

Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
 
OPTION autosignon = yes;
OPTIONS SASCMD="/opt/SAS1.4/SASFoundation/9.2/sasexe/sas -CONFIG /opt/SAS1.4/SASFoundation/9.2/sasv9.cfg";
rsubmit process = task1 wait = no sascmd = "sas";
DATA world(DROP = i);
length indnr omrnr redar redvarde 4.;
do I = 1 TO 75000000;
indnr=int(uniform(0)*100);
omrnr=int(uniform(0)*100);
redar=int(uniform(0)*100);
redvarde=int(uniform(0)*100);
output;
end;
run;
proc sort DATA = world;
BY indnr;
run;
endrsubmit task1;
rsubmit process = task2 wait = no sascmd = "sas";
DATA world2(DROP = i);
length indnr omrnr redar redvarde 4.;
do I = 1 TO 75000000;
indnr=int(uniform(0)*100);
omrnr=int(uniform(0)*100);
redar=int(uniform(0)*100);
redvarde=int(uniform(0)*100);
output;
end;
run;
proc sort DATA = world2;
BY indnr;
run;
endrsubmit task2;
waitfor _all_ task1 task2;
DATA entworld;
merge world world2;
BY indnr;
run;
signoff task1;
signoff task2;
Ce qui se passe c'est que ça bloque à la seconde ligne en fait... (j'ai lancé uniquement ces deux lignes pour vérifier), en gros ça reste sur:

sur l'interface d'EG... quelquechose qui va pas dans mes liens? ou la mise en évidence qu'il faut que mon admin active quelque chose pour que ça puisse marcher?

Une autre question que je voulais te poser, comment sait-on quand ça marche? est-ce que par exemple j'aurais dans ma barre de tache deux processus SAS en cours d'execution ou bien la réussite de la manipulation se voit uniquement sur la log?
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 15h51   #10
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Bon autant pour moi, apparamment ça roule bien vue qu'en diminuant la taille de la boucle DO ça tourne, néanmoins j'ai le message d'erreur suivant:

Code :
1
2
3
4
 
WARNING:  Setting -MEMSIZE 0 can result IN ALL available memory being used, LEADING TO unpredictable behavior.
ERROR: Invalid credentials
ERROR: Access denied.
qui, évidemment, fait tout planté, ça serait trop facil sinon hein... j'ai souvenir que j'avais eu un souci avec MEMSIZE et SORTSIZE, mon admin les avait augmenté aprés que je sois passé sur le forum, est-ce qu'il y a des options à toucher dans MEMSIZE pour pouvoir faire tourner la parallélisation? ou l'erreur vient d'autre chose?
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 23h12   #11
Membre du Club
 
Homme
Inscription : septembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2009
Messages : 60
Points : 52
Points : 52
Hello,

Le MEMSIZE=0 génére un warning mais à priori pas une erreur. Donc même s'il ne faut pas exécuter un programme avec MEMSIZE=0, il y a un autre problème.

Je ne peux pas tester de mon côté (je n'ai pas de SAS/Connect !), mais si tu indiques options sascmd= ... tu n'as plus besoin de mettre sascmd="sas" dans le rsubmit.

je tenterai bien quelque chose comme ça :

Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
 
%LET workpere =%sysfunc(pathname(WORK, L));
 
OPTIONS SASCMD="/opt/SAS1.4/SASFoundation/9.2/sasexe/sas -CONFIG /opt/SAS1.4/SASFoundation/9.2/sasv9.cfg";
 
signon CONNECTREMOTE=task1;
 
%syslput workpere=&workpere;
 
RSUBMIT CONNECTREMOTE = task1 CONNECTWAIT = no CMACVAR = task1 LOG="/tmp/task1.log";
DATA world(DROP = i);
length indnr omrnr redar redvarde 4.;
do I = 1 TO 75000000;
indnr=int(uniform(0)*100);
omrnr=int(uniform(0)*100);
redar=int(uniform(0)*100);
redvarde=int(uniform(0)*100);
output;
end;
run;
proc sort DATA = world out=workpere.world;
BY indnr;
run;
endrsubmit task1;
 
signon CONNECTREMOTE=task2;
 
%syslput workpere=&workpere;
 
RSUBMIT CONNECTREMOTE = task2 CONNECTWAIT = no CMACVAR = task2 LOG="/tmp/task2.log";
DATA world2(DROP = i);
length indnr omrnr redar redvarde 4.;
do I = 1 TO 75000000;
indnr=int(uniform(0)*100);
omrnr=int(uniform(0)*100);
redar=int(uniform(0)*100);
redvarde=int(uniform(0)*100);
output;
end;
run;
proc sort DATA = world2 out=workpere.world2;
BY indnr;
run;
endrsubmit task2;
waitfor _all_ ;
 
DATA entworld;
merge world world2;
BY indnr;
run;
signoff task1;
signoff task2;

Pour vérifier et suivre l'exécution des tes process MP Connect, tu peux si tu as accès te connecter en ssh sur le serveur et vérifier les process avec un ps -ef | grep sas.

Ou encore écrire la log de chaque session MP dans un fichier séparé (LOG="/tmp/task2.log"). Il faut vérifier que tu as bien un accès en écriture sur /tmp.
wise2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 10h26   #12
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Salut Wise2 et encore merci de ton intérêt! j'ai testé ta syntaxe et j'ai un souci à cause du lien généré pour le libname workpere, seulement ça vient surement d'un manque de droit, j'attends donc de croiser mon admin pour lui en parler, si je l'enlève on dirait que ça tourne mais logiquement il ne stocke pas les tables dans un libname et doc ne peut pas les récupérer à la fin pour les merger.

Dés que j'ai vue mon admin et tester avec ses modifs je te tiens au courant.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 12h09   #13
Membre du Club
 
Homme
Inscription : septembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2009
Messages : 60
Points : 52
Points : 52
Salut,

Pour contourner le problème avec workpere, tu peux utiliser une librairie permanente que tu allouera sur la session mere et toutes les sessions filles car sinon effectivement quand une session fille se termine, elle vide sa work et donc toutes les tables temporaires sont perdues.
wise2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 16h29   #14
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Bonjour, je remonte ce topic car j'ai continué à creuser de mon coté et j'ai enfin pu faire tourner l'exemple avec la syntaxe de base disponible dans la doc et la page que j'avais cité.

Maintenant j'aimerais complexifier le machin:
Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
%MACRO Ma_premiere_parallisation_SAS(nb_it = );
 
	options nonotes spool;
	goptions reset = ALL device  = ACTXIMG;
 
	/* Déclaration des options*/
	OPTION autosignon=yes ;
	OPTIONS SASCMD="/opt/SAS_1.4/SASFoundation/9.2/sasexe/sas -CONFIG /opt/SAS_1.4/SASFoundation/9.2/sasv9.cfg";
 
	/*Déclaration du libname*/
	libname ut '/home/public';
 
	%DO loop = 1 %TO &nb_it.;
		/*Exécution de la première tache*/
		rsubmit process=task&loop. wait=no ;
		libname ut '/home/public';
		DATA ut.test&loop.;
		length indnr omrnr redar redvarde 4.;
		do I=1 TO 1000000;
		indnr=int(uniform(0)*100);
		omrnr=int(uniform(0)*100);
		redar=int(uniform(0)*100);
		redvarde=int(uniform(0)*100);
		output;
		end;
		run;
		proc sort DATA=ut.test&loop.;
		BY indnr ;
		run ;
		endrsubmit task&loop.;
	%END;
 
	/*attente de l'exécution complète des deux taches*/
	%LET task = _all_;
	%DO loop = 1 %TO &nb_it.;
		%LET task = &task. task&loop.;
	%END;
	waitfor &task.;
 
	/*merge des deux tables*/
	DATA ut.BIGtest ;
	SET ut.test1;
	BY indnr;
	run ;
	%DO loop = 2 %TO &nb_it.;
		DATA ut.BIGtest ;
		merge ut.BIGtest ut.test&loop.;
		BY indnr;
		run ;
	%END;
 
	/* deconnexion des deux postes*/
	%DO loop = 1 %TO &nb_it.;
		signoff task&loop.;
	%END;
 
 
%MEND Ma_premiere_parallisation_SAS;
 
%Ma_premiere_parallisation_SAS(nb_it = 2)
En gros c'est le même exemple, avec le même type d'appel à la parallélisation, mais désormais je veux fixer un paramètre qui permet de dire combien on veut créer/lacer de table en parallèle. L'idée est avant tout de lier parallélisation automatique et boucle DO.

Seulement je n'arrive pas à identifier mes nouveaux problèmes:
Code :
1
2
3
4
5
6
7
8
9
10
 
74         1
           _
           180
ERROR 180-322: Statement IS NOT valid OR it IS used out of proper ORDER.
 
74         2
           _
           180
ERROR 180-322: Statement IS NOT valid OR it IS used out of proper ORDER.
Erreur qui correspond à ma boucle %DO donc et qui est surement la cause de l'erreur suivante:
Code :
1
2
3
4
5
6
7
8
 
2     DATA ut.test&loop.;
                  -
                  22
                  200
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, (, /, ;, _DATA_, _LAST_, _NULL_.
 
ERROR 200-322: The symbol IS NOT recognized AND will be ignored.
Je ne la met pas, mais du coup il y a forcément également une erreur au cours de la proc sort vue que le table ne passe pas.

J'ai un peu de mal à comprendre en fait... enfin si je comprends que de paralléliser comme ça ça semble ne pas marcher, mais en passant par cette syntaxe de parallélisation (pour le moment c'est la seule que j'arrive à faire marcher) est-il possible de rectifier pour que mon objectif soit remplit?

En remerciant (d'avance) les personnes qui se sont intéressées et s'intéressent encore à mon problème.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 16h40   #15
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
C'est pas dû au fait qu'il te manque des % ?

MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 16h49   #16
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101


Je suis consternant... ceci dit dans l'exemple de la doc ils y étaient pas non plus et ça marchait
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 16h56   #17
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Autant pour moi, ça ne marche toujours pas malgré le rajout des % ... j'ai les même erreurs.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 17h05   #18
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
regarde l'opton mprint et mfile, cela génère en clair le code macro, peut-être verras-tu pourquoi cela plante
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 17h06   #19
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Rajoutes
Code :
options mprint mlogic symbolgen
au tout début de ton programme, tu veux les valeurs de chaque macro-variables dans l'output
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 17h21   #20
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
En lisant ton code en diagonale, je me dis surtout que ta macro-variable LOOP n'existe que dans la session SAS mère et pas dans les sessions filles. Il faudrait la transmettre avec un %SYSLPUT je pense.

Idem pour les options recommandées par Brice et Stéphane : il faudrait aussi les ajouter dans les RSUBMIT pour qu'elles fassent aussi effet dans les sessions filles.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h39.


 
 
 
 
Partenaires

Hébergement Web