home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0970.lha / ADM / ARexx / PrintBirthday.adm < prev    next >
Text File  |  1993-06-23  |  5KB  |  167 lines

  1.  
  2. /* $VER: PrintBirthday.adm 1.0 (23.06.93)
  3.  
  4.    Gibt Geburtstagsliste auf Drucker aus.
  5.  
  6.    Geht davon aus, da▀ das Geburtsdatum im Format DD.MM.YY eingegeben
  7.    wurde.
  8.  
  9.    Written by Jan Gei▀ler. */
  10.  
  11.  
  12. /* ----------------------------------------------------------------------
  13.    START
  14.    ---------------------------------------------------------------------- */
  15.  
  16. OPTIONS RESULTS                               /* Rⁿckgabewerte zulassen   */
  17.  
  18. ADDRINMEM                                     /* Anzahl Adressen holen    */
  19. numadr = RESULT
  20.  
  21. IF ~OPEN(datei,"RAM:.tmp1","W") THEN DO       /* Ausgabedatei ÷ffnen      */
  22.    SAY "Kann Ausgabedatei nicht ÷ffnen!"
  23.    EXIT
  24. END
  25.  
  26. ACTIVATEFIRST                                 /* Ersten Eintr. aktivieren */
  27.  
  28. /* ----------------------------------------------------------------------
  29.    AUSGABE
  30.    ---------------------------------------------------------------------- */
  31.  
  32. DO FOR numAdr
  33.  
  34.    GETADDRESS ADM                             /* Adresse -> Stemvar ADM   */
  35.  
  36.    geb = ADM.BIRTHDAY                         /* Geburtstag holen         */
  37.  
  38.    IF geb ~= "" THEN DO
  39.  
  40.       p   = POS(".",geb)                      /* Ersten Punkt suchen      */
  41.       day = STRIP( SUBSTR( geb, 1, p-1))      /* -> Tag                   */
  42.  
  43.       geb = DELSTR( geb, 1, p)
  44.       p   = POS(".",geb)                      /* Zweiten Punkt suchen     */
  45.       mon = STRIP( SUBSTR( geb, 1, p-1))      /* -> Monat                 */
  46.  
  47.       yea = DELSTR( geb, 1, p)                /* Rest ist Jahr            */
  48.  
  49.  
  50.       /* In "name" wird der Name und Ort der Person abgelegt. Dies erscheint
  51.          auf der Liste spΣter rechts vom Geburtsdatum                     */
  52.  
  53.       IF ADM.firstname = "" THEN name = ADM.lastName
  54.       ELSE name = ADM.firstname ADM.lastName
  55.       IF ADM.city ~= "" THEN name = name || "," ADM.city
  56.  
  57.  
  58.       /* Falls Zahlen nur einstellig angegeben, werden sie hier erweitert */
  59.  
  60.       IF LENGTH(yea) = 2 THEN yea = "19" || yea
  61.       IF LENGTH(mon) = 1 THEN mon = "0" || mon
  62.       IF LENGTH(day) = 1 THEN day = "0" || day
  63.  
  64.  
  65.       /* Nun Daten in einer temporΣren Datei so ablegen, da▀ nach alpha-
  66.          betischer Sortierung mit dem AmigaDos-Kommando "Sort" die Geburts-
  67.          daten in der richtigen Reihenfolge erscheinen.
  68.  
  69.          Jede Zeile sieht so aus: Monat-Tag-Jahr-Name, Ort                */
  70.  
  71.       ok = WriteLn(datei, mon || "-" || day || "-" || yea || "-" || name)
  72.  
  73.    END
  74.  
  75.    ACTIVATENEXT                                 /* Akt. naechsten Eintrag */
  76.  
  77. END
  78.  
  79. ok = WriteLn(datei,"99.99.99")                  /* Dateiende = 99.99.99   */
  80. ok = CLOSE(datei)
  81.  
  82. cmd = "SORT RAM:.tmp1 TO RAM:.tmp2"             /* Sort-Kommando aufrufen */
  83. ADDRESS COMMAND cmd
  84.  
  85.  
  86. IF ~OPEN(datei,"RAM:.tmp2","R") THEN DO         /* Sortierte Datei ÷ffnen */
  87.    SAY "Kann Eingabedatei nicht ÷ffnen!"
  88.    EXIT
  89. END
  90.  
  91. IF ~OPEN(out,"PRT:","W") THEN DO                /* Drucker-Ausgabedatei   */
  92.    SAY "Kann Drucker PRT: nicht ÷ffnen!"
  93.    EXIT
  94. END
  95.  
  96. ok = WriteLn(out,"Liste der Geburtstage")       /* "Kopf" drucken */
  97. ok = WriteLn(out,"================================================================")
  98. ok = WriteLn(out,"")
  99.  
  100. DO UNTIL geb = "99.99.99"
  101.  
  102.    geb = ReadLn(datei)                          /* Zeile einlesen   */
  103.  
  104.       IF geb ~= "99.99.99" THEN DO
  105.  
  106.           p   = POS("-",geb)                    /* Monat abtrennen  */
  107.           mon = STRIP( SUBSTR( geb, 1, p-1))
  108.  
  109.           geb = DELSTR( geb, 1, p)
  110.           p   = POS("-",geb)                    /* Tag abtrennen    */
  111.           day = STRIP( SUBSTR( geb, 1, p-1))
  112.  
  113.           geb = DELSTR( geb, 1, p)
  114.           p   = POS("-",geb)
  115.           yea = STRIP( SUBSTR( geb, 1, p-1))    /* Jahr abtrennen   */
  116.  
  117.           dat = SUBSTR( DATE(s), 1, 4)          /* Akt. Jahr holen  */
  118.           old = dat - yea                       /* Ergibt Alter der */
  119.                                                 /*           Person */
  120.  
  121.  
  122.           /* Nun herausfinden, ob der Geburtstag nach dem heutigen
  123.              Datum oder davor ist. Dementsprechend "wird", "wurde"
  124.              die Person so alt. */
  125.  
  126.           ist = DATE('d')
  127.           war = DATE("d","1993" || mon || day,"s")
  128.  
  129.           IF ist - war > 0 THEN gebw = "wurde"
  130.           IF ist - war = 0 THEN gebw = "heute"
  131.           IF ist - war < 0 THEN gebw = "wird"
  132.  
  133.  
  134.           /* Monat durch ausgeschriebenen Monatsnamen ersetzen */
  135.  
  136.           nam = DELSTR( geb, 1, p)
  137.           IF mon = 1  THEN month = "Januar"
  138.           IF mon = 2  THEN month = "Februar"
  139.           IF mon = 3  THEN month = "MΣrz"
  140.           IF mon = 4  THEN month = "April"
  141.           IF mon = 5  THEN month = "Mai"
  142.           IF mon = 6  THEN month = "Juni"
  143.           IF mon = 7  THEN month = "Juli"
  144.           IF mon = 8  THEN month = "August"
  145.           IF mon = 9  THEN month = "September"
  146.           IF mon = 10 THEN month = "Oktober"
  147.           IF mon = 11 THEN month = "November"
  148.           IF mon = 12 THEN month = "Dezember"
  149.  
  150.  
  151.           /* Zeile erstellen & schreiben */
  152.  
  153.           line = day || "." month yea
  154.           line = INSERT( "(" || gebw old || ")", line, 20)
  155.           line = INSERT( nam, line, 32)
  156.  
  157.           ok = WriteLn(out,line)
  158.       END
  159. END
  160.  
  161. ok = CLOSE(datei)
  162. ok = CLOSE(out)
  163.  
  164.  
  165. EXIT                                 /* Programmende */
  166.  
  167.