PASCAL_MATRIX: PROCEDURE OPTIONS (MAIN); /* derived from Fortran version 18 Decenber 2021 */ define structure 1 array, 2 b(5,5) fixed binary; declare A type (array); pascal_lower: procedure() returns (type(array)); declare A type (array); declare (n, i, j) fixed binary; n = hbound(A.b,1); A.b = 0; A.b(*, 1) = 1; do i = 2 to n; do j = 2 to i; A.b(i, j) = A.b(i - 1, j) + A.b(i - 1, j - 1); end; end; return (A); end pascal_lower; pascal_upper: procedure() returns (type(array)); declare A type (array); declare (n, i, j) fixed binary; n = hbound(A.b,1); A.b = 0; A.b(1, *) = 1; do i = 2 to n; do j = 2 to i; A.b(j, i) = A.b(j, i - 1) + A.b(j - 1, i - 1); end; end; return (A); end pascal_upper; pascal_symmetric: procedure() returns (type(array)); declare A type (array); declare (n, i, j) fixed binary; n = hbound(A.b,1); A.b = 0; A.b(*, 1) = 1; A.b(1, *) = 1; do i = 2 to n; do j = 2 to n; A.b(i, j) = A.b(i - 1, j) + A.b(i, j - 1); end; end; return (A); end pascal_symmetric; declare C type (array); declare n fixed binary initial ((hbound(C.b,1))); put skip list ('Lower Pascal Matrix'); C = pascal_lower(); put edit (C.b) (skip, (n) f(3) ); put skip list ('Upper Pascal Matrix'); C = pascal_upper(); put edit (C.b) (skip, (n) f(3) ); put skip list ('Symmetric Pascal Matrix'); C = pascal_symmetric(); put edit (C.b) (skip, (n) f(3) ); end PASCAL_MATRIX;