home *** CD-ROM | disk | FTP | other *** search
- /* $VER: PrintBirthdayAlph.adm 1.2 (27.04.94)
-
- Gibt Geburtstagsliste (sortiert nach Namen) auf Drucker aus.
-
- Geht davon aus, daß das Geburtsdatum im Format DD.MM.YY eingegeben
- wurde.
-
- V1.0 [jan] 23.06.93 - Erstes Release
- V1.1 [jan] 26.01.94 - Löscht nun temporäre Datei
- V1.2 [BrR] 27.04.94 - Modifikation des Makros PrintBirthday.adm
- V1.1: Druckt eine alphabetische Geburts-
- tagsliste. Ursprüngliche Zeilen mit
- /* -- ... -- */ auskommentiert.
-
- Written by Jan Geißler, modified by Bruno Rudolf. */
-
-
- /* ----------------------------------------------------------------------
- START
- ---------------------------------------------------------------------- */
-
- OPTIONS RESULTS /* Rückgabewerte zulassen */
-
- ADDRINMEM /* Anzahl Adressen holen */
- numadr = RESULT
-
- IF ~OPEN(datei,"T:.tmp1","W") THEN DO /* Ausgabedatei öffnen */
- SAY "Kann Ausgabedatei nicht öffnen!"
- EXIT
- END
-
- ACTIVATEFIRST /* Ersten Eintr. aktivieren */
-
- /* ----------------------------------------------------------------------
- AUSGABE
- ---------------------------------------------------------------------- */
-
- DO FOR numAdr
-
- GETADDRESS ADM /* Adresse -> Stemvar ADM */
-
- geb = ADM.BIRTHDAY /* Geburtstag holen */
-
- IF geb ~= "" THEN DO
-
- p = POS(".",geb) /* Ersten Punkt suchen */
- day = STRIP( SUBSTR( geb, 1, p-1)) /* -> Tag */
-
- geb = DELSTR( geb, 1, p)
- p = POS(".",geb) /* Zweiten Punkt suchen */
- mon = STRIP( SUBSTR( geb, 1, p-1)) /* -> Monat */
-
- yea = DELSTR( geb, 1, p) /* Rest ist Jahr */
-
-
- /* In "name" wird der Name und Ort der Person abgelegt. Dies erscheint
- auf der Liste später rechts vom Geburtsdatum */
-
- IF ADM.lastname = "" THEN name = ADM.firstName
- ELSE name = ADM.lastname || "," ADM.firstName
- IF ADM.city ~= "" THEN name = name || "," ADM.city
-
-
- /* Falls Zahlen nur einstellig angegeben, werden sie hier erweitert */
-
- IF LENGTH(yea) = 2 THEN yea = "19" || yea
- IF LENGTH(mon) = 1 THEN mon = "0" || mon
- IF LENGTH(day) = 1 THEN day = "0" || day
-
-
- /* Nun Daten in einer temporären Datei so ablegen, daß nach alpha-
- betischer Sortierung mit dem AmigaDos-Kommando "Sort" die Geburts-
- daten in der richtigen Reihenfolge erscheinen.
-
- Jede Zeile sieht so aus: Monat-Tag-Jahr-Name, Ort */
-
- ok = WriteLn(datei, mon || "-" || day || "-" || yea || "-" || name)
-
- END
-
- ACTIVATENEXT /* Akt. naechsten Eintrag */
-
- END
-
- ok = WriteLn(datei,"99.99.99") /* Dateiende = 99.99.99 */
- ok = CLOSE(datei)
-
- /*-- cmd = "SORT T:.tmp1 TO T:.tmp2" /* Sort-Kommando aufrufen */
- ADDRESS COMMAND cmd --*/
-
-
- IF ~OPEN(datei,"T:.tmp1","R") THEN DO /* Datei öffnen */
- SAY "Kann Eingabedatei nicht öffnen!"
- EXIT
- END
-
- IF ~OPEN(out,"PRT:","W") THEN DO /* Drucker-Ausgabedatei */
- SAY "Kann Drucker PRT: nicht öffnen!"
- EXIT
- END
-
- ok = WriteLn(out," Liste der Geburtstage - alphabetisch geordnet") /* "Kopf" drucken */
- ok = WriteLn(out," ================================================================")
- ok = WriteLn(out," ")
-
- z=0 /* zähler initialisieren */
-
- DO UNTIL geb = "99.99.99"
-
- geb = ReadLn(datei) /* Zeile einlesen */
-
- IF geb ~= "99.99.99" THEN DO
-
- p = POS("-",geb) /* Monat abtrennen */
- mon = STRIP( SUBSTR( geb, 1, p-1))
-
- geb = DELSTR( geb, 1, p)
- p = POS("-",geb) /* Tag abtrennen */
- day = STRIP( SUBSTR( geb, 1, p-1))
-
- geb = DELSTR( geb, 1, p)
- p = POS("-",geb)
- yea = STRIP( SUBSTR( geb, 1, p-1)) /* Jahr abtrennen */
-
- /* --
-
-
- dat = SUBSTR( DATE(s), 1, 4) /* Akt. Jahr holen */
- old = dat - yea /* Ergibt Alter der */
- /* Person */
-
-
- /* Nun herausfinden, ob der Geburtstag nach dem heutigen
- Datum oder davor ist. Dementsprechend "wird", "wurde"
- die Person so alt. */
-
- ist = DATE('d')
- war = DATE("d","1993" || mon || day,"s")
-
- IF ist - war > 0 THEN gebw = "wurde"
- IF ist - war = 0 THEN gebw = "heute"
- IF ist - war < 0 THEN gebw = "wird"
-
-
- -- */
-
- /* Monat durch ausgeschriebenen Monatsnamen ersetzen */
-
- nam = DELSTR( geb, 1, p)
- IF mon = 1 THEN month = "Januar"
- IF mon = 2 THEN month = "Februar"
- IF mon = 3 THEN month = "März"
- IF mon = 4 THEN month = "April"
- IF mon = 5 THEN month = "Mai"
- IF mon = 6 THEN month = "Juni"
- IF mon = 7 THEN month = "Juli"
- IF mon = 8 THEN month = "August"
- IF mon = 9 THEN month = "September"
- IF mon = 10 THEN month = "Oktober"
- IF mon = 11 THEN month = "November"
- IF mon = 12 THEN month = "Dezember"
-
- z=z+1 /* Zähler erhöhen */
- if z=60 then ok=writech(datei,"1b"x"[6q") /* Perforation mit n Zeilen
- überspringen */
-
- /* Zeile erstellen & schreiben */
-
- line = " " day || "." month yea
- /* --
- line = INSERT( "(" || gebw old || ")", line, 28)
- line = INSERT( nam, line, 40) -- im Tausch mit nächster Zeile
- -- */
-
- line = INSERT( nam, line, 30)
-
- ok = WriteLn(out,line)
- END
- END
-
- ok = CLOSE(datei)
- ok = CLOSE(out)
-
- /* --
- cmd = "DELETE T:.tmp1"
- ADDRESS COMMAND cmd
- cmd = "DELETE T:.tmp2"
- ADDRESS COMMAND cmd
- -- */
-
- EXIT /* Programmende */
-
-