Bonjour
je souhaite créer 40 matrices qui sont à 0 tant qu'elles n'ont pas dépassée un indice et une autre valeur après. Mais apparement la proc iml ne permet pas d'indicer des noms, avez vous une solution?

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
proc iml ;
 
	use tab.allocation ; 
	read all var _all_ into allocation ; 
	close tab.allocation ;  
 
	use tab.R ;
	read all var {gestion Estimation_prime_annuelle} into R ; 
	close tab.R ;
 
	Estimation_prime_annuelle =R [,2];
	gestion=R[,1];	 
	nb_adh=nrow(R) ;
	vol_proj=j(nb_adh,40);
 
prime1=j(nb_adh,40);	prime2=j(nb_adh,40);	prime3=j(nb_adh,40);	prime4=j(nb_adh,40);	prime5=j(nb_adh,40);	prime6=j(nb_adh,40);	prime7=j(nb_adh,40);	prime8=j(nb_adh,40);	prime9=j(nb_adh,40);	prime10=j(nb_adh,40);
prime11=j(nb_adh,40);	prime12=j(nb_adh,40);	prime13=j(nb_adh,40);	prime14=j(nb_adh,40);	prime15=j(nb_adh,40);	prime16=j(nb_adh,40);	prime17=j(nb_adh,40);	prime18=j(nb_adh,40);	prime19=j(nb_adh,40);	prime20=j(nb_adh,40);
prime21=j(nb_adh,40);	prime22=j(nb_adh,40);	prime23=j(nb_adh,40);	prime24=j(nb_adh,40);	prime25=j(nb_adh,40);	prime26=j(nb_adh,40);	prime27=j(nb_adh,40);	prime28=j(nb_adh,40);	prime29=j(nb_adh,40);	prime30=j(nb_adh,40);
prime31=j(nb_adh,40);	prime32=j(nb_adh,40);	prime33=j(nb_adh,40);	prime34=j(nb_adh,40);	prime35=j(nb_adh,40);	prime36=j(nb_adh,40);	prime37=j(nb_adh,40);	prime38=j(nb_adh,40);	prime39=j(nb_adh,40);	prime40=j(nb_adh,40);
 
	do z=1 to nb_adh ;
 
		do k=2 to 40 ;
 
			vol_proj[z,1]=allocation[age_proj[z,1]-19,gestion[z]+1];
 
			do j=1 to 40 ;
 
				if j < k then do ;
					prime&j.[z,k]=0;
				end ;
				if j = k then do ;
					prime&j.[z,k]=Estimation_prime_annuelle[z];
				end ;
				if j > k then do ;
					to=max((1-0.15*vol_proj[z,k]),(1-.5*vol_proj[z,k]));
					prime&j.[z,k]=Estimation_prime_annuelle[z]*to;
				end ;
 
			end ;
 
		end ;
 
	end ;
 
 quit;
la log :
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
 
                 if j < k then do ;
AVERTISSEMENT: Référence symbolique apparente J non traitée.
4822                      prime&j.[z,k]=0;
                          -----
                          180
ERREUR 180-322: Instruction incorrecte ou mal utilisée.
 
4823                  end ;
4824                  if j = k then do ;
AVERTISSEMENT: Référence symbolique apparente J non traitée.
4825                      prime&j.[z,k]=Estimation_prime_annuelle[z];
                          -----
                          180
ERREUR 180-322: Instruction incorrecte ou mal utilisée.
 
4826                  end ;
4827                  if j > k then do ;
4828                      to=max((1-0.15*vol_proj[z,k]),(1-.5*vol_proj[z,k]));
AVERTISSEMENT: Référence symbolique apparente J non traitée.
4829                      prime&j.[z,k]=Estimation_prime_annuelle[z]*to;
                          -----
                          180
ERREUR 180-322: Instruction incorrecte ou mal utilisée.
 
4830                  end ;
4831
4832              end ;
4833
4834          end ;
4835
4836      end ;
ERREUR: END does not occur within DO group at line=4830 col=17.
ERREUR: END does not occur within DO group at line=4832 col=13.
ERREUR: END does not occur within DO group at line=4834 col=9.
ERREUR: END does not occur within DO group at line=4836 col=5.