PACKET listederaufsichtszeitenDEFINES
aufsichtszeitenlisteerstellenunddruckenggfvorherzeigen:LET fnrausggeplanteshj
=2,fnrausgaktuelleshj=3,fnrausgdrucker=4,fnrausgbild=5;LET
schluesselschuljahr="Schuljahr",schluesselschulhalbjahr="Schulhalbjahr";LET
zusätzlicherlaubtetasten="vr";LET meldunglistewirdaufgebaut=7,
meldunglistewirdausgedruckt=58,meldungbittewarten=69,
meldungkeinedatenvorhanden=68;LET dateinamezumzeigen=
"Liste der Aufsichtszeiten",ueberschrift1fuerdruckdatei=
"Liste der Aufsichtszeiten",ueberschrift2fuerdruckdatei=
"-------------------------",textanfangfuerschulhalbjahr="für Schuljahr ",
trennerfuerschuljahr="/",textmittefuerschulhalbjahr=", ",
textendefuerschulhalbjahr=". Halbjahr",ueberschrift1dertabelle=
" Tag Nr. Bezeichnung Stunde Uhrzeit",
ueberschrift2dertabelle=
" vorher nachher von bis",
trennstrichdertabelle=
"--------+----------------------+-----------------+-----------------",
stelligkeitdestages=100,füllervorbezeichnung=". ",bezeichnungslänge=20,
füllervorstunde=" ",stundenprowochentag=12,leerestunde=" ",füllerinstunde=
". ",füllervoruhrzeit=". ",blankszumauffüllen=" ",stellenfürzeit
=4,füllerinuhrzeit=" ",stdundmintrenner=":",laengederstundenzeit=2,
blanksvorwochentag=" ",leererwochentag=" ",textmontag="Mo",textdienstag=
"Di",textmittwoch="Mi",textdonnerstag="Do",textfreitag="Fr",textsamstag="Sa",
nummerfürsa=6;LET niltext="",blank=" ";BOOL VAR erstaufbildschirm:=FALSE ;
TEXT VAR schuljahr:=niltext,halbjahr:=niltext;INT VAR fehlerstatus;FILE VAR f
;INT VAR akttag;PROC aufsichtszeitenlisteerstellenunddruckenggfvorherzeigen(
INT CONST nr):SELECT nrOF CASE 1:aufsichtszeitenlisteerstellenCASE 2:
aufsichtszeitenlistedruckenENDSELECT .END PROC
aufsichtszeitenlisteerstellenunddruckenggfvorherzeigen;PROC
aufsichtszeitenlisteerstellen:INT VAR i;prüfeobrichtigangekreuztist;IF
fehlerstatus<>0THEN infeld(fehlerstatus);return(1);LEAVE
aufsichtszeitenlisteerstellenFI ;erstaufbildschirm:=standardmaskenfeld(
fnrausgbild)<>niltext;IF erstaufbildschirmTHEN standardmeldung(
meldunglistewirdaufgebaut,niltext)ELSE standardmeldung(meldungbittewarten,
niltext)FI ;berechnebearbeitungsschuljahrundhalbjahr;
fuellediedateimitdenaufsichtszeiten;IF akttag=0THEN standardmeldung(
meldungkeinedatenvorhanden,niltext);forget(dateinamezumzeigen,quiet);return(1
);LEAVE aufsichtszeitenlisteerstellenFI ;IF erstaufbildschirmTHEN zeigedatei(
dateinamezumzeigen,zusätzlicherlaubtetasten)ELSE standardmeldung(
meldunglistewirdausgedruckt,niltext);aufsichtszeitenlistedruckenFI .
prüfeobrichtigangekreuztist:standardpruefe(5,fnrausggeplanteshj,
fnrausgaktuelleshj,0,niltext,fehlerstatus);IF fehlerstatus=0THEN
standardpruefe(5,fnrausgdrucker,fnrausgbild,0,niltext,fehlerstatus);FI .
fuellediedateimitdenaufsichtszeiten:f:=sequentialfile(output,
dateinamezumzeigen);putline(f,blank);putline(f,zentriert(
textanfangfuerschulhalbjahr+text(schuljahr,2)+trennerfuerschuljahr+subtext(
schuljahr,3)+textmittefuerschulhalbjahr+halbjahr+textendefuerschulhalbjahr,
bildbreite));putline(f,blank);putline(f,blank);putline(f,
ueberschrift1dertabelle+blank);putline(f,ueberschrift2dertabelle+blank);
putline(f,trennstrichdertabelle+blank);akttag:=0;inittupel(dnraufsichtszeiten
);statleseschleife(dnraufsichtszeiten,schuljahr,halbjahr,fnrazsj,fnrazhj,
PROC fuellediedatei);FOR iFROM akttag+1UPTO nummerfürsaREP putline(f,blank);
putline(f,wochentag(i));PER ;.berechnebearbeitungsschuljahrundhalbjahr:
schuljahr:=schulkenndatum(schluesselschuljahr);halbjahr:=schulkenndatum(
schluesselschulhalbjahr);IF standardmaskenfeld(fnrausgaktuelleshj)=niltext
THEN geplanteshjundsjberechnen(halbjahr,schuljahr)FI .END PROC
aufsichtszeitenlisteerstellen;PROC aufsichtszeitenlistedrucken:INT VAR
zeilenzähler;TEXT VAR t;FILE VAR f1:=sequentialfile(input,dateinamezumzeigen)
;initdruckkopf(zentriert(ueberschrift1fuerdruckdatei,druckbreite),zentriert(
ueberschrift2fuerdruckdatei,druckbreite));setzemitseitennummern(TRUE );
druckvorbereiten;druckkopfschreiben;getline(f1,t);druckzeileschreiben(t);
getline(f1,t);druckzeileschreiben(zentriert(compress(t),druckbreite));
zeilenzähler:=drucklaenge(2)-2;WHILE NOT eof(f1)REP IF zeilenzähler=0THEN
seitenwechsel;druckkopfschreiben;druckzeileschreiben(ueberschrift1dertabelle)
;druckzeileschreiben(ueberschrift2dertabelle);druckzeileschreiben(
trennstrichdertabelle);zeilenzähler:=drucklaenge(2)-3;FI ;getline(f1,t);
druckzeileschreiben(t);zeilenzählerDECR 1;PER ;drucknachbereiten;forget(
dateinamezumzeigen,quiet);IF erstaufbildschirmTHEN enter(2)ELSE enter(1)FI
END PROC aufsichtszeitenlistedrucken;TEXT PROC wochentag(INT CONST tag):TEXT
VAR t;SELECT tagOF CASE 1:t:=blanksvorwochentag+textmontag+blankCASE 2:t:=
blanksvorwochentag+textdienstag+blankCASE 3:t:=blanksvorwochentag+
textmittwoch+blankCASE 4:t:=blanksvorwochentag+textdonnerstag+blankCASE 5:t:=
blanksvorwochentag+textfreitag+blankCASE 6:t:=blanksvorwochentag+textsamstag+
blankEND SELECT ;tEND PROC wochentag;PROC fuellediedatei(BOOL VAR b):INT VAR
i,neuertag;TEXT VAR t,t2;IF wert(fnrazsj)>schuljahrCOR wert(fnrazhj)>halbjahr
COR dbstatus<>okTHEN b:=TRUE ELSE neuertag:=intwert(fnrazaufsichtszeit)DIV
stelligkeitdestages;IF neuertag>akttagTHEN putline(f,blank);FOR iFROM akttag+
1UPTO neuertag-1REP putline(f,wochentag(i));putline(f,blank);PER ;t:=
wochentag(neuertag);akttag:=neuertag;ELSE t:=leererwochentagFI ;tCAT text(
intwert(fnrazaufsichtszeit)MOD stelligkeitdestages,2);tCAT
füllervorbezeichnung;tCAT text(wert(fnrazbezeichnung),bezeichnungslänge);t
CAT füllervorstunde;IF intwert(fnraztagstdvor)=0THEN tCAT leerestundeELSE i:=
(intwert(fnraztagstdvor)-1)MOD stundenprowochentag+1;tCAT text(i,2);FI ;tCAT
füllerinstunde;IF intwert(fnraztagstdnach)=0THEN tCAT leerestundeELSE i:=(
intwert(fnraztagstdnach)-1)MOD stundenprowochentag+1;tCAT text(i,2);FI ;tCAT
füllervoruhrzeit;t2:=blankszumauffüllen+wert(fnrazbeginnuhr);t2:=subtext(t2,
length(t2)+1-stellenfürzeit);tCAT text(t2,laengederstundenzeit);tCAT
stdundmintrenner;tCAT subtext(t2,laengederstundenzeit+1);tCAT füllerinuhrzeit
;t2:=blankszumauffüllen+wert(fnrazendeuhr);t2:=subtext(t2,length(t2)+1-
stellenfürzeit);tCAT text(t2,laengederstundenzeit);tCAT stdundmintrenner;t
CAT subtext(t2,laengederstundenzeit+1);tCAT blank;putline(f,t);FI END PROC
fuellediedatei;END PACKET listederaufsichtszeiten