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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
data WORK.T1;
input VAR $ VAR1 $ VAR2 $ VAR3 VAR4;
DATALINES;
A . D 5 3
. F . 5 3
H T Z . 3
. . A 5 2
Z R Z . 6
Z R Z . 8
E W R 3 0
;
run;
data WORK.T2;
input VAR $ VAR1 $ VAR2 $ VAR3 VAR4;
DATALINES;
A D D 5 3
Y F W 5 3
H T Z 1 3
B U A 5 2
Z R Z 2 6
Z R Z 7 8
E W R 3 0
;
run;
%macro affiche_RDM(ET, TABLE1, TABLE2=F);
%put *************************;
%put ;
%put ENVOI TABLE2 => &TABLE2.;
%put ;
proc sql noprint;
select name into:list_var separated by ' ' from dictionary.columns
where upcase(libname)="&ET." and upcase(memname)="&TABLE1.";
quit;
proc sql noprint;
select cat('nmiss(', strip(name), ') as ', strip(name), ' ') into:list_varnmiss separated by ',' from dictionary.columns
where upcase(libname)="&ET." and upcase(memname)="&TABLE1.";
quit;
proc sql;
create table WORK.VALEURSCOMPTEES as select &list_varnmiss.
from &ET..&TABLE1.;
quit;
PROC SQL;
CREATE VIEW WORK.VALEURSCOMPTEES2 AS
SELECT SRC.*, "DM_&TABLE1." AS _EG_IDCOL_
FROM WORK.VALEURSCOMPTEES AS SRC;
QUIT;
PROC TRANSPOSE DATA = WORK.VALEURSCOMPTEES2 OUT=WORK.VALEURSCOMPTEES3;
ID _EG_IDCOL_;
VAR &list_var.;
RUN;
proc sort data=WORK.VALEURSCOMPTEES3;
by _name_ ;
run;
%if "&TABLE2." ~= "F" %then %do;
%put ;
%put ENTRE DANS LA CONDITION => OUI;
%put ;
proc sql noprint;
select name into:list_var separated by ' ' from dictionary.columns
where upcase(libname)="&ET." and upcase(memname)="&TABLE2.";
quit;
proc sql noprint;
select cat('nmiss(', strip(name), ') as ', strip(name), ' ') into:list_varnmiss separated by ',' from dictionary.columns
where upcase(libname)="&ET." and upcase(memname)="&TABLE2.";
quit;
proc sql;
create table WORK.VALEURSCOMPTEESB as select &list_varnmiss.
from &ET..&TABLE2.;
quit;
PROC SQL;
CREATE VIEW WORK.VALEURSCOMPTEES2B AS
SELECT SRC.*, "DM_&TABLE2." AS _EG_IDCOL_
FROM WORK.VALEURSCOMPTEESB AS SRC;
QUIT;
PROC TRANSPOSE DATA = WORK.VALEURSCOMPTEES2B OUT=WORK.VALEURSCOMPTEES3B;
ID _EG_IDCOL_;
VAR &list_var.;
RUN;
proc sort data=WORK.VALEURSCOMPTEES3B;
by _name_ ;
run;
data WORK.AFFICHE_RDM;
merge WORK.VALEURSCOMPTEES3 WORK.VALEURSCOMPTEES3B;
by _name_ ;
run;
%end;
%else %do;
%put ;
%put ENTRE DANS LA CONDITION => NON;
%put ;
data WORK.AFFICHE_RDM;
set WORK.VALEURSCOMPTEES3;
run;
%end;
%* table qui contient le résultat;
data WORK.AFFICHE_RDM;
set WORK.AFFICHE_RDM;
rename _name_ = 'Nom_variable';
run;
%mend affiche_RDM;
%affiche_RDM(WORK,T1);
%affiche_RDM(WORK,T1,TABLE2=T2); |
Partager