home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Database / ADM144.lha / ADM / ARexx / PrintBirthday.adm < prev    next >
Encoding:
Text File  |  1994-07-26  |  5.3 KB  |  173 lines

  1.  
  2. /* $VER: PrintBirthday.adm 1.1 (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.       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.