SAS Documentation
SASĀ® Solution for Stress Testing
Reference manual - version 08.2021
Loading...
Searching...
No Matches
irmst_script_market_risk_short_term.sas
1/* ********************************************* */
2/* Market Risk Analysis: Input Parameters */
3/* ********************************************* */
4
5/* TGT Authentication Ticket */
6%let rgf_tgt_ticket = ${globals.ticket};
7
8/* Get the root location of the SAS Risk Workgroup Application */
9%let sas_risk_workgroup_dir = ${globals.sas_risk_workgroup_dir};
10
11/* Cycle Id */
12%let cycle_id = ${context.cycle.key};
13
14/* Analysis Run Id */
15%let analysis_run_id = ${context.analysisRun.key};
16
17/* IRM Configuration Set Id */
18%let config_set_id = ${params.CONFIGSETID};
19
20/* Portfolio key */
21%let portfolio_key = ${params.PORTFOLIO.key};
22
23/* Counterparty key */
24%let counterparty_key = ${params.MARKETMODEL.params.COUNTERPARTY.key};
25
26/* Mitigant key */
27%let mitigant_key = ${params.MARKETMODEL.params.MITIGATION.key};
28
29/* Collateral key */
30%let collateral_key = ${params.MARKETMODEL.params.COLLATERAL.key};
31
32/*Economic Simulation key*/
33%let econsimulation_key = ${params.MARKETMODEL.params.ECONSIMULATION.key};
34
35/* IA data key */
36%let ia_data_key = ${params.IADATA.key};
37/* Model Input DataMap key */
38%let modelIn_dataMap_key = ${params.MODELINPUTMAP.key};
39
40/* Model Output DataMap key */
41%let modelOut_dataMap_key = ${params.MODELOUTPUTMAP.key};
42
43/* Model Run Key */
44%let model_run_key = ${params.MARKETMODEL.rels("context").modelRun.key};
45
46/* Keep MIP Cube? */
47%let keep_mip_cube_flg = ${params.KEEPMIPCUBE};
48
49/* LASR load method (Append/Replace) */
50%let lasr_load_method = ${params.LASRLOADMETHOD};
51
52/* List of analysis data objecs to reload (if lasr_load_method = replace) */
53%let reload_key_list = ${params.RELOADKEYLIST};
54/* Convert to space separated list: ["<key1>","<key2>",...,"<keyN>"] --> <key1> <key2> ... <keyN> */
55%let reload_key_list = %sysfunc(prxchange(s/\W+/ /i, -1, %superq(reload_key_list)));
56
57/* Log Level: 1-4 */
58%let log_level = ${params.LOGLEVEL};
59
60/* Maximum wait time for IRM job completion: <number of seconds> */
61%let max_wait = ${params.MAXWAIT};
62
63/* Scenario key */
64%let scenario_key = ${params.SCENARIO.key};
65
66/* ********************************************* */
67
68/* Initialize the environment */
69%include "&sas_risk_workgroup_dir./groups/Public/SASRiskManagementCore/cycles/&cycle_id./init.sas" / lrecl = 32000 source2;
70
71/* Set logging options (based on the value of LOG_LEVEL macro variable) */
72%irm_set_logging_options();
73
74/* Set Instance Parameters */
75%let jobflow_category = Analytics;
76%let jobflow_type = %lowcase(irm&solutionId._shortterm_market_risk);
77%let instance_date = %sysfunc(date(), yymmddp10.);
78%let instance_time = %sysfunc(prxchange(s/(\d+):(\d+):(\d+)/$1h$2m$3s/i, -1, %sysfunc(time(), tod8.)));
79%let instanceName = Market Risk Analysis &instance_date._&instance_time.;
80%let instanceDesc = Market Risk Analysis;
81
82/* Process LASR load method */
83%let reload_lasr_flg = %irmc_process_lasr_load_method(&lasr_load_method.);
84
85/* Run option table */
86data work.run_option;
87 length
88 config_name $32.
89 config_value $10000.
90 ;
91 config_name = "RMC_FA_ID"; config_value = "&rmc_fa_id."; output;
92 config_name = "CYCLE_ID"; config_value = "&cycle_id."; output;
93 config_name = "ANALYSIS_RUN_ID"; config_value = "&analysis_run_id."; output;
94 config_name = "ANALYSIS_TYPE"; config_value = "SCR"; output;
95 config_name = "MAX_WAIT"; config_value = "&max_wait."; output;
96 config_name = "LOG_LEVEL"; config_value = "&log_level."; output;
97 config_name = "RELOAD_LASR_FLG"; config_value = "&reload_lasr_flg."; output;
98 config_name = "RELOAD_KEY_LIST"; config_value = "&reload_key_list."; output;
99 config_name = "TGT_TICKET"; config_value = "&rgf_tgt_ticket."; output;
100run;
101
102/* Credit Stress parameters table */
103data work.credit_risk_config;
104 length
105 config_name $32.
106 config_value $100.
107 ;
108 config_name = "CREDIT_MODEL_RUN_KEY"; config_value = "&model_run_key."; output;
109 config_name = "PORTFOLIO_KEY"; config_value = "&portfolio_key."; output;
110 config_name = "COUNTERPARTY_KEY"; config_value = "&counterparty_key."; output;
111 config_name = "MITIGANT_KEY"; config_value = "&mitigant_key."; output;
112 config_name = "COLLATERAL_KEY"; config_value = "&collateral_key."; output;
113 config_name = "ECONSIMULATION_KEY"; config_value = "&econsimulation_key."; output;
114 config_name = "IA_DATA"; config_value = "&ia_data_key."; output;
115 config_name = "MODELIN_DATAMAP_KEY"; config_value = "&modelIn_dataMap_key."; output;
116 config_name = "MODELOUT_DATAMAP_KEY"; config_value = "&modelOut_dataMap_key."; output;
117 config_name = "KEEP_MIP_CUBE_FLG"; config_value = "&keep_mip_cube_flg."; output;
118run;
119
120/*----------------------------------BEGIN------------------------------------*/
121/*For market risk analysis in the short run, the BEP specification is disabled.
122However an auxiliary segmentation scheme (based on entity_id),
123an auxiliary allocation scheme and an empty auxiliay BEP are created*/
124/*----------------------------------BEGIN------------------------------------*/
125
126/* ************************************************************************************** */
127/* Get the dimensional points to use for the segmentation schemes/allocation schemes/BEP */
128/* ************************************************************************************** */
129%let dim_points_ar_cycle=;
130%macro find_dim_points(ar_cycle_dim_pts=dim_points_ar_cycle);
131
132%if(%sysevalf(%superq(cycle_id) ne, boolean)) %then %do;
133 /* Get the cycle info to pull the dimensional points and SolutionCreatedIn */
134 %let ticket =;
135 %let httpSuccess = 0;
136 %let responseStatus =;
137 %irm_rest_get_rgf_cycle(host = &rgf_protocol.://&rgf_host.
138 , server = &rgf_service.
139 , solution = &rgf_solution.
140 , port = &rgf_port.
141 , tgt_ticket = &rgf_tgt_ticket.
142 , key = &cycle_id.
143 , outds = _tmp_cycle_info_
144 , outVarTicket = ticket
145 , outSuccess = httpSuccess
146 , outResponseStatus = responseStatus
147 );
148
149 /* Exit in case of errors */
150 %if(not &httpSuccess. or not %rsk_dsexist(_tmp_cycle_info_)) %then
151 %return;
152
153 /* Get the dimensional points from the parent */
154 data _null_;
155 set _tmp_cycle_info_;
156 if not missing(dimensionalPoints) then
157 call symputx("dim_points_parent", dimensionalPoints, "L");
158 if not missing(SolutionCreatedIn) then
159 call symputx("solution_created_in", solutionCreatedIn, "L");
160 run;
161%end;
162%else %if(%sysevalf(%superq(analysis_run_id) ne, boolean)) %then %do;
163 /* Get the analysis run info to pull the dimensional points and SolutionCreatedIn */
164 %let ticket =;
165 %let httpSuccess = 0;
166 %let responseStatus =;
167 %irm_rest_get_rgf_analysis_run(host = &rgf_protocol.://&rgf_host.
168 , server = &rgf_service.
169 , solution = &rgf_solution.
170 , port = &rgf_port.
171 , tgt_ticket = &rgf_tgt_ticket.
172 , key = &cycle_id.
173 , outds = _tmp_analysis_run_info_
174 , outVarTicket = ticket
175 , outSuccess = httpSuccess
176 , outResponseStatus = responseStatus
177 );
178
179 /* Exit in case of errors */
180 %if(not &httpSuccess. or not %rsk_dsexist(_tmp_analysis_run_info_)) %then
181 %return;
182
183 /* Get the dimensional points from the parent */
184 data _null_;
185 set _tmp_analysis_run_info_;
186 if not missing(dimensionalPoints) then
187 call symputx("dim_points_parent", dimensionalPoints, "L");
188 if not missing(SolutionCreatedIn) then
189 call symputx("solution_created_in", solutionCreatedIn, "L");
190 run;
191%end;
192
193/* If dim_points_parent exists, update the dimensional points to ensure SolutionsSharedWith only equals SolutionCreatedIn */
194%if(%sysevalf(%superq(dim_points_parent) ne, boolean)) %then %do;
195 %let dim_points_ar_cycle=;
196 %let ticket =;
197 %let httpSuccess = 0;
198 %let responseStatus =;
199 %irmc_get_dim_point_from_groovy(query_type = sameLocationReplaceSolutionsSharedWith
200 , dimensional_points = %quote(&dim_points_parent.)
201 , perspective_id = ICAAP
202 , outVar = dim_points_ar_cycle
203 , host = &rgf_protocol.://&rgf_host.
204 , server = &rgf_service.
205 , solution = &rgf_solution.
206 , port = &rgf_port.
207 , tgt_ticket = &rgf_tgt_ticket.
208 , outVarTicket = ticket
209 , outSuccess = httpSuccess
210 , outResponseStatus = responseStatus
211 );
212%end;
213
214%mend;
215%find_dim_points;
216
217/* --------------------------------------------- */
218/* Check if already have an empty BEP */
219/* --------------------------------------------- */
220%let ticket =;
221%irm_rest_get_rgf_bep(host = &rgf_protocol.://&rgf_host.
222 , port = &rgf_port.
223 , tgt_ticket = &rgf_tgt_ticket.
224 , filter = filter=eq(name,%27__market__empty__bep__%27)
225 , outds = bep_summary
226 , outds_details = bep_details
227 , outVarTicket = ticket
228 , outSuccess = httpSuccess
229 , outResponseStatus = responseStatus
230 );
231
232%let ticket =;
233
234%let bep_key=-99999;
235%if &httpSuccess.=1 and %rsk_attrn(bep_summary, NLOBS) gt 0 %then %do;
236 data _null_;
237 set bep_summary(obs=1);
238 call symputx("bep_key", key, "L");
239 run;
240%end;
241
242/* ------------------------------------- */
243/* Create Segmentation Scheme */
244/* ------------------------------------- */
245
246/*----------------------------------------------------------------------------
247* Retrieve portfolio analysis data to get the schemaName and schemaVersion
248*---------------------------------------------------------------------------*/
249%let httpSuccess = 0;
250%let responseStatus = ;
251%let ticket = ;
252%irm_rgf_retrieve_analysis_data(key = &portfolio_key.
253 , libref = &dr_libref
254 , outds = work.mkt_credit_portfolio_0
255 , outds_partition_list = work.mkt_portfolio_part_list
256 , out_type = deferred
257 , outds_dataInfo = work.portfolio_dataInfo
258 , outds_dataDef = work.portfolio_dataDef
259 , host = &rgf_protocol.://&rgf_host.
260 , server = &rgf_service.
261 , solution = &rgf_solution.
262 , port = &rgf_port.
263 , tgt_ticket = &rgf_tgt_ticket.
264 , outVarTicket = ticket
265 , outSuccess = httpSuccess
266 , outResponseStatus = responseStatus
267 , restartLUA = Y
268 , clearCache = Y
269 );
270
271/* Get name and version of portfolio schema */
272data _null_;
273 set portfolio_dataDef;
274 call symputx("schemaName", schemaName, "L");
275 call symputx("schemaVersion", schemaVersion, "L");
276run;
277
278/* In theory we should check for the existance of the segmentation scheme, but the corresponding macro
279is not available. As a work around we check for the existence of the BEP which implicitly requires the segmentation.*/
280%if &bep_key. = -99999 %then %do;
281 %let ticket =;
282 %let httpSuccess = 0;
283 %let responseStatus =;
284 %irm_rest_create_rgf_seg_scheme(host = &rgf_protocol.://&rgf_host.
285 , port = &rgf_port.
286 , server = &rgf_service.
287 , tgt_ticket = &rgf_tgt_ticket.
288 , name = __market__by__entity__
289 , description = Created in batch. It provides a segmentation scheme on ENTITY_ID for the market risk analysis in the short term.
290 , dimensional_points = %quote(&dim_points_ar_cycle.)
291 , segmentVariables = entity_id
292 , schemaName = &schemaName.
293 , schemaVersion = &schemaVersion.
294 , outds = M_segmentation_scheme
295 , outVarTicket = ticket
296 , outSuccess = httpSuccess
297 , outResponseStatus = responseStatus
298 );
299%end;
300
301/* ------------------------------------- */
302/* Create Allocation Scheme */
303/* ------------------------------------- */
304%let ticket =;
305%irm_rest_get_rgf_alloc_scheme(host = &rgf_protocol.://&rgf_host.
306 , port = &rgf_port.
307 , tgt_ticket = &rgf_tgt_ticket.
308 , filter = filter=eq(name,%27__market__model__alloc__%27)
309 , outds = alloc_scheme
310 , outds_details = allocation_details
311 , outVarTicket = ticket
312 , outSuccess = httpSuccess
313 , outResponseStatus = responseStatus
314 );
315
316%let ticket =;
317
318%let allocKey=-99999;
319%if &httpSuccess.=1 and %rsk_attrn(alloc_scheme, NLOBS) gt 0 %then %do;
320 data _null_;
321 set alloc_scheme(obs=1);
322 call symputx("allocKey", key, "L");
323 run;
324%end;
325
326%if &allocKey. = -99999 %then %do;
327 /*preparare a model parameter data set*/
328 data modelParameters;
329 length name $ 32 value $ 512;
330 name = "PORTFOLIOHISTORYDATA";
331 value = "'&portfolio_key.'";
332 task = "Model Based Allocation";
333 filter ="";
334 parent ="";
335 output;
336 run;
337
338 %irm_rest_create_rgf_alloc_scheme(host = &rgf_protocol.://&rgf_host.
339 , port = &rgf_port.
340 , server = &rgf_service.
341 , perspective = icaap
342 , tgt_ticket = &rgf_tgt_ticket.
343 , name = __market__model__alloc__
344 , description = Created in batch. It provides an allocation scheme for the market risk analysis in the short term.
345 , segSchemeFilter = contains(name,'__market__by__entity__')
346 , method = MODEL
347 , modelFilter = and(eq(runTypeCd,%27ALL%27),eq(typeCd,%27MKT%27))
348 , param_table_name = modelParameters
349 , dimensional_points = %quote(&dim_points_ar_cycle.)
350 , outds = outAlloc
351 , outVarTicket = ticket
352 , outSuccess = httpSuccess
353 , outResponseStatus = httpResponseStatus
354 );
355
356 /*Retrieve the allocation scheme key key*/
357 data _null_;
358 set outAlloc;
359 call symputx("allocKey", key, "L");
360 run;
361%end;
362
363/* --------------------------------------- */
364/* Create Business Evolution Plans */
365/* --------------------------------------- */
366
367/*Create the json associated with an empty BEP*/
368filename bep_json temp;
369data temp;
370 file bep_json;
371 length JSON $1000;
372 %let temp="planningDataKey": &portfolio_key.,;
373 JSON = %unquote(%str(%'&temp%'));
374 put JSON;
375 %let temp="allocationSchemeKey":&allocKey.,;
376 JSON = %unquote(%str(%'&temp%'));
377 put JSON;
378 %let temp="bepShortName": "emptyBEP",;
379 JSON = %unquote(%str(%'&temp%'));
380 put JSON;
381 %let temp="interval": "YEAR",;
382 JSON = %unquote(%str(%'&temp%'));
383 put JSON;
384 %let temp="intervalCount": 0,;
385 JSON = %unquote(%str(%'&temp%'));
386 put JSON;
387 %let temp="solutionCreatedIn": "ICAAP",;
388 JSON = %unquote(%str(%'&temp%'));
389 put JSON;
390 %let temp=%bquote("BEPDetails": "{\"limit\":1,\"count\":1,\"start\":0,\"EXPOSURE_DELTA_MULTIPLIER\":{\"bepData\":{\"start\":0,\"limit\":1,\"count\":1,\"items\":[{\"entity_id\":\"SASBank_1\",\"EXPOSURE_DELTA_MULTIPLIER\":0,\"changeType\":\"rel_add\",\"key\":\"key0\"}]},\"cellOverrides\":{}},\"items\":[{}]}",);
391 JSON = %unquote(%str(%'&temp%'));
392 put JSON;
393 %let temp=%bquote("planDataSegsAndTargets": "{\"count\":0,\"limit\":0,\"items\":[]}",);
394 JSON = %unquote(%str(%'&temp%'));
395 put JSON;
396 %let temp=%bquote("allocationFlg": true,);
397 JSON = %unquote(%str(%'&temp%'));
398 put JSON;
399 %let temp=%bquote("bepType": "PORTFOLIO",);
400 JSON = %unquote(%str(%'&temp%'));
401 put JSON;
402 %let temp=%bquote("segmentationVars": "[{\"filterable\":\"Y\",\"partition_flg\":\"Y\",\"attributable\":\"N\",\"format\":\"\",\"mandatory_segmentation\":\"N\",\"label\":\"Entity ID\",\"type\":\"Char\",\"classification\":\"N\",\"size\":32,\"informat\":\"\",\"primary_key_flg\":\"\",\"name\":\"ENTITY_ID\",\"projection\":\"N\",\"key\":8,\"config_readOnly\":\"not_config_param_readOnly\"}]",);
403 JSON = %unquote(%str(%'&temp%'));
404 put JSON;
405 %let temp=%bquote("targetVariables": "[\"EXPOSURE_DELTA_MULTIPLIER\"]",);
406 JSON = %unquote(%str(%'&temp%'));
407 put JSON;
408 %let temp=%bquote("lastSelectedTargetVariable": "EXPOSURE_DELTA_MULTIPLIER");
409 JSON = %unquote(%str(%'&temp%'));
410 put JSON;
411run;
412
413/*Define a macro for the definitoin of the bep object*/
414%macro create_object_instance( collectionName =
415 , custObjNum =
416 , runFinalize = false
417 , solution =
418 , srcSystCode =
419 , objName =
420 , objDesc =
421 , dimensional_points =
422 , custFieldsFile =
423 , outds = _newObj
424 , status =
425 );
426
427 data appends;
428 length value $ 32000 type $ 32;
429
430 value = "{""sourceSystemCd"": ""%upcase(&srcSystCode.)"", ""name"":""&objName."", ""description"":""&objDesc.""";
431 type="string";
432 output;
433
434 %if(%sysevalf(%superq(dimensional_points) ne, boolean)) %then %do;
435 value = ", ""dimensionalPoints"": &dimensional_points.";
436 type="string";
437 output;
438 %end;
439
440 value = " , ""customFields"": {";
441 type="string";
442 output;
443
444 value = "&custFieldsFile.";
445 type="fileref";
446 output;
447
448 value = "}}";
449 type="string";
450 output;
451 run;
452
453 filename _body temp;
454 %irm_append_many(file=_body,append=appends,overwrite=Y);
455
456 %let ticket=;
457 %let responseHeader=;
458 data &outds.;
459 set _null_;
460 run;
461
462 filename _out temp;
463 %irm_rest_request(url = &rgf_protocol.://&rgf_host.:&rgf_port./&rgf_service./rest/&rgf_solution./&collectionName.
464 , method = POST
465 , server = &rgf_service.
466 , tgt_ticket = &rgf_tgt_ticket.
467 , headerIn = Accept:application/json
468 , body = _body
469 , parser = sas.risk.irm.rgf_rest_parser.rmcRestDataDefinition
470 , outds = &outds.
471 , fout = _out
472 , outVarTicket = ticket
473 , outSuccess = success
474 , outResponseStatus = responseHeader
475 );
476
477 filename _body;
478 filename _out;
479
480 %let new_key=;
481 data _null_;
482 set &outds.;
483 call symputX('new_key',key);
484 run;
485
486 %if (%qupcase(&runFinalize.) eq TRUE) %then %do;
487 /* This submit is equivalent to opening and saving in the UI - runs any finalize block code that may be needed */
488 filename payload temp;
489 filename _out temp;
490 %irm_rest_request(url = &rgf_protocol.://&rgf_host.:&rgf_port./&rgf_service./rest/&rgf_solution.-&solution./uiContexts/&collectionName./&new_key.
491 , method = POST
492 , server = &rgf_service.
493 , tgt_ticket = &rgf_tgt_ticket.
494 , headerIn = Accept:application/json
495 , body = %str({"SCREENID": "CustomObject&custObjNum."})
496 , parser =
497 , outds =
498 , fout = payload
499 , outVarTicket = ticket
500 , outSuccess = success
501 , outResponseStatus = responseHeader
502 );
503
504 %irm_rest_request(url = &rgf_protocol.://&rgf_host.:&rgf_port./&rgf_service./rest/&rgf_solution.-&solution./uiContexts/&collectionName./&new_key.
505 , method = PUT
506 , server = &rgf_service.
507 , tgt_ticket = &rgf_tgt_ticket.
508 , headerIn = Accept:application/json
509 , body = payload
510 , parser =
511 , outds =
512 , fout = _out
513 , outVarTicket = ticket
514 , outSuccess = success
515 , outResponseStatus = responseHeader
516 );
517 filename payload;
518 filename _out;
519 %end;
520%mend create_object_instance;
521
522%if &bep_key. = -99999 %then %do;
523 /*Create the BEP object*/
524 %create_object_instance( collectionName = businessEvolutionPlans
525 , custObjNum = 207
526 , runFinalize = true
527 , solution = icaap
528 , srcSystCode = &rgf_solution.
529 , objName = __market__empty__bep__
530 , objDesc = Created in Batch. It provides an empty BEP for the market risk analysis in the short term.
531 , dimensional_points = %quote(&dim_points_ar_cycle.)
532 , custFieldsFile = bep_json
533 , outds = bep_out
534 , status = success
535 );
536
537 /*Retrieve the bep key*/
538 %let bep_key=;
539 data _null_;
540 set bep_out;
541 call symputX('bep_key',key);
542 run;
543%end;
544
545/*Link the bep to the analysis run*/
546%irm_rest_create_rgf_link_inst( host = &rgf_protocol.://&rgf_host.
547 , server = &rgf_service.
548 , solution = &rgf_solution.
549 , port = &rgf_port.
550 , tgt_ticket = &rgf_tgt_ticket.
551 , link_type = analysisRun_busEvolution
552 , business_object1 = &analysis_run_id.
553 , business_object2 = &bep_key.
554 , outds = _tmp_link_instance_
555 );
556
557/*-----------------------------------END-------------------------------------*/
558/*For market risk analysis in the short run, the BEP specification is disabled.
559However an auxiliary segmentation scheme (based on entity_id),
560an auxiliary allocation scheme and an empty auxiliay BEP are created*/
561/*-----------------------------------END-------------------------------------*/
562
563/* Process BEP x MRS parameters */
564%let BEP_CNT = 1;
565%let BEP_1 = &bep_key.;
566%let BEP_1_MRS_CNT = 1;
567%let BEP_1_MRS_1 = &scenario_key.;
568
569%let httpSuccess=1;
570data bep_x_mrs_config;
571 length BEP_KEY MRS_KEY 8.;
572 keep BEP_KEY MRS_KEY;
573 bep_cnt = symgetn("BEP_CNT");
574 do n = 1 to bep_cnt;
575 bep_key = symgetn(cats("BEP_", n));
576 mrs_cnt = symgetn(cats("BEP_", n, "_MRS_CNT"));
577 if mrs_cnt <= 0 then do;
578 put "ERROR: No Master Risk Scenarios have been assigned to Business Evolution Plan Id " bep_key;
579 call symput("httpSuccess", 0);
580 stop;
581 end;
582 do i = 1 to mrs_cnt;
583 mrs_key = symgetn(cats("BEP_", n, "_MRS_", i));
584 output;
585 end;
586 end;
587run;
588
589%macro check_httpSuccess;
590 %if &httpSuccess. ne 1 %then %do;
591 %abort cancel;
592 %end;
593%mend check_httpSuccess;
594%check_httpSuccess;
595
596%let ticket=;
597%let instanceKey =;
598%let jobflow_status = Unknown;
599/* Create job flow instance and wait for completion */
600%irm_rest_create_jobflow_instance(instance_name = &instanceName.
601 , description = &instanceDesc.
602 , entityId = &entity_id.
603 , entityRoleKey = &entity_role_key.
604 , category = &jobflow_category.
605 , jobflowFile = &jobflow_type.
606 , baseDate = &irm_base_dt.
607 , configSetId = &config_set_id.
608 , federatedAreaID = &irm_fa_id.
609 , sourceFederatedAreaId = &irm_fa_id.
610 , src_param_tables = work.run_option work.credit_risk_config
611 , tgt_param_tables = &solutionLibrefPrefix._CFG.RUN_OPTION &solutionLibrefPrefix._CFG.CREDIT_RISK_CONFIG
612 , src_upload_tables = work.bep_x_mrs_config
613 , tgt_upload_tables = &solutionLibrefPrefix._CFG.BEP_X_MRS_CONFIG
614 , autoRun = true
615 , wait_flg = Y
616 , pollInterval = 3
617 , maxWait = &max_wait.
618 , host = &irm_protocol.://&irm_host.
619 , port = &irm_port.
620 , tgt_ticket = &rgf_tgt_ticket.
621 , outvar = instanceKey
622 , outVarStatus = jobflow_status
623 );
624
625/* Update the Cycle control table */
626%irmc_update_ctrl_table(cycle_id = &cycle_id.
627 , analysis_run_id = &analysis_run_id.
628 , dr_libref = &dr_libref.
629 , entry_type = IRM
630 , entry_id = &instanceKey.
631 , entry_name = &instanceName.
632 );