home *** CD-ROM | disk | FTP | other *** search
-
- /* $VER: PrintBirthday.adm 1.1 (23.06.93)
-
- Gibt Geburtstagsliste auf Drucker aus.
-
- Geht davon aus, daß das Geburtsdatum im Format DD.MM.YY eingegeben
- wurde.
-
- V1.0 23.06.93 - Erstes Release
- V1.1 26.01.94 - Löscht nun temporäre Datei
- Written by Jan Geißler. */
-
-
- /* ----------------------------------------------------------------------
- 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.firstname = "" THEN name = ADM.lastName
- ELSE name = ADM.firstname ADM.lastName
- 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:.tmp2","R") THEN DO /* Sortierte 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") /* "Kopf" drucken */
- ok = WriteLn(out,"================================================================")
- ok = WriteLn(out,"")
-
- 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"
-
-
- /* Zeile erstellen & schreiben */
-
- line = day || "." month yea
- line = INSERT( "(" || gebw old || ")", line, 20)
- line = INSERT( nam, line, 32)
-
- 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 */
-
-