DEFINE MAX_SIZE="10" DEFINE MAX_MATRIX_SIZE="100" INT FUNC Index(BYTE size,x,y) RETURN (x+y*size) PROC PrintMatrix(BYTE ARRAY a BYTE size) BYTE i,j,v FOR j=0 TO size-1 DO FOR i=0 TO size-1 DO v=a(Index(size,i,j)) IF v<10 THEN Print(" ") ELSE Print(" ") FI PrintB(v) OD PutE() OD RETURN PROC FillMatrix(BYTE ARRAY a BYTE size) BYTE start,end INT dir,i,j start=0 end=size*size-1 i=0 j=0 dir=1 DO a(Index(size,i,j))=start a(Index(size,size-1-i,size-1-j))=end start==+1 end==-1 i==+dir j==-dir IF i<0 THEN i==+1 dir=-dir ELSEIF j<0 THEN j==+1 dir=-dir FI UNTIL start>=end OD IF start=end THEN a(Index(size,i,j))=start FI RETURN PROC Test(BYTE size) BYTE ARRAY mat(MAX_MATRIX_SIZE) PrintF("Matrix size: %B%E",size) FillMatrix(mat,size) PrintMatrix(mat,size) PutE() RETURN PROC Main() Test(5) Test(6) RETURN