%MACRO LECTIND(fichier); FILENAME INDICES "&fichier"; DATA STRUCIND; INFILE INDICES LRECL=83 PAD; LABEL DATE='Jour/Mois/Annee (JJ/MM/AAAA) de la seance de bourse'; LABEL CAC240S='SBF240 dividendes non reinvestis'; LABEL CAC240A='SBF240 dividendes reinvestis'; LABEL AFFIPS='AFFI pondere, dividendes non reinvestis'; LABEL AFFIPA='AFFI pondere, dividendes reinvestis'; LABEL AFFIEA='AFFI equipondere, dividendes reinvestis'; LABEL CAPAFFI='Capitalisation sousjacente/AFFI(en MF)'; LABEL KAUXAFFI='Capitaux echanges/actions AFFI (en MF)'; LABEL DIVAFFI='Dividendes des actions d AFFI (en MF)'; LABEL NACAFFI='Nombre de titres dans les indices AFFI'; drop CN; Input CN 1-4 DATE YYMMDD6. CAC240S 11-18 CAC240A 19-26 AFFIPS 27-34 AFFIPA 35-42 AFFIEA 43-50 CAPAFFI 51-62 KAUXAFFI 63-72 DIVAFFI 73-78 NACAFFI 79-83; %MEND LECTIND; %MACRO SIGNAL(IDM); /* Donnees manquantes signalees mais non retraitees*/ DATA STRUCIND; ARRAY VAL(*) CAC240S CAC240A AFFIPS AFFIPA AFFIEA CAPAFFI KAUXAFFI NACAFFI; SET STRUCIND; Drop ind; DO ind=1 TO DIM(VAL); IF VAL(ind)=&IDM Then VAL(ind)=.; END; %MEND SIGNAL; %MACRO RETRAIT(NOM); /* Methode de retraitement des donnees manquantes */ PROC EXPAND OUT=STRUCIND METHOD=&NOM; ID DATE; %MEND RETRAIT; %MACRO EVOLIND(fichier,IDM,NOM); %LECTIND(&fichier); %SIGNAL(&IDM); %IF &NOM EQ STEP OR &NOM EQ SPLINE OR &NOM EQ JOIN %Then %RETRAIT(&NOM); PROC PRINT; FORMAT DATE DDMMYY10.; PROC PLOT; PLOT CAC240S*DATE='*' CAC240A*DATE='#'; RUN; %MEND EVOLIND; /* Remplacez, dans la commande EVOLIND ci-dessous, */ /* le parametre p1 par l'adresse absolue du fichier des indices quotidiens parisiens sur le disque dur (par exemple, C:/base/bdm/paris1977/actionsquot/indquot.txt) */ /* le parametre p2 par l'indicateur des donnees manquantes (p2=0 par défaut) */ /* le parametre p3 par l'indicateur de la methode de retraitement des donnees manquantes si p2=AUCUNE , aucune methode n'est selectionnee si p2=STEP , la methode du successeur (la derniere valeur disponible) est retenue si p2=SPLINE , la methode d'ajustemet cubique est retenue si p2=JOIN , la methode d'ajustement lineaire est retenue */ %EVOLIND(p1,p2,p3); RUN;