34%macro irmst_create_port_expanded(
35 function_package = work.rating_format,
37 in_model_group_info = ,
40 out_unrequired_subset = work.unrequired,
52 outds = work._tmp_workgroups_,
60 %local apply_control_flag
66 required_vars_to_rename
73 %let required_variables =;
74 %Let unrequired_variables =;
75 %let missing_variables =;
79 into :default_inst_var separated by
' '
80 from dictionary.columns
81 where libname eq
"%qupcase(%scan(&in_portfolio, 1, %str(.)))" and
82 memname eq
"%qupcase(%scan(&in_portfolio, 2, %str(.)))" and
83 upcase(name) in (
"INSTID"
93 %let apply_control_flag = %sysevalf(%superq(in_control_table) ne,
boolean);
98 %
if &apply_control_flag %then
101 select distinct upcase(variable)
102 into :required_variables separated by
' '
104 select upcase(variable) as variable
105 from &in_control_table
110 where upcase(variable) in
112 from dictionary.columns
113 where libname eq
"%qupcase(%scan(&in_portfolio, 1, %str(.)))" and
114 memname eq
"%qupcase(%scan(&in_portfolio, 2, %str(.)))");
117 into :unrequired_variables separated by
' '
118 from dictionary.columns
119 where libname eq
"%qupcase(%scan(&in_portfolio, 1, %str(.)))" and
120 memname eq
"%qupcase(%scan(&in_portfolio, 2, %str(.)))" and
121 upcase(name) not in (%rsk_quote_list(list=&required_variables));
123 select distinct upcase(variable)
124 into :missing_variables separated by
' '
125 from &in_control_table
126 where upcase(variable) not in (%rsk_quote_list(list=&required_variables));
129 %let required_variables = &default_inst_var. &required_variables;
130 %let unrequired_variables = &default_inst_var. &unrequired_variables;
136 %
if %length(&missing_variables) gt 0 %then
137 %let missing_variables = %rsk_quote_list(list=&missing_variables, dlm=%str( ));
139 %
if %index(&default_inst_var, INSTTYPE) eq 0 and
140 %index(&default_inst_var, PRODUCT) eq 0 %then
141 %let missing_variables =
'INSTTYPE or PRODUCT' &missing_variables;
143 %
if %index(&default_inst_var, INSTID) eq 0 %then
144 %let missing_variables =
'INSTID' &missing_variables;
146 %
if %length(&missing_variables) gt 0 %then
147 %put WARNING: The following expected variables were not found in %upcase(&input_port). &missing_variables;
155 from &in_model_group_info
156 where tm_model_sk ne .;
162 %irmst_create_rating_formats(
163 tm_model_sk = &model_sk,
164 function_lib = %scan(&function_package, 1, .),
165 package_name = %scan(&function_package, 2, .),
167 mipurl = %superq(mipurl),
168 tgt_ticket = %superq(tgt_ticket),
172 workgroup = &workgroup,
173 authMethod = &authMethod,
175 outVarTicket = &outVarTicket,
176 outSuccess = &outSuccess,
177 outResponseStatus = &outResponseStatus,
178 restartLUA = &restartLUA,
179 clearCache = &clearCache
182 %irm_add_function_package(
183 cmplib = &function_package,
184 check_function = rating_num_to_grade
191 create table work.model_group_dim_info as
192 select distinct upcase(insttype) as seg_lvl_insttype,
194 from &in_model_group_info
195 where upcase(model_group_kind) eq
"EVALUATION";
201 filename mgfilter temp;
203 file mgfilter lrecl = 32767;
204 set work.model_group_dim_info;
206 if (tm_dim ne .) then
208 put
'when(' 'upcase(insttype) = upcase("' seg_lvl_insttype +(-1)
'"))';
210 put 3*
' ' 'dma_expansion_flag = "Y";';
211 put 3*
' ' 'do i=1 to' + 1 tm_dim + (-1)
';';
212 put 6*
' ' 'instid = catx("_",original_instid,i);';
213 put 6*
' ' 'to_risk_rating = upcase(rating_num_to_grade(i));';
214 put 6*
' ' "output &out_portfolio;";
223 %
if &apply_control_flag %then
225 %put NOTE: Required variables before rename - &required_variables;
227 %let required_vars_to_rename = &required_variables;
228 %let required_variables = ;
230 %
do i = 1 %to %sysfunc(countw(&required_vars_to_rename));
231 %let var = %scan(&required_vars_to_rename, &i, %str( ));
232 %
if (&var eq PRODUCT) %then
234 %let required_variables = &required_variables. &var;
237 %put NOTE: Required variables after rename - &required_variables;
244 select max(length(strip(instid)))
249 data %
if &apply_control_flag %then
252 keep = &required_variables.
259 &out_unrequired_subset(keep = &unrequired_variables);
263 &out_portfolio(drop = i);
266 length %upcase(instid) $%eval(&length. +3)
268 dma_expansion_flag $1;
270 label to_risk_rating = 'Migrated Risk Rating';
274 instid = original_instid
275 %if %rsk_varexist(&in_portfolio, PRODUCT) and
276 not %rsk_varexist(&in_portfolio, INSTTYPE) %then
280 where = (&where_stmt)
287 %include mgfilter / nosource lrecl = 32767;
290 dma_expansion_flag = 'N';
291 instid = original_instid;
292 output &out_portfolio;
298 instid = original_instid;
299 %if &apply_control_flag %then
300 output &out_unrequired_subset;;
303 filename mgfilter clear;
308 %if %qupcase(&debug) ne TRUE %then
311 drop table work.model_group_dim_info;
315%mend irmst_create_port_expanded;