Salut,
je rencontre qq soucis à l'éxecution de ma macro ...
dû à des soucis de syntaxe a mon avis ^^
le message d'erreur est :et mon code :ERREUR: A character operand was found in the %EVAL function or %IF condition where a numeric
operand is required. The condition was: &nbEcg
ERREUR: The %TO value of the %DO I loop is invalid.
ERREUR: The macro UNSCHEDULED will stop executing.
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 %macro unscheduled(tabIn, TabOut, nbEcg); /* declaration du compteur */ %local i; /*%let i=1;*/ %local nbvisit; %let nbvisit=0; %local temp; %let temp=0; /*data &tabIn; set &tabOut;*/ /* teste chaque obseration */ %do i=1 %to &nbEcg; data tabIn&i; set tabOut&i %if (%SUBSTRN(visitname, %length(visitname), 1)='U') %then %do; %let nbvisit = %eval(&nbvisit + 1); /* compte les UNS */ /* passe à l'observation precendente */ %let temp=%eval(&i-1); data tabIn&temp set tabOut&temp %do %until (%SUBSTRN(visitname, %length(visitname), 1)<>'U'); /*compte les UNS */ %let nbvisit = %eval(&nbvisit+1); /* decremente les observations */ %let temp = %eval(&temp -1); data tabIn&temp set tabOut&temp; %end; /* fin du compte des UNS /* on connait le nb de UNS, on renomme les formats visit */ /* temp contient l'indice observation du 1er UNS de la visit */ /* on est positionner sur temp */ %do %while ( temp<=i); data tabIn&temp set tabOut&temp; visno= %CAT( %substr(visno, 1, %length(visno)-1),(%eval(%substr(visno, %length(visno)-1),1)+1)); %let temp = %eval(&temp +1); %end; /* fin do while */ %end; /* fin if */ %end; %mend;
Je precise que je suis totalement débutante SAS
et que ce n'est pas bourré de conneries je l'espere !
MErci d'avance pour votre aide
Partager