home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / bazy / adm / arexx / adm-arexxmakros.lha / Ausdruck / DruckeGeburtstagslisteAlph.adm < prev    next >
Text File  |  1996-02-19  |  5KB  |  160 lines

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