FLMOON.PAS

{* Фазы луны, рассчитанные по дате *}

Unit FLMOON;
Interface
Implementation
Begin
 writeln(' Фазы луны, рассчитанные по дате');
End.

Program pas0;

Uses FLMOON.pas; {* Эту строку можно удалить *}
Procedure flmoon(n, nph : integer;
Var {* В работе нам потребуются переменные: *}
  jd : integer;
Var {* В работе нам потребуются переменные: *}
  frac : real);
Var {* Объявление переменных *}
  i    : integer;
  rad  : real;
  xtra : real;
  t2   : real;
  t    : real;
  c    : real;
  as   : real;
  am   : real;
Begin
  rad := 3.14159265 / 180.0;
  c := n + nph / 4.0;
  t := c / 1236.85;
  t2 := sqr(t);
  as := 359.2242 + 29.105356 * c;
  am := 306.0253 + 385.816918 * c + 0.010730 * t2;
  jd := 2415020 + 28 * n + 7 * nph;
  xtra := 0.75933 + 1.53058868 * c + (1.178e - 4 - 1.55e - 7 * t) * t2;
  If ((nph = 0) Or (nph = 2)) Then
  Begin
    xtra := xtra + (0.1734 - 3.93e - 4 * t) * sin(rad * as) - 0.4068 * sin(rad * am)
  End;
  Else If ((nph = 1) Or (nph = 3)) Then
  Begin
    xtra := xtra + (0.1721 - 4.0e - 4 * t) * sin(rad * as) - 0.6280 * sin(rad * am)
  End;
  Else Begin
    writeln('pause In FLMOON - nph is unknown.');
  readln
End;
If (xtra > = 0.0) Then
  i := trunc(xtra)
Else i := trunc(xtra - 1.0);
  jd := jd + i;
frac := xtra - i
End....