Bonjour,
J'ai utilisé une proc iml pour transformer une bd SAS en matrice afin de faire un traitement. Voici un extrait de 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 proc iml; use modele_affaires; /* bd SAS à transformer en matrice */ read all var {Xi Xj Yi} into DA; /* matrice DA avec trois variables */ close modele_affaires; /* Fermeture de la bd SAS */ nkt = 0; Skt = 0; do k = 1 to 2688; do t = (k + 1) to 2689; if (DA[k,1] < DA[t,1] and DA[k,3] < DA[t,3]) then do; Ckt = 1; nkt = nkt + 1; Skt = Skt + Ckt; end; else if (DA[k,1] > DA[t,1] and DA[k,3] < DA[t,3]) then do; Ckt = -1; nkt = nkt + 1; Skt = Skt + Ckt; end; else if (DA[k,1] = DA[t,1] and DA[k,3] < DA[t,3]) then do; Ckt = 0; nkt = nkt + 1; end; else Ckt = 0; end; end; H = Skt/nkt; print H; quit;
J'ai remarqué que chaque "do", "if" et "else" est en rouge (pour moi il y a une erreur mais je ne la vois pas)
Ensuite voici ce que j'obtiens de 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 if (DA[k,1] < DA[t,1] and DA[k,3] < DA[t,3]) then do; --- 22 76 ERREUR 22-322: Erreur de syntaxe ; syntaxe requise : #, ##, &, (|, ), *, **, +, -, /, //, :, <, <=, <>, =, >, ><, >=, @, [, ^=, `, |, ||. ERREUR 76-322: Erreur de syntaxe ; l'instruction sera ignorée. else if (DA[k,1] > DA[t,1] and DA[k,3] < DA[t,3]) then do; --- 22 76 ERREUR 22-322: Erreur de syntaxe ; syntaxe requise : #, ##, &, (|, ), *, **, +, -, /, //, :, <, <=, <>, =, >, ><, >=, @, [, ^=, `, |, ||. ERREUR 76-322: Erreur de syntaxe ; l'instruction sera ignorée. ERREUR: END does not occur within DO group at line=90 col=65. 91 else if (DA[k,1] = DA[t,1] and DA[k,3] < DA[t,3]) then do; --- 22 76 ERREUR 22-322: Erreur de syntaxe ; syntaxe requise : #, ##, &, (|, ), *, **, +, -, /, //, :, <, <=, <>, =, >, ><, >=, @, [, ^=, `, |, ||. ERREUR 76-322: Erreur de syntaxe ; l'instruction sera ignorée. ERREUR: END does not occur within DO group at line=94 col=65.
Merci pour votre aide.
Partager