6%let rgf_tgt_ticket = ${globals.ticket};
9%let sas_risk_workgroup_dir = ${globals.sas_risk_workgroup_dir};
12%let cycle_id = ${context.cycle.key};
15%let analysis_run_id = ${context.analysisRun.key};
18%let config_set_id = ${params.CONFIGSETID};
21%let credit_risk_key = ${params.CREDITRISKDETAIL.key};
24%let scenario_name_list = ${params.MRSBEPPAIR};
27%let scenario_list = %sysfunc(prxchange(s/[\[\]]
30%let bsp_key = ${params.BSP.key};
33%let lasr_load_method = ${params.LASRLOADMETHOD};
36%let log_level = ${params.LOGLEVEL};
39%let max_wait = ${params.MAXWAIT};
46%let analysis_data_key = ${params.CREDITRISKDETAIL.key};
49%let schema_name = ${params.CREDITRISKDETAIL.nav(
"analysisData_dataDefinition|RMC")[0].schemaName};
50%let schema_version = ${params.CREDITRISKDETAIL.nav(
"analysisData_dataDefinition|RMC")[0].schemaVersion};
53%let credit_risk_analysis_run = ${params.CREDITRISKDETAIL.nav(
"analysisData_analysisRun_out|RMC")[0].key};
58%include
"&sas_risk_workgroup_dir./groups/Public/SASRiskManagementCore/cycles/&cycle_id./init.sas" / lrecl = 32000 source2;
61%irm_set_logging_options();
64%let reload_lasr_flg = %irmc_process_lasr_load_method(&lasr_load_method.);
72 config_name =
"RMC_FA_ID"; config_value =
"&rmc_fa_id."; output;
73 config_name =
"CYCLE_ID"; config_value =
"&cycle_id."; output;
74 config_name =
"ANALYSIS_RUN_ID"; config_value =
"&analysis_run_id."; output;
75 config_name =
"MAX_WAIT"; config_value =
"&max_wait."; output;
76 config_name =
"LOG_LEVEL"; config_value =
"&log_level."; output;
77 config_name =
"RELOAD_LASR_FLG"; config_value =
"&reload_lasr_flg."; output;
78 config_name =
"TGT_TICKET"; config_value =
"&rgf_tgt_ticket."; output;
82%macro run_irm_flow(scenarios);
84 %
do mrs=1 %to %sysfunc(countw(&scenarios., %str(,)));
85 %let curr_scenario = %scan(&scenarios., &mrs., %str(,));
88 %let jobflow_category = Analytics;
89 %let jobflow_type = irmst_balance_sheet_projection;
90 %let instance_date = %sysfunc(date(), yymmddp10.);
91 %let instance_time = %sysfunc(prxchange(s/(\d+):(\d+):(\d+)/$1h$2m$3s/i, -1, %sysfunc(time(), tod8.)));
92 %let instanceName = BEP Aggregation Analysis &instance_date._&instance_time.;
93 %let instanceDesc = BEP Aggregation Analysis
for the scenario: %lowcase(&curr_scenario.);
96 data work.bsp_data_config;
99 analysis_data_key $32.
100 source_data_version $100.
103 source_data_name =
"&schema_name.";
104 analysis_data_key =
"&analysis_data_key." ;
105 source_data_version=
"&schema_version.";
106 scenario_name =
"&curr_scenario.";
111 %let jobflow_status = Unknown;
114 %irm_rest_create_jobflow_instance(instance_name = &instanceName.
115 , description = &instanceDesc.
116 , entityId = &entity_id.
117 , entityRoleKey = &entity_role_key.
118 , category = &jobflow_category.
119 , jobflowFile = &jobflow_type.
120 , baseDate = &irm_base_dt.
121 , configSetId = &config_set_id.
122 , federatedAreaID = &irm_fa_id.
123 , sourceFederatedAreaId = &irm_fa_id.
124 , src_param_tables = work.run_option
125 , tgt_param_tables = &solutionLibrefPrefix._CFG.RUN_OPTION
126 , src_upload_tables = work.bsp_data_config
127 , tgt_upload_tables = &solutionLibrefPrefix._CFG.bsp_data_config
131 , maxWait = &max_wait.
132 , host = &irm_protocol.:
134 , tgt_ticket = &rgf_tgt_ticket.
135 , outvar = instanceKey
136 , outVarStatus = jobflow_status
139 %
if (&jobflow_status. eq Successful) %then %
do;
143 %irm_rest_get_rgf_analysis_run(host = &rgf_protocol.:
144 , server = &rgf_service.
145 , solution = &rgf_solution.
147 , tgt_ticket = &rgf_tgt_ticket.
148 , key = &credit_risk_analysis_run.
150 , outds = analysis_run
151 , outds_params = analysis_run_params
153 , outVarTicket = ticket
154 , outSuccess = ar_success
155 , outResponseStatus = ar_status
159 filename mrs_info temp;
164 set analysis_run_params;
165 if parameterName =
"BEP" then put parameterValue;
169 libname mrs_info json;
173 create table bep_mrs_info as
174 select scan(r.handle, 2,
"|") as bep_key
175 , scan(d.handle, 2, "|") as mrs_key
177 left join mrs_info.dependencies d
178 on r.ordinal_root = d.ordinal_root;
182 filename mrs_info clear;
186 select distinct mrs_key
187 into : mrs_keys separated by ','
190 select distinct bep_key
191 into : bep_keys separated by ','
196 %irm_rest_get_rgf_mrs(host = &rgf_protocol.:
197 , server = &rgf_service.
198 , solution = &rgf_solution.
200 , tgt_ticket = &rgf_tgt_ticket.
201 , filter = filter=in(key,&mrs_keys.)%nrstr(&fields=key,name)
204 , outVarTicket = ticket
205 , outSuccess = mrs_success
206 , outResponseStatus = mrs_status
210 %irm_rest_get_rgf_bep(host = &rgf_protocol.:
211 , server = &rgf_service.
212 , solution = &rgf_solution.
214 , tgt_ticket = &rgf_tgt_ticket.
215 , filter = filter=in(key,&bep_keys.)%nrstr(&fields=key,name,customFields)
217 , outVarTicket = ticket
218 , outSuccess = mrs_success
219 , outResponseStatus = mrs_status
224 create table bep_mrs_info_names as
228 , catx(' - ', b.name, m.name) as scenario_name
231 on input(bm.bep_key, 8.) = b.key
233 on input(bm.mrs_key, 8.) = m.key;
237 %let fin_statement_key=;
238 %irm_rest_get_rgf_link_instances(host = &rgf_protocol.:
240 , tgt_ticket = &rgf_tgt_ticket
241 , linkType = analysisData_analysisRun_out
242 , filter = sortBy=key
243 , outds = link_instance
244 , outVarTicket = ticket
245 , outSuccess = link_success
246 , outResponseStatus = link_status
250 %if (&link_success. eq 1) %then %do;
253 where businessObject2=&analysis_run_id.;
254 if _N_ = &mrs. then do;
255 call symputx("fin_statement_key", businessObject1, "L");
264 set bep_mrs_info_names;
265 where scenario_name = "&curr_scenario.";
267 call symputx("curr_mrs_key", mrs_key, "L");
273 %if ("&curr_mrs_key." ne "" and "&fin_statement_key." ne "") %then %do;
274 %irm_rest_create_rgf_link_inst(host = &rgf_protocol.:
276 , tgt_ticket = &rgf_tgt_ticket
277 , link_type = masterRisk_analysisData
278 , business_object1 = &curr_mrs_key.
279 , business_object2 = &fin_statement_key.
280 , outds = link_instance
281 , outVarTicket = ticket
282 , outSuccess = new_link_success
283 , outResponseStatus = new_link_status
289 %if (&jobflow_status. eq Successful) and &mrs. = %sysfunc(countw(&scenarios., %str(,))) %then %do;
292 %do mrs_cnt=1 %to %sysfunc(countw(&scenarios., %str(,)));
293 %let scenario&mrs_cnt. = %scan(&scenarios., &mrs_cnt., %str(,));
297 if find(upcase(strip("&&scenario&mrs_cnt.")), upcase(strip(name))) then call symputx("mrs_key_&mrs_cnt.", key, "L");
301 %irm_rest_create_rgf_link_inst(host = &rgf_protocol.:
303 , tgt_ticket = &rgf_tgt_ticket
304 , link_instance_id = analysisRun_masterRisk_&analysis_run_id._&&mrs_key_&mrs_cnt.
305 , link_type = analysisRun_masterRisk
306 , business_object1 = &analysis_run_id.
307 , business_object2 = &&mrs_key_&mrs_cnt.
308 , outds = link_instance
309 , outVarTicket = link_ticket_out
310 , outSuccess = link_success
311 , outResponseStatus = link_status
320%run_irm_flow(%superq(scenario_list));