home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 06 / ldm / mondf.pas < prev   
Pascal/Delphi Source File  |  1990-03-14  |  15KB  |  475 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     MONDF.PAS                          *)
  3. (*         Berechnung von Mondfinsternissen               *)
  4. (*       (c) 1990 Michael Schmelter & TOOLBOX             *)
  5. (* ------------------------------------------------------ *)
  6. PROGRAM Mondfinsternis;
  7.  
  8. USES Crt;
  9.  
  10. CONST              { für die Berechnung der Vollmondzeiten }
  11.   v1 = 0.0174532926;
  12.  
  13.   v2 : ARRAY [1..12] OF INTEGER
  14.      = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  15.  
  16.               { für die Berechnung der Mondbahnkorrekturen }
  17.  
  18.   lc : ARRAY [1..20] OF REAL
  19.      = ( 2.2235E-2,  1.1484E-2, -3.2463E-3, -1.9897E-3,
  20.         -1.0297E-3,  9.9484E-4,  9.2502E-4,  8.0285E-4,
  21.          7.1558E-4, -6.1087E-4, -5.236E-4 , -2.618E-4 ,
  22.         -2.2689E-4, -1.9199E-4,  1.9199E-4,  1.5708E-4,
  23.         -1.3963E-4, -1.2217E-4,  8.7266E-5,  8.7266E-5);
  24.  
  25.   li : ARRAY [1..20] OF INTEGER
  26.      = (2,  2, 0, 0, -2, 2, 2, 2,  0, 1,
  27.         0, -2, 0, 0,  4, 4, 2, 2, -1, 1);
  28.  
  29.   lj : ARRAY [1..20] OF INTEGER
  30.      = (0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
  31.         0, 2, 2, 2, 0, 0, 0, 0, 0, 0);
  32.  
  33.   lk : ARRAY [1..20] OF INTEGER
  34.      = (0, 0, 1, 0, 0, -1, 0, -1, -1, 0,
  35.         1, 0, 0, 0, 0,  0, 1,  1,  0, 1);
  36.  
  37.   ll : ARRAY [1..20] OF INTEGER
  38.      = (-1, 0, 0,  0,  2, -1,  1, 0, 1, 0,
  39.          1, 0, 1, -1, -1, -2, -1, 0, 1, 0);
  40.  
  41.   bc : ARRAY [1..11] OF REAL
  42.      = (8.95E-2  , 4.9044E-3, 4.852E-3 , 3.0194E-3,
  43.         9.5993E-4, 8.0285E-4, 5.7596E-4, 2.9671E-4,
  44.         1.5708E-4, 1.5708E-4, 1.3963E-4);
  45.  
  46.   bi : ARRAY [1..11] OF INTEGER
  47.      = (0, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2);
  48.  
  49.   bj : ARRAY [1..11] OF INTEGER
  50.      = (1, 1, -1, -1, 1, -1, 1, 1, -1, -1, -1);
  51.  
  52.   bk : ARRAY [1..11] OF INTEGER
  53.      = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1);
  54.  
  55.   bl : ARRAY [1..11] OF INTEGER
  56.      = (0, 1, 1, 0, -1, -1, 0, 2, 1, 2, 0);
  57.  
  58.   hc : ARRAY [1..3] OF REAL
  59.      = (1.65806279E-4, 1.36135682E-4, 4.88692191E-5);
  60.  
  61.   hi : ARRAY [1..3] OF INTEGER = (2, 2, 0);
  62.  
  63.   hj : ARRAY [1..3] OF INTEGER = (0, 0, 0);
  64.  
  65.   hk : ARRAY [1..3] OF INTEGER = (0, 0, 0);
  66.  
  67.   hl : ARRAY [1..3] OF INTEGER = (-1, 0, 2);
  68.  
  69. VAR
  70.   a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 ,
  71.   a10, a11, a12, a13, a14, a15, a16, a17, a18,
  72.   a19, ln , bn , hn , w1 , w2 , w3 , w4 , w5 ,
  73.   e1 , d1 , d2 , d3 , d4 , d5 , d8 , d9 , d10,
  74.   d11, m1 , m2 , m3 , m4 , m5 , m6 , m7 , m8 ,
  75.   m9 , m10, m11, m12, m13, m14, m15, m16, m17,
  76.   m18, m19, m20, m21, m22, m23, m24, m25, m26,
  77.   m27, m28, m29, m30, er1, er2, er3, er4, v3 ,
  78.   v4 , v5 , v6 , v7 , v8 , v9 , v10, v11, v12,
  79.   v13, v14, v15, v16, v17, v18, v19, v20, v21,
  80.   v22, t : REAL;
  81.  
  82.   v23, v24, v25, v26, v28 : REAL;
  83.  
  84.   v27, dz, z, code        : INTEGER;
  85.  
  86.   vdt : ARRAY [1..12] OF REAL;    { für die Vollmondzeiten }
  87.   vdm : ARRAY [1..12] OF REAL;
  88.  
  89.   PROCEDURE Datum_fuer_Vollmond;
  90.   { Julianisches Datum für die Vollmondberechnung und }
  91.   { Abfrage auf Schalttage                            }
  92.   BEGIN
  93.     v6 := Trunc(v23 / 100);
  94.     v7 := 2 - v6 + Trunc(v6 / 4);
  95.     v5 := Int(365.25 * v23) +
  96.           Int(30.6001 * (v25 + 1)) + 1720996.0 + v7;
  97.     IF (v24 / 4) = 0 THEN BEGIN
  98.       IF (v24 / 100) <> 0 THEN
  99.         v2[2] := 29
  100.       ELSE
  101.         IF (v24 / 400) = 0 THEN v2[2] := 29;
  102.     END;
  103.   END;
  104.  
  105.   PROCEDURE Mondlaenge;
  106.   { Berechnung einer genäherten Mondposition }
  107.   BEGIN
  108.     v3 := 218.32 + 481267.883 * v9 +
  109.           6.29 * Sin(134.9 * v1 + 477198.85 * v1 * v9);
  110.     v3 := v3 - 1.27 * Sin(259.2 * v1 - 413335.38 * v1 * v9);
  111.     v3 := v3 + 0.66 * Sin(235.7 * v1 + 890534.23 * v1 * v9);
  112.     v3 := v3 + 0.21 * Sin(269.9 * v1 + 954397.7  * v1 * v9);
  113.     v3 := v3 - 0.19 * Sin(357.5 * v1 +  35999.05 * v1 * v9);
  114.     v3 := v3 - 0.11 * Sin(186.6 * v1 + 966404.05 * v1 * v9);
  115.     v3 := Frac(v3 / 360.0) * 360.0;
  116.   END;
  117.  
  118.   PROCEDURE Sonnenlaenge;
  119.   { Berechnung einer genäherten Sonnenposition }
  120.   BEGIN
  121.     v3  := 280.46 + 0.9856474 * v4;
  122.     v21 := v1 * (357.528 + 0.9856003 * v4);
  123.     v3  := v3 + 1.915 * Sin(v21) + 0.02 * Sin(2.0 * v21);
  124.     v3  := Frac(v3 / 360.0) * 360.0;
  125.   END;
  126.  
  127.   PROCEDURE Vollmond_Daten;
  128.   { Berechnung aller Mondphasen und Speichern der }
  129.   { Vollmondzeiten                                }
  130.   BEGIN
  131.     WriteLn('Finsternisse im Jahre ', Trunc(d11), ':');
  132.     v26 := 0;        v8  := 1.0;  v27 := 1;
  133.     v23 := v24 - 1;  v25 := 13;   dz  := 1;
  134.     Datum_fuer_Vollmond;
  135.     v5 := v5 - 0.5;
  136.     REPEAT
  137.       v4 := v5 - 2451545.0;
  138.       v9 := v4 / 36525.0;
  139.       Mondlaenge;
  140.       v10 := v3;
  141.       Sonnenlaenge;
  142.       v11 := v3;
  143.       v12 := v10 - v11;
  144.       IF v12 < 0 THEN v12 := v12 + 360.0;
  145.       v13 := -v12 / 12.19;
  146.       IF v12 > 20 THEN v13 := (360.0 - v12) / 12.19;
  147.       v14 := ( 90.0 - v12) / 12.19;
  148.       v15 := (180.0 - v12) / 12.19;
  149.       v16 := (270.0 - v12) / 12.19;
  150.       IF v26 = 0 THEN BEGIN
  151.         v17 := v13;
  152.         v28 := 1;
  153.         IF (v14 > 0) AND (v14 < v17) THEN BEGIN
  154.           v17 := v14;
  155.           v28 := 2;
  156.         END;
  157.         IF (v15 > 0) AND (v15 < v17) THEN BEGIN
  158.           v17 := v15;
  159.           v28 := 3;
  160.         END;
  161.         IF (v16 > 0) AND (v16 < v17) THEN BEGIN
  162.           v17 := v16;
  163.           v28 := 4;
  164.         END;
  165.         v26 := 1;
  166.       END ELSE BEGIN
  167.         IF v28 = 1 THEN v17 := v13;
  168.         IF v28 = 2 THEN v17 := v14;
  169.         IF v28 = 3 THEN v17 := v15;
  170.         IF v28 = 4 THEN v17 := v16;
  171.       End;
  172.       IF Abs(v17) < 0.01 THEN BEGIN
  173.         REPEAT
  174.           v18 := Int(v8 + 1.0 / 24.0);
  175.           v19 := v27;
  176.           IF v18 > v2[v27] THEN BEGIN
  177.             v18 := v18 - v2[v27];
  178.             v19 := v19 + 1.0;
  179.           END;
  180.           IF v18 < 1 THEN BEGIN
  181.             v18 := v2[v27 - 1];
  182.             v19 := v27 - 1;
  183.           END;
  184.           IF v28 = 1 THEN v17 := v14;
  185.           If v28 = 2 THEN v17 := v15;
  186.           If v28 = 3 THEN
  187.             IF v19 <> 0 THEN BEGIN
  188.               vdt[dz] := v18;
  189.               vdm[dz] := v19;
  190.               v17 := v16;
  191.               Inc(dz, 1);
  192.             END;
  193.           If v28 = 4 THEN v17 := v13;
  194.           v28 := v28 + 1;
  195.           IF v28 > 4 THEN v28 := 1;
  196.           IF v17 < 0 THEN v17 := v17 + 29.52;
  197.         UNTIL Abs(v17) > 0.01;
  198.         v8 := v8 + v17;
  199.         v5 := v5 + v17;
  200.         IF Int(v8) > v2[v27] THEN BEGIN
  201.           v8  := v8 - v2[v27];
  202.           v27 := v27 + 1;
  203.         END;
  204.       END ELSE BEGIN
  205.         v8 := v8 + v17;
  206.         v5 := v5 + v17;
  207.         IF Int(v8) > v2[v27] THEN BEGIN
  208.           v8  := v8  - v2[v27];
  209.           v27 := v27 + 1;
  210.         END;
  211.       END;
  212.     UNTIL v27 > 12;
  213.   END;
  214.  
  215.   PROCEDURE Mond_Koordinaten;
  216.   { Berechnung einzelner Mondbahnelemente }
  217.   BEGIN
  218.     a1  := 4.719893910 + 8399.709170 * t -
  219.            1.97745805E-5 * t * t +
  220.            3.31612559E-8 * t * t * t;
  221.     a2  := 5.16791993 + 8328.691130 * t +
  222.            1.60430665E-4 * t * t +
  223.            2.51327413E-7 * t * t * t;
  224.     a3  := 4.52354437 - 33.7571462 * t +
  225.            3.6267942E-5 * t * t +
  226.            3.83972437E-8 * t * t * t;
  227.     a4  := 1.0 - 0.002495 * t - 7.52E-6 * t * t;
  228.     a5  := 4.80052812 - 0.0401425729 * t;
  229.     a6  := 0.89360858 + 0.35255651 * t;
  230.     a7  := 6.04861308 + 2.31901899 * t -
  231.            1.60099053E - 4 * t * t;
  232.     a8  := 4.88168594 + 628.331953 * t +
  233.            5.28834765E-6 * t * t;
  234.     a9  := 6.25665633 + 628.301948 * t -
  235.            2.61799389E-6 * t * t -
  236.            5.75958655E-8 * t * t * t;
  237.     a10 := 0.01675 - 0.0000418 * t - 1.3E-7 * t * t;
  238.     a11 := 1.9999728  * a10 * Sin(a9) +
  239.            1.25000481 * a10 * a10 * Sin(2 * a9);
  240.     a11 := a11 + a10 * a10 * a10 *
  241.            (1.08332587 * Sin(3 * a9) -0.24993115 * Sin(a9));
  242.     a11 := a8 + a11;
  243.     a12 := a1 - a8;
  244.     a13 := a1 - a3;
  245.     a14 := a1  + 6.9813E-5 * Sin(a7) + 3.4907E-5 * Sin(a3);
  246.     a15 := a12 + 3.4907E-5 * Sin(a6) + 6.9813E-5 * Sin(a7) +
  247.            3.4907E-5 * Sin(a3);
  248.     a16 := a13 + 6.9813E-5 * Sin(a7) - 4.3633E-4 * Sin(a3) -
  249.            6.9813E-5 * Sin(a5 + a3);
  250.     a17 := a9  - 3.4907E-5 * Sin(a6);
  251.     a18 := a2  + 1.7453E-5 * Sin(a6) + 6.9813E-5 * Sin(a7) +
  252.            5.236E-5 * Sin(a3);
  253.     a19 := 0.10978 * Sin(a18) + 0.0036652 * Sin(2 * a18) +
  254.            1.7453E-4 * Sin(3 * a18);
  255.   END;
  256.  
  257.   PROCEDURE Korrekturen;
  258.   { Korrektur einzelner Konstanten und Mondbahnelemente }
  259.   BEGIN
  260.     lc[ 3] := lc[ 3] * a4;
  261.     lc[ 6] := lc[ 6] * a4;
  262.     lc[ 8] := lc[ 8] * a4;
  263.     lc[ 9] := lc[ 9] * a4;
  264.     lc[11] := lc[11] * a4;
  265.     lc[17] := lc[17] * a4;
  266.     lc[18] := lc[18] * a4;
  267.     lc[20] := lc[20] * a4;
  268.     bc[11] := bc[11] * a4;
  269.  
  270.     a15 := Frac(a15 / (2 * pi)) * (2 * pi);
  271.     a16 := Frac(a16 / (2 * pi)) * (2 * pi);
  272.     a17 := Frac(a17 / (2 * pi)) * (2 * pi);
  273.     a18 := Frac(a18 / (2 * pi)) * (2 * pi);
  274.  
  275.     ln := 0.0;
  276.     bn := 0.0;
  277.     hn := 0.0;
  278.  
  279.     FOR z := 1 TO 20 DO BEGIN
  280.       ln := ln + lc[z] * Sin(li[z] * a15 + lj[z] * a16 +
  281.                              lk[z] * a17 + ll[z] * a18);
  282.       IF z < 12 THEN
  283.         bn := bn + bc[z] * Sin(bi[z] * a15 + bj[z] * a16 +
  284.                                bk[z] * a17 + bl[z] * a18);
  285.       IF z < 4 THEN
  286.         hn := hn + hc[z] * Cos(hi[z] * a15 + hj[z] * a16 +
  287.                                hk[z] * a17 + hl[z] * a18);
  288.     END;
  289.     a14 := a14 + a19 + ln;
  290.     a14 := Frac(a14 / (2 * pi)) * (2 * pi);
  291.     d8  := bn;
  292.   END;
  293.  
  294.   Procedure Winkel;
  295.   { Berechnung von Winkeln für die Bahnebenen }
  296.   BEGIN
  297.     w1 := Cos(d8) * Cos(a14);
  298.     w2 := Cos(d8) * Sin(a14) * Cos(e1) - Sin(d8) * Sin(e1);
  299.     w3 := Cos(d8) * Sin(a14) * Sin(e1) + Sin(d8) * Cos(e1);
  300.     w4 := ArcTan(w2 / w1);
  301.     IF w1 < 0 THEN
  302.       w4 := w4 + pi
  303.     ELSE
  304.       IF w2 < 0 THEN w4 := w4 + 2 * pi;
  305.     w5 := ArcTan(w3 / Sqrt(w1 * w1 + w2 * w2));
  306.   END;
  307.  
  308.   PROCEDURE Daten_Berechnung_und_Ausgabe;
  309.   BEGIN
  310.     a6 := m10 -
  311.           (m6 + m12) * Sin(m21) * Sin(m21) / (m18 + m16);
  312.     IF m23 > 0 THEN BEGIN
  313.       m25 := m19 + m4;
  314.       a7  := Sqrt(m25 * m25 - m22 * m22) *
  315.              Sin(m21) / (m18 + m16);
  316.       m26 := a6 + a7;
  317.       a7  := a6 - a7;
  318.       IF m23 > 1 THEN BEGIN
  319.         m25 := m19 - m4;
  320.         m27 := Sqrt(m25 * m25 - m22 * m22) *
  321.                Sin(m21) / (m18 + m16);
  322.         m28 := a6 + m27;
  323.         m27 := a6 - m27;
  324.       END;
  325.     END;
  326.     m25 := m20 + m4;
  327.     m29 := Sqrt(m25 * m25 - m22 * m22) *
  328.            Sin(m21) / (m18 + m16);
  329.     m30 := a6 + m29;
  330.     m29 := a6 - m29;
  331.     m6  := 360.0 * m6 / (2 * pi);
  332.     er1 := Int(m30);
  333.     er2 := 60 * (m30 - er1);
  334.     WriteLn;
  335.     IF m23 < 1 THEN
  336.       Write ('Partielle Mondfinsternis ');
  337.     IF m23 > 1 THEN BEGIN
  338.       er3 := Int(m28);
  339.       er4 := 60 * (m28 - er1);
  340.       Write ('Totale Mondfinsternis ');
  341.     END;
  342.     WriteLn ('am ', Trunc(vdt[dz]):2, '.',
  343.                     Trunc(vdm[dz]):2, '.');
  344.     IF m23 > 1 THEN BEGIN
  345.       Write ('Beginn der totalen Verfinsterung ');
  346.       WriteLn ('um ', Trunc(er3):2, ':',
  347.                       Trunc(er4):2, ' Uhr');
  348.     END ELSE BEGIN
  349.       Write ('Eintritt in den Halbschatten ');
  350.       WriteLn ('um ', Trunc(er1):2, ':',
  351.                       Trunc(er2):2, ' Uhr');
  352.     END;
  353.   END;
  354.  
  355.   PROCEDURE Datum_fuer_Mondfinsternis;
  356.   { Julianisches Datum und Winkel für die Mondfinsternis }
  357.   BEGIN
  358.     d5 := (Int(d5) + Frac(d5) / 0.6) - d1;
  359.     IF d3 <= 2 THEN BEGIN
  360.       d3 := d3 + 12.0;
  361.       d4 := d4 - 1.0;
  362.     END;
  363.     d8  := Int(d4 / 400.0) - Int(d4 / 100.0);
  364.     d9  := Int(365.25 * d4) + Int(30.6001 * (d3 + 1)) +
  365.            d8 + 1720996.5 + d2 + d5 / 24;
  366.     t   := (d9 - 2415020.0) / 36525.0;
  367.     d10 := 0.0003 + 0.00084 * t + 0.0003467 * t * t;
  368.     t   := t  + d10 / 36525.0;
  369.     d9  := d9 + d10;
  370.     d9  := d9 + d10;
  371.     e1  := 0.409314618 - 2.27067336E-4 * t - 2.79252681E-8;
  372.     e1  := e1 * t * t + 8.72664626E-9 * t * t * t;
  373.   END;
  374.  
  375.   PROCEDURE Variablen_auf_0;
  376.   BEGIN
  377.     a1  := 0;  a2  := 0;  a3  := 0;  a4  := 0;  a5  := 0;
  378.     a6  := 0;  a7  := 0;  a8  := 0;  a9  := 0;  a10 := 0;
  379.     a11 := 0;  a12 := 0;  a13 := 0;  a14 := 0;  a15 := 0;
  380.     a16 := 0;  a17 := 0;  a18 := 0;  a19 := 0;  w1  := 0;
  381.     w2  := 0;  w3  := 0;  w4  := 0;  w5  := 0;  e1  := 0;
  382.     d5  := 0;  d8  := 0;  d9  := 0;  d10 := 0;  m2  := 0;
  383.     m3  := 0;  m4  := 0;  m5  := 0;  m6  := 0;  m7  := 0;
  384.     m8  := 0;  m9  := 0;  m10 := 0;  m11 := 0;  m12 := 0;
  385.     m13 := 0;  m14 := 0;  m15 := 0;  m16 := 0;  m17 := 0;
  386.     m18 := 0;  m19 := 0;  m20 := 0;  m21 := 0;  m22 := 0;
  387.     m23 := 0;  m24 := 0;  m25 := 0;  m26 := 0;  m27 := 0;
  388.     m28 := 0;  m29 := 0;  m30 := 0;  t   := 0;
  389.   END;
  390.  
  391. BEGIN (* Hauptprogramm *)
  392.   ClrScr;
  393.   Write ('Berechnung für das Jahr : '); ReadLn (d4);
  394.   ClrScr;
  395.   v24 := d4;
  396.   d11 := d4;
  397.   Vollmond_Daten;
  398.   dz := 1;
  399.   REPEAT
  400.     Sound (500); Delay (50); NoSound;
  401.     m1 := 0;
  402.     d1 := 1.0;
  403.     d4 := d11;
  404.     d5 := 1.0;
  405.     d2 := vdt[dz];
  406.     d3 := vdm[dz];
  407.     Datum_fuer_Mondfinsternis;
  408.     REPEAT
  409.       Mond_Koordinaten;
  410.       m2  := 0.0165945905 + 9.04080553E-4 * Cos(a18);
  411.       Korrekturen;
  412.       m3  := m2 + hn;
  413.       m4  := 0.27247 * m3;
  414.       Winkel;
  415.       m5  := w4;
  416.       m6  := w5;
  417.       a14 := a11;
  418.       d8  := 0;
  419.       Winkel;
  420.       m7  := w4 - m5;
  421.       IF m7 > 0 THEN m7 := m7 - 2 * pi;
  422.       d10 := (pi + m7) / 0.21277309;
  423.       d2  := d2 + d10;
  424.       m1  := m1 + d10;
  425.       t   := ((d9 - 2415020.0) + m1) / 36525.0;
  426.       d10 := 0.0003 + 0.00084 * t + 0.0003467 * t * t;
  427.       t   := t + d10 / 36525.0;
  428.       m8  := Abs(m9 / t - 1);
  429.       m9  := t;
  430.       e1  := 0.409314618 - 2.27067336E-4 * t -
  431.              2.79252681E-8;
  432.       e1  := e1 * t * t + 8.72664626E-9 * t * t * t;
  433.     UNTIL m8 < 1E-8;
  434.     d9  := d9 + m1;
  435.     m10 := 24 * Frac(d2) + d1;
  436.     m11 := w4;
  437.     m12 := w5;
  438.     m13 := 1 - a10 * Cos(a9) +
  439.            0.5 * a10 * a10 * (1 - Cos(2 * a9));
  440.     m13 := m13 -
  441.            0.375 * a10 * a10 * a10 * (Cos(3 * a9) - Cos(a9));
  442.     m14 := 4.259E-5 / m13;
  443.     m13 := 0.00466 / m13;
  444.     t   := t + 1 / 438300.0;
  445.     e1  := 0.409314618 - 2.27067336E-4 * t - 2.79252681E-8;
  446.     e1  := e1 * t * t + 8.72664626E-9 * t * t * t;
  447.     Mond_Koordinaten;
  448.     Korrekturen;
  449.     Winkel;
  450.     m15 := 0.5 * (w4 - m5);
  451.     m16 := 0.5 * (w5 - m6);
  452.     a14 := a11;
  453.     d8  := 0;
  454.     Winkel;
  455.     m17 := 0.5  * (w4 - m5);
  456.     m18 := 0.5  * (w5 - m12);
  457.     m19 := 1.02 * (m3 + m14 - m13);
  458.     m20 := 1.02 * (m3 + m14 + m13);
  459.     m21 := -(m18 + m16) / (Cos(m12) * (m15 - m17));
  460.     m21 := ArcTan(m21);
  461.     m22 := Abs((m6 + m12) * Cos(m21));
  462.     m23 := (m19 - m22 + m4) / (2 * m4);
  463.     m24 := m20 - m22 + m4;
  464.     IF m24 >= 0 THEN Daten_Berechnung_und_Ausgabe;
  465.     Variablen_auf_0;
  466.     Inc(dz, 1);
  467.   UNTIL dz > 12;
  468.   WriteLn;  WriteLn; WriteLn;
  469.   Write ('Bitte eine Taste drücken...');
  470.   REPEAT UNTIL KeYPressed;
  471.   ClrScr;
  472. END.
  473. (* ------------------------------------------------------ *)
  474. (*                Ende von MONDF.PAS                      *)
  475.