home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Database / HF-ADM23.LHA / ADM / ARexx / Ausdruck / PrintBirthday.adm < prev    next >
Encoding:
Text File  |  1995-06-04  |  5.3 KB  |  173 lines

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