Hi Zana, Let me first say that I do not understand the "rules" to decide how many submatrixes to get (one?, two?, three?, four?), the diference between Submatrix? and Main_Submatrix? and the dimension of them (4*4?, 8*8?, 5*5?) based on the dimension of the source matrix (8*4 as in the originat request? or 17*7 as in the second request?). I am completly lost about what those numbers mean and what is the purpose of the submatrixes. (????) You did not explain enough. What I think I understood looking at the sample square submatrices you provided (but maybe I am wrong) is how to fill the them with consecutive integer numbers starting at an initial value. I coded the algorithm in the Submatrix macro. With that said, and if I understand what you need (I am not sure) I suggest the following approach to solve your problem: 1. Convert the source matrix in a vector: for example the matrix M(8,4) would become a vector V(32) and the matrix M(17*7) a vector V(119). 2. Using the relevant logic in the Submatrix macro obtain the indexes to use to fill the target submatrix 3. Use those indexes to get the number (in the vector) to fill each cell of the submatrix. 4. Output the submatrix in the format you want or need (SAS Table?, report?). Program to perform Step 1: data have; input X1-X7; 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 . ; run; data vector (keep= V:); Array v(119); array x(7); i=0; do until (eof); set have end=eof; do j=1 to 7; v(i*7+j)=x(j); end; i=i+1; end; output; stop; run; Modified Submatix macro to perform steps 2 to 4 creating three SAS Tables: Subm_1_8, Subm_37_4 and Subm_47_5: %macro Submatrix(initval,dim,vectdim); data SUBM_&initval._&dim (keep=var:); array var(&dim); array v(&vectdim); Set vector; 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)=v(n); n+1; end; else SubM(i,j)=SubM(j,i); end; end; do i=1 to &dim; do j=1 to &dim; var(j)=SubM(i,j); end; output; end; run; %mend Submatrix; %submatrix(1,8,119) %submatrix(37,4,119) %submatrix(47,5,119) I hope this helps, CTorres
... View more