485 views
``` /***************************************************************************************/ /*PROJET : MDR SCORE DATAMINING */ /*NOMPGM : calcul_score_2018.sas */ /*DATECRE : 10/2018 */ /*OBJET : Requête pour calcul score datamining DE : modèle 2018 */ /* MODIF : 01/2019 : correction sur partie g : gestion des années à récupérer A-1 ou A-2 + affectation à SCORGLOB de la valeur de SCOREMAX */ /***************************************************************************************/ /**************************************************************************************************/ /***** Requête de scoring ***********/ /***** du modèle Datamining Données Entrantes 2018 ***********/ /***** ***********/ /***** Création : Octobre 2018 ***********/ /***** ***********/ /**************************************************************************************************/ /* Les variables utilisées dans le modèle ont été remplacées par &variable_modèle_i, i étant un numéro d'ordre */ /* Une variable du modèle a été laissée en clair à titre d'exemple illustratif */ /* Les variables intermédiaires permettant de construire les variables utilisées dans le modèle ont été remplacées par &variable_intermédiaire_j, j étant un numéro d'ordre */ /* Les variables de sortie permettant de déduire les variables utilisées dans le modèle ont été remplacées par &variable_sortie_l, l étant un numéro d'ordre */ /* Certains noms de tables ont été remplacés par &table_intermédiaire_k, k étant un numéro d'ordre */ libname etudes "&baseprog/scorbdon" ; /*Emplacement de la table des variables locales externes (INSEE)*/ %let mv_table_varlocales=etudes.dmde2018_varlocales_scoring; %let mv_parametres=etudes.DMDE2018_param; %let mv_bareme=etudes.DMDE2018_bareme; /*affectation des macro-variables concernant les barèmes.*/ data _null_; set &mv_bareme.; call symputx("bmaf",BMAF); call symputx("smic",SMIC); run; /*****/ %let limit_test = (matricul ne .); option obs=max compress = no ; options nomprint nosymbolgen ; %global m1 mvDTREFFRE /* m1 = dernier mois traité*/ ; /* INITIALISATION DES DIX-HUIT MOIS A TRAITER */ %macro mp_18mmaa ; /* ATTENTION LES MOIS VONT DU PLUS RECENT AU PLUS ANCIEN */ data _null_ ; set basenat.xdref (where = (NOMTAB = 'FR1_MMAA')) ; /******************* POUR FORCER LE MOIS DE REFERENCE ********************/ /*DFREF = MDY(8,1,2018) ;*/ /**************************************************************************/ Call symputx("mvDTFREMM", DFREF) ; run ; data _null_ ; %do i = 1 %to 19 ; nbMOIS = &i. ; DDREF&i = INTnx ("MONTH", &mvDTFREMM., - nbMois +1 , "beginning") ; mmaa&i. = compress(put(month(DDREF&i.),z2.)!!SUBSTR(put(year(DDREF&i.),z4.),3,2)) ; mvmois&i.=compress(put(month(DDREF&i.),3.)); mvannee&i.=compress(put(year(DDREF&i.),z4.)); %global m&i. mois&i. annee&i. dtref&i.; call symputx( "m&i.", mmaa&i. ) ; call symputx("mois&i.",mvmois&i.); call symputx("annee&i.",mvannee&i.); call symputx("dtref&i.",DDREF&i); %end ; run ; %mend ; %mp_18mmaa ; /************************************************************************/ /* Sommaire du programme */ /************************************************************************/ /* Partie 1 : Constitution de la base d information DMDE a) Création de la table initiale b) Données ALLSTAT : Fr1_mmaa c) Le nom de cette table source est remplacé par table_source_partie_c d) Le nom de cette table source est remplacé par table_source_partie_d e) Le nom de cette table source est remplacé par table_source_partie_e f) Le nom de cette table source est remplacé par table_source_partie_f g) Données locales (BCA et INSEE) Partie 2 : Création et recodages de variables Partie 3 : Calcul du score */ /**********************************************************************************************************************/ /**********************************************************************************************************************/ /********** Partie 1: Constitution de la base d'informations DMDE **************************************/ /**********************************************************************************************************************/ /**********************************************************************************************************************/ /**********************************************************************************************************************/ /* a)Création de la table initiale /**********************************************************************************************************************/ %macro mpINITAB ; data work.final ; set Allstat.fr1_&m1.(in=b keep = matricul numcaf mtpfvers catben sitdos dtreffre where = ( mtpfvers>0 and sitdos ne 'R' and catben ne "99" and &limit_test)); Call symputx("mvDTREFFRE", dtreffre) ; run ; %mend ; %mpINITAB ; data final; set final (keep=matricul numcaf); run; /********************************************************************/ /* b) Données ALLSTAT : Fr1_mmaa */ /********************************************************************/ %macro mp_Fre (); %do i=1 %to 19 ; data _null_ ; /* contrôle existence des tables */ if (exist("Allstat.fr1_&&m&i.",'data') or exist("Allstat.fr1_&&m&i.",'view')) then call symput ("topexist", "O") ; else call symput ("topexist", "N") ; run ; %if &topexist.=O %then %do ; data fr&i; merge work.final (in=a) allstat.fr1_&&m&i. (keep = numcaf matricul /*Variable m1 remplacées par &liste_variables_m1 */ %if &i.=1 %then %do; &liste_variables_m1 /* ajout pour allextr &liste_variables_allextr : */ &liste_variables_allextr %end; /*Variables m1à18 remplacées par &liste_variables_m1à18*/ &liste_variables_m1à18 where = (catben ne "99")); by numcaf matricul; if a=1; array TABmois[12] moinen1-moinen12; array TABannee[12] annnen1-annnen12; array TABCAT[12] $ catenf1-catenf12; %if &i.=1 %then %do; array T&variable_intermédiaire_14[12] &variable_intermédiaire_141-&variable_intermédiaire_1412; &variable_intermédiaire_13=0; &variable_intermédiaire_15=0; nb12a17=0; %end; nb20a24=0; do j=1 to 12; datenai=.; if (TABannee[j] in (0,.) or TABmois[j] in (0,.)) then datenai=.; else datenai=mdy(TABmois[j],1,TABannee[j]); if datenai>. then do; /*ajout boucle pour dtnai non vide*/ age=intck("year",datenai,dtreffre); if (TABCAT[j] ne "A" and age >= 20 and age <= 24) then nb20a24=nb20a24+1; %if &i.=1 %then %do; if (TABCAT[j] ne "A" and age >= 12 and age <= 17) then nb12a17 = nb12a17 + 1 ; if (T&variable_intermédiaire_14[j] eq "5") then &variable_intermédiaire_13=&variable_intermédiaire_13+1; if (T&variable_intermédiaire_14[j] eq "9") then &variable_intermédiaire_15=&variable_intermédiaire_15+1; %end; end; end; /* Dans la ligne ci-après, le nom de la variable est remplacé par */ /* &variable_intermédiaire_1 et les trois variables sources par &variable_intermédiaire_source_1, &variable_intermédiaire_source_2 et &variable_intermédiaire_source_3*/ &variable_intermédiaire_1=sum(&variable_intermédiaire_source_1,&variable_intermédiaire_source_2,&variable_intermédiaire_source_3); /* Dans les lignes ci-après, jusqu'au mot "run;" les noms de variables sont remplacés par &variable_intermédiaire_2 & à &variable_intermédiaire_13 */ Rename &variable_intermédiaire_2=&variable_intermédiaire_2_m&i. &variable_intermédiaire_3=&variable_intermédiaire_3_m&i. &variable_intermédiaire_4=&variable_intermédiaire_4_m&i. &variable_intermédiaire_5=&variable_intermédiaire_5_m&i. &variable_intermédiaire_6=&variable_intermédiaire_6_m&i. &variable_intermédiaire_1=&variable_intermédiaire_1_m&i. &variable_intermédiaire_7=&variable_intermédiaire_7_m&i. &variable_intermédiaire_8=&variable_intermédiaire_8_m&i. &variable_intermédiaire_9=&variable_intermédiaire_9_m&i. nb20a24=nb20a24_m&i. catben=catben_m&i. &variable_intermédiaire_10=&variable_intermédiaire_10_m&i. &variable_intermédiaire_11=&variable_intermédiaire_11_m&i. ; run; data work.final ; merge work.final ( in = a ) work.fr&i ; by numcaf matricul ; if a = 1 ; run ; %end; /*end boucle top exist*/ /*Nettoyage de la work après jointure*/ proc datasets lib=work nolist; delete fr&i ; quit; run; %end ; /*end boucle i=1 to 18*/ data work.final (DROP= annnen1-annnen12 Catenf1-Catenf12 moinen1-moinen12 &variable_intermédiaire_141-&variable_intermédiaire_1412 &variable_intermédiaire_45_1-&variable_intermédiaire_45_3 &variable_intermédiaire_2_m: &variable_intermédiaire_3_m: &variable_intermédiaire_4_m: &variable_intermédiaire_5_m: &variable_intermédiaire_7_m: &variable_intermédiaire_6_m: &variable_intermédiaire_11_m: &variable_intermédiaire_7_m: &variable_intermédiaire_8_m: nb20a24_m: &variable_intermédiaire_9_m: &variable_intermédiaire_10_m: &variable_intermédiaire_1_m: catben_m: dtreffre j datenai age seq1 seq2 seq3 seq4 cpt seqstd1 seqstd2 seqstd3 seqstd4 seqactstdmoy &variable3_construction_variable_modèle_9 &variable_construction_variable_modèle_9 &variable2_construction_variable_modèle_9 seqactstd ); set work.final; Attrib NBCHGT_nb20a24_18m length=3 label="Nombre de changement du nombre d'enfant âgé de 20 à 24 ans sur 18 mois"; Attrib &variable_modèle_1 length=3 ; Attrib &variable_modèle_2 length=3 ; Attrib &variable_modèle_3 length=3 ; Attrib &variable_modèle_5 length=3 ; Attrib &variable_modèle_4 length=3 ; Attrib &variable_modèle_9 length=$7. ; Attrib &variable_modèle_6 length=3 ; Attrib &variable_modèle_7 length=3 ; array T_nb20a24 %do i = 1 %to 19; nb20a24_m&i. %end ; ; array T_&variable_intermédiaire_2 %do i = 1 %to 19; &variable_intermédiaire_2_m&i. %end ; ; array T_&variable_intermédiaire_3 %do i = 1 %to 19; &variable_intermédiaire_3 _m&i. %end ; ; array T_&variable_intermédiaire_4 %do i = 1 %to 19; &variable_intermédiaire_4_m&i. %end ; ; array T_&variable_intermédiaire_5 %do i = 1 %to 19; &variable_intermédiaire_5_m&i. %end ; ; array T_&variable_intermédiaire_7 %do i = 1 %to 19; &variable_intermédiaire_7_m&i. %end ; ; array T_&variable_intermédiaire_6 %do i = 1 %to 19; &variable_intermédiaire_6_m&i. %end ; ; array T_&variable_intermédiaire_8 %do i = 1 %to 19; &variable_intermédiaire_8_m&i. %end ; ; array T_&variable_intermédiaire_9 %do i = 1 %to 19; &variable_intermédiaire_9_m&i. %end ; ; array T_catben %do i = 1 %to 19; catben_m&i. %end ; ; array T_&variable_intermédiaire_10 %do i = 1 %to 19; &variable_intermédiaire_10_m&i. %end ; ; array T_&variable_intermédiaire_11 %do i = 1 %to 18; &variable_intermédiaire_11_m&i. %end ; ; array &vvariable_intermédiaire_1_m&i. %do i = 1 %to 18; &variable_intermédiaire_1_m&i. %end ; ; /*Code de création des indicateurs*/ NBCHGT_nb20a24_18m=0; do j=1 to 18; if (t_catben[j] ne "" and t_catben[j+1] ne "") and T_nb20a24[j+1] ne T_nb20a24[j] then NBCHGT_nb20a24_18m=NBCHGT_nb20a24_18m+1; end; &variable_modèle_1=0; do j=1 to 18; if (t_catben[j] ne "" and t_catben[j+1] ne "") and T_&variable_intermédiaire_2[j+1] ne T_&variable_intermédiaire_2[j] then &variable_modèle_1=&variable_modèle_1+1; end; &variable_modèle_6=0; do j=1 to 6; if (t_catben[j] ne "" and t_catben[j+1] ne "") and T_&variable_intermédiaire_8 [j+1] ne T_&variable_intermédiaire_8 [j] then &variable_modèle_6=1; end; &variable_modèle_2=0; do i=1 to 18; if (T_&variable_intermédiaire_3 [i] ne 0 OR T_&variable_intermédiaire_4 [i] ne 0) then do; &variable_modèle_2=i; i=18; end; end; &variable_modèle_3=0; do j=1 to 6; &variable_modèle_3=sum(&variable_modèle_3, T_&variable_intermédiaire_5[j]); end; &construction_variable_modèle_7=0;&variable_modèle_7=0; do j=1 to 18; &construction_variable_modèle_7=sum(&construction_variable_modèle_7, T_&variable_intermédiaire_9[j]); end; &variable_modèle_7=(&construction_variable_modèle_7>0); &variable_modèle_5=0; &variable_modèle_4=0; &variable_modèle_8=0; do i=1 to 18; if T_&variable_intermédiaire_7[i]='1' then &variable_modèle_5=&variable_modèle_5+1; if T_&variable_intermédiaire_6[i] in ("1" "2") then &variable_modèle_4=&variable_modèle_4+1; if T_&variable_intermédiaire_10[i] not in ("" "0") then &variable_modèle_8=1; end; do i= 1 to 18; if T_&variable_intermédiaire_11[i] not in (&liste_modalités_variable_intermédiaire_11) and T_&variable_intermédiaire_7[i] ne '1' then &vvariable_intermédiaire_1_m&i.[i]=. ; end; drop i; if &vvariable_intermédiaire_1_m&i.(1)^=. then SEQ1=int(&vvariable_intermédiaire_1_m&i.(1));else SEQ1=.; SEQ2=.;SEQ3=.;SEQ4=.; cpt=1; do i=2 to 18; cpt=i+1; if &vvariable_intermédiaire_1_m&i.[i]^=. then do; if int(&vvariable_intermédiaire_1_m&i.[i]) ne SEQ1 then do; SEQ2=int(&vvariable_intermédiaire_1_m&i.[i]); i=18;end; end; else do; if &vvariable_intermédiaire_1_m&i.[i] ne SEQ1 then do; SEQ2=&vvariable_intermédiaire_1_m&i.[i]; i=18;end; end; end; if cpt<=18 then do i=cpt to 18; cpt=i+1; if &vvariable_intermédiaire_1_m&i.[i]^=. then do; if int(&vvariable_intermédiaire_1_m&i.[i]) ne SEQ2 then do; SEQ3=int(&vvariable_intermédiaire_1_m&i.[i]); i=18;end; end; else do; if &vvariable_intermédiaire_1_m&i.[i] ne SEQ2 then do; SEQ3=&vvariable_intermédiaire_1_m&i.[i]; i=18;end; end; end; if cpt<=18 then do i=cpt to 18; cpt=i+1; if &vvariable_intermédiaire_1_m&i.[i]^=. then do; if int(&vvariable_intermédiaire_1_m&i.[i]) ne SEQ3 then do; SEQ4=int(&vvariable_intermédiaire_1_m&i.[i]);end; end; ELSE DO; if &vvariable_intermédiaire_1_m&i.[i] ne SEQ3 then do; SEQ4=&vvariable_intermédiaire_1_m&i.[i];end; end; end; /*Ecart type des séquences hors 99999*/ if seq1>=99999 then seqstd1=seq2; else seqstd1=seq1; if seq2>=99999 then seqstd2=seq1;else seqstd2=seq2; if seq3>=99999 then seqstd3=seq2;else seqstd3=seq3; if seq4>=99999 then seqstd4=seq3;else seqstd4=seq4; if seqstd1=. and seqstd2=. and seqstd3=. and seqstd4=. then seqactstd=.; else if seqstd1=. and seqstd2=. and seqstd3=. then seqactstd=.; else if seqstd1=. and seqstd2=. and seqstd4=. then seqactstd=.; else if seqstd1=. and seqstd3=. and seqstd4=. then seqactstd=.; else if seqstd2=. and seqstd3=. and seqstd4=. then seqactstd=.; else if seqstd1^=. and seqstd2^=. and seqstd3=. and seqstd4=. then seqactstd=std(seqstd1,seqstd2); else if seqstd1^=. and seqstd2=. and seqstd3^=. and seqstd4=. then seqactstd=std(seqstd1,seqstd3); else if seqstd1^=. and seqstd2=. and seqstd3=. and seqstd4^=. then seqactstd=std(seqstd1,seqstd4); else if seqstd1=. and seqstd2^=. and seqstd3^=. and seqstd4=. then seqactstd=std(seqstd2,seqstd3); else if seqstd1=. and seqstd2^=. and seqstd3=. and seqstd4^=. then seqactstd=std(seqstd2,seqstd4); else if seqstd1=. and seqstd2=. and seqstd3^=. and seqstd4^=. then seqactstd=std(seqstd3,seqstd4); else if seqstd1^=. and seqstd2^=. and seqstd3^=. and seqstd4=. then seqactstd=std(seqstd1,seqstd2,seqstd3); else if seqstd1^=. and seqstd2^=. and seqstd3=. and seqstd4^=. then seqactstd=std(seqstd1,seqstd2,seqstd4); else if seqstd1^=. and seqstd2=. and seqstd3^=. and seqstd4^=. then seqactstd=std(seqstd1,seqstd3,seqstd4); else if seqstd1=. and seqstd2^=. and seqstd3^=. and seqstd4^=. then seqactstd=std(seqstd2,seqstd3,seqstd4); else seqactstd=std(seqstd1,seqstd2,seqstd3,seqstd4); if ((seqstd1^=.)+(seqstd2^=.)+(seqstd3^=.)+(seqstd4^=.))=0 then seqactstdmoy=.; else if sum(0,seqstd1,seqstd2,seqstd3,seqstd4)/((seqstd1^=.)+(seqstd2^=.)+(seqstd3^=.)+(seqstd4^=.))>0 THEN seqactstdmoy=seqactstd/(sum(0,seqstd1,seqstd2,seqstd3,seqstd4)/((seqstd1^=.)+(seqstd2^=.)+(seqstd3^=.)+(seqstd4^=.))); else seqactstdmoy=.; /*Indicateur de séquence &variable_modèle_9*/ array seqact2 seq1-seq4; &variable3_construction_variable_modèle_9=0;&variable_construction_variable_modèle_9=0;&variable2_construction_variable_modèle_9=0; do i=1 to 4; if 0<seqact2[i]<99999 then &variable_construction_variable_modèle_9=&variable_construction_variable_modèle_9+1; if seqact2[i]=0 then &variable3_construction_variable_modèle_9=&variable3_construction_variable_modèle_9+1; if seqact2[i]=. then &variable2_construction_variable_modèle_9=&variable2_construction_variable_modèle_9+1; end; if &variable3_construction_variable_modèle_9>0 and &variable_construction_variable_modèle_9=0 then &variable_modèle_9="0_0"; else if &variable3_construction_variable_modèle_9=0 and &variable_construction_variable_modèle_9>0 and seqactstdmoy in (. 0) then &variable_modèle_9="act_cst"; else if &variable3_construction_variable_modèle_9=0 and &variable_construction_variable_modèle_9>0 and 0<seqactstdmoy<=0.2 then &variable_modèle_9="act_v1"; else if &variable3_construction_variable_modèle_9=0 and &variable_construction_variable_modèle_9>0 and seqactstdmoy>0.2 then &variable_modèle_9="act_v2"; else if &variable3_construction_variable_modèle_9>0 and &variable_construction_variable_modèle_9>=1 then &variable_modèle_9="act_0"; else &variable_modèle_9="XX"; rename &variable_intermédiaire_11_m1=&variable_intermédiaire_11; run; %mend mp_Fre; %mp_fre; /********************************************************************/ /* c) &table_source_partie_c */ /********************************************************************/ %macro mp_histo_partie_c ; %do i= 1 %to 18 ; data _null_ ; /* contrôle existence des tables */ if exist("allstat.&table_source_partie_c&&m&i.",'data') or exist("allstat.&table_source_partie_c&&m&i.",'view') then call symput ("topexist", "O") ; else call symput ("topexist", "N") ; run ; %if &topexist. = O %then %do ; Data work.&table_source_partie_c&&m&i. ; merge work.final (in = a keep = numcaf MATRICUL ) ALLSTAT.&table_source_partie_c&&m&i. (in = b keep = numcaf MATRICUL &variable_intermédiaire_30 &variable_intermédiaire_31 &variable_intermédiaire_32 &variable_intermédiaire_33 &variable_intermédiaire_34 where= (&variable_intermédiaire_32 in ("01" "03") AND &variable_intermédiaire_33 eq "05" AND month(&variable_intermédiaire_30)=&&mois&i. AND year(&variable_intermédiaire_30)=&&annee&i. )); by numcaf MATRICUL ; if a = 1 and b = 1 ; &table_intermédiaire_1&&m&i. = 1 ; if &variable_intermédiaire_31 = variable_intermédiaire_31_modalité_2 then &table_intermédiaire_2 &&m&i = 1 ; if &variable_intermédiaire_31 = variable_intermédiaire_31_modalité_3 then &table_intermédiaire_3&&m&i = 1 ; if &variable_intermédiaire_31 in (liste_variable_intermédiaire_31_modalités_4) then &table_intermédiaire_4&&m&i = 1 ; if &variable_intermédiaire_31 in (liste_variable_intermédiaire_31_modalités_5) then &table_intermédiaire_5&&m&i = 1 ; if &variable_intermédiaire_31 = variable_intermédiaire_31_modalité_6 then &table_intermédiaire_6&&m&i = 1 ; if &variable_intermédiaire_31 = variable_intermédiaire_31_modalité_7 then &table_intermédiaire_7&&m&i = 1 ; if &variable_intermédiaire_31 = variable_intermédiaire_31_modalité_8 then &table_intermédiaire_8&&m&i = 1 ; if variable_intermédiaire_31 = variable_intermédiaire_31_modalité_9 then &table_intermédiaire_9&&m&i = 1 ; if &variable_intermédiaire_31 = variable_intermédiaire_31_modalité_10 then &table_intermédiaire_10&&m&i = 1 ; if &variable_intermédiaire_31 = variable_intermédiaire_31_modalité_11 then &table_intermédiaire_11&&m&i = 1 ; if &variable_intermédiaire_34 in (variable_intermédiaire_34_modalité) then &table_intermédiaire_12&&m&i. = 1 ; Run ; proc means data =work.&table_source_partie_c&&m&i. noprint nway ; var &table_intermédiaire_1&&m&i. &table_intermédiaire_2 &&m&i. &table_intermédiaire_3&&m&i. &table_intermédiaire_4&&m&i. &table_intermédiaire_5&&m&i. &table_intermédiaire_6&&m&i. &table_intermédiaire_7&&m&i. &table_intermédiaire_8&&m&i. &table_intermédiaire_9&&m&i. &table_intermédiaire_10&&m&i. &table_intermédiaire_11&&m&i &table_intermédiaire_12&&m&i.; class MATRICUL ; output out = work.&table_intermédiaire_13&&m&i. (drop = _type_ _freq_ ) sum = ; run ; /* mise à jour de la table final avec données existantes */ data work.final ; merge work.final ( in = a ) work.&table_intermédiaire_13&&m&i. ; by matricul ; if a = 1 ; run ; /*Nettoyage de la work après jointure*/ proc datasets lib=work nolist; delete &table_intermédiaire_13&&m&i. ; quit; run; proc datasets lib=work nolist; delete &table_source_partie_c&&m&i. temp; quit; run; %end ; %end ; /*Création des variables explicatives */ data work.final (drop= i FORI: FG:); set work.final; /*Vecteur des données historiques*/ array &T_vecteur_données_historiques_1 %do i = 1 %to 18; &données_historiques_1&&m&i. %end ; ; array &T_vecteur_données_historiques_2 %do i = 1 %to 18; &données_historiques_2&&m&i. %end ; ; array &T_vecteur_données_historiques_3 %do i = 1 %to 18; &données_historiques_3&&m&i. %end ; ; array &T_vecteur_données_historiques_4 %do i = 1 %to 18; &données_historiques_4&&m&i. %end ; ; array &T_vecteur_données_historiques_5 %do i = 1 %to 18; &données_historiques_5&&m&i. %end ; ; array &T_vecteur_données_historiques_6 %do i = 1 %to 18; &données_historiques_6&&m&i. %end ; ; array &T_vecteur_données_historiques_7 %do i = 1 %to 18; &données_historiques_7&&m&i. %end ; ; array &T_vecteur_données_historiques_8 %do i = 1 %to 18; &données_historiques_8&&m&i. %end ; ; array &T_vecteur_données_historiques_9 %do i = 1 %to 18; &données_historiques_9&&m&i. %end ; ; array &T_vecteur_données_historiques_10 %do i = 1 %to 18; &données_historiques_10&&m&i. %end ; ; array &T_vecteur_données_historiques_11 %do i = 1 %to 18; &données_historiques_11&&m&i. %end ; ; array &T_vecteur_données_historiques_12 %do i = 1 %to 18; &données_historiques_12&&m&i. %end ; ; /*Initialisation des indicateurs*/ attrib &variable_construction_variable_modèle_30 length=3. ; attrib &variable_intermédiaire_46 length=3. ; attrib &variable_modèle_15 length=3. ; attrib &variable_modèle_16 length=3. ; attrib &variable_intermédiaire_25 length=3. ; attrib &variable_modèle_17 length=3. ; attrib &variable_intermédiaire_24 length=3. ; attrib &variable_intermédiaire_26 length=3. ; attrib &variable_intermédiaire_27 length=3. ; attrib &variable_intermédiaire_60 length=3. ; attrib &variable_intermédiaire_61 length=3. ; attrib &variable_intermédiaire_62 length=3. ; &variable_construction_variable_modèle_30=0; do i=1 to 18; if (&T_vecteur_données_historiques_1(i) ne . and &T_vecteur_données_historiques_1(i)>0) then do; &variable_construction_variable_modèle_30=&variable_construction_variable_modèle_30+&variable_construction_variable_modèle_30(i); end;end; &variable_intermédiaire_46=0; do i=1 to 18; if (&T_vecteur_données_historiques_2(i) ne . and &T_vecteur_données_historiques_2(i)>0) then do; &variable_intermédiaire_46=&variable_intermédiaire_46+&T_vecteur_données_historiques_2(i); end;end; &variable_intermédiaire_47=0; do i=1 to 6; if (&T_vecteur_données_historiques_3(i) ne . and &T_vecteur_données_historiques_3(i)>0) then do; &variable_intermédiaire_47=&variable_intermédiaire_47+&T_vecteur_données_historiques_3(i); end;end; &variable_modèle_15=(&variable_intermédiaire_47>0); &variable_intermédiaire_48=0; do i=1 to 12; if (&T_vecteur_données_historiques_4(i) ne . and &T_vecteur_données_historiques_4(i)>0) then do; &variable_intermédiaire_48=&variable_intermédiaire_48+&T_vecteur_données_historiques_4(i); end;end; &variable_modèle_16=(&variable_intermédiaire_48>0); &variable_intermédiaire_49=0; do i=1 to 18; if (&T_vecteur_données_historiques_5(i) ne . and &T_vecteur_données_historiques_5(i)>0) then do; &variable_intermédiaire_49=&variable_intermédiaire_49+&T_vecteur_données_historiques_5(i); end;end; &variable_intermédiaire_50=0; do i=1 to 3; if (&T_vecteur_données_historiques_6(i) ne . and &T_vecteur_données_historiques_6(i)>0) then do; &variable_intermédiaire_50=&variable_intermédiaire_50+&T_vecteur_données_historiques_6(i); end;end; &variable_modèle_17=(&variable_intermédiaire_50>0); &variable_intermédiaire_24=0; do i=1 to 18; if (&T_vecteur_données_historiques_7(i) ne . and &T_vecteur_données_historiques_7(i)>0) then do; &variable_intermédiaire_24=&variable_intermédiaire_24+&T_vecteur_données_historiques_7(i); end;end; &variable_intermédiaire_26=0; do i=1 to 18; if (&T_vecteur_données_historiques_8(i) ne . and &T_vecteur_données_historiques_8(i)>0) then do; &variable_intermédiaire_26=&variable_intermédiaire_26+&T_vecteur_données_historiques_8(i); end;end; &variable_intermédiaire_27=0; do i=1 to 18; if (&T_vecteur_données_historiques_9(i) ne . and &T_vecteur_données_historiques_9(i)>0) then do; &variable_intermédiaire_27=&variable_intermédiaire_27+&T_vecteur_données_historiques_9(i); end;end; &variable_intermédiaire_51=0; do i=1 to 18; if (&T_vecteur_données_historiques_11(i) ne . and &T_vecteur_données_historiques_11(i)>0) then do; &variable_intermédiaire_51=i; i=18; end;end; &variable_intermédiaire_52=0; do i=1 to 18; if (&T_vecteur_données_historiques_12(i) ne . and &T_vecteur_données_historiques_12(i)>0) then do; &variable_intermédiaire_52=i; i=18; end;end; &variable_intermédiaire_53=0; do i=1 to 18; if (&T_vecteur_données_historiques_10(i) ne . and &T_vecteur_données_historiques_10(i)>0) then do; &variable_intermédiaire_53=1; end;end; run; %mend ; %mp_histo_partie_c ; /**********************************************************************************************************************/ /* d)table_source_partie_d */ /**********************************************************************************************************************/ %macro mp_histo_partie_d ; %do i= 1 %to 18 ; data _null_ ; /* contrôle existence des tables */ if exist("allstat.&table_source_partie_d&&m&i.",'data') or exist("allstat.&table_source_partie_d&&m&i.",'view') then call symput ("topexist", "O") ; else call symput ("topexist", "N") ; run ; %if &topexist. = O %then %do ; proc sql; create table &table_source_partie_d&&m&i. as select matricul, sum(&variable_intermédiaire_35 in ('001','003','004','005','017','019','022','023','23J','030','031','032', '033','33B','035','372','937','938','939','940') and &variable_intermédiaire_36='' and &variable_intermédiaire_37=0) as &variable_intermédiaire_40&i. from ( select a.matricul, b.&variable_intermédiaire_54, b.&variable_intermédiaire_35, abs(sum(-b.&variable_intermédiaire_38,b.&variable_intermédiaire_39)) as &variable_intermédiaire_37, case when b.&variable_intermédiaire_39>b.&variable_intermédiaire_38 then 'R' when b.&variable_intermédiaire_39<b.&variable_intermédiaire_38 then 'I' else '' end as &variable_intermédiaire_36 from final as a left join allstat.&table_source_partie_d&&m&i. as b on a.matricul=b.matricul) group by matricul; quit; data final ; merge final( in = a ) &table_source_partie_d&&m&i. ; by matricul; if a = 1 ; run ; proc datasets nolist; delete &table_source_partie_d&&m&i.; run; %end ; %end; data final (drop= i variable_intermédiaire_40:); set final ; array variable_intermédiaire_40 (18) %do i = 1 %to 18; &variable_intermédiaire_40&i. %end ; ; attrib &variable_intermédiaire_12 length=3. ; &variable_intermédiaire_12=0; do i=1 to 18; if (variable_intermédiaire_40(i) ne . and variable_intermédiaire_40(i)>0) then do; &variable_intermédiaire_12=&variable_intermédiaire_12+variable_intermédiaire_40(i); end; end; run; %mend; %mp_histo_partie_d ; /**********************************************************************************************************************/ /* e) table_source_partie_e */ /**********************************************************************************************************************/ %macro temp_partie_e; /*Extraction table &table_intermédiaire_14*/ proc sql; create table &table_intermédiaire_15 as select a.matricul, b.&variable_intermédiaire_41 , b.&variable_intermédiaire_42 , b.&variable_intermédiaire_43 , b.&variable_intermédiaire_55, b.&variable_intermédiaire_57 from final as a left join gra.&table_intermédiaire_14 as b on a.matricul=b.matricul where b.&variable_intermédiaire_42 in ("3" "5" "8" "6") and &dtref18.<=b.&variable_intermédiaire_41<=&dtref1. ; quit; %mend; %temp_partie_e; %macro ext_partie_e; %do i=1 %to 18 ; proc sql; create table &table_intermédiaire_16&i. as select matricul, sum(&variable_intermédiaire_42='6') as &variable_intermédiaire_56&i., sum(&variable_intermédiaire_43 in &modalités_variable_intermédiaire_43) as &variable_intermédiaire_58&i., sum(&variable_intermédiaire_43=&modalité_variable_intermédiaire_43_bis) as &variable_intermédiaire_18&i., sum(&variable_intermédiaire_57='N') as &variable_intermédiaire_59&i. from &table_intermédiaire_15 where compress(put(month(&variable_intermédiaire_41),z2.)!!SUBSTR(put(year(&variable_intermédiaire_41),z4.),3,2))="&&m&i." group by matricul; quit; data final; merge final(in=a) &table_intermédiaire_16&i.; by matricul; if a; if &variable_intermédiaire_56&i.=. then &variable_intermédiaire_56&i.=0; if &variable_intermédiaire_58&i.=. then &variable_intermédiaire_58&i.=0; if &variable_intermédiaire_18&i.=. then &variable_intermédiaire_18&i.=0; if &variable_intermédiaire_59&i.=. then &variable_intermédiaire_59&i.=0; run; proc datasets nolist; delete &table_intermédiaire_16&i.; run; %end; data final (drop= i &variable_intermédiaire_56: &variable_intermédiaire_58: &variable_intermédiaire_18: &variable_intermédiaire_59:); set final; array &variable_intermédiaire_73 (18) %do i = 1 %to 18; &variable_intermédiaire_56&&m&i. %end ; ; array &variable_intermédiaire_72 (18) %do i = 1 %to 18; &variable_intermédiaire_58&i. %end ; ; array &variable_intermédiaire_17 (18) %do i = 1 %to 18; &variable_intermédiaire_18&i. %end ; ; array &variable_intermédiaire_65 (18) %do i = 1 %to 18; &variable_intermédiaire_59&i. %end ; ; attrib &variable_intermédiaire_74 length=3. ; attrib &variable_intermédiaire_75 length=3. ; attrib &variable_intermédiaire_76 length=3. ; &variable_intermédiaire_74=0; do i=1 to 12; if (&variable_intermédiaire_72(i) ne . and &variable_intermédiaire_72(i)>0) then do; &variable_intermédiaire_74=&variable_intermédiaire_74+&variable_intermédiaire_72(i); end; end; &variable_intermédiaire_75=0; do i=1 to 18; if (&variable_intermédiaire_65(i) ne . and &variable_intermédiaire_65(i)>0) then do; &variable_intermédiaire_75=&variable_intermédiaire_75+&variable_intermédiaire_65(i); end; end; &variable_intermédiaire_76=0; do i=1 to 18; if (&variable_intermédiaire_73(i) ne . and &variable_intermédiaire_73(i)>0) then do; &variable_intermédiaire_76=&variable_intermédiaire_76+&variable_intermédiaire_73(i); end; end; attrib &variable_intermédiaire_16 length=3. ; &variable_intermédiaire_16=0; do i=1 to 18; if (&variable_intermédiaire_17(i) ne . and &variable_intermédiaire_17(i)>0) then do; &variable_intermédiaire_16=i; i=18; end; end; run; %mend; %ext_partie_e; proc datasets nolist; delete &table_intermédiaire_15; run; /**********************************************************************************************************************/ /* f) table_source_partie_f */ /**********************************************************************************************************************/ proc sql; create table &table_intermédiaire_17 as select a.matricul, b.&variable_intermédiaire_78, b.&variable_intermédiaire_79 from final as a left join librairie_table_intermédiaire_17.&table_intermédiaire_17 as b on a.matricul=b.matricul where &dtref12.<=b.&variable_intermédiaire_79<=&dtref1. ; quit; %macro partie_f; %do i=1 %to 12; proc sql; create table &variable_intermédiaire_77&i. as select matricul, sum(&variable_intermédiaire_78^='') as &variable_intermédiaire_80&i. from &table_intermédiaire_17 where compress(put(month(&variable_intermédiaire_79),z2.)!!SUBSTR(put(year(&variable_intermédiaire_79),z4.),3,2))="&&m&i." group by matricul; quit; data final; merge final (in=a) &variable_intermédiaire_77&i.; by matricul; if a; if &variable_intermédiaire_80&i.=. then &variable_intermédiaire_80i.=0; run; proc datasets nolist; delete &variable_intermédiaire_77&i.; run; %end; data final (drop= i &variable_intermédiaire_80: ); set final; array &variable_intermédiaire_81 (12) %do i = 1 %to 12; &variable_intermédiaire_80&i. %end ; ; attrib &variable_intermédiaire_82 length=3. ; &variable_intermédiaire_82=0; do i=1 to 12; if (&variable_intermédiaire_81(i) ne . and &variable_intermédiaire_81(i)>0) then do; &variable_intermédiaire_82=&variable_intermédiaire_82+&variable_intermédiaire_81(i); end; end; run; %mend; %partie_f; proc datasets nolist; delete &table_intermédiaire_17; run; /**********************************************************************************************************************/ /* g)DONNEES LOCALES : INSEE et BCA */ /**********************************************************************************************************************/ %let an_bca= %eval(%sysfunc(year(%sysfunc(date())))-1); %let an_bca_1=%eval(&an_bca.-1); %let annee2=%eval(&an_bca.-2000); %let annee2_1=%eval(&annee2-1); /*Test existance table basestat.cteredcomAA */ data _NULL_; if exist("basestat.cteredcom&annee2.",'data')=1 OR exist("basestat.cteredcom&annee2.",'view')=1 then do; call symputx("mv_table_evocom","basestat.cteredcom&annee2."); end; else do; call symputx("mv_table_evocom","basestat.cteredcom&annee2_1."); end; if exist("basestat.ctecomm12&annee2.",'data')=1 OR exist("basestat.ctecomm12&annee2.",'view')=1 then do; call symputx("mv_table_comepci","basestat.ctecomm12&annee2."); end; else do; call symputx("mv_table_comepci","basestat.ctecomm12&annee2_1."); end; if exist("basestat.bca_12&annee2.",'data')=1 OR exist("basestat.bca_12&annee2.",'view')=1 then do; call symputx("mv_table_bca","basestat.bca_12&annee2.");end; else do; call symputx("mv_table_bca","basestat.bca_12&annee2_1."); end; run; proc sort data=final; by numcomdo; run; proc sort data=&mv_table_comepci out=com_epci (keep= numcom numepci); by numcom;run; data final; merge final (in=a) com_epci (rename=(numcom=numcomdo)); by numcomdo; if a; run; proc sql; create table vl_insee_com as select varloc.numcomdo, varloc.dep, cteredcom.ncomapre, varloc.&variable_intermédiaire_83, varloc.variable_intermédiaire_84 from &mv_table_varlocales. as varloc left join &mv_table_evocom. as cteredcom on cteredcom.ncomavre=varloc.numcomdo; quit; data vl_insee_com; set vl_insee_com; if ncomapre ne "" then numcomdo=ncomapre; run; proc sql; create table vl_insee_com1 as select max(vl_insee_com.dep) as dep, vl_insee_com.numcomdo, sum(vl_insee_com.&variable_intermédiaire_83) as &variable_intermédiaire_83, sum(vl_insee_com.&variable_intermédiaire_84) as variable_intermédiaire_84 from vl_insee_com group by numcomdo; run; quit; /*Récupération des données INSEE à l'échelle Dep */ proc sql; create table vl_insee_dep as select dep, sum(&variable_intermédiaire_83) as &variable_intermédiaire_83_dep, sum(&variable_intermédiaire_84) as &variable_intermédiaire_84_dep from vl_insee_com1 group by dep; quit; data final; set final; length depcaf $3.; if numcaf="201" then depcaf="2A"; else if numcaf="202" then depcaf="2B"; else if (substr(numcomdo,1,2) not in ("97" "99")) then depcaf=substr(numcomdo,1,2); else if (substr(numcomdo,1,2)="97" and substr(numcaf,1,2)="97") then depcaf=numcaf; else depcaf=substr(numcaf,1,2); run; /*Récupération des données BCA */ data vl_BCA_com (keep= nivgeo &variable_intermédiaire_85 allchamp); set &mv_table_bca. (where=(natnivge="1") keep=natnivge nivgeo &variable_intermédiaire_85 allchamp ); run; data vl_BCA_epci (keep= nivgeo &variable_intermédiaire_85 allchamp); set &mv_table_bca. (where=(natnivge="E") keep=natnivge nivgeo &variable_intermédiaire_85 allchamp ); run; data vl_BCA_dep (keep= nivgeo &variable_intermédiaire_85 allchamp); set &mv_table_bca. (where=(natnivge in ("4")) keep=natnivge nivgeo &variable_intermédiaire_85 allchamp); if nivgeo="9A" then nivgeo="971"; if nivgeo="9B" then nivgeo="972"; if nivgeo="9C" then nivgeo="973"; if nivgeo="9D" then nivgeo="974"; if nivgeo="9E" then nivgeo="971"; if nivgeo="9F" then nivgeo="971"; if nivgeo="9G" then nivgeo="976"; run; /* Fusion des données BCA */ proc sql; create table varloc as select final.numcaf, final.matricul, final.numcomdo, final.depcaf, vl_insee_com.&variable_intermédiaire_83, vl_insee_com.&variable_intermédiaire_84, vl_insee_dep.&variable_intermédiaire_83_dep, vl_insee_dep.&variable_intermédiaire_84_dep, vl_BCA_com.&variable_intermédiaire_85 as &variable_intermédiaire_85_com, vl_BCA_com.allchamp as allchamp_com, vl_BCA_com.nivgeo as com_bca, vl_BCA_epci.&variable_intermédiaire_85 as &variable_intermédiaire_85_epci, vl_BCA_epci.allchamp as allchamp_epci, vl_BCA_epci.nivgeo as epci_bca, vl_BCA_dep.&variable_intermédiaire_85 as &variable_intermédiaire_85_dep, vl_BCA_dep.allchamp as allchamp_dep, vl_BCA_dep.nivgeo as dep_bca from final left join vl_insee_com1 as vl_insee_com on vl_insee_com.numcomdo=final.numcomdo left join vl_insee_dep on vl_insee_dep.dep=final.depcaf left join vl_BCA_com on vl_BCA_com.nivgeo=final.numcomdo left join vl_BCA_epci on vl_BCA_epci.nivgeo=final.numepci left join vl_BCA_dep on vl_BCA_dep.nivgeo=final.depcaf; quit; data varloc; set varloc; length &variable_intermédiaire_87 8. ; if allchamp_com>=30 then &variable_intermédiaire_87 = &variable_intermédiaire_85_com / allchamp_com; else if allchamp_epci>=30 then &variable_intermédiaire_87 = &variable_intermédiaire_85_epci / allchamp_epci; else if allchamp_dep>0 then &variable_intermédiaire_87 = &variable_intermédiaire_85_dep / allchamp_dep; length &variable_intermédiaire_86 8. ; if variable_intermédiaire_84>0 then &variable_intermédiaire_86 = &variable_intermédiaire_83 / variable_intermédiaire_84; else if &variable_intermédiaire_84_dep>0 then &variable_intermédiaire_86 = &variable_intermédiaire_83_dep / variable_intermédiaire_84_dep; run; proc sort data=final; by matricul; run; proc sort data=varloc; by matricul; run; data final; merge final (in=a) varloc (keep=matricul depcaf &variable_intermédiaire_87 &variable_intermédiaire_86); by matricul; if a; run; proc datasets nolist; delete varloc vl_BCA_com vl_BCA_epci vl_BCA_dep vl_insee_com vl_insee_com1 vl_insee_dep com_epci; run; /**********************************************************************************************************************/ /**********************************************************************************************************************/ /********** Partie 2: Recodages et créations de nouvelles variables **************************************/ /**********************************************************************************************************************/ /**********************************************************************************************************************/ data final (keep=numcaf matricul NORDALLC MOIPIE_RIB_R &variable_modèle_34 NBPIE_PAP18_r NBPIE_TELEP18_r &variable_modèle_11 &variable_modèle_12 occlog_r &variable_modèle_19 nb12a17_r NBCHGT_nb20a24_18m_r &variable_modèle_1_r &variable_modèle_26 &variable_modèle_27 &variable_modèle_28 &variable_modèle_29 &variable_modèle_30 &variable_modèle_2_r &variable_modèle_31 &variable_modèle_32 NBMCHADR_r &variable_modèle_3_r &variable_modèle_5_r &variable_modèle_4_r sitfam_r &variable_modèle_10 &variable_modèle_6 &variable_modèle_13 &variable_modèle_14 &variable_modèle_15 &variable_modèle_16 &variable_modèle_18 &variable_intermédiaire_60 &variable_modèle_7 MTPFVERS2_r MTREVACT2_r &variable_modèle_21 &variable_modèle_24 &variable_modèle_9 &variable_modèle_8 &variable_modèle_40 &variable_modèle_39 ); set final; attrib MOIPIE_RIB_R length=$4. label="Nombre de mois depuis arrivée du pièce RIB sur le dossier"; if MOIPIE_RIB=0 then MOIPIE_RIB_R='0'; if 1<=MOIPIE_RIB<=5 then MOIPIE_RIB_R='1a5'; else if 6<=MOIPIE_RIB<=14 then MOIPIE_RIB_R='6a14'; else if MOIPIE_RIB>=15 then MOIPIE_RIB_R='15p'; attrib &variable_modèle_34 length=$4. ; if &variable_intermédiaire_74=0 then &variable_modèle_34='0'; else if &variable_intermédiaire_74=1 then &variable_modèle_34='1'; else if &variable_intermédiaire_74>=2 then &variable_modèle_34='2p'; attrib NBPIE_PAP18_r length=$5. label="Nombre de pièces arrivées par le système d'acquisition papier sur 18 mois"; if NBPIE_PAP18=0 then NBPIE_PAP18_r='0'; else if 1<=NBPIE_PAP18<=13 then NBPIE_PAP18_r='1a13'; else if 14<=NBPIE_PAP18<=17 then NBPIE_PAP18_r='14a17'; else if NBPIE_PAP18>=18 then NBPIE_PAP18_r='18p'; attrib NBPIE_TELEP18_r length=$5. label="Nombre de téléprocédures sur 18 mois"; if NBPIE_TELEP18=0 then NBPIE_TELEP18_r='0'; else if 0<NBPIE_TELEP18<2 then NBPIE_TELEP18_r='1'; else if 2<=NBPIE_TELEP18<5 then NBPIE_TELEP18_r='2a5'; else if 5<=NBPIE_TELEP18<8 then NBPIE_TELEP18_r='5a7'; else if NBPIE_TELEP18>=8 then NBPIE_TELEP18_r='8etp'; attrib &variable_modèle_11 length=3. ; variable_modèle_11=(&variable_intermédiaire_82>0); attrib &variable_modèle_12 length=3. ; &variable_modèle_12=0; if &variable_intermédiaire_12>=1 then &variable_modèle_12=1; attrib &variable_modèle_37 length=$14. ; If &variable_modèle_24="0" then &variable_modèle_24="1" ; if (rsavers ne '0' or ppavers ne '0') and (alsvers='0' and aplvers='0' and alfvers='0') and tyocclog^='' then do; if tyocclog in ('ACC', 'PRO') then occlog_R='prop'; else if tyocclog in ('BAL', 'SRG','SRO','HOT') then occlog_R='cham_hot_pen'; else if tyocclog in ('HCG','HCO','HGP','HOP') then occlog_R='heb_grat'; else if tyocclog in ('OLI') then occlog_R='heb_inc'; else if tyocclog in ('LOC') then occlog_R='localnu'; end; else do; if occlog in ("00",'') then occlog_R='heb_inc'; else if occlog in ("23" "24" "41" "70" "71" "74" "75" "76" "40") then occlog_R='prop'; /*sid090640*/ else if occlog="01" then occlog_R="localnu"; else if occlog in ("02" "10" "11" "63") then occlog_R="cham_hot_pen"; else if occlog in ("06" "08" "09" "16" "52") then occlog_R="hebPA_foyer"; else if occlog in ("05" "5X" "5Y" "60") then occlog_R="hebPA_foyer"; else if occlog in ("50" "59" "55") then occlog_R="ResSociale_Fjt"; else if occlog in ("51" "53" "83" "56" "77") then occlog_R="Conventionné"; end; if occlog_R="" then occlog_R=occlog; attrib &variable_modèle_19 length=$8. ; &variable_modèle_19='0'; if &variable_intermédiaire_70='0' and &variable_intermédiaire_71 ="0" then &variable_modèle_19='0'; else if (&variable_intermédiaire_70 in ("1") and &variable_intermédiaire_71 in ("2" "3")) then &variable_modèle_19=&modalité_variable_modèle_19_1; else if (&variable_intermédiaire_70 in ("2") and &variable_intermédiaire_71 in ("2" "3")) then &variable_modèle_19=&modalité_variable_modèle_19_2; else if &variable_intermédiaire_70='1' then &variable_modèle_19=&modalité_variable_modèle_19_3; else if &variable_intermédiaire_70 in ("2" "3") then &variable_modèle_19=&modalité_variable_modèle_19_4; attrib nb12a17_r length=$3. label="Nombre d'enfant âgés de 12 à 17 ans"; if nb12a17=0 then nb12a17_r='0'; else if 0<nb12a17<=2 then nb12a17_r='1a2'; else if nb12a17>2 then nb12a17_r='3p'; attrib NBCHGT_nb20a24_18m_r length=$2. label="Nombre de changement du nombre d'enfant âgé de 20 à 24 ans sur 18 mois"; if NBCHGT_nb20a24_18m=0 then NBCHGT_nb20a24_18m_r='0'; else if NBCHGT_nb20a24_18m=1 then NBCHGT_nb20a24_18m_r='1'; else if NBCHGT_nb20a24_18m>1 then NBCHGT_nb20a24_18m_r='2p'; attrib &variable_modèle_1_r length=$4. ; if &variable_modèle_1=0 then &variable_modèle_1_r='0'; else if &variable_modèle_1=1 then &variable_modèle_1_r='1'; else if &variable_modèle_1>1 then &variable_modèle_1_r='2etp'; attrib &variable_modèle_26 length=$4. ; if &variable_intermédiaire_24=0 then &variable_modèle_26='0'; else if &variable_intermédiaire_24=1 then &variable_modèle_26='1'; else if &variable_intermédiaire_24=2 then &variable_modèle_26='2'; else if &variable_intermédiaire_24>=3 then &variable_modèle_26='3etp'; attrib &variable_modèle_27 length=$4. ; if &variable_intermédiaire_25=0 then &variable_modèle_27='0'; else if &variable_intermédiaire_25=1 then &variable_modèle_27='1'; else if 2<=&variable_intermédiaire_25<=3 then &variable_modèle_27='2a3'; else if &variable_intermédiaire_25>=4 then &variable_modèle_27='4etp'; attrib &variable_modèle_28 length=$4. ; if &variable_intermédiaire_26=0 then &variable_modèle_28='0'; else if 0<&variable_intermédiaire_26<=2 then &variable_modèle_28='1et2'; else if &variable_intermédiaire_26=3 then &variable_modèle_28='3'; else if &variable_intermédiaire_26>=4 then &variable_modèle_28='4p'; attrib &variable_modèle_29 length=$4. ; if &variable_intermédiaire_27=0 then &variable_modèle_29='0'; else if 1<=&variable_intermédiaire_27<=2 then &variable_modèle_29='1et2'; else if &variable_intermédiaire_27>=3 then &variable_modèle_29='3etp'; attrib &variable_modèle_30 length=$5. ; if 0<=variable_construction_variable_modèle_30<=6 then &variable_modèle_30='0a6'; else if 6<variable_construction_variable_modèle_30<=28 then &variable_modèle_30='7a28'; else if 28<variable_construction_variable_modèle_30<=37 then &variable_modèle_30='29a37'; else if 37<variable_construction_variable_modèle_30<=53 then &variable_modèle_30='38a53'; else if variable_construction_variable_modèle_30>53 then &variable_modèle_30='54etp'; attrib &variable_modèle_2_r length=$4. ; if &variable_modèle_2=0 then &variable_modèle_2_r='0'; else if 1<=&variable_modèle_2<=3 then &variable_modèle_2_r='1a3'; else if 4<=&variable_modèle_2<=12 then &variable_modèle_2_r='4a12'; else if &variable_modèle_2>=13 then &variable_modèle_2_r='13p'; attrib &variable_modèle_31 length=$5. ; if &variable_intermédiaire_61=0 then &variable_modèle_31='0'; else if 1<=&variable_intermédiaire_61<=4 then &variable_modèle_31='1a4'; else if 5<=&variable_intermédiaire_61<=10 then &variable_modèle_31='5a10'; else if 11<=&variable_intermédiaire_61<=14 then &variable_modèle_31='11a14'; else if &variable_intermédiaire_61>=15 then &variable_modèle_31='15etp'; attrib &variable_modèle_32 length=$4. ; if &variable_intermédiaire_62=0 then &variable_modèle_32='0'; else if 1<=&variable_intermédiaire_62<=3 then &variable_modèle_32='1a3'; else if 4<=&variable_intermédiaire_62<=13 then &variable_modèle_32='4a13'; else if &variable_intermédiaire_62>=14 then &variable_modèle_32='14p'; attrib NBMCHADR_r length=$5. label="Nombre de mois écoulé depuis le dernier changement d'adresse enregistré pour le dossier"; if NBMCHADR=0 then NBMCHADR_r='0'; else if 1<=NBMCHADR<=13 then NBMCHADR_r='1a13'; else if 14<=NBMCHADR<=50 then NBMCHADR_r='14a50'; else if NBMCHADR>=51 then NBMCHADR_r='51p'; attrib &variable_modèle_3_r length=$5. ; if &variable_modèle_3=0 then &variable_modèle_3_r='0'; else if &variable_modèle_3>0 then &variable_modèle_3_r='1etp'; attrib &variable_modèle_5_r length=$3. ; if &variable_modèle_5=0 then &variable_modèle_5_r='0'; else if 0<&variable_modèle_5<5 then &variable_modèle_5_r='1a4'; else if 5<=&variable_modèle_5<7 then &variable_modèle_5_r='5a6'; else if &variable_modèle_5>=7 then &variable_modèle_5_r='7p'; attrib &variable_modèle_4 length=$5. ; if &variable_modèle_4=0 then &variable_modèle_4_r='0'; else if 0<&variable_modèle_4<3 then &variable_modèle_4_r='1a2'; else if 3<=&variable_modèle_4<9 then &variable_modèle_4_r='3a8'; else if 9<=&variable_modèle_4<13 then &variable_modèle_4_r='9a12'; else if &variable_modèle_4>=13 then &variable_modèle_4_r='13etp'; attrib sitfam_r length=$10. label="Situation familiale - en couple/isolés et avec/sans enfants"; if sitfam in ('2','3','7') and presconj='0' and nbenlefa=0 then sitfam_r='coups_0cjt'; else if sitfam in ('2','3','7') and presconj='2' and nbenlefa=0 then sitfam_r='coups'; else if presconj='2' and nbenlefa>0 then sitfam_r='coupe'; else if presconj='0' and nbenlefa>0 then sitfam_r='monop'; else if presconj='0' and nbenlefa=0 and sexe='1' then sitfam_r='isole_h'; else if presconj='0' and nbenlefa=0 and sexe='2' then sitfam_r='isole_f'; attrib &variable_modèle_10 length=3. ; &variable_modèle_10=0; if &variable_construction_variable_modèle_10 in (&liste_modalités_&variable_construction_variable_modèle_10) then &variable_modèle_10=1; attrib &variable_modèle_13 length=3. ; &variable_modèle_13=(&variable_intermédiaire_13>0); attrib &variable_modèle_14 length=3. ; &variable_modèle_14=(&variable_intermédiaire_15>0); length &variable_intermédiaire_21 8.; if &variable_intermédiaire_22=. or &variable_intermédiaire_22=99999 then &variable_intermédiaire_21=.; else if &variable_intermédiaire_22=0 then &variable_intermédiaire_21=0; else &variable_intermédiaire_21=&variable_intermédiaire_22/&bmaf.; attrib MTPFVERS2_r length=$9. label="Montant des prestations légales - en valeur relative"; if 0<=MTPFVERS2<0.35 then MTPFVERS2_r='m0.35'; else if 0.35<=MTPFVERS2<1 then MTPFVERS2_r='0.35a1'; else if 1<=MTPFVERS2<2 then MTPFVERS2_r='1a2'; else if MTPFVERS2>=2 then MTPFVERS2_r='2etp'; length MTREVACT2 8.; if MTREVACT=. or MTREVACT=9999999 then MTREVACT2=.; else if MTREVACT=. then MTREVACT2=0; else MTREVACT2=MTREVACT/&smic.; attrib MTREVACT2_r length=$5. label="Montant des revenus d'activité du foyer - en valeur relative"; if MTREVACT2=. then MTREVACT2_r='inc'; else if MTREVACT2=0 then MTREVACT2_r='0'; else if 0<MTREVACT2<6 then MTREVACT2_r='m6'; else if 6<=MTREVACT2<15 then MTREVACT2_r='6a15'; else if 15<=MTREVACT2<26 then MTREVACT2_r='15a26'; else if MTREVACT2>=26 then MTREVACT2_r='26etp'; length &variable_intermédiaire_19 8.; if &variable_intermédiaire_20=. or &variable_intermédiaire_20=99999 then &variable_intermédiaire_19=.; else if &variable_intermédiaire_20=0 then &variable_intermédiaire_19=0; else &variable_intermédiaire_19=&variable_intermédiaire_20/&smic.; attrib &variable_modèle_21 length=$8. ; if &variable_intermédiaire_19=. or &variable_intermédiaire_19=99999 then &variable_modèle_21='0'; /*sid090640*/ else if &variable_intermédiaire_19=0 then &variable_modèle_21='0'; else if 0<&variable_intermédiaire_19<1.52 then &variable_modèle_21='m1.52'; else if 1.52<=&variable_intermédiaire_19<4.6 then &variable_modèle_21='1.52a4.6'; else if 4.6<=&variable_intermédiaire_19<6.3 then &variable_modèle_21='4.6a6.3'; else if &variable_intermédiaire_19>=6.3 then &variable_modèle_21='p6.3'; attrib &variable_modèle_40 length=$1. ; if &variable_intermédiaire_68=. then &variable_modèle_40='0'; /*valeur mq = valeur ref*/ else if &variable_intermédiaire_68<=0.25 then &variable_modèle_40='0'; else if 0.25<&variable_intermédiaire_68<0.5 then &variable_modèle_40='1'; else if &variable_intermédiaire_68>=0.5 then &variable_modèle_40='2'; attrib &variable_modèle_39 length=$1.; if 0<=&variable_intermédiaire_69<=0.15 then &variable_modèle_39='0'; else if 0.15<&variable_intermédiaire_69<0.28 then &variable_modèle_39='1'; else if &variable_intermédiaire_69>=0.28 then &variable_modèle_39='2'; else if (substr(numcomdo,1,2)="97" or depcaf="97") then &variable_modèle_39='0'; else if (substr(numcomdo,1,2)="98" or depcaf="98") then &variable_modèle_39='0'; else if &variable_intermédiaire_69=. then &variable_modèle_39='0'; /*valeur mq = valeur ref*/ run; /**********************************************************************************************************************/ /**********************************************************************************************************************/ /********** Partie 3: Calcul du score **************************************/ /**********************************************************************************************************************/ /**********************************************************************************************************************/ /*Mettre les coeffs en dur*/ data _null_; set &mv_parametres.; call symputx('cst',Intercept); /*Indicatrices*/ call symputx('&variable_modèle_3_r',&variable_modèle_3_r1etp); call symputx('&variable_modèle_10',&variable_modèle_101); call symputx('variable_modèle_11',variable_modèle_111); call symputx('&variable_modèle_6',&variable_modèle_6m1); call symputx('&variable_modèle_12',&variable_modèle_121); call symputx('&variable_modèle_13',&variable_modèle_131); call symputx('&variable_modèle_14',&variable_modèle_141); call symputx('&variable_modèle_15',&variable_modèle_151); call symputx('&variable_modèle_16',&variable_modèle_161); call symputx('&variable_modèle_17',&variable_modèle_171); call symputx('&variable_intermédiaire_60',&variable_intermédiaire_601); call symputx('&variable_modèle_8',&variable_modèle_81); call symputx('&variable_modèle_7',&variable_modèle_7m1); /*&variable_modèle_19*/ call symputx('&variable_modèle_19ann',&variable_modèle_192_rmodalité_variable_modèle_19_4); call symputx('&variable_modèle_19trim',&variable_modèle_192_r&modalité_variable_modèle_19_3); call symputx('&variable_modèle_19_suspann',&variable_modèle_192_r&modalité_variable_modèle_19_2); call symputx('&variable_modèle_19_susptrim',&variable_modèle_192_r&modalité_variable_modèle_19_1); /*MOIPIE_RIB_R*/ call symputx('pie_rib_1_5', 'MOIPIE_RIB_R1-5'n); call symputx('pie_rib_6_14','MOIPIE_RIB_R6-14'n ); call symputx('pie_rib_15p','MOIPIE_RIB_R15+'n ); /*&variable_modèle_21*/ call symputx('&variable_modèle_21_1','&variable_modèle_211-Inf1.52'n ); call symputx('&variable_modèle_21_2','&variable_modèle_212-1.52_4.6'n); call symputx('&variable_modèle_21_3','&variable_modèle_213-4.6_6.3'n); call symputx('&variable_modèle_21_4','&variable_modèle_214-Sup6.3'n); /*MTPFVERS3_r*/ call symputx('mtpfver_1', 'MTPFVERS3_r2-.35_1'n); call symputx('mtpfver_2','MTPFVERS3_r3-1_2'n ); call symputx('mtpfver_3','MTPFVERS3_r4-Sup2'n ); /*MTREVACT2_r*/ call symputx('mtrevact_inc','MTREVACT2_rinc'n ); call symputx('mtrevact_1','MTREVACT2_r1-moins6'n ); call symputx('mtrevact_2','MTREVACT2_r2-6_15'n); call symputx('mtrevact_3','MTREVACT2_r3-15-26'n); call symputx('mtrevact_4','MTREVACT2_r4-26etpl'n ); /*&variable_modèle_24*/ call symputx('&variable_modèle_242', &variable_modèle_242); call symputx('&variable_modèle_243', &variable_modèle_243); /*nb12a17_r*/ call symputx('nb12a17_inf2','nb12a17_r1-Inf2'n); call symputx('nb12a17_sup2','nb12a17_r2-Sup2'n); /*NBCHGT_nb20a24_18m_r*/ call symputx('NBCHGT_nb20a24_1',NBCHGT_nb20a24_18m_r1); call symputx('NBCHGT_nb20a24_2p',NBCHGT_nb20a24_18m_r2p); /*&variable_modèle_1_r*/ call symputx('&variable_modèle_1_1',&variable_modèle_1_r1); call symputx('&variable_modèle_1_2p',&variable_modèle_1_r2etp); /*&variable_modèle_26*/ call symputx('&variable_modèle_26_1',&variable_modèle_261); call symputx('&variable_modèle_26_2',&variable_modèle_262); call symputx('&variable_modèle_26_3p',&variable_modèle_263etp); /*&variable_modèle_27*/ call symputx('&variable_modèle_27_1',&variable_modèle_271); call symputx('&variable_modèle_27_2_3',&variable_modèle_272-3n); call symputx('&variable_modèle_27_4p',&variable_modèle_273+n); /*&variable_modèle_28*/ call symputx('&variable_modèle_28_1_2',&variable_modèle_281et2); call symputx('&variable_modèle_28_3',&variable_modèle_283); call symputx('&variable_modèle_28_4',&variable_modèle_284); /*&variable_modèle_29*/ call symputx('&variable_modèle_29_1_2',&variable_modèle_291et2); call symputx('&variable_modèle_29_3p',&variable_modèle_293etp); /*&variable_modèle_30*/ call symputx('&variable_modèle_30_7_27',&variable_modèle_3037et27); call symputx('&variable_modèle_30_28_37',&variable_modèle_30328et37); call symputx('&variable_modèle_30_38_53',&variable_modèle_30338et53); call symputx('&variable_modèle_30_54p',&variable_modèle_30354etp); /*&variable_modèle_2_r*/ call symputx('&variable_modèle_2_1_3','&variable_modèle_2_R1-3'n); call symputx('&variable_modèle_2_4_12','&variable_modèle_2_R4-12'n); call symputx('&variable_modèle_2_13p','&variable_modèle_2_R13+'n); /*&variable_modèle_31*/ call symputx('&variable_modèle_31_1_4',&variable_modèle_311et4); call symputx('&variable_modèle_31_5_10',&variable_modèle_315et10); call symputx('&variable_modèle_31_11_14',&variable_modèle_3111et14); call symputx('&variable_modèle_31_15p',&variable_modèle_3115etp); /*&variable_modèle_32*/ call symputx('&variable_modèle_32_1_3','&variable_modèle_3221-3'n); call symputx('&variable_modèle_32_4_13','&variable_modèle_3224-13'n); call symputx('&variable_modèle_32_14p','&variable_modèle_32214+'n); /*NBMCHADR_r*/ call symputx('NBMCHADR_1_13',NBMCHADR_r1a13); call symputx('NBMCHADR_14_50',NBMCHADR_r14a50); call symputx('NBMCHADR_51p',NBMCHADR_r51p); /*&variable_modèle_34*/ call symputx('&variable_modèle_34_1',&variable_modèle_341); call symputx('&variable_modèle_34_2p',&variable_modèle_342p); /*NBPIE_PAP18_r*/ call symputx('pie_pap_1_13',NBPIE_PAP18_r1a13); call symputx('pie_pap_14_17',NBPIE_PAP18_r14a17); call symputx('pie_pap_18p',NBPIE_PAP18_r18p); /*NBPIE_TELEP18_r*/ call symputx('pie_telep_1',NBPIE_TELEP18_r1); call symputx('pie_telep_2_5',NBPIE_TELEP18_r2a5); call symputx('pie_telep_5_8',NBPIE_TELEP18_r5a8); call symputx('pie_telep_8p',NBPIE_TELEP18_r8etp); /*&variable_modèle_5_r*/ call symputx('&variable_modèle_5_inf5','&variable_modèle_5_r1-Inf5'n ); call symputx('&variable_modèle_5_5_7','&variable_modèle_5_r2-5_7'n ); call symputx('&variable_modèle_5_sup7','&variable_modèle_5_r3-Sup7'n); /*&variable_modèle_4_r*/ call symputx('&variable_modèle_4_inf3','&variable_modèle_4_r1-Inf3'n ); call symputx('&variable_modèle_4_3_9', '&variable_modèle_4_r2-3_9'n); call symputx('&variable_modèle_4_9_13', '&variable_modèle_4_r3-9_13'n); call symputx('&variable_modèle_4_sup13','&variable_modèle_4_r4-Sup13'n); /*occlog_r*/ call symputx('occlog_convent', 'occlog_r2Conventionné'n); call symputx('occlog_ResSocFjt', 'occlog_r2ResSociale-Fjt'n); call symputx('occlog_chamhotpens', 'occlog_r2cham-hot-pen'n); call symputx('occlog_hebgrat','occlog_r2heb-grat'n); call symputx('occlog_hebinc', 'occlog_r2heb-inc'n); call symputx('occlog_hebpafoy','occlog_r2hebPA-foyer'n); call symputx('occlog_prop',occlog_r2prop); /*&variable_modèle_9*/ call symputx('&variable_modèle_9_XX', &variable_modèle_9XX); call symputx('&variable_modèle_9_act_0',&variable_modèle_9act_0); call symputx('&variable_modèle_9_act_cst',&variable_modèle_9act_cst); call symputx('&variable_modèle_9_act_v1',&variable_modèle_9act_v1 ); call symputx('&variable_modèle_9_act_v2', &variable_modèle_9act_v2); /*sitfam_r*/ call symputx('sitfam_coups',sitfam3coups); call symputx('sitfam_coups0cjt',sitfam3coups_0cjt); call symputx('sitfam_isole_f',sitfam3isole_f ); call symputx('sitfam_isole_h',sitfam3isole_h ); call symputx('sitfam_monop', sitfam3monop); /*&variable_modèle_39*/ call symputx('&variable_modèle_39_1',&variable_modèle_391); call symputx('&variable_modèle_39_2',vl_&variable_modèle_392); /*&variable_modèle_40*/ call symputx('&variable_modèle_40_1',&variable_modèle_401); call symputx('&variable_modèle_40_2',&variable_modèle_402); run; data dmde_scoring&m1.; set final; score_dmde=1/(1+exp(-( input(symget('cst'),best12.) +input(symget('&variable_modèle_10'),best12.)*(&variable_modèle_10=1) -sum(0,input(symget('&variable_modèle_10'),best12.))*(&variable_modèle_10=0) +input(symget('variable_modèle_11'),best12.)*(variable_modèle_11=1) -sum(0,input(symget('variable_modèle_11'),best12.))*(variable_modèle_11=0) +input(symget('&variable_modèle_6'),best12.)*(&variable_modèle_6=1) -sum(0,input(symget('&variable_modèle_6'),best12.))*(&variable_modèle_6=0) +input(symget('&variable_modèle_12'),best12.)*(&variable_modèle_12=1) -sum(0,input(symget('&variable_modèle_12'),best12.))*(&variable_modèle_12=0) +input(symget('&variable_modèle_13'),best12.)*(&variable_modèle_13=1) -sum(0,input(symget('&variable_modèle_13'),best12.))*(&variable_modèle_13=0) +input(symget('&variable_modèle_14'),best12.)*(&variable_modèle_14=1) -sum(0,input(symget('&variable_modèle_14'),best12.))*(&variable_modèle_14=0) +input(symget('&variable_modèle_15'),best12.)*(&variable_modèle_15=1) -sum(0,input(symget('&variable_modèle_15'),best12.))*(&variable_modèle_15=0) +input(symget('&variable_modèle_16'),best12.)*(&variable_modèle_16=1) -sum(0,input(symget('&variable_modèle_16'),best12.))*(&variable_modèle_16=0) +input(symget('&variable_modèle_17'),best12.)*(&variable_modèle_17=1) -sum(0, input(symget('&variable_modèle_17'),best12.))*(&variable_modèle_17=0) +input(symget('&variable_modèle_18'),best12.)*(&variable_modèle_18=1) -sum(0,input(symget('&variable_modèle_18'),best12.))*(&variable_modèle_18=0) +input(symget('&variable_modèle_8'),best12.)*(&variable_modèle_8=1) -sum(0,input(symget('&variable_modèle_8'),best12.))*(&variable_modèle_8=0) +input(symget('&variable_modèle_7'),best12.)*(&variable_modèle_7=1) -sum(0,input(symget('&variable_modèle_7'),best12.))*(&variable_modèle_7=0) +input(symget('&variable_modèle_3_r'),best12.)*(&variable_modèle_3_r='1etp') -sum(0,input(symget('&variable_modèle_3_r'),best12.))*(&variable_modèle_3_r='0') +input(symget('&variable_modèle_19_Rann'),best12.)*(&variable_modèle_19='Rann') +input(symget('&variable_modèle_19_Rtrim'),best12.)*(&variable_modèle_19='Rtrim') +input(symget('&variable_modèle_19_suspann'),best12.)*(&variable_modèle_19='suspann') +input(symget('&variable_modèle_19_susptrim'),best12.)*(&variable_modèle_19='susptrim') -sum(0, input(symget('&variable_modèle_19_Rann'),best12.),input(symget('&variable_modèle_19_Rtrim'),best12.),input(symget('&variable_modèle_19_suspann'),best12.),input(symget('&variable_modèle_19_susptrim'),best12.))*(&variable_modèle_19='0') +input(symget('pie_rib_1_5'),best12.)*(MOIPIE_RIB_R='1a5') +input(symget('pie_rib_6_14'),best12.)*(MOIPIE_RIB_R='6a14') +input(symget('pie_rib_15p'),best12.)*(MOIPIE_RIB_R='15p') -sum(0,input(symget('pie_rib_1_5'),best12.),input(symget('pie_rib_6_14'),best12.),input(symget('pie_rib_15p'),best12.))*(MOIPIE_RIB_R='0') +input(symget('&variable_modèle_21_1'),best12.)*(&variable_modèle_21='m1.52') +input(symget('&variable_modèle_21_2'),best12.)*(&variable_modèle_21='1.52a4.6') +input(symget('&variable_modèle_21_3'),best12.)*(&variable_modèle_21='4.6a6.3') +input(symget('&variable_modèle_21_4'),best12.)*(&variable_modèle_21='p6.3') -sum(0, input(symget('&variable_modèle_21_1'),best12.),input(symget('&variable_modèle_21_2'),best12.),input(symget('&variable_modèle_21_3'),best12.),input(symget('&variable_modèle_21_4'),best12.))*(&variable_modèle_21='0') +input(symget('mtpfver_1'),best12.)*(MTPFVERS2_r='0.35a1') +input(symget('mtpfver_2'),best12.)*(MTPFVERS2_r='1a2') +input(symget('mtpfver_3'),best12.)*(MTPFVERS2_r='2etp') -sum(0,input(symget('mtpfver_1'),best12.),input(symget('mtpfver_2'),best12.),input(symget('mtpfver_3'),best12.))*(MTPFVERS2_r='m0.35') +input(symget('mtrevact_inc'),best12.)*(MTREVACT2_r='inc') +input(symget('mtrevact_1'),best12.)*(MTREVACT2_r='m6') +input(symget('mtrevact_2'),best12.)*(MTREVACT2_r='6a15') +input(symget('mtrevact_3'),best12.)*(MTREVACT2_r='15a26') +input(symget('mtrevact_4'),best12.)*(MTREVACT2_r='26etp') -sum(0,input(symget('mtrevact_inc'),best12.),input(symget('mtrevact_1'),best12.),input(symget('mtrevact_2'),best12.),input(symget('mtrevact_3'),best12.),input(symget('mtrevact_4'),best12.))*(MTREVACT2_r='0') +input(symget('&variable_modèle_242'),best12.)*(&variable_modèle_24='2') +input(symget('&variable_modèle_243'),best12.)*(&variable_modèle_24='3') -sum(0,input(symget('&variable_modèle_242'),best12.),input(symget('&variable_modèle_243'),best12.))*(&variable_modèle_24='1') +input(symget('nb12a17_inf2'),best12.)*(nb12a17_r='1a2') +input(symget('nb12a17_sup2'),best12.)*(nb12a17_r='3p') -sum(0,input(symget('nb12a17_inf2'),best12.),input(symget('nb12a17_sup2'),best12.))*(nb12a17_r='0') +input(symget('NBCHGT_nb20a24_1'),best12.)*(NBCHGT_nb20a24_18m_r='1') +input(symget('NBCHGT_nb20a24_2p'),best12.)*(NBCHGT_nb20a24_18m_r='2p') -sum(0,input(symget('NBCHGT_nb20a24_1'),best12.),input(symget('NBCHGT_nb20a24_2p'),best12.))*(NBCHGT_nb20a24_18m_r='0') +input(symget('&variable_modèle_1_1'),best12.)*(&variable_modèle_1_r_r='1') +input(symget('&variable_modèle_1_2p'),best12.)*(&variable_modèle_1_r='2etp') -sum(0,input(symget('&variable_modèle_1_1'),best12.),input(symget('&variable_modèle_1_2p'),best12.))*(&variable_modèle_1_r='0') +input(symget('&variable_modèle_26_1'),best12.)*(&variable_modèle_26='1') +input(symget('&variable_modèle_26_2'),best12.)*(&variable_modèle_26='2') +input(symget('&variable_modèle_26_3p'),best12.)*(&variable_modèle_26='3etp') -sum(0,input(symget('&variable_modèle_26_1'),best12.),input(symget('&variable_modèle_26_2'),best12.),input(symget('&variable_modèle_26_3p'),best12.))*(&variable_modèle_26='0') +input(symget('&variable_modèle_27_1'),best12.)*(&variable_modèle_27='1') +input(symget('&variable_modèle_27_2_3'),best12.)*(&variable_modèle_27='2a3') +input(symget('&variable_modèle_27_4p'),best12.)*(&variable_modèle_27='4etp') -sum(0,input(symget('&variable_modèle_27_1'),best12.),input(symget('&variable_modèle_27_2_3'),best12.),input(symget('&variable_modèle_27_4p'),best12.))*(&variable_modèle_27='0') +input(symget('&variable_modèle_28_1_2'),best12.)*(&variable_modèle_28='1et2') +input(symget('&variable_modèle_28_3'),best12.)*(&variable_modèle_28='3') +input(symget('&variable_modèle_28_4'),best12.)*(&variable_modèle_28='4p') -sum(0,input(symget('&variable_modèle_28_1_2'),best12.),input(symget('&variable_modèle_28_3'),best12.),input(symget('&variable_modèle_28_4'),best12.))*(&variable_modèle_28='0') +input(symget('&variable_modèle_29_1_2'),best12.)*(&variable_modèle_29='1et2') +input(symget('&variable_modèle_29_3p'),best12.)*(&variable_modèle_29='3etp') -sum(0,input(symget('&variable_modèle_29_1_2'),best12.),input(symget('&variable_modèle_29_3p'),best12.))*(&variable_modèle_29='0') +input(symget('&variable_modèle_30_7_27'),best12.)*(&variable_modèle_30='7a28') +input(symget('&variable_modèle_30_28_37'),best12.)*(&variable_modèle_30='29a37') +input(symget('&variable_modèle_30_38_53'),best12.)*(&variable_modèle_30='38a53') +input(symget('&variable_modèle_30_54p'),best12.)*(&variable_modèle_30='54etp') -sum(0,input(symget('&variable_modèle_30_7_27'),best12.),input(symget('&variable_modèle_30_28_37'),best12.),input(symget('&variable_modèle_30_38_53'),best12.),input(symget('&variable_modèle_30_54p'),best12.))*(&variable_modèle_30='0a6') +input(symget('&variable_modèle_2_eq1_1_3'),best12.)*(&variable_modèle_2_r='1a3') +input(symget('&variable_modèle_2_eq1_4_12'),best12.)*(&variable_modèle_2_r='4a12') +input(symget('&variable_modèle_2_eq1_13p'),best12.)*(&variable_modèle_2_r='13p') -sum(0,input(symget('&variable_modèle_2_eq1_1_3'),best12.),input(symget('&variable_modèle_2_eq1_4_12'),best12.),input(symget('&variable_modèle_31_eq1_13p'),best12.))*(&variable_modèle_2_r='0') +input(symget('&variable_modèle_31_1_4'),best12.)*(&variable_modèle_31='1a4') +input(symget('&variable_modèle_31_5_10'),best12.)*(&variable_modèle_31='5a10') +input(symget('&variable_modèle_31_11_14'),best12.)*(&variable_modèle_31='11a14') +input(symget('&variable_modèle_31_15p'),best12.)*(&variable_modèle_31='15etp') -sum(0,input(symget('&variable_modèle_31_1_4'),best12.),input(symget('&variable_modèle_31_5_10'),best12.),input(symget('&variable_modèle_31_11_14'),best12.),input(symget('&variable_modèle_31_15p'),best12.))*(&variable_modèle_31='0') +input(symget('&variable_modèle_32_1_3'),best12.)*(&variable_modèle_32='1a3') +input(symget('&variable_modèle_32_4_13'),best12.)*(&variable_modèle_32='4a13') +input(symget('&variable_modèle_32_14p'),best12.)*(&variable_modèle_32'14p') -sum(0,input(symget('&variable_modèle_32_1_3'),best12.),input(symget('&variable_modèle_32_4_13'),best12.),input(symget('&variable_modèle_32_14p'),best12.))*(&variable_modèle_32='0') +input(symget('NBMCHADR_1_13'),best12.)*(NBMCHADR_r='1a13') +input(symget('NBMCHADR_14_50'),best12.)*(NBMCHADR_r='14a50') +input(symget('NBMCHADR_51p'),best12.)*(NBMCHADR_r='51p') -sum(0,input(symget('NBMCHADR_1_13'),best12.),input(symget('NBMCHADR_14_50'),best12.),input(symget('NBMCHADR_51p'),best12.))*(NBMCHADR_r='0') +input(symget('&variable_modèle_34_1'),best12.)*(&variable_modèle_34='1') +input(symget('&variable_modèle_34_2p'),best12.)*(&variable_modèle_34='2p') -sum(0,input(symget('&variable_modèle_34_1'),best12.),input(symget('&variable_modèle_34_2p'),best12.))*(&variable_modèle_34='0') +input(symget('pie_pap_1_13'),best12.)*(NBPIE_PAP18_r='1a13') +input(symget('pie_pap_14_17'),best12.)*(NBPIE_PAP18_r='14a17') +input(symget('pie_pap_18p'),best12.)*(NBPIE_PAP18_r='18p') -sum(0,input(symget('pie_pap_1_13'),best12.),input(symget('pie_pap_14_17'),best12.),input(symget('pie_pap_18p'),best12.))*(NBPIE_PAP18_r='0') +input(symget('pie_telep_1'),best12.)*(NBPIE_TELEP18_r='1') +input(symget('pie_telep_2_5'),best12.)*(NBPIE_TELEP18_r='2a5') +input(symget('pie_telep_5_8'),best12.)*(NBPIE_TELEP18_r='5a7') +input(symget('pie_telep_8p'),best12.)*(NBPIE_TELEP18_r='8etp') -sum(0,input(symget('pie_telep_1'),best12.),input(symget('pie_telep_2_5'),best12.),input(symget('pie_telep_5_8'),best12.),input(symget('pie_telep_8p'),best12.))*(NBPIE_TELEP18_r='0') +input(symget('&variable_modèle_5_r_inf5'),best12.)*(&variable_modèle_5_r='1a4') +input(symget('&variable_modèle_5_r_5_7'),best12.)*(&variable_modèle_5_r='5a6') +input(symget('&variable_modèle_5_r_sup7'),best12.)*(&variable_modèle_5_r='7p') -sum(0,input(symget('&variable_modèle_5_r_inf5'),best12.),input(symget('&variable_modèle_5_r_5_7'),best12.),input(symget('&variable_modèle_5_r_sup7'),best12.))*(&variable_modèle_5_r='0') +input(symget('&variable_modèle_4_inf3'),best12.)*(&variable_modèle_4_r='1a2') +input(symget('&variable_modèle_4_3_9'),best12.)*(&variable_modèle_4_r='3a8') +input(symget('&variable_modèle_4_9_13'),best12.)*(&variable_modèle_4_r='9a12') +input(symget('&variable_modèle_4_sup13'),best12.)*(&variable_modèle_4_r='13etp') -sum(0,input(symget('&variable_modèle_4_inf3'),best12.),input(symget('&variable_modèle_4_3_9'),best12.),input(symget('&variable_modèle_4_9_13'),best12.),input(symget('&variable_modèle_4_sup13'),best12.))*(&variable_modèle_4_r='0') +input(symget('occlog_convent'),best12.)*(occlog_r='Conventionné') +input(symget('occlog_ResSocFjt'),best12.)*(occlog_r='ResSociale_Fjt') +input(symget('occlog_chamhotpens'),best12.)*(occlog_r='cham_hot_pen') +input(symget('occlog_hebgrat'),best12.)*(occlog_r='heb_grat') +input(symget('occlog_hebinc'),best12.)*(occlog_r='heb_inc') +input(symget('occlog_hebpafoy'),best12.)*(occlog_r='hebPA_foyer') +input(symget('occlog_prop'),best12.)*(occlog_r='prop') -sum(0,input(symget('occlog_convent'),best12.),input(symget('occlog_ResSocFjt'),best12.),input(symget('occlog_chamhotpens'),best12.), input(symget('occlog_hebgrat'),best12.),input(symget('occlog_hebinc'),best12.),input(symget('occlog_hebpafoy'),best12.), input(symget('occlog_prop'),best12.))*(occlog_r='localnu') +input(symget('&variable_modèle_9_XX'),best12.)*(&variable_modèle_9='XX') +input(symget('&variable_modèle_9_act_0'),best12.)*(&variable_modèle_9='act_0') +input(symget('&variable_modèle_9_act_cst'),best12.)*(&variable_modèle_9='act_cst') +input(symget('&variable_modèle_9_act_v1'),best12.)*(&variable_modèle_9='act_v1') +input(symget('&variable_modèle_9_act_v2'),best12.)*(&variable_modèle_9='act_v2') -sum(0,input(symget('&variable_modèle_9_XX'),best12.),input(symget('&variable_modèle_9_act_0'),best12.),input(symget('&variable_modèle_9_act_cst'),best12.), input(symget('&variable_modèle_9_act_v1'),best12.),input(symget('&variable_modèle_9_act_v2'),best12.))*(&variable_modèle_9='0_0') +input(symget('sitfam_coups'),best12.)*(sitfam_r='coups') +input(symget('sitfam_coups0cjt'),best12.)*(sitfam_r='coups_0cjt') +input(symget('sitfam_isole_f'),best12.)*(sitfam_r='isole_f') +input(symget('sitfam_isole_h'),best12.)*(sitfam_r='isole_h') +input(symget('sitfam_monop'),best12.)*(sitfam_r='monop') -sum(0,input(symget('sitfam_coups'),best12.),input(symget('sitfam_coups0cjt'),best12.),input(symget('sitfam_isole_f'),best12.), input(symget('sitfam_isole_h'),best12.),input(symget('sitfam_monop'),best12.))*(sitfam_r='coupe') +input(symget('&variable_modèle_39_1'),best12.)*(&variable_modèle_39='1') +input(symget('&variable_modèle_39_2'),best12.)*(&variable_modèle_39='2') -sum(0,input(symget('&variable_modèle_39_1'),best12.),input(symget('&variable_modèle_39_2'),best12.))*(&variable_modèle_39='0') +input(symget('&variable_intermédiaire_68_1'),best12.)*(&variable_modèle_40='1') +input(symget('&variable_intermédiaire_68_2'),best12.)*(&variable_modèle_40='2') -sum(0,input(symget('&variable_intermédiaire_68_1'),best12.),input(symget('&variable_intermédiaire_68_2'),best12.))*(&variable_modèle_40='0') ))); run; /* tri par scoremax et renomage des scores comme les anciens utilisés */ proc sort data=work.dmde_scoring&m1. ( rename=(score_dmde=scoremax)); by descending SCOREMAX ; run; /*modif 09/2011 */ /*SORTIE DE TABLE POUR ENTREPOT DII*/ /*Formats des variables*/ proc format lib = library ; /* Cette partie du programme est masquée, mais elle ne contient que de la gestion d'affichage */ run; /*Liste des variables à conserver (à destination de la CNAF) */ /*Liste des variables pour alimenter la table FRESCORE*/ %let frescore=NUMCAF DTREFFRE DTCRE MATRICUL NORDALLC SCORGLOB SCORLOG SCORMAX SCORPRO SCORSIT SCORESS AGEAINE AGEBENJ &variable_sortie_1 &variable_sortie_2 &variable_sortie_3 &variable_sortie_4 &variable_sortie_5 &variable_sortie_6 &variable_sortie_7 &variable_sortie_8 &variable_sortie_9 &variable_sortie_10 &variable_sortie_11 &variable_sortie_12 &variable_sortie_13 &variable_sortie_14 &variable_sortie_15 &variable_sortie_16 ENF16SSA ENF1217 ENF18AX ENF35 ENF610 &variable_sortie_17 &variable_sortie_18 ; /*liste des variables pour alimenter la FRESCOR3*/ %let frescore3 = NUMCAF DTREFFRE DTCRE MATRICUL NORDALLC dro_aah_r MOIPIE_RIB_R &variable_modèle_21 &variable_modèle_22 MTREVACT2_r &variable_modèle_24 nb12a17_r NBCHGT_nb20a24_18m_r &variable_modèle_1_r &variable_modèle_26 &variable_modèle_27 &variable_modèle_28 &variable_modèle_29 &variable_modèle_30 &variable_modèle_2_r &variable_modèle_31 &variable_modèle_32 NBMCHADR_r &variable_modèle_3_r &variable_modèle_34 NBPIE_PAP18_r NBPIE_TELEP18_r &variable_modèle_5_r &variable_modèle_4_r occlog_r &variable_modèle_9 sitfam_r &variable_modèle_10 &variable_modèle_11 &variable_modèle_6 &variable_modèle_12 &variable_modèle_13 &variable_modèle_14 &variable_modèle_15 &variable_modèle_16 &variable_modèle_18 &variable_intermédiaire_60 &variable_modèle_8 &variable_modèle_7 &variable_modèle_39 &variable_modèle_40 ; /*Sortie et archivage des tables FRESCORE et FRE du mois de référence du scoring*/ options compress = yes ; data work.FRESCOR&m1.(keep= &frescore.) work.FRESCOR3&m1. (keep= &frescore3.) ; run; /* suppression des tables qui ne seront plus utilisées */ option compress = yes ; proc datasets lib = work nolist ; delete final dmde_scoring&m1. ; copy out = allstat ; select FRESCOR&m1. FRESCOR3&m1.; run ; ```