multi: procedure options (main); /* 29 October 2013 */ declare (i, j, n) fixed binary; declare text character (6) static initial ('n!!!!!'); do i = 1 to 5; put skip edit (substr(text, 1, i+1), '=' ) (A, COLUMN(8)); do n = 1 to 10; put edit ( trim( multifactorial(n,i) ) ) (X(1), A); end; end; multifactorial: procedure (n, j) returns (fixed(15)); declare (n, j) fixed binary; declare f fixed (15), m fixed(15); f, m = n; do while (m > j); f = f * (m-fixed(j)); m = m - j; end; return (f); end multifactorial; end multi;