PASCAL_MATRIX: PROCEDURE OPTIONS (MAIN); /* derived from Fortran version 18 Decenber 2021 */ pascal_lower: procedure(a); declare a(*,*) fixed binary; declare (n, i, j) fixed binary; n = hbound(a,1); a = 0; a(*, 1) = 1; do i = 2 to n; do j = 2 to i; a(i, j) = a(i - 1, j) + a(i - 1, j - 1); end; end; end pascal_lower; pascal_upper: procedure(a); declare a(*,*) fixed binary; declare (n, i, j) fixed binary; n = hbound(a,1); a = 0; a(1, *) = 1; do i = 2 to n; do j = 2 to i; a(j, i) = a(j, i - 1) + a(j - 1, i - 1); end; end; end pascal_upper; pascal_symmetric: procedure(a); declare a(*,*) fixed binary; declare (n, i, j) fixed binary; n = hbound(a,1); a = 0; a(*, 1) = 1; a(1, *) = 1; do i = 2 to n; do j = 2 to n; a(i, j) = a(i - 1, j) + a(i, j - 1); end; end; end pascal_symmetric; declare n fixed binary; put ('Size of matrix?'); get (n); begin; declare a(n, n) fixed binary; put skip list ('Lower Pascal Matrix'); call pascal_lower(a); put edit (a) (skip, (n) f(3) ); put skip list ('Upper Pascal Matrix'); call pascal_upper(a); put edit (a) (skip, (n) f(3) ); put skip list ('Symmetric Pascal Matrix'); call pascal_symmetric(a); put edit (a) (skip, (n) f(3) ); end; end PASCAL_MATRIX;