Thanks Torres. The program for extract submatrix from my table (example) is true. But when i tried to run the program at the following, i can not found my expected output. Please see the program and outputs; data have; input v1-v7; cards; 2.826 0.1117 0.5655E-01 -0.2051 -0.9951 -0.3791E-01 -0.2002E-01 -0.7701E-01 0.4744E-02 0.2165E-02 -0.8538E-02 -0.3539E-01 -0.1632E-02 -0.6954E-03 -0.4663E-02 0.1381E-02 -0.1599E-02 -0.2514E-01 -0.9058E-03 -0.4986E-03 0.5249E-03 0.4369E-01 -0.3276E-02 -0.2731E-03 -0.6431E-03 0.2844E-01 1.032 0.2738E-01 0.2465E-01 -0.4330E-01 0.1349E-02 0.7079E-03 -0.1114E-02 0.8279E-03 -0.1147E-02 0.2654E-01 11.59 0.2370 0.2432 0.1908 1.796 0.4569E-01 0.5911E-01 -0.2752 0.1163E-01 0.6655E-02 0.1226E-01 0.1842E-01 0.1013E-02 0.1045E-02 -0.5404E-02 0.7722E-02 0.8686E-02 0.4204E-01 0.1071E-02 0.1562E-02 -0.4825E-02 0.1291 -0.7895E-01 -0.3190E-02 -0.1356E-02 0.9782E-02 1.391 0.3897E-01 0.4140E-01 -0.1326 0.1479E-02 0.1124E-02 -0.3741E-02 0.1285E-02 -0.3616E-02 0.2953E-01 20.56 0.5560 0.5731 -0.6843 0.7305 0.2406E-01 0.4680E-01 0.3018E-01 0.1988E-01 0.1599E-01 -0.2887E-01 0.2563E-01 -0.4890E-03 0.1693E-02 -0.3787E-02 0.1610E-01 -0.1922E-01 0.2705E-01 0.6995E-03 0.1439E-02 -0.2149E-02 0.6893 -0.2031 -0.8243E-02 -0.7854E-02 0.8168E-01 4.398 0.1241 0.1144 -0.1733 0.4284E-02 0.3585E-02 -0.5150E-02 0.3513E-02 -0.3947E-02 0.1259 12.93 0.3446 0.3637 -0.4216 0.4785E-01 0.1194E-01 0.1851E-01 0.1536E-01 -0.3895E-02 1.157 . ; %macro Submatrix(initval,dim); data have; array SubM(&dim,&dim); n=&initval; do i=1 to &dim; do j=1 to &dim; if i Le j then do; SubM(i,j)=n; n+1; end; else SubM(i,j)=SubM(j,i); end; end; do i=1 to &dim; do j=1 to &dim; put SubM(i,j) 3.0 @; end; put; end; run; %mend Submatrix; %submatrix(1,8) %submatrix(37,4) %submatrix(47,5) 432 data have; 433 input v1-v7; 434 cards; NOTE: The data set WORK.HAVE has 17 observations and 7 variables. NOTE: DATA statement used (Total process time): real time 0.03 seconds cpu time 0.01 seconds 452 ; 453 %macro Submatrix(initval,dim); 454 data have; 455 array SubM(&dim,&dim); 456 n=&initval; 457 do i=1 to &dim; 458 do j=1 to &dim; 459 if i Le j then do; 460 SubM(i,j)=n; 461 n+1; 462 end; 463 else SubM(i,j)=SubM(j,i); 464 end; 465 end; 466 do i=1 to &dim; 467 do j=1 to &dim; 468 put SubM(i,j) 3.0 @; 469 end; 470 put; 471 end; 472 run; 473 %mend Submatrix; 474 475 %submatrix(1,8) 1 2 3 4 5 6 7 8 2 9 10 11 12 13 14 15 3 10 16 17 18 19 20 21 4 11 17 22 23 24 25 26 5 12 18 23 27 28 29 30 6 13 19 24 28 31 32 33 7 14 20 25 29 32 34 35 8 15 21 26 30 33 35 36 NOTE: The data set WORK.HAVE has 1 observations and 67 variables. NOTE: DATA statement used (Total process time): real time 0.03 seconds cpu time 0.03 seconds 476 %submatrix(37,4) 37 38 39 40 38 41 42 43 39 42 44 45 40 43 45 46 NOTE: The data set WORK.HAVE has 1 observations and 19 variables. NOTE: DATA statement used (Total process time): real time 0.03 seconds cpu time 0.03 seconds 477 %submatrix(47,5) 47 48 49 50 51 48 52 53 54 55 49 53 56 57 58 50 54 57 59 60 51 55 58 60 61 NOTE: The data set WORK.HAVE has 1 observations and 28 variables. NOTE: DATA statement used (Total process time): real time 0.03 seconds cpu time 0.03 seconds
... View more