Created Sample data with following code : data Master_ds; infile datalines delimiter=','; length Country $ 13; Input Country $ Acc_blnc_amt Loan_blnc_amt Credit_blnc_amt Mrtg_blnc_amt; datalines; Singapore,8326,2108,2345,4815 HongKong,7100,3428,2902,6203 United States ,3841,5429,2221,6053 Malaysia,8207,5120,3309,2772 Singapore,7033,5897,4622,3293 HongKong,4292,5269,5003,7165 United States ,3110,6166,7239,2450 Malaysia,6494,2328,2391,8260 Singapore,1612,5631,6002,8903 HongKong,7659,8425,6857,5967 United States ,6420,1260,6175,2518 Malaysia,1135,7452,3288,2068 ; Data Fx_Cnvsn; infile datalines delimiter=','; length Country $ 13; Input Country $ Fx_rate_USD; datalines; Singapore,1.3 HongKong,7.8 United States,1 Malaysia,4.2 ; proc SQL NOPRINT; Select DISTINCT name INTO:amt_colms SEPARATED BY "}" from Sashelp.Vcolumn Where libname='WORK' AND memname='MASTER_DS' AND upcase(name) like '%AMT'; Quit; %Put &amt_colms; PROC SQL; Create Table Temp AS SELECT * FROM Master_ds,Fx_Cnvsn WHERE Master_ds.Country = Fx_Cnvsn.Country; QUIT; %Macro Currency_Conv; Data Final_DS; Set Temp; %Let iter = 1; %Do %While(%scan(&amt_colms., &iter., %str(})) ne %str()); %let curr_loop_amt = %scan(&amt_colms., &iter., %str(})); &curr_loop_amt._USD = &curr_loop_amt. * Fx_rate_USD; %Let iter = %eval(&iter. + 1); %End; Run; %Mend; %Currency_Conv;
... View more