From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- app/schulis/2.2.1/src/4.stdpluebersichten | 425 ++++++++++++++++++++++++++++++ 1 file changed, 425 insertions(+) create mode 100644 app/schulis/2.2.1/src/4.stdpluebersichten (limited to 'app/schulis/2.2.1/src/4.stdpluebersichten') 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 vonstdletztestdmofr) +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 bisstdletztestdmofr) +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)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 tagzaehlerzeilebeianfangneueseiteTHEN seitenwechsel;zeilenzaehler:= +zeilebeianfangneueseite;IF tagzaehler +zeilebeianfangneueseiteTHEN drucketrennstrich;zeilenzaehlerINCR 1;IF +zeilenzaehler=drucklaenge(ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler +:=zeilebeianfangneueseite;IF stundenzaehlerlength(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 stundenzaehlerniltextTHEN druckkopfschreiben +;druckespaltenueberschriften(spaltenueberschrift);drucketrennstrich;FI ;FI ;. +END PROC bereitetabellefuerzeitenauf;END PACKET stdpluebersichten; + -- cgit v1.2.3