home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 3
/
PDCD_3.iso
/
pocketbk
/
utilsf
/
feiertag
/
FEIERTAG.OPL
< prev
next >
Wrap
Text File
|
1995-05-25
|
5KB
|
248 lines
APP Feiertag : TYPE $1000 : ICON ".\FEIERTAG.PIC" : ENDA
PROC Feiertag:
GLOBAL dkf&,j&,mon$(12,9),c%,ft$(6,19)
GIPRINT "V3.0 (c) 1094 B. W. Breede"
TRAP CACHE 2048,2048
CALL($138b) : REM unmark active
ESCAPE OFF
STATUSWIN ON :FONT 8,0
gBORDER $0
gFONT 8
gSTYLE 33
msg:("Kirchliche Feiertage:",1,1,300)
gAT 10,28
gBORDER 1,340,4
gSTYLE 0
ft$(1)="Karfreitag"
ft$(2)="Ostersonntag"
ft$(3)="Ostermontag"
ft$(4)="Christi Himmelfahrt"
ft$(5)="Pfingstsonntag"
ft$(6)="Pfingstmontag"
mon$(1)="Januar"
mon$(2)="Februar"
mon$(3)="M☓rz"
mon$(4)="April"
mon$(5)="Mai"
mon$(6)="Juni"
mon$(7)="Juli"
mon$(8)="August"
mon$(9)="September"
mon$(10)="Oktober"
mon$(11)="November"
mon$(12)="Dezember"
j&=YEAR
c%=1
WHILE c%<=6
msg:(ft$(c%)+":",1,c%+2,200)
c%=c%+1
ENDWH
EvHndler:
ENDP
PROC EvHndler:
LOCAL a%(6),new%,d&
new%=1
DO
GETEVENT a%()
IF (a%(1)=$404) AND (LEFT$(GETCMD$,1)="X")
STOP
ELSEIF ((a%(1) AND $00FF)=%x) AND ((a%(2) AND 8)>0)
STOP
ELSEIF a%(1)=32
j&=YEAR
new%=1
ELSEIF a%(1)=259
IF j&>1980
j&=j&-1
new%=1
ELSE
GIPRINT "Nicht m“glich.",3
ENDIF
ELSEIF a%(1)=258
IF j&<2030
j&=j&+1
new%=1
ELSE
GIPRINT "Nicht m“glich.",3
ENDIF
ELSEIF a%(1)=291
HelpDlg:
ELSEIF a%(1)=290
new%=Menu%:
ELSEIF a%(1)=618
new%=YearDlg%:
ELSEIF a%(1)=609
Wr2Agn:
new%=0
ENDIF
IF new%=1
new%=0
gSTYLE 9
msg:(NUM$(j&,4),36,2,50)
gSTYLE 0
d&=KF&:
msg:(date$:(d&),22,3,180)
msg:(date$:(d&+2),22,4,180)
msg:(date$:(d&+3),22,5,180)
msg:(date$:(d&+41),22,6,180)
msg:(date$:(d&+51),22,7,180)
msg:(date$:(d&+52),22,8,180)
ENDIF
UNTIL 0
ENDP
PROC HelpDlg:
dINIT "Spezielle Tasten:"
dTEXT "Leertaste:","aktuelles Jahr"
dTEXT CHR$(26)+":","n☓chstes Jahr"
dTEXT CHR$(27)+":","voriges Jahr"
DIALOG
ENDP
PROC Menu%:
LOCAL m%
mINIT
mCARD "Programm","beenden",%x
mCARD "Extras","Jahr w☓hlen...",%j,"Agenda-Eintr☓ge schreiben...",%a
m%=MENU
IF m%=0
RETURN 0
ELSEIF m%=%x
STOP
ELSEIF m%=%j
RETURN YearDlg%:
ELSEIF m%=%a
Wr2Agn:
RETURN 0
ENDIF
ENDP
PROC YearDlg%:
dINIT "Jahr w☓hlen:"
dLONG j&,"Jahr:",1980,2030
IF DIALOG
RETURN 1
ELSE
RETURN 0
ENDIF
ENDP
PROC Wr2Agn:
LOCAL f$(128),sym$(1),sty%,err%,h%,attr%,von&,bis&,i&,aj&
f$="LOC::M:\AGN\*.AGN"
sym$="Å"
von&=j&
bis&=j&
aj&=j&
dINIT "Agenda-Eintr☓ge schreiben:"
dFILE f$,"Agenda-",16+64
dLONG von&,"von Jahr",1980,2030
dLONG bis&,"bis Jahr",1980,2030
dCHOICE sty%,"Textstil","normal,fett,unterstrichen,fett+unterstrichen,kursiv,kursiv+fett,kursiv+unterstrichen,kursiv+fett+unterstrichen"
dEDIT sym$,"Symbol in Jahresansicht",1
dCHOICE attr%,"in Jahresansicht anzeigen","ja,nein"
IF DIALOG
sty%=sty%-1
IF sty%>3
sty%=sty%+28
ENDIF
attr%=27+((attr%-2)*(-4))
err%=IOOPEN(h%,f$,$0103)
IF bis&<von&
bis&=von&
ENDIF
IF NOT err%
WHILE von&<=bis&
j&=von&
gIPRINT "schreibe "+NUM$(j&,4)+"..."
kf&:
WrItem:(h%,ft$(1),dkf&,sym$,sty%,attr%)
WrItem:(h%,ft$(2),dkf&+2,sym$,sty%,attr%)
WrItem:(h%,ft$(3),dkf&+3,sym$,sty%,attr%)
WrItem:(h%,ft$(4),dkf&+41,sym$,sty%,attr%)
WrItem:(h%,ft$(5),dkf&+51,sym$,sty%,attr%)
WrItem:(h%,ft$(6),dkf&+52,sym$,sty%,attr%)
von&=von&+1
ENDWH
IOCLOSE(h%)
j&=aj&
gIPRINT "Agenda-Eintr☓ge geschrieben."
ELSE
dINIT "Fehler:"
dTEXT "",ERR$(err%)
dBUTTONS "OK",-13
DIALOG
ENDIF
ENDIF
ENDP
PROC WrItem:(h%,t$,d&,s$,y%,attr%)
LOCAL attrib%,len&,time&,day&,sym$(1),sty%,txt$(40),err%
day&=d&
sym$=s$
sty%=y%
time&=$FFFF
attrib%=attr%
txt$=t$
len&=LEN(txt$)+8
len&=len& OR $2000
IOWRITE(h%,ADDR(len&),2)
IOWRITE(h%,ADDR(day&),2)
IOWRITE(h%,ADDR(time&),2)
IOWRITE(h%,ADDR(attrib%),1)
IOWRITE(h%,UADD(ADDR(sym$),1),1)
IOWRITE(h%,ADDR(sty%),1)
IOWRITE(h%,ADDR(txt$),LEN(txt$)+1)
ENDP
PROC KF&:
LOCAL a&,b&,c&,d&,e&,m&,n&,day&
a&=mod&:(j&,int(19))
b&=mod&:(j&,int(4))
c&=mod&:(j&,int(7))
m&=mod&:(j&/100-j&/400-j&/300+15,int(30))
n&=mod&:(j&/100-j&/400+4,int(7))
d&=mod&:(19*a&+m&,int(30))
e&=mod&:(2*b&+4*c&+6*d&+n&,int(7))
day&=d&+e&+15
IF (e&<>6) OR NOT ((d&=29) OR ((d&=28) AND (a&>10)))
day&=day&+7
ENDIF
dkf&=DAYS(1,3,j&)-25570+day&
RETURN dkf&
ENDP
PROC date$:(s&)
LOCAL j%,m%,d%,a%,s$(20),dif&
dif&=s&-(DATETOSECS(YEAR,MONTH,DAY,0,0,0)/86400)
IF dif&=-2
s$="(vorgestern)"
ELSEIF dif&=-1
s$="(gestern)"
ELSEIF dif&=0
s$="(heute!)"
ELSEIF dif&=1
s$="(morgen)"
ELSEIF dif&=2
s$="(Ŵbermorgen)"
ELSE
SECSTODATE 86400*s&,j%,m%,d%,a%,a%,a%,a%
s$=NUM$(d%,2)+". "+mon$(m%)
IF d%<10
s$="0"+s$
ENDIF
ENDIF
RETURN s$
ENDP
PROC mod&:(a&,b&)
RETURN a&-(a&/b&)*b&
ENDP
PROC msg:(s$,s%,z%,b%)
gAT s%*10,z%*16+5
gPRINTB s$,b%
ENDP