15%macro irmst_create_ctm_pmx(
27 %
if %qupcase(&debug) in (Y YES 1 TRUE) %then
35 %let meta_var = modeling_system_name
36 modeling_system_version
38 master_risk_scenario_name
44 data work.temp_matrix (drop = &meta_var)
45 work.temp_matrix_meta (keep = &meta_var);
55 into TM[colname = rating];
56 close work.temp_matrix;
58 use work.temp_matrix_meta;
59 read all var {model_group_name mip_scenario_name insttype}
61 close work.temp_matrix_meta;
72 previous_model_scen_char = {
'NULL' 'NULL' 'NULL'};
74 current_model_scen_char = model_scen_char[1 + i*n, ];
78 if current_model_scen_char[1] ^= previous_model_scen_char[1] |
79 current_model_scen_char[2] ^= previous_model_scen_char[2] |
80 current_model_scen_char[3] ^= previous_model_scen_char[3] then
82 TM[1+i*n:(i+1)*n, ] = TM[1+(i-1)*n:i*n, ] * TM[1+i*n:(i+1)*n, ];
84 previous_model_scen_char = current_model_scen_char;
88 create work.temp_cumulative_trans_matrix1
89 from CTM[colname = rating];
91 close work.temp_cumulative_trans_matrix1;
94 data work.temp_cumulative_trans_matrix2;
95 merge work.temp_matrix_meta
96 work.temp_cumulative_trans_matrix1;
103 data &output_pmx (drop = &meta_var
107 set work.temp_cumulative_trans_matrix2;
108 lookup_key = catx(
"_",
110 upcase(strip(put(mip_scenario_name, 32.))),
111 put(scenario_date, date9.),
112 upcase(from_risk_rating));
113 %
if %qupcase(&_debug_) eq YES %then
115 put
'The following string will be hashed and used as a lookup key "' lookup_key + (-1)
'"';
117 _name_ = put(md5(lookup_key), $hex32.);
123 %
if %qupcase(&_debug_) eq NO %then
126 drop table work.temp_matrix,
127 work.temp_matrix_meta,
128 work.temp_cumulative_trans_matrix1,
129 work.temp_cumulative_trans_matrix2;
133%mend irmst_create_ctm_pmx;