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

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