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; |