今年はTurboPascalが発売されて40年になるようです。
久しぶりにcpm8266のTurboPascalをいじってみました。
ユリウス日を計算してみます。
を参考にしました。
JDAY.PAS
program jday;
function julday(year, month:integer; day:real):real;
var
a,b: integer;
gregorian: boolean;
begin
gregorian := TRUE;
if year < 1582 then gregorian := FALSE;
if (year = 1582) and (month < 10) then gregorian := FALSE;
if (year = 1582) and (month = 10) then
if day < 15 then gregorian := FALSE;
if month < 3 then begin
year := year -1;
month := month + 12;
end;
a := year div 100;
if gregorian then
b := 2 - a + a div 4
else
b := 0;
julday := int(365.25 * ( year + 4716)) + int(30.6001 * (month + 1)) +
day + b - 1524.5
end;
var
r: real;
begin
r := julday(2023, 9, 21);
write(r);
doubleとかlongintとかは無いようです。
実行してみます。
Loading F:JDAY.PAS
Compiling
34 lines
Code: 488 bytes (7E70-8058)
Free: 25218 bytes (8059-E2DB)
Data: 42 bytes (E2DC-E306)
Running
2.4602085000E+06
TurboPascalは方言がすくなく、原版について解説された、ここも参考になります。