Thank you for your kind help. Your code itself works perfectly. I followed your code to modify my one. However, it does not work. Could you please check? I highly appreciate your help. rsubmit; %let num_dsets=3; data Inset_01; set F3; if obs<=2000; run; data Inset_02; set F3; if 2000<obs<=4000; run; data Inset_03; set F3; if 4000<obs<=6000; run; %macro dosomething(dsin=, num=); proc nlp noprint data=&dsin. absgconv=1e-15 OUTEST=T1; by obs; bounds R>=0, R<=1; min f; decvar R=1; f = abs(PRC1_IBES-(BVPS1_1+(((FEPS1_1/BVPS1_1_1)-R)/(1+R))*BVPS1_1 +(((FEPS2_1/BVPS2_1_1)-R)/((1+R)**2))*BVPS1_1_1 +(((FEPS3_1/BVPS3_1_1)-R)/((1+R)**3))*BVPS2_1_1 +(((FEPS4_1/BVPS4_1_1)-R)/((1+R)**4))*BVPS3_1_1 +(((FEPS5_1/BVPS5_1_1)-R)/((1+R)**5))*BVPS4_1_1 +(((FEPS6_1/BVPS6_1_1)-R)/((1+R)**6))*BVPS5_1_1 +(((FEPS7_1/BVPS7_1_1)-R)/((1+R)**7))*BVPS6_1_1 +(((FEPS8_1/BVPS8_1_1)-R)/((1+R)**8))*BVPS7_1_1 +(((FEPS9_1/BVPS9_1_1)-R)/((1+R)**9))*BVPS8_1_1 +(((FEPS10_1/BVPS10_1_1)-R)/((1+R)**10))*BVPS9_1_1 +(((FEPS11_1/BVPS11_1_1)-R)/((1+R)**11))*BVPS10_1_1 +(((FEPS12_1/BVPS12_1_1)-R)/(R*(1+R)**11))*BVPS11_1_1)); run; data T1; set T1; if _TYPE_='PARMS'; rename R=rgls1_1_1; keep obs R; run; data OUTSET_&num.; merge &dsin. (in=xx) T1(in=yy); by obs; if xx and yy; run; %mend; data _null_; do i=1 to &num_dsets; num=put(i, z2.); call execute(cats('%dosomething(dsin=INSET_', num, ',num=', num, ')')); end; run; endrsubmit;
... View more