1
0
mirror of https://github.com/moshix/mvs.git synced 2026-01-11 23:43:00 +00:00
moshix.mvs/seasons.pas
2025-03-03 16:55:56 +01:00

60 lines
1.6 KiB
ObjectPascal

//TC#PAS JOB MSGCLASS=A,NOTIFY=&SYSUID
// EXEC PASCG,PARM.COMPILE='L-,D-',PARM.GO=NOPRINT
//SYSIN DD *
(* https://eyeondesign.aiga.org/seasons-greetings-from-paul-rand-milton- *)
(* glaser-elaine-lustig-cohen-the-eames/ *)
(* *)
(* Tom Courtos 1958 *)
program SeasonGreetings(output);
var factorial:array[1..65] of 0..9; (* 50! ha 65 cifre *)
line,number_of_digits:integer;
procedure DoNextFactorial;
var index,carry:integer;
begin
carry:=0;
for index:=1 to number_of_digits
do begin
carry:=carry+factorial[index]*line;
factorial[index]:=carry mod 10;
carry:=carry div 10
end;
while carry>0
do begin
number_of_digits:=number_of_digits+1;
factorial[number_of_digits]:=carry mod 10;
carry:=carry div 10
end
end;
procedure PrintTheFactorial;
var index:integer;
begin
for index:=number_of_digits downto 1
do write(factorial[index]:1)
end;
procedure PrintCenteredLine;
begin
(* 63 cifre di 49! + 1 spazio = 64 *)
write(' ':64-number_of_digits);
PrintTheFactorial;
DoNextFactorial;
write('X',line:2,'=');
PrintTheFactorial;
writeln
end;
procedure Initialize;
begin
factorial[1]:=1; (* 1! = 1 *)
number_of_digits:=1 (* 1! ha 1 cifra *)
end;
begin
Initialize;
for line:=1 to 50
do PrintCenteredLine
end.