home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Database / ADM144.lha / ADM / ARexx / ADMGeburtstag.adm next >
Encoding:
Text File  |  1994-10-20  |  4.3 KB  |  132 lines

  1.  
  2. /* $VER: ADMGeburtstag.rexx 1.3 (26.01.94)
  3.  
  4.    Sucht alle Einträge, bei denen in maximal "Tage" Tagen Geburtstag ist,
  5.    und zeigt diese per Requester an.
  6.    Ideal geeignet für den Tooltype/Shellparameter STARTUP.
  7.  
  8.    Autoren:
  9.  
  10.       von André Schenk
  11.       andre@melior.stgt.sub.org
  12.       2:2407/106.42@fidonet
  13.  
  14.       erweitert von
  15.       Jan Geißler
  16.       jan@digit.stgt.sub.org
  17.       2:2407/106.5@fidonet
  18.  
  19.       erweitert von
  20.       Bruno Rudolf, Offenbach
  21.  
  22.    History:
  23.  
  24.       V1.0 14.10.93  [as]  - Erste Version
  25.       V1.1 18.10.93  [jan] - Ext. Programm "Request" durch RexxReqTools.lib ersetzt.
  26.                            - DisplayBeep am Ende der Suche vermieden.
  27.                            - Im Requester wird "heute, morgen, übermorgen" anstatt
  28.                              des Datums angezeigt.
  29.                            - Errechnet nun, wie alt derjenige wird.
  30.       V1.2 27.12.93  [jan] - "Arithmetic Conversion Error" bei Geburtstag ohne Jahr
  31.                              entfernt.
  32.       V1.3 26.01.94  [jan] - Temporäre Datei wird nun gelöscht
  33.       V1.4 16.05.94  [BrR] - Fehler in der Anzeige des Geburtstags behoben.
  34.  
  35. */
  36.  
  37. Tage        = 3    /* 3 Tage vor Geburtstag warnen! */
  38.  
  39. OPTIONS RESULTS
  40.  
  41. CALL ADDLIB("rexxreqtools.library", 0, -30, 0)
  42. NL = '0a'x
  43.  
  44. ADDRINMEM
  45. Max = RESULT
  46.  
  47. ACTIVATEFIRST
  48.  
  49. Zeit  = DATE("Internal")                /* aktuelles Datum */
  50. Datum = DATE("Days", Zeit, "Internal")  /* vergangene Tage dieses Jahres */
  51. Jahr  = SUBSTR(DATE("Sorted", Zeit, "Internal"), 1, 4)
  52.  
  53. DO Index = 1 TO Max
  54.   GETADDRESS Datensatz
  55.  
  56.   IF Datensatz.BIRTHDAY ~= "" THEN DO
  57.     Geburtsdatum = Datensatz.BIRTHDAY
  58.     Geburtsdatum = TRANSLATE(Geburtsdatum, "/", ".")
  59.     Geburtsdatum = TRANSLATE(Geburtsdatum, "/", "-")
  60.     Tag = SUBSTR(Geburtsdatum, 1, POS("/", Geburtsdatum) - 1)
  61.     IF LENGTH(Tag) = 1 THEN Tag = INSERT("0", Tag)
  62.     Monat = DELSTR(Geburtsdatum, POS("/", Geburtsdatum, 4))
  63.     Monat = SUBSTR(Monat, POS("/", Geburtsdatum) + 1)
  64.     GebJahr = SUBSTR(Geburtsdatum, POS("/", Geburtsdatum, 4))
  65.     IF LENGTH(GebJahr) > 2 THEN GebJahr = DELSTR(GebJahr,1,LENGTH(GebJahr)-2)
  66.     GebJahr= INSERT("19",GebJahr)
  67.  
  68.     IF (LENGTH(Geburtsdatum) > (LENGTH(Tag) + LENGTH(Monat) + 2)) THEN
  69.       Alter = Jahr - GebJahr
  70.       IF Alter < 1 THEN
  71.       Alter = Jahr - GebJahr + 100
  72.  
  73.     IF (LENGTH(Geburtsdatum) <= (LENGTH(Tag) + LENGTH(Monat) + 2)) THEN
  74.       Alter = "?"
  75.  
  76.     IF LENGTH(Monat) = 1 THEN Monat = INSERT("0", Monat)
  77.     Geburtsdatum = Jahr || Monat || Tag
  78.     Geburtsdatum = DATE("Days", Geburtsdatum, "Sorted")
  79.  
  80.     diff = Geburtsdatum - Datum
  81.  
  82.     IF diff >= 0 & diff <= Tage THEN DO
  83.  
  84.        SELECT
  85.          WHEN Datensatz.SALUTATION = "Herrn" THEN Anrede = "  seinen"
  86.          WHEN Datensatz.SALUTATION = "Frau"  THEN Anrede = "  ihren"
  87.          OTHERWISE Anrede = "   den"
  88.        END
  89.  
  90.           IF Monat = 01 THEN month = "Januar"
  91.           IF Monat = 02 THEN month = "Februar"
  92.           IF Monat = 03 THEN month = "März"
  93.           IF Monat = 04 THEN month = "April"
  94.           IF Monat = 05 THEN month = "Mai"
  95.           IF Monat = 06 THEN month = "Juni"
  96.           IF Monat = 07 THEN month = "Juli"
  97.           IF Monat = 08 THEN month = "August"
  98.           IF Monat = 09 THEN month = "September"
  99.           IF Monat = 10 THEN month = "Oktober"
  100.           IF Monat = 11 THEN month = "November"
  101.           IF Monat = 12 THEN month = "Dezember"
  102.           IF Tag = 01 THEN day = 1
  103.           day = Tag
  104.           IF Tag = 02 THEN day = 2
  105.           IF Tag = 03 THEN day = 3
  106.           IF Tag = 04 THEN day = 4
  107.           IF Tag = 05 THEN day = 5
  108.           IF Tag = 06 THEN day = 6
  109.           IF Tag = 07 THEN day = 7
  110.           IF Tag = 08 THEN day = 8
  111.           IF Tag = 09 THEN day = 9
  112.  
  113.        SELECT
  114.          WHEN diff = 0 THEN Text = "HEUTE"
  115.          WHEN diff = 1 THEN Text = "morgen"
  116.          WHEN diff = 2 THEN Text = "übermorgen"
  117.          OTHERWISE Text = "am" day || ". " || month
  118.        END
  119.  
  120.        IF Alter = "?" THEN
  121.           Text = Datensatz.FIRSTNAME || " " || Datensatz.LASTNAME || " hat" Text || NL || "     Geburtstag!"
  122.        ELSE
  123.           Text = Datensatz.FIRSTNAME || " " || Datensatz.LASTNAME || " hat" Text || NL || Anrede Alter || ". Geburtstag!"
  124.  
  125.        ans = RTEZREQUEST(Text,"_OK","Geburtstagshinweis: ",,"rtez_defaultresponse=1")
  126.  
  127.        /* ADDRESS COMMAND 'Run <NIL: >NIL: Request 'Text' TITLE = "ADMGeburtstag.rexx"' */
  128.     END
  129.   END
  130.   IF Index ~= Max THEN ACTIVATENEXT
  131. END
  132.