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 >
Wrap
Text File
|
1996-02-19
|
5KB
|
160 lines
/* $VER: DruckeGeburtstagslisteAlph.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 */
/* 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( nam, line, 30)
ok = WriteLn(out,line)
END
END
ok = CLOSE(datei)
ok = CLOSE(out)
EXIT /* Programmende */