Bonjour à tous,

Je suis en train de faire une macro en rsubmit afin de paralléliser un processus.

Je précise que je fais moduler la macro varialbe à chaque itération d'une valeur afin de séléctionner la bonne table.

le problème c'est que hors macro la tache 1 et 2 se font en paralleles sans problème mais des que je passe aux macro la connecxion serveur tombe

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
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
62
63
64
65
 
 
proc sql noprint inobs=2 ;
	select count(ENTITE) INTO: num_entite
	from vdf_work.List_entite_2;
quit;
%put &num_entite.;
 
options fullstimer autosignon=yes sascmd="sas" compress=yes macrogen symbolgen mlogic mprint mfile threads tbufsize=max DBIDIRECTEXEC;
filename mprint '\\blabla\mon_file.sas';
 
%macro paral_01;
	%global num_entite thread;
	%do thread = 1 %to &num_entite.;
 
		data _null_;
		position=&thread.;
		set vdf_work.List_entite_2 point=position;
		call symput("ENTITE",compress(ENTITE));
		stop;
		run;
		%put &ENTITE;
 
 
	rsubmit process=task&thread. wait=no sascmd="sas" sysrputsync=yes;
options fullstimer autosignon=yes sascmd="sas" compress=yes macrogen symbolgen mlogic mprint mfile threads tbufsize=max DBIDIRECTEXEC;
 
 
					%let SRV=XX.XXX.XXX.XXX  
					options comamid=tcp remote=SRV ;
					filename rlink "\\blablabla\bla.txt" ;
					signon task&thread. sascmd="sas" userid=mon_userid pwd=mon_pwd ;
 
 
					rsubmit;
						libname blabla "/bkabka/bla" ;
					endrsubmit;
					LIBNAME blabla slibref=blabla server=srv;
 
 
					proc sql;
						create table VDF_WORK.B_&entite as
							select * from VDF_WORK.A_&entite. 
							;
					quit;
 
endrsubmit;
%end;
 
 
				waitfor _all_ %do thread = 1 %to &num_entite.;
							task&thread.
							%end;
				;
 
				%do thread = 1 %to &num_entite.;
					rget task&thread.;
					%end;
 
				%do thread = 1 %to &num_entite.;
				signoff task&thread.;
 
			%end;
	%mend paral_01;
%paral_01;