DECLARE SUB GD (jd!, y%, m%, DT!)
REM Преобразование юлианской даты JD в дату григорианского
REM календаря - Y (год), M (месяц),
REM DT (день и часть времени, прошедшую от начала суток
CLS
INPUT "Задайте юлианскую дату : ", jd
GD jd, y%, m%, DT
PRINT USING "год = ##### месяц = ## день и время = ###.#"; y%; m%; DT
END
SUB GD (jd, y%, m%, DT)
' Восстановление даты григорианского календаря
' по юлианской дате jd. Результаты заносятся в
' y% - год
' m% - месяц
' dt - день (целая часть) и время дня (дробная часть)
DIM A AS LONG, B AS LONG, C AS LONG, D AS LONG, Z AS LONG
DIM aa AS LONG, E AS INTEGER, F AS DOUBLE
Z = INT(jd + .5)
F = jd + .5 - Z
A = Z
IF Z >= 2299161 THEN
aa = INT((Z - 1867216.25#) / 36524.25)
A = A + 1 + aa - (aa \ 4)
END IF
B = A + 1524
C = INT((B - 122.1) / 365.25)
D = INT(365.25 * C)
E = INT((B - D) / 30.6001)
DT = B - D - INT(30.6001 * E) + F
IF E < 13.5 THEN m% = E - 1 ELSE m% = E - 13
IF m% > 2.5 THEN y% = C - 4716 ELSE y% = C - 4715
END SUB