PACKET stdpluebersichtenDEFINES merkeartderstdpluebersichtundzeigemaske,
stdpluebersichterstellenunddruckenggfvorherzeigen,
stdpluebersichtdruckenundggfnaechsteerstellen:INT VAR
ausgewaehlteuebersichtsart;LET artlehrer=1,artraeume=2,artsek1=3,artsek2=4,
artzeiten=5,maskennamefuerlehrer="ms stdpluebersicht fuer lehrer",
maskennamefuerraeume="ms stdpluebersicht fuer raeume",maskennamefuersek1=
"ms stdpluebersicht fuer sek1",maskennamefuersek2=
"ms stdpluebersicht fuer sek2",maskennamefuerzeiten=
"ms stdpluebersicht fuer zeiten";TEXT VAR sj,hj,kennung,vonobjekt,bisobjekt,
sek1kennungvon,sek1kennungbis,ueberschrift1,ueberschrift2,tag,
listeallerobjekte:="";INT VAR laengederlistenobjekte,ptraktobjekt,sek1jgstvon
,sek1jgstbis,varspbreite,anzahlspalten,vonstd,bisstd,anzahltage;BOOL VAR
nurdrucken,zweizeilig;LET fnr2geplsj=2,fnr3aktsj=3,fnr4einzeilig=4,
fnr5zweizeilig=5,fnr6vonobjekt=6,fnr7bisobjekt=7,fnr8vonstd=8,fnr9bisstd=9,
fnr10spaltenproseite=10,fnr11tageproseite=11,fnr12bildschirm=12,fnr13drucker=
13,fnrz4vonstd=4,fnrz5bisstd=5,fnrz6anzspalten=6,fnrz7bildschirm=7,
fnrz8drucker=8;LET erstestd=1,letztestdmofr=12,letztestdsa=6,maxanzstdn=66,
letztertag=6,erstertag=1,allewochentagsbezeichnungen=
"MODIMIDOFRSAMoDiMiDoFrSamodimidofrsa";LET konstspbreite=6,
konstkopplungsbreite=8,maxanzspalten1bis4=9,maxanzspalten5=5,maxanzspalten=9,
minanzspalten=1,spaltenbreite8=8,spaltenbreite10=10,spaltenbreite12=12,
spaltenbreite27=27,druckdatei="liste.1",textstdpluebersicht=
"Stundenplanübersicht für ",textlehrer="Lehrer",textraeume="Räume",textsek1=
"Klassen der Sek. 1",textsek2="Jgst. ",textzeiten="Zeiten",
textanfangfuerschulhalbjahr="Schuljahr 19",trennerfuerschuljahr="/",
textmittefuerschulhalbjahr=", ",textendefuerschulhalbjahr=". Halbjahr",
ueberschriftenzahl=2,spaltentrenner=":",trennstrichzeichen="-",
spaltentrennerimstrich="+",textzeiterstespalte="Zeit :",leereerstespalte=
" :",textmontag="Mo",textdienstag="Di",textmittwoch="Mi",textdonnerstag=
"Do",textfreitag="Fr",textsamstag="Sa",textkeintag=" ",trennstrichfuerlv="/"
,ueberschriftspalte2beiart4="Kopplung:",ueberschriftspalte3beiart4=
" Lehrveranstaltungen",ueberschriftbeiart5="Lv /R /P /Kopplg. ",
endeposjgstinlv=2,anfposfachinlv=3,endeposfachinlv=4,anfposkennunginlv=5,
laengeeinerlv=8,laengeeinerkopplung=8,laengeeinerparaphe=4,laengeeinesraumes=
4,laengeeinersgrp=6,laengeeinerjgst=2,zeilebeianfangneueseite=2,
maxtabzahljedruckdatei=10;LET meldnrlistewirdaufgebaut=7,
meldnrbittezahlangeben=53,meldnrzahlausserhalbdergrenzen=54,
meldnrungueltigeeingabe=55,meldnrauswahlnichtsinnvoll=56,meldnrplausi=57,
meldnrlistewirdausgedruckt=58,meldnrbittewarten=69,meldnrinbearbeitung=352,
meldnrkeinegueltigejgst=146,meldnrungueltigeparaphe=344,
meldnrkeinelehrerdatenda=337,meldnrfalscheraumangabe=359,
meldnrkeineraumdatenda=365,meldnrkeinestdpldatenda=366,meldnrfalschetagesbez=
385,meldnrfalschestundenfolge=386,meldnralphabetischefolge=380,
meldnrkeinehjdatenda=382,meldnrmaxzeichenueberschritten=383,
meldnrstdpldatenwerdenaufbereitet=384;INT VAR fehlermeldnr:=
meldnrauswahlnichtsinnvoll,status,aktdnr;BOOL VAR druckenfertig;LET niltext=
"",blank=" ",null=0,bestandraeume="c02 raeume";LET letztejgstsek1=10,jgst11=
"11",jgst12="12",jgst13="13";PROC merkeartderstdpluebersichtundzeigemaske(
INT CONST art):ausgewaehlteuebersichtsart:=art;SELECT artOF CASE artlehrer:
laengederlistenobjekte:=laengeeinerparaphe;kennung:="P";varspbreite:=
spaltenbreite10;standardvproc(maskennamefuerlehrer)CASE artraeume:
laengederlistenobjekte:=laengeeinesraumes;kennung:="R";varspbreite:=
spaltenbreite10;standardvproc(maskennamefuerraeume)CASE artsek1:
laengederlistenobjekte:=laengeeinersgrp;kennung:="S";varspbreite:=
spaltenbreite8;standardvproc(maskennamefuersek1)CASE artsek2:
laengederlistenobjekte:=laengeeinerjgst;kennung:="L";varspbreite:=
spaltenbreite12;standardvproc(maskennamefuersek2)CASE artzeiten:varspbreite:=
spaltenbreite27;standardvproc(maskennamefuerzeiten)END SELECT ;END PROC
merkeartderstdpluebersichtundzeigemaske;PROC
stdpluebersichtdruckenundggfnaechsteerstellen(BOOL CONST drucken):FILE VAR f;
IF druckenTHEN standardmeldung(meldnrlistewirdausgedruckt,niltext);f:=
sequentialfile(output,druckdatei);drucknachbereiten;ELSE TEXT VAR dateiname:=
niltext;INT VAR index:=0;THESAURUS VAR t:=allLIKE "liste.*";get(t,dateiname,
index);WHILE dateiname<>niltextREP forget(dateiname,quiet);get(t,dateiname,
index)PER ;FI ;IF druckenfertigTHEN enter(2)ELSE IF
ausgewaehlteuebersichtsart=artzeitenTHEN bereitetabellefuerzeitenaufELSE
bereitetabelleninderdruckdateiaufFI ;return(1)FI ;END PROC
stdpluebersichtdruckenundggfnaechsteerstellen;PROC
stdpluebersichterstellenunddruckenggfvorherzeigen:standardmeldung(
meldnrplausi,niltext);IF NOT (maskenwerteok)THEN return(1)ELSE IF NOT (
druckwerteok)THEN fehlermeldnr:=meldnrmaxzeichenueberschritten;
standardmeldung(fehlermeldnr,niltext);return(1)ELSE IF NOT (datenvorhanden)
THEN standardmeldung(fehlermeldnr,niltext);return(1)ELSE IF nurdruckenTHEN
standardmeldung(meldnrbittewarten,niltext)ELSE standardmeldung(
meldnrlistewirdaufgebaut,niltext)FI ;ueberschrift2:=
textanfangfuerschulhalbjahr;ueberschrift2CAT text(sj,2);ueberschrift2CAT
trennerfuerschuljahr;ueberschrift2CAT subtext(sj,3);ueberschrift2CAT
textmittefuerschulhalbjahr;ueberschrift2CAT hj;ueberschrift2CAT
textendefuerschulhalbjahr;initdruckkopf(ueberschrift1,ueberschrift2);
setzemitseitennummern(TRUE );druckenfertig:=FALSE ;ptraktobjekt:=1;IF
ausgewaehlteuebersichtsart=artzeitenTHEN bereitetabellefuerzeitenaufELSE
bereitetabelleninderdruckdateiaufFI ;IF nurdruckenTHEN drucknachbereiten;
WHILE NOT druckenfertigREP IF ausgewaehlteuebersichtsart=artzeitenTHEN
bereitetabellefuerzeitenaufELSE bereitetabelleninderdruckdateiaufFI ;
drucknachbereiten;PER ;enter(1)ELSE zeigedatei(druckdatei,"vr");FI ;FI ;FI ;
FI ;END PROC stdpluebersichterstellenunddruckenggfvorherzeigen;BOOL PROC
maskenwerteok:standardpruefe(5,fnr2geplsj,fnr3aktsj,null,niltext,status);IF
status<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE FI ;sj:=
schulkenndatum("Schuljahr");hj:=schulkenndatum("Schulhalbjahr");IF
standardmaskenfeld(fnr3aktsj)=niltextTHEN geplanteshjundsjberechnen(hj,sj)FI
;stundenplanhalbjahrsetzen(hj,sj);IF ausgewaehlteuebersichtsart<>artzeiten
THEN IF NOT (druckerbildschirmok(fnr12bildschirm,fnr13drucker))THEN LEAVE
maskenwerteokWITH FALSE FI ;standardpruefe(5,fnr4einzeilig,fnr5zweizeilig,
null,niltext,status);IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH
FALSE FI ;zweizeilig:=standardmaskenfeld(fnr4einzeilig)=niltext;IF NOT (
spaltenanzahlok(fnr10spaltenproseite))THEN LEAVE maskenwerteokWITH FALSE FI ;
IF (standardmaskenfeld(fnr11tageproseite))=niltextTHEN anzahltage:=letztertag
+1ELSE standardpruefe(2,fnr11tageproseite,null,null,niltext,status);IF status
=0THEN standardpruefe(3,fnr11tageproseite,erstertag,letztertag,niltext,status
);IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE ELSE
anzahltage:=int(standardmaskenfeld(fnr11tageproseite));FI ;ELSE infeld(status
);LEAVE maskenwerteokWITH FALSE FI ;FI ;IF standardmaskenfeld(fnr8vonstd)=
niltextTHEN vonstd:=erstestdELSE standardpruefe(2,fnr8vonstd,null,null,
niltext,status);IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH
FALSE FI ;standardpruefe(3,fnr8vonstd,erstestd,letztestdmofr,niltext,status);
IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE FI ;vonstd:=int
(standardmaskenfeld(fnr8vonstd))FI ;IF standardmaskenfeld(fnr9bisstd)=niltext
THEN bisstd:=letztestdmofrELSE standardpruefe(2,fnr9bisstd,null,null,niltext,
status);IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE FI ;
standardpruefe(3,fnr9bisstd,erstestd,letztestdmofr,niltext,status);IF status
<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE FI ;bisstd:=int(
standardmaskenfeld(fnr9bisstd))FI ;IF vonstd>bisstdTHEN infeld(fnr9bisstd);
fehlermeldnr:=meldnrauswahlnichtsinnvoll;standardmeldung(fehlermeldnr,niltext
);LEAVE maskenwerteokWITH FALSE ;FI ;vonobjekt:=standardmaskenfeld(
fnr6vonobjekt);bisobjekt:=standardmaskenfeld(fnr7bisobjekt);ELSE IF NOT (
druckerbildschirmok(fnrz7bildschirm,fnrz8drucker))THEN LEAVE maskenwerteok
WITH FALSE ELSE IF NOT anfangsundendzeitokTHEN standardmeldung(fehlermeldnr,
niltext);LEAVE maskenwerteokWITH FALSE FI ;IF NOT (spaltenanzahlok(
fnrz6anzspalten))THEN LEAVE maskenwerteokWITH FALSE FI ;FI ;FI ;TRUE .
anfangsundendzeitok:TEXT VAR hilfstext;INT VAR tag;hilfstext:=
standardmaskenfeld(fnrz4vonstd);IF hilfstext=niltextTHEN vonstd:=erstestd
ELSE tag:=pos(allewochentagsbezeichnungen,text(hilfstext,2));IF tag=0THEN
fehlermeldnr:=meldnrfalschetagesbez;infeld(fnrz4vonstd);LEAVE
anfangsundendzeitokWITH FALSE FI ;tag:=(tagMOD 12)DIV 2;vonstd:=int(subtext(
hilfstext,3));IF NOT lastconversionokTHEN fehlermeldnr:=
meldnrbittezahlangeben;infeld(fnrz4vonstd);LEAVE anfangsundendzeitokWITH
FALSE FI ;IF vonstd<erstestdCOR (tag<letztertag-1AND vonstd>letztestdmofr)
COR (tag=letztertag-1AND vonstd>letztestdsa)THEN fehlermeldnr:=
meldnrzahlausserhalbdergrenzen;infeld(fnrz4vonstd);LEAVE anfangsundendzeitok
WITH FALSE FI ;vonstd:=vonstd+(tag*letztestdmofr);FI ;hilfstext:=
standardmaskenfeld(fnrz5bisstd);IF hilfstext=niltextTHEN bisstd:=maxanzstdn
ELSE tag:=pos(allewochentagsbezeichnungen,text(hilfstext,2));IF tag=0THEN
fehlermeldnr:=meldnrfalschetagesbez;infeld(fnrz5bisstd);LEAVE
anfangsundendzeitokWITH FALSE FI ;tag:=(tagMOD 12)DIV 2;bisstd:=int(subtext(
hilfstext,3));IF NOT lastconversionokTHEN fehlermeldnr:=
meldnrbittezahlangeben;infeld(fnrz5bisstd);LEAVE anfangsundendzeitokWITH
FALSE FI ;IF bisstd<erstestdCOR (tag<letztertag-1AND bisstd>letztestdmofr)
COR (tag=letztertag-1AND bisstd>letztestdsa)THEN fehlermeldnr:=
meldnrzahlausserhalbdergrenzen;infeld(fnrz4vonstd);LEAVE anfangsundendzeitok
WITH FALSE FI ;bisstd:=bisstd+(tag*letztestdmofr);FI ;IF vonstd>bisstdTHEN
fehlermeldnr:=meldnrfalschestundenfolge;infeld(fnrz4vonstd);LEAVE
anfangsundendzeitokWITH FALSE FI ;TRUE END PROC maskenwerteok;BOOL PROC
druckerbildschirmok(INT CONST fnrbs,fnrdr):BOOL VAR richtig:=FALSE ;
standardpruefe(5,fnrbs,fnrdr,null,niltext,status);IF status<>0THEN infeld(
status);ELSE richtig:=TRUE ;nurdrucken:=standardmaskenfeld(fnrbs)=niltext;FI
;richtigEND PROC druckerbildschirmok;BOOL PROC spaltenanzahlok(INT CONST
fnrspaltenanz):BOOL VAR richtig:=FALSE ;INT VAR spaltenmax,spaltenstandard;
IF ausgewaehlteuebersichtsart=artzeitenTHEN spaltenstandard:=2;spaltenmax:=
maxanzspalten5;ELIF ausgewaehlteuebersichtsart=artsek2THEN spaltenstandard:=4
;spaltenmax:=maxanzspalten1bis4ELSE spaltenstandard:=5;spaltenmax:=
maxanzspalten1bis4FI ;IF standardmaskenfeld(fnrspaltenanz)=niltextTHEN
anzahlspalten:=spaltenstandard;richtig:=TRUE ELSE standardpruefe(2,
fnrspaltenanz,null,null,niltext,status);IF status<>0THEN infeld(status);ELSE
standardpruefe(3,fnrspaltenanz,minanzspalten,spaltenmax,niltext,status);IF
status<>0THEN infeld(status)ELSE anzahlspalten:=int(standardmaskenfeld(
fnrspaltenanz));richtig:=TRUE FI ;FI ;FI ;richtigEND PROC spaltenanzahlok;
BOOL PROC druckwerteok:BOOL VAR richtig;IF ausgewaehlteuebersichtsart=artsek2
THEN richtig:=konstspbreite+1+konstkopplungsbreite+1+(varspbreite+1)*
anzahlspalten<=druckbreiteELSE richtig:=konstspbreite+1+(varspbreite+1)*
anzahlspalten<=druckbreiteFI ;IF NOT richtigTHEN IF
ausgewaehlteuebersichtsart=artzeitenTHEN infeld(fnrz6anzspalten)ELSE infeld(
fnr10spaltenproseite)FI ;FI ;richtigEND PROC druckwerteok;BOOL PROC
datenvorhanden:BOOL VAR richtig:=FALSE ;stundenplanbasisundstundenplanholen(
status);IF status<>0AND status<>8THEN fehlermeldnr:=meldnrkeinestdpldatenda;
infeld(fnr2geplsj);ELSE SELECT ausgewaehlteuebersichtsartOF CASE artlehrer:
aktdnr:=dnrlehrer;IF (datenpruefungok(fnrlparaphe,fnrlfamname))THEN richtig:=
TRUE ;ueberschrift1:=textstdpluebersicht;ueberschrift1CAT textlehrer;FI ;
CASE artraeume:aktdnr:=dnrschluessel;IF (datenpruefungok(fnrschlsachgebiet,
fnrschlschluessel))THEN richtig:=TRUE ;ueberschrift1:=textstdpluebersicht;
ueberschrift1CAT textraeume;FI ;CASE artsek1:aktdnr:=dnraktschuelergruppen;
IF (datenpruefungok(fnrsgrpsj,fnrsgrphj))THEN richtig:=TRUE ;ueberschrift1:=
textstdpluebersicht;ueberschrift1CAT textsek1;FI ;CASE artsek2:IF jgstokTHEN
richtig:=TRUE ;ueberschrift1:=textstdpluebersicht;ueberschrift1CAT textsek2;
FI ;CASE artzeiten:richtig:=TRUE ;ueberschrift1:=textstdpluebersicht;
ueberschrift1CAT textzeiten;END SELECT ;FI ;richtig.jgstok:IF vonobjekt=
niltextTHEN vonobjekt:=jgst11FI ;IF bisobjekt=niltextTHEN bisobjekt:=jgst13
FI ;IF vonobjekt<>jgst11AND vonobjekt<>jgst12AND vonobjekt<>jgst13THEN
fehlermeldnr:=meldnrkeinegueltigejgst;infeld(fnr6vonobjekt);LEAVE jgstokWITH
FALSE FI ;IF bisobjekt<>jgst11AND bisobjekt<>jgst12AND bisobjekt<>jgst13THEN
fehlermeldnr:=meldnrkeinegueltigejgst;infeld(fnr7bisobjekt);LEAVE jgstokWITH
FALSE FI ;IF int(bisobjekt)<int(vonobjekt)THEN fehlermeldnr:=
meldnrauswahlnichtsinnvoll;infeld(fnr6vonobjekt);LEAVE jgstokWITH FALSE FI ;
listeallerobjekte:=vonobjekt;IF vonobjekt=jgst11AND bisobjekt=jgst13THEN
listeallerobjekteCAT jgst12FI ;IF listeallerobjekte<>bisobjektTHEN
listeallerobjekteCAT bisobjektFI ;TRUE END PROC datenvorhanden;BOOL PROC
datenpruefungok(INT CONST erstesfeld,zweitesfeld):TEXT VAR ersterparameter,
zweiterparameter;inittupel(aktdnr);listeallerobjekte:=niltext;IF
ausgewaehlteuebersichtsart=artlehrerTHEN IF records(aktdnr)=0.0THEN
fehlermeldnr:=meldnrkeinelehrerdatenda;infeld(fnr6vonobjekt);LEAVE
datenpruefungokWITH FALSE ;FI ;IF vonobjekt<>niltextTHEN putwert(fnrlparaphe,
vonobjekt);search(aktdnr,TRUE );IF dbstatus<>0THEN fehlermeldnr:=
meldnrungueltigeparaphe;infeld(fnr6vonobjekt);LEAVE datenpruefungokWITH
FALSE ;FI ;FI ;IF bisobjekt<>niltextTHEN putwert(fnrlparaphe,bisobjekt);
search(aktdnr,TRUE );IF dbstatus<>0THEN fehlermeldnr:=meldnrungueltigeparaphe
;infeld(fnr7bisobjekt);LEAVE datenpruefungokWITH FALSE ;FI ;FI ;
ersterparameter:=vonobjekt;zweiterparameter:=niltext;inittupel(aktdnr);ELIF
ausgewaehlteuebersichtsart=artraeumeTHEN ersterparameter:=bestandraeume;
zweiterparameter:=vonobjekt;putwert(fnrschlsachgebiet,ersterparameter);
putwert(fnrschlschluessel,zweiterparameter);search(dnrschluessel,FALSE );IF
dbstatus<>0OR wert(fnrschlsachgebiet)<>bestandraeumeTHEN IF vonobjekt=niltext
THEN fehlermeldnr:=meldnrkeineraumdatenda;ELSE fehlermeldnr:=
meldnrfalscheraumangabe;FI ;infeld(fnr6vonobjekt);LEAVE datenpruefungokWITH
FALSE FI ;IF vonobjekt<>niltextTHEN search(dnrschluessel,TRUE );IF dbstatus<>
0THEN fehlermeldnr:=meldnrfalscheraumangabe;infeld(fnr6vonobjekt);LEAVE
datenpruefungokWITH FALSE FI ;FI ;IF bisobjekt<>niltextTHEN putwert(
fnrschlschluessel,bisobjekt);search(dnrschluessel,TRUE );IF dbstatus<>0THEN
fehlermeldnr:=meldnrfalscheraumangabe;infeld(fnr7bisobjekt);LEAVE
datenpruefungokWITH FALSE FI ;FI ;inittupel(aktdnr);ELSE ersterparameter:=sj;
zweiterparameter:=hj;putwert(fnrsgrpsj,ersterparameter);putwert(fnrsgrphj,
zweiterparameter);search(dnrschluessel,FALSE );IF dbstatus<>0OR wert(
fnrsgrphj)<>hjTHEN infeld(fnr6vonobjekt);fehlermeldnr:=meldnrkeinehjdatenda;
LEAVE datenpruefungokWITH FALSE FI ;IF vonobjekt<>niltextTHEN sek1kennungvon
:=subtext(vonobjekt,3,6);sek1jgstvon:=int(subtext(vonobjekt,1,2));IF NOT (
lastconversionok)THEN infeld(fnr6vonobjekt);fehlermeldnr:=
meldnrkeinegueltigejgst;LEAVE datenpruefungokWITH FALSE FI ;FI ;IF bisobjekt
<>niltextTHEN sek1kennungbis:=subtext(bisobjekt,3,6);sek1jgstbis:=int(subtext
(bisobjekt,1,2));IF NOT lastconversionokCOR sek1jgstvon<5COR sek1jgstvon>11
COR sek1jgstbis<5COR sek1jgstbis>11THEN infeld(fnr7bisobjekt);fehlermeldnr:=
meldnrkeinegueltigejgst;LEAVE datenpruefungokWITH FALSE ELSE putintwert(
fnrsgrpjgst,sek1jgstvon);putwert(fnrsgrpkennung,sek1kennungvon);IF
sek1jgstvon>sek1jgstbisTHEN infeld(fnr6vonobjekt);fehlermeldnr:=
meldnrzahlausserhalbdergrenzen;LEAVE datenpruefungokWITH FALSE FI ;IF
sek1jgstvon=sek1jgstbisTHEN IF sek1kennungvon>sek1kennungbisTHEN infeld(
fnr6vonobjekt);fehlermeldnr:=meldnralphabetischefolge;LEAVE datenpruefungok
WITH FALSE FI ;FI ;IF sek1jgstbis<>10THEN bisobjekt:="0"+text(sek1jgstbis)+
sek1kennungbis;FI ;IF sek1jgstvon<>10THEN vonobjekt:="0"+text(sek1jgstvon)+
sek1kennungvon;FI ;FI ;FI ;FI ;IF vonanfangbisendeTHEN statleseschleife(
aktdnr,ersterparameter,zweiterparameter,erstesfeld,zweitesfeld,PROC dateiende
);ELIF vonanfangbiswertTHEN IF NOT bezeichnungzulaessig(kennung,bisobjekt)
THEN infeld(fnr7bisobjekt);fehlermeldnr:=meldnrungueltigeeingabe;
standardmeldung(fehlermeldnr,niltext);LEAVE datenpruefungokWITH FALSE ELSE
statleseschleife(aktdnr,ersterparameter,zweiterparameter,erstesfeld,
zweitesfeld,PROC endewert);FI ;ELIF vonwertbisendeTHEN IF NOT
bezeichnungzulaessig(kennung,vonobjekt)THEN infeld(fnr6vonobjekt);
fehlermeldnr:=meldnrungueltigeeingabe;standardmeldung(fehlermeldnr,niltext);
LEAVE datenpruefungokWITH FALSE ELSE statleseschleife(aktdnr,ersterparameter,
zweiterparameter,erstesfeld,zweitesfeld,PROC dateiende);FI ;ELIF
vonwertbiswertTHEN IF NOT bezeichnungzulaessig(kennung,vonobjekt)THEN infeld(
fnr6vonobjekt);fehlermeldnr:=meldnrungueltigeeingabe;standardmeldung(
fehlermeldnr,niltext);LEAVE datenpruefungokWITH FALSE ELSE IF NOT
bezeichnungzulaessig(kennung,bisobjekt)THEN infeld(fnr7bisobjekt);
fehlermeldnr:=meldnrungueltigeeingabe;standardmeldung(fehlermeldnr,niltext);
LEAVE datenpruefungokWITH FALSE ELSE IF vonobjekt>bisobjektTHEN infeld(
fnr7bisobjekt);fehlermeldnr:=meldnralphabetischefolge;standardmeldung(
fehlermeldnr,niltext);LEAVE datenpruefungokWITH FALSE ELSE statleseschleife(
aktdnr,ersterparameter,zweiterparameter,erstesfeld,zweitesfeld,PROC endewert)
;FI ;FI ;FI ;ELSE statleseschleife(aktdnr,ersterparameter,zweiterparameter,
erstesfeld,zweitesfeld,PROC endewert);FI ;TRUE .vonanfangbisende:vonobjekt=
niltextAND bisobjekt=niltext.vonanfangbiswert:vonobjekt=niltextAND bisobjekt
<>niltext.vonwertbisende:vonobjekt<>niltextAND bisobjekt=niltext.
vonwertbiswert:vonobjekt<>niltextAND bisobjekt<>niltextEND PROC
datenpruefungok;PROC endewert(BOOL VAR letzter):IF ausgewaehlteuebersichtsart
=artlehrerTHEN IF dbstatus=0AND wert(fnrlparaphe)<=bisobjektTHEN
listeallerobjekteCAT text(wert(fnrlparaphe),laengederlistenobjekte)ELSE
letzter:=TRUE ;FI ;ELIF ausgewaehlteuebersichtsart=artraeumeTHEN IF dbstatus=
0AND wert(fnrschlsachgebiet)=bestandraeumeAND bisobjekt>=wert(
fnrschlschluessel)THEN listeallerobjekteCAT text(wert(fnrschlschluessel),
laengederlistenobjekte)ELSE letzter:=TRUE ;FI ;ELSE IF dbstatus=0AND wert(
fnrsgrpsj)=sjAND wert(fnrsgrphj)=hjAND (sek1jgstbis>intwert(fnrsgrpjgst)OR (
sek1jgstbis=intwert(fnrsgrpjgst)AND sek1kennungbis>=wert(fnrsgrpkennung)))
THEN listeallerobjekteCAT text(wert(fnrsgrpjgst),2);listeallerobjekteCAT text
(wert(fnrsgrpkennung),4);ELSE letzter:=TRUE ;FI ;FI ;END PROC endewert;PROC
dateiende(BOOL VAR ende):IF ausgewaehlteuebersichtsart=artlehrerTHEN IF
dbstatus=0THEN listeallerobjekteCAT text(wert(fnrlparaphe),
laengederlistenobjekte)ELSE ende:=TRUE FI ;ELIF ausgewaehlteuebersichtsart=
artraeumeTHEN IF dbstatus=0AND wert(fnrschlsachgebiet)=bestandraeumeTHEN
listeallerobjekteCAT text(wert(fnrschlschluessel),laengederlistenobjekte);
ELSE ende:=TRUE FI ;ELSE IF dbstatus=0AND wert(fnrsgrpsj)=sjAND wert(
fnrsgrphj)=hjAND letztejgstsek1>=intwert(fnrsgrpjgst)THEN listeallerobjekte
CAT text(wert(fnrsgrpjgst),2);listeallerobjekteCAT text(wert(fnrsgrpkennung),
4);ELSE ende:=TRUE ;FI ;FI ;END PROC dateiende;PROC drucketrennstrich:TEXT
VAR t:=konstspbreite*trennstrichzeichen;tCAT spaltentrennerimstrich;IF
ausgewaehlteuebersichtsart=artsek2THEN tCAT konstkopplungsbreite*
trennstrichzeichen;tCAT spaltentrennerimstrich;FI ;tCAT anzahlspalten*(
varspbreite*trennstrichzeichen+spaltentrennerimstrich);druckzeileschreiben(t)
END PROC drucketrennstrich;PROC druckespaltenueberschriften(ROW maxanzspalten
TEXT CONST spaltenueberschrift):TEXT VAR t:=textzeiterstespalte;INT VAR i;IF
ausgewaehlteuebersichtsart=artsek2THEN tCAT spaltenueberschrift[1];tCAT
spaltenueberschrift[2]ELSE FOR iFROM 1UPTO anzahlspaltenREP tCAT text(
spaltenueberschrift[i],varspbreite);tCAT spaltentrennerPER FI ;tCAT blank;
druckzeileschreiben(t)END PROC druckespaltenueberschriften;PROC
bereitetabelleninderdruckdateiauf:TEXT VAR jgstbez,lvsderjgst,aktlv,aktkopplg
,lvsprozeit,kopplgnprozeit,kopplgundlvs;INT VAR ptraktlv;INT VAR position,
anfpos,endpos;INT VAR zeilenzaehler,aktstd,spaltenzaehler,stundenzaehler,
tagzaehler,tabellenzaehler;TEXT VAR t,t1,lv,rm,par;BOOL VAR
erstezeilederstunde,stundenochnichtfertig;ROW maxanzspaltenTEXT VAR
spaltenueberschrift,zusatzangabe;druckvorbereiten;FOR tabellenzaehlerFROM 1
UPTO maxtabzahljedruckdateiREP bestimmespaltenueberschriften;IF
ausgewaehlteuebersichtsart<>artsek2THEN standardmeldung(meldnrinbearbeitung,
spaltenueberschrift(1)+"#");FI ;zeilenzaehler:=zeilebeianfangneueseite;
druckkopfschreiben;druckespaltenueberschriften(spaltenueberschrift);
drucketrennstrich;FOR tagzaehlerFROM erstertagUPTO letztertagREP IF
tagzaehler=letztertagTHEN aktstd:=min(bisstd,letztestdsa)ELSE aktstd:=bisstd
FI ;FOR stundenzaehlerFROM vonstdUPTO aktstdREP bereitezeileneinerstundeauf
PER ;IF zeilenzaehler>zeilebeianfangneueseiteTHEN drucketrennstrich;
zeilenzaehlerINCR 1;evtlseitenumbruchwgueberlaenge;FI ;
evtlseitenumbruchwgtageszahljeseite;PER ;IF zeilenzaehler>
zeilebeianfangneueseiteTHEN seitenwechsel;zeilenzaehler:=
zeilebeianfangneueseite;FI ;PER ;druckenfertig:=ptraktobjekt>length(
listeallerobjekte).bestimmespaltenueberschriften:IF
ausgewaehlteuebersichtsart=artsek2THEN IF ptraktobjekt>length(
listeallerobjekte)THEN druckenfertig:=TRUE ;LEAVE
bereitetabelleninderdruckdateiaufFI ;jgstbez:=subtext(listeallerobjekte,
ptraktobjekt,ptraktobjekt+laengederlistenobjekte-1);lvsderjgst:=
lvderschuelergruppe(jgstbez);spaltenueberschrift[1]:=
ueberschriftspalte2beiart4;spaltenueberschrift[2]:=ueberschriftspalte3beiart4
;initdruckkopf(ueberschrift1+blank+jgstbez,ueberschrift2);ptraktobjektINCR
laengederlistenobjekte;ELSE spaltenzaehler:=0;WHILE (spaltenzaehler<
anzahlspalten)AND (ptraktobjekt<=length(listeallerobjekte))REP spaltenzaehler
INCR 1;spaltenueberschrift[spaltenzaehler]:=subtext(listeallerobjekte,
ptraktobjekt,ptraktobjekt+laengederlistenobjekte-1);ptraktobjektINCR
laengederlistenobjekte;PER ;IF spaltenzaehler=0THEN druckenfertig:=TRUE ;
LEAVE bereitetabelleninderdruckdateiaufFI ;anzahlspalten:=spaltenzaehlerFI .
bereitezeileneinerstundeauf:erstezeilederstunde:=TRUE ;stundenochnichtfertig
:=TRUE ;WHILE stundenochnichtfertigREP IF erstezeilederstundeTHEN IF
stundenzaehler=vonstdTHEN SELECT tagzaehlerOF CASE 1:t:=textmontag;CASE 2:t:=
textdienstag;CASE 3:t:=textmittwoch;CASE 4:t:=textdonnerstag;CASE 5:t:=
textfreitag;CASE 6:t:=textsamstag;END SELECT ;tag:=t;ELSE t:=textkeintagFI ;t
CAT blank;tCAT text(stundenzaehler,2);tCAT blank;tCAT spaltentrenner;ELSE t:=
leereerstespalte;FI ;IF ausgewaehlteuebersichtsart=artsek2THEN IF
erstezeilederstundeTHEN anfpos:=1;endpos:=8;lvsprozeit:=datenderzeit((
tagzaehler-1)*letztestdmofr+stundenzaehler,"L");kopplgnprozeit:=datenderzeit(
(tagzaehler-1)*letztestdmofr+stundenzaehler,"K");position:=0;WHILE endpos<=
length(lvsderjgst)AND positionMOD 8<>1REP aktlv:=subtext(lvsderjgst,anfpos,
endpos);position:=pos(lvsprozeit,aktlv);anfposINCR 8;endposINCR 8PER ;IF
position<>0THEN aktkopplg:=subtext(kopplgnprozeit,position,position+7);
kopplgundlvs:=aktkopplg;anfpos:=1;endpos:=8;position:=pos(kopplgnprozeit,
aktkopplg);WHILE endpos<=length(kopplgnprozeit)AND position<>0REP IF position
MOD 8=1THEN aktlv:=subtext(lvsprozeit,position,position+7);IF pos(
kopplgundlvs,aktlv)=0THEN kopplgundlvsCAT aktlvFI ;anfposINCR 8;endposINCR 8;
FI ;position:=pos(kopplgnprozeit,aktkopplg,position+1);PER ;ELSE kopplgundlvs
:=niltextFI ;tCAT text(text(kopplgundlvs,laengeeinerkopplung),
konstkopplungsbreite);ptraktlv:=laengeeinerkopplung+1;ELSE tCAT
konstkopplungsbreite*blankFI ;tCAT spaltentrenner;standardmeldung(
meldnrinbearbeitung,"Jahrgangsstufe: "+jgstbez+" Wochentag: "+tag+"#");FI ;
aktstd:=(tagzaehler-1)*letztestdmofr+stundenzaehler;FOR spaltenzaehlerFROM 1
UPTO anzahlspaltenREP IF ausgewaehlteuebersichtsart=artsek2THEN IF ptraktlv<=
length(kopplgundlvs)THEN lv:=subtext(kopplgundlvs,ptraktlv,ptraktlv+
laengeeinerlv-1);ptraktlvINCR laengeeinerlv;planeintraglesen(aktstd,kennung,
lv,lv,rm,par);rm:=8*blank+rm;t1:=subtext(lv,anfposfachinlv,endeposfachinlv);
t1CAT blank;t1CAT subtext(lv,anfposkennunginlv);t1CAT trennstrichfuerlv;t1
CAT par;ELSE t1:=niltext;par:=niltext;rm:=niltext;FI ;ELSE planeintraglesen(
aktstd,kennung,spaltenueberschrift[spaltenzaehler],lv,rm,par);IF lv=niltext
THEN t1:=niltextELSE IF ausgewaehlteuebersichtsart=artsek1THEN IF length(lv)>
laengeeinerlvTHEN lv:=text(lv,laengeeinerlv);t1:=datenzurlv("K",lv);rm:=
niltext;ELSE t1:=blank;t1CAT subtext(lv,anfposfachinlv,endeposfachinlv);t1
CAT blank;t1CAT par;FI ;rm:=4*blank+rmELSE t1:=text(lv,endeposjgstinlv);t1
CAT blank;t1CAT subtext(lv,anfposfachinlv,endeposfachinlv);t1CAT blank;t1CAT
subtext(lv,anfposkennunginlv);FI ;FI ;FI ;tCAT text(t1,varspbreite);tCAT
spaltentrenner;IF zweizeiligTHEN IF ausgewaehlteuebersichtsart=artraeumeTHEN
zusatzangabe[spaltenzaehler]:=parELSE zusatzangabe[spaltenzaehler]:=rmFI ;
zusatzangabe[spaltenzaehler]:=text(zusatzangabe[spaltenzaehler],varspbreite);
FI ;PER ;druckzeileschreiben(t);zeilenzaehlerINCR 1;IF zeilenzaehler=
drucklaenge(ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler:=
zeilebeianfangneueseite;IF zweizeiligCOR tagzaehler<letztertagCOR
stundenzaehler<min(bisstd,letztestdsa)COR (ausgewaehlteuebersichtsart=artsek2
AND ptraktlv<=length(kopplgundlvs))THEN druckkopfschreiben;
druckespaltenueberschriften(spaltenueberschrift);drucketrennstrich;FI ;FI ;
IF zweizeiligTHEN t:=leereerstespalte;IF ausgewaehlteuebersichtsart=artsek2
THEN tCAT konstkopplungsbreite*blank;tCAT spaltentrenner;FI ;FOR
spaltenzaehlerFROM 1UPTO anzahlspaltenREP tCAT zusatzangabe[spaltenzaehler];t
CAT spaltentrenner;PER ;druckzeileschreiben(t);zeilenzaehlerINCR 1;IF
zeilenzaehler=drucklaenge(ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler
:=zeilebeianfangneueseite;IF tagzaehler<letztertagCOR stundenzaehler<min(
bisstd,letztestdsa)COR (ausgewaehlteuebersichtsart=artsek2AND ptraktlv<=
length(kopplgundlvs))THEN druckkopfschreiben;druckespaltenueberschriften(
spaltenueberschrift);drucketrennstrich;FI ;FI ;FI ;IF
ausgewaehlteuebersichtsart=artsek2THEN stundenochnichtfertig:=ptraktlv<=
length(kopplgundlvs)ELSE stundenochnichtfertig:=FALSE FI ;erstezeilederstunde
:=FALSE ;PER .evtlseitenumbruchwgueberlaenge:IF zeilenzaehler=drucklaenge(
ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler:=zeilebeianfangneueseite;
IF tagzaehler<letztertagTHEN druckkopfschreiben;druckespaltenueberschriften(
spaltenueberschrift);drucketrennstrich;FI ;FI .
evtlseitenumbruchwgtageszahljeseite:IF tagzaehlerMOD anzahltage=0AND
zeilenzaehler>zeilebeianfangneueseiteTHEN seitenwechsel;zeilenzaehler:=
zeilebeianfangneueseite;IF tagzaehler<letztertagTHEN druckkopfschreiben;
druckespaltenueberschriften(spaltenueberschrift);drucketrennstrich;FI ;FI .
END PROC bereitetabelleninderdruckdateiauf;PROC bereitetabellefuerzeitenauf:
BOOL VAR erstezeilederstunde:=TRUE ;TEXT VAR stringkopplungen,stringparaphen,
stringraeume;INT VAR ptraktkopplung,ptraktparaphe,ptraktraum;ROW
maxanzspaltenTEXT VAR spaltenueberschrift;INT VAR zeilenzaehler,
stundenzaehler,spaltenzaehler;TEXT VAR t;bestimmespaltenueberschriften;
druckvorbereiten;druckkopfschreiben;druckespaltenueberschriften(
spaltenueberschrift);drucketrennstrich;zeilenzaehler:=zeilebeianfangneueseite
;FOR stundenzaehlerFROM vonstdUPTO bisstdREP IF stundenzaehler=vonstdOR
stundenzaehlerMOD letztestdmofr=1THEN SELECT (stundenzaehler-1)DIV
letztestdmofrOF CASE 0:tag:=textmontag;CASE 1:tag:=textdienstag;CASE 2:tag:=
textmittwoch;CASE 3:tag:=textdonnerstag;CASE 4:tag:=textfreitag;CASE 5:tag:=
textsamstag;END SELECT ;standardmeldung(meldnrinbearbeitung,"Wochentag : "+
tag+"#");FI ;bereitezeileneinerstundeauf;evtltrennstrichdrucken;PER ;
druckenfertig:=TRUE ;.bestimmespaltenueberschriften:FOR spaltenzaehlerFROM 1
UPTO anzahlspaltenREP spaltenueberschrift[spaltenzaehler]:=
ueberschriftbeiart5;PER ;.evtltrennstrichdrucken:IF (stundenzaehlerMOD
letztestdmofr=0OR stundenzaehler=bisstd)AND zeilenzaehler>
zeilebeianfangneueseiteTHEN drucketrennstrich;zeilenzaehlerINCR 1;IF
zeilenzaehler=drucklaenge(ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler
:=zeilebeianfangneueseite;IF stundenzaehler<bisstdTHEN druckkopfschreiben;
druckespaltenueberschriften(spaltenueberschrift);drucketrennstrich;FI ;FI FI
;.bereitezeileneinerstundeauf:listeallerobjekte:=datenderzeit(stundenzaehler,
"L");ptraktobjekt:=1;stringkopplungen:=datenderzeit(stundenzaehler,"K");
ptraktkopplung:=1;stringparaphen:=datenderzeit(stundenzaehler,"P");
ptraktparaphe:=1;stringraeume:=datenderzeit(stundenzaehler,"R");ptraktraum:=1
;erstezeilederstunde:=TRUE ;WHILE ptraktobjekt<=length(listeallerobjekte)OR
erstezeilederstundeREP IF erstezeilederstundeOR zeilenzaehler=
zeilebeianfangneueseiteTHEN t:=tag;tCAT blank;tCAT text((stundenzaehler-1)
MOD letztestdmofr+1,2);tCAT blank;tCAT spaltentrenner;erstezeilederstunde:=
FALSE ELSE t:=leereerstespalteFI ;FOR spaltenzaehlerFROM 1UPTO anzahlspalten
REP IF ptraktobjekt>length(listeallerobjekte)THEN tCAT konstkopplungsbreite*
blank;tCAT trennstrichfuerlv;tCAT 4*blank;tCAT trennstrichfuerlv;tCAT 4*blank
;tCAT trennstrichfuerlv;tCAT konstkopplungsbreite*blank;tCAT spaltentrenner;
ELSE tCAT subtext(listeallerobjekte,ptraktobjekt,ptraktobjekt+laengeeinerlv-1
);tCAT trennstrichfuerlv;ptraktobjektINCR laengeeinerlv;tCAT subtext(
stringraeume,ptraktraum,ptraktraum+laengeeinesraumes-1);tCAT
trennstrichfuerlv;ptraktraumINCR laengeeinesraumes;tCAT subtext(
stringparaphen,ptraktparaphe,ptraktparaphe+laengeeinerparaphe-1);tCAT
trennstrichfuerlv;ptraktparapheINCR laengeeinerparaphe;tCAT subtext(
stringkopplungen,ptraktkopplung,ptraktkopplung+laengeeinerkopplung-1);tCAT
spaltentrenner;ptraktkopplungINCR laengeeinerkopplung;FI ;PER ;
druckzeileschreiben(t);zeilenzaehlerINCR 1;evtlseitenumbruchwgueberlaenge;
PER .evtlseitenumbruchwgueberlaenge:IF zeilenzaehler=drucklaenge(
ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler:=zeilebeianfangneueseite;
IF stundenzaehler<bisstdCOR listeallerobjekte<>niltextTHEN druckkopfschreiben
;druckespaltenueberschriften(spaltenueberschrift);drucketrennstrich;FI ;FI ;.
END PROC bereitetabellefuerzeitenauf;END PACKET stdpluebersichten;