31%macro irmst_get_scenarios_from_rsm(
35 out_scen_meta = work.scenario_info,
36 out_scen_data = work.scenario_data,
40 rgf_service = SASRiskGovernanceFramework,
45 rsm_service = SASRiskScenarioManager,
61 %let responseStatus =;
62 %irm_rest_get_rgf_mrs(
63 host = &rgf_protocol.:
64 server = &rgf_service.,
65 solution = &rgf_solution.,
67 tgt_ticket = %superq(tgt_ticket),
68 filter = filter=hasObjectLinkTo(
'%upcase(&rgf_solution.)',
'analysisRun_masterRisk',&analysis_run_id.,0),
70 outds = work.master_risk_scenarios,
71 outVarTicket = ticket,
72 outSuccess = httpSuccess,
73 outResponseStatus = responseStatus,
84 set work.master_risk_scenarios end = last;
86 call symputx(cats(
"mrs_key_" , put(_N_, 8.)), key ,
"L");
87 call symputx(cats(
"mrs_name_" , put(_N_, 8.)), name ,
"L");
88 call symputx(cats(
"scenario_id_", put(_N_, 8.)), scenarioId,
"L");
89 call symputx(cats(
"period_type_", put(_N_, 8.)), periodType,
"L");
93 call symputx(
"TotRuns", _N_,
"L");
100 %let httpSuccess = 0;
101 %let responseStatus =;
102 %irm_rest_get_rgf_bep(host = &rgf_protocol.:
103 server = &rgf_service.,
104 solution = &rgf_solution.,
106 tgt_ticket = %superq(tgt_ticket),
107 filter = filter=hasObjectLinkTo(
'%upcase(&rgf_solution.)',
'analysisRun_busEvolution',&analysis_run_id.,0),
108 outds = work.bep_summary,
109 outds_details = work.bep_details,
110 outVarTicket = ticket,
111 outSuccess = httpSuccess,
112 outResponseStatus = responseStatus,
121 create table work.master_risk_scenarios_2 as
122 select t3.key as mrsKey,
126 t3.scenarioId as rsmScenarioId,
127 t3.scenarioName as rsmScenarioName,
128 t1.bep_key as bepKey,
131 from &bep_x_mrs_tbl. as t1
133 work.bep_summary as t2
134 on t1.bep_key eq t2.key
136 work.master_risk_scenarios as t3
137 on t1.mrs_key eq t3.key
144 data &out_scen_meta.;
145 length scenarioId $32.
148 set work.master_risk_scenarios_2;
155 scenarioId = catx(
"_", bepShortName, mrsShortName, cats(
"FT", sum(forecastTime, 0)));
157 if first.forecastTime and
158 last.forecastTime then
160 scenarioName = catx(
" - ", bepName, mrsName, rsmScenarioName);
163 scenarioName = catx(
" - ", bepName, mrsName, cats(
"FT", sum(forecastTime, 0)));
170 %
do i=1 %to &TotRuns.;
171 %let httpSuccess = 0;
172 %let responseStatus =;
173 %irm_rest_get_rsm_scenario(
174 host = &rsm_protocol.:
175 server = &rsm_service.,
177 tgt_ticket = %superq(rgf_tgt_ticket),
178 key = &&scenario_id_&i..,
179 outds = work.tmp_scenario_data_&i._0,
180 outVarTicket = ticket,
181 outSuccess = httpSuccess,
182 outResponseStatus = responseStatus,
188 %
if(not &httpSuccess. or not %rsk_dsexist(work.tmp_scenario_data_&i._0)) %then
192 data work.tmp_scenario_data_&i._1;
193 format base_dt yymmddd10.
194 master_risk_scenario_key 8.
195 master_risk_scenario_name $150.
197 set work.tmp_scenario_data_&i._0;
199 base_dt = %sysfunc(inputn(&base_dt., yymmdd10.));
200 master_risk_scenario_key = &&mrs_key_&i..;
201 master_risk_scenario_name =
"&&mrs_name_&i..";
202 scenario_id =
"&&scenario_id_&i..";
204 %
if(%sysevalf(%superq(period_type_&i.) ne,
boolean)) %then
206 if(missing(interval) and
208 not missing(date)) then
210 interval =
"&&period_type_&i..";
211 horizon = intck(interval, base_dt, date);
217 proc append data = work.tmp_scenario_data_&i._1
218 base = work.rsm_scenario_data
226 data work.tmp_scenario_data;
227 length scenarioId $32.
229 set work.rsm_scenario_data(rename = (
230 master_risk_scenario_key = mrsKey
231 master_risk_scenario_name = mrsName
232 scenario_id = rsmScenarioId
233 scenario_name = rsmScenarioName
238 %irm_build_hash_lookup(
239 hash_name = hScenInfo,
240 hash_table = &&out_scen_meta.,
241 key_vars = mrsKey rsmScenarioId,
242 data_vars = scenarioId scenarioName,
248 call missing(scenarioId, scenarioName);
249 do while(hScenInfo.do_over() eq 0);
251 if(date le base_dt) then
252 call missing(scenarioId, scenarioName);
258 proc sort data = work.tmp_scenario_data
259 out = work.tmp_scenario_data_srt
269 proc transpose data = work.tmp_scenario_data_srt
270 out = &out_scen_data (
273 rename = (scenarioId = scenario_name)
286 %
if %qupcase(&debug.) ne TRUE %then
290 into :tbls_to_del separated by ','
291 from dictionary.tables
292 where upcase(libname) eq 'WORK' and
293 find(upcase(memname),'TMP_SCENARIO_DATA_') ne 0;
295 drop table work.bep_summary,
297 work.master_risk_scenarios,
298 work.master_risk_scenarios_2,
300 work.tmp_scenario_data,
301 work.tmp_scenario_data_srt;
305%mend irmst_get_scenarios_from_rsm;