65 lines
1.8 KiB
Plaintext
65 lines
1.8 KiB
Plaintext
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;
|