Something like this might work for that data step. /*This data step runs the entire model execution & data exportation process, that is data for accounts, market rates, and shock scenarios is established here, and then all subsequent macro calls stem from this data step: */ file code temp; data _null_; file code ; set merge_shorts_deposits; /*Create array for the 3 things we are iterating over - deposit accounts, market rates, and [short rate] shock scenarios */ array shocks (7) shock_1-shock_7; array short_rates_main (3) Short_Rate_1-Short_Rate_3; array deposit_rates(33) Deposit_Rate_1-Deposit_Rate_33; do i = 1 to 1; do j = 6,20,21,27,30,32,33 ; put '%Set_Product_Specifics(dep_rate=' deposit_rates ')'; do k = 1 to 7; put '%Create_Fundamental_Datasets' / '(short_rate=' short_rates_main / ',dep_rate=' deposit_rates / ',shock_scenario=' shocks / ')' ; put '%Execute_Old_Model(shock_scenario=' shocks ')'; put '%Execute_All_Models(shock_scenario=' shocks ')'; end; put '%Export_All_Output' / '(pdf_file=&rootnode\' deposit_rates +(-1) '_vs' short_rates_main / ',forecast_file=&rootnode\Forecasts_' deposit_rates +(-1) "_vs" short_rates_main / ',stats_file=&rootnode\ModelStatistics_' deposit_rates +(-1) "_vs" short_rates_main / ',short_rate=' short_rates_main / ',dep_rate=' deposit_rate / ')' ; put '%Calculate_Ex_Posts;'; put '%Export_Old_Output' / '(pdf_file=&rootnode\' deposit_rates +(-1) '_vs' short_rates_main / ',forecast_file=&rootnode\Forecasts_' deposit_rates +(-1) "_vs" short_rates_main / ',stats_file=&rootnode\ModelStatistics_' deposit_rates +(-1) "_vs" short_rates_main / ',short_rate=' short_rates_main / ',dep_rate=' deposit_rate / ')' ; put '%Export_All_Estimates' / '(dep_rate=' deposit_rates / ',short_rate=' short_rates_main / ')' ; end; end; run; %let rootnode=C:\Documents and Settings\ETRORMC\My Documents\SAS_Test_Output ; %include code / source2 ;
... View more