summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.stdpluebersichten
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/4.stdpluebersichten')
-rw-r--r--app/schulis/2.2.1/src/4.stdpluebersichten425
1 files changed, 425 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/4.stdpluebersichten b/app/schulis/2.2.1/src/4.stdpluebersichten
new file mode 100644
index 0000000..2c760c7
--- /dev/null
+++ b/app/schulis/2.2.1/src/4.stdpluebersichten
@@ -0,0 +1,425 @@
+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;
+