diff options
Diffstat (limited to 'app/schulis/2.2.1/src/4.einhaltung zeitwuensche pruefen')
-rw-r--r-- | app/schulis/2.2.1/src/4.einhaltung zeitwuensche pruefen | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/4.einhaltung zeitwuensche pruefen b/app/schulis/2.2.1/src/4.einhaltung zeitwuensche pruefen new file mode 100644 index 0000000..6e953d3 --- /dev/null +++ b/app/schulis/2.2.1/src/4.einhaltung zeitwuensche pruefen @@ -0,0 +1,195 @@ +PACKET einhaltungzeitwuenschepruefenDEFINES zeitwuenschepruefenausfuehren: +LET dateiname="Liste zur Einhaltung der Zeitwünsche",trenner="198", +letztestunde=66,fldlehrer=2,fldsugrup=3,fldraeume=4,fldfaecher=5, +fldkopplungen=6,fldakthalbj=7,meldungwarten=69,meldungbearbwird=352,# +meldungkeinelehrer=337,meldungkeineraeume=365,#meldungkeinefaecher=68, +meldungkeinzeitraster=336,meldungkeinezeitwuensche=389,meldungserverfehler= +376,meldungkeinstdplan=366,meldungkeinesugruppen=334,meldungzuvielesugruppen= +356,meldungkeinelv=326,meldungzuvielelv=358,meldungbasisinkon=378, +meldungstdplauswvorber=384,posanzut=1,posgewut=3,posanzvm=4,posgewvm=6, +posanznm=7,posgewnm=9,ausgfreipos=2,ausganzpos=11,ausggewpos=18,ausgnerfpos= +27,ausgabeparam="#",ausgnerf="*",minus="-",plus="+",leerzeile=" ",kennzlehrer +="P",kennzsugrup="S",kennzraeume="R",kennzfaecher="F",kennzlv="L",kennzkoppl= +"K",moeintrag="Mo ",dieintrag="Di ",mieintrag="Mi ",doeintrag="Do ", +freintrag="Fr ",saeintrag="Sa ",anhangl="Lehrer ",anhangs="Schülergruppen " +,anhangr="Räume ",anhangf="Fächer ",anhangk="Kopplungen ",ueberschrift= +"Liste zur Einhaltung der Zeitwünsche für ",unterstrich= +"-------------------------------------------------",leererunbestwunsch= +" ",kennungvorm="v",kennungnachm="n",schuljahr="Schuljahr", +schulhalbjahr="Schulhalbjahr",schulname="Schulname",schulort="Schulort", +anzgewichte=6,anzunterrichtstage=6,anzvormittage=6,anznachmittage=5, +anzsamstagstunden=6,anzunterrichtsstunden=12;FILE VAR datei;INT VAR hjkennneu +:=0,hjkennalt:=-1;INT VAR i,j,fstat,fall,anztage,anzvorm,anznachm;TEXT VAR +schj,schhj,kenn,plan:="",anhang,faecherkatalog:=trenner;TEXT VAR bestwzeile, +unbestwtage,unbestwvorm,unbestwnachm,bestwurzeile:= +" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _"+ +" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ "+ +" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ "+ +"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ";TEXT VAR +moobjeintrag,diobjeintrag,miobjeintrag,doobjeintrag,frobjeintrag,saobjeintrag +;BOOL VAR keinezeitwuensche:=TRUE ;ROW 4ROW anzgewichteINT VAR +anzwuenschegesamt;ROW 4ROW anzgewichteINT VAR anznerfwuensche;PROC +zeitwuenschepruefenausfuehren:keinezeitwuensche:=TRUE ;kenn:=""; +standardmeldung(meldungwarten,"");pruefeeingangsmaske;pruefehalbjahr; +zeitwuenschevorhanden;IF halbjahrveraendertTHEN hjkennalt:=hjkennneu; +holestundenplan;erstellezeitrasterFI ;erstelleliste;IF keinezeitwuenscheTHEN +fehlerkeinezeitwuenscheELSE zeigedatei(dateiname,"vr")FI .halbjahrveraendert: +hjkennneu<>hjkennalt.pruefeeingangsmaske:standardpruefe(5,2,6,0,"",fstat);IF +fstat<>0THEN infeld(fstat);return(1);LEAVE zeitwuenschepruefenausfuehrenELIF +standardmaskenfeld(fldlehrer)<>""THEN fall:=fldlehrer;anhang:=anhangl;kenn:= +kennzlehrerELIF standardmaskenfeld(fldsugrup)<>""THEN fall:=fldsugrup;anhang +:=anhangs;kenn:=kennzsugrupELIF standardmaskenfeld(fldraeume)<>""THEN fall:= +fldraeume;anhang:=anhangr;kenn:=kennzraeume;pruefefaecherELIF +standardmaskenfeld(fldfaecher)<>""THEN fall:=fldfaecher;anhang:=anhangf;kenn +:=kennzfaecher;IF faecherkatalog=trennerTHEN holallefaecherFI ;ELIF +standardmaskenfeld(fldkopplungen)<>""THEN fall:=fldkopplungen;anhang:=anhangk +;kenn:=kennzkopplFI .holallefaecher:inittupel(dnrfaecher);statleseschleife( +dnrfaecher,"","",fnrffach,fnrffach,PROC faecher).pruefefaecher:IF records( +dnrfaecher)=0.0THEN fehlerkeinefaecherFI .pruefehalbjahr:schj:=schulkenndatum +(schuljahr);schhj:=schulkenndatum(schulhalbjahr);IF standardmaskenfeld( +fldakthalbj)=""THEN geplanteshjundsjberechnen(schhj,schj);hjkennneu:=1ELSE +hjkennneu:=0FI .holestundenplan:standardmeldung(meldungstdplauswvorber,""); +stundenplanhalbjahrsetzen(schhj,schj);stundenplanbasisundstundenplanholen( +fstat);IF fstat<>0CAND fstat<>8THEN meldungausgeben(fstat);return(1);LEAVE +zeitwuenschepruefenausfuehrenFI .erstellezeitraster:plan:="";IF records( +dnrzeitraster)=0.0THEN fehlerzeitrasternichtvollstdELSE inittupel( +dnrzeitraster);statleseschleife(dnrzeitraster,schj,schhj,fnrzrsj,fnrzrhj, +PROC zeitrasterdaten)FI ;IF length(plan)<letztestundeTHEN +fehlerzeitrasternichtvollstdFI .zeitwuenschevorhanden:IF records( +dnrzeitwuensche)=0.0THEN fehlerkeinezeitwuenscheFI . +fehlerzeitrasternichtvollstd:standardmeldung(meldungkeinzeitraster,"");return +(1);LEAVE zeitwuenschepruefenausfuehren.fehlerkeinefaecher:standardmeldung( +meldungkeinefaecher,"");return(1);LEAVE zeitwuenschepruefenausfuehren. +fehlerkeinezeitwuensche:standardmeldung(meldungkeinezeitwuensche,"");return(1 +);LEAVE zeitwuenschepruefenausfuehren.END PROC zeitwuenschepruefenausfuehren; +PROC erstelleliste:bereitedateiauf;initialisiererow;inittupel(dnrzeitwuensche +);putwert(fnrzwbezug,kenn);statleseschleife(dnrzeitwuensche,schj,schhj, +fnrzwsj,fnrzwhj,PROC zeitwuenschelisten);bereitestatistikauf.bereitedateiauf: +forget(dateiname,quiet);datei:=sequentialfile(output,dateiname);putline(datei +,schulkenndatum(schulname));putline(datei,text(schulkenndatum(schulort),65)+ +date);putline(datei,leerzeile);putline(datei,ueberschrift+anhang+schhj+". "+ +text(schj,2)+"/"+subtext(schj,3));putline(datei,unterstrich+length(anhang)* +"-");putline(datei,leerzeile).initialisiererow:FOR iFROM 1UPTO 4REP FOR j +FROM 1UPTO anzgewichteREP anzwuenschegesamt(i)(j):=0;anznerfwuensche(i)(j):=0 +PER ;PER .bereitestatistikauf:putline(datei,"#page#");putline(datei, +"Endstatistik:");putline(datei,leerzeile);putline(datei,leerzeile); +gibwerteaus(" Stunden ",1);gibwerteaus(" ganze Tage ",2);gibwerteaus( +" Vormittage ",3);gibwerteaus(" Nachmittage",4).END PROC erstelleliste; +PROC gibwerteaus(TEXT CONST objekt,INT CONST row):putline(datei, +"Anzahl Gewichte Summe ");putline(datei, +objekt+" -3 -2 -1 +1 +2 +3 ");putline(datei, +"--------------+-----+-----+-----+-----+-----+-----+------");putline(datei, +"gesamt "+werte(row,TRUE ));putline(datei,"erfüllt "+erfuelltwerte +(row));putline(datei,"nicht erfüllt"+werte(row,FALSE ));putline(datei, +leerzeile);putline(datei,leerzeile).END PROC gibwerteaus;TEXT PROC werte(INT +CONST row,BOOL CONST allewerte):TEXT VAR ausgabe:="";INT VAR summe:=0,eintrag +;IF allewerteTHEN FOR iFROM 1UPTO anzgewichteREP eintrag:=anzwuenschegesamt( +row)(i);summeINCR eintrag;ausgabeCAT text(eintrag,6)PER ELSE FOR iFROM 1UPTO +anzgewichteREP eintrag:=anznerfwuensche(row)(i);summeINCR eintrag;ausgabeCAT +text(eintrag,6)PER FI ;ausgabeCAT text(summe,6);ausgabeEND PROC werte;TEXT +PROC erfuelltwerte(INT CONST row):TEXT VAR ausgabe:="";INT VAR summe:=0, +gesamt,nerf,erf;FOR iFROM 1UPTO anzgewichteREP gesamt:=anzwuenschegesamt(row) +(i);nerf:=anznerfwuensche(row)(i);erf:=gesamt-nerf;summeINCR erf;ausgabeCAT +text(erf,6)PER ;ausgabeCAT text(summe,6);ausgabeEND PROC erfuelltwerte;PROC +zeitwuenschelisten(BOOL VAR b):IF wert(fnrzwsj)<>schjCOR wert(fnrzwhj)<>schhj +COR wert(fnrzwbezug)<>kennCOR dbstatus<>0THEN b:=TRUE ELSE IF +keinezeitwuenscheTHEN keinezeitwuensche:=FALSE FI ;bereiteobjektauf(wert( +fnrzwbezugsobjekt))FI END PROC zeitwuenschelisten;PROC bereiteobjektauf(TEXT +CONST objekt):TEXT VAR bestwunsch,unbestwunsch;INT VAR suchpos:=1,freietage, +freievorm,freienachm,wnerf,wanz;TEXT VAR wunsch:="";standardmeldung( +meldungbearbwird,objekt+ausgabeparam);IF kenn=kennzfaecherTHEN IF pos( +faecherkatalog,trenner+objekt+trenner)=0THEN fehlereintragELSE listeneintrag +FI ELIF bezeichnungzulaessig(kenn,objekt)THEN listeneintragELSE fehlereintrag +FI .fehlereintrag:putline(datei,objekt+": (ungültige Bezeichnung)");putline +(datei,leerzeile).listeneintrag:moobjeintrag:=moeintrag;diobjeintrag:= +dieintrag;miobjeintrag:=mieintrag;doobjeintrag:=doeintrag;frobjeintrag:= +freintrag;saobjeintrag:=saeintrag;uebertragwuensche;putline(datei,objekt+":") +;putline(datei,leerzeile);putline(datei,"Wünsche zu festen Zeiten:");putline( +datei,"(nicht erfüllte sind mit * markiert)");putline(datei, +" 1 2 3 4 5 6 7 8 9 10 11 12");putline(datei, +moobjeintrag+text(bestwzeile,48));putline(datei,diobjeintrag+subtext( +bestwzeile,49,96));putline(datei,miobjeintrag+subtext(bestwzeile,97,144)); +putline(datei,doobjeintrag+subtext(bestwzeile,145,192));putline(datei, +frobjeintrag+subtext(bestwzeile,193,240));putline(datei,saobjeintrag+subtext( +bestwzeile,241));putline(datei,leerzeile);putline(datei, +" im Plan allgemeine Wünsche:");putline(datei, +" frei Anzahl/Gewicht nicht erfüllt");putline(datei, +"ganze Tage "+unbestwtage);putline(datei,"zusätzl. Vorm. "+unbestwvorm) +;putline(datei,"zusätzl. Nachm. "+unbestwnachm);putline(datei,leerzeile); +putline(datei,leerzeile).uebertragwuensche:bestwunsch:=wert( +fnrzwbestimmtewuensche);unbestwunsch:=wert(fnrzwunbestimmtewuensche); +bestwzeile:=bestwurzeile;unbestwtage:=" _ _ _ _ "; +unbestwvorm:=" _ _ _ _ ";unbestwnachm:= +" _ _ _ _ ";tragbestwuenscheein;tragunbestwuenscheein. +tragbestwuenscheein:suchpos:=1;WHILE suchpos<>0REP suchpos:=pos(bestwunsch, +minus,suchpos);IF suchpos<>0THEN wunsch:=subtext(bestwunsch,suchpos,suchpos+1 +);zaehlebestwunsch(1,wunsch,TRUE );IF unterricht(objekt,suchposDIV 2+1)THEN +wunschCAT ausgnerf;zaehlebestwunsch(1,wunsch,FALSE )FI ;replace(bestwzeile, +suchpos*2-1,wunsch);suchposINCR 1FI ;PER ;suchpos:=1;WHILE suchpos<>0REP +suchpos:=pos(bestwunsch,plus,suchpos);IF suchpos<>0THEN wunsch:=subtext( +bestwunsch,suchpos,suchpos+1);zaehlebestwunsch(1,wunsch,TRUE );IF NOT ( +unterricht(objekt,suchposDIV 2+1))THEN wunschCAT ausgnerf;zaehlebestwunsch(1, +wunsch,FALSE )FI ;replace(bestwzeile,suchpos*2-1,wunsch);suchposINCR 1FI ; +PER .tragunbestwuenscheein:anztage:=0;anzvorm:=0;anznachm:=0; +ermittleunbestwdaten(objekt);freietage:=anzunterrichtstage-anztage;freievorm +:=anzvormittage-freietage-anzvorm;freienachm:=anznachmittage-freietage- +anznachm;replace(unbestwtage,ausgfreipos,text(freietage));replace(unbestwvorm +,ausgfreipos,text(freievorm));replace(unbestwnachm,ausgfreipos,text( +freienachm));IF unbestwunsch<>leererunbestwunschTHEN wunsch:=unbestwunschSUB +posanzut;IF wunsch<>" "THEN replace(unbestwtage,ausganzpos,wunsch)FI ;wanz:= +int(wunsch);IF freietage<wanzTHEN wnerf:=wanz-freietage;replace(unbestwtage, +ausgnerfpos,text(wnerf))ELSE wnerf:=0FI ;wunsch:=unbestwunschSUB posgewut;IF +wunsch<>" "THEN replace(unbestwtage,ausggewpos,wunsch)FI ;zaehleunbestwunsch( +2,wanz,wnerf,wunsch);wunsch:=unbestwunschSUB posanzvm;IF wunsch<>" "THEN +replace(unbestwvorm,ausganzpos,wunsch)FI ;wanz:=int(wunsch);IF freievorm<wanz +THEN wnerf:=wanz-freievorm;replace(unbestwvorm,ausgnerfpos,text(wnerf))ELSE +wnerf:=0FI ;wunsch:=unbestwunschSUB posgewvm;IF wunsch<>" "THEN replace( +unbestwvorm,ausggewpos,wunsch)FI ;zaehleunbestwunsch(3,wanz,wnerf,wunsch); +wunsch:=unbestwunschSUB posanznm;IF wunsch<>" "THEN replace(unbestwnachm, +ausganzpos,wunsch)FI ;wanz:=int(wunsch);IF freienachm<wanzTHEN wnerf:=wanz- +freienachm;replace(unbestwnachm,ausgnerfpos,text(wnerf))ELSE wnerf:=0FI ; +wunsch:=unbestwunschSUB posgewnm;IF wunsch<>" "THEN replace(unbestwnachm, +ausggewpos,wunsch)FI ;zaehleunbestwunsch(4,wanz,wnerf,wunsch);FI .END PROC +bereiteobjektauf;PROC ermittleunbestwdaten(TEXT CONST objekt):BOOL VAR +tagnichtgezaehlt:=TRUE ;INT VAR incr:=0,anz,zeitstd;anz:= +anzunterrichtsstunden;FOR iFROM 1UPTO anzunterrichtstage-1REP +tagnichtgezaehlt:=TRUE ;suchevormunterricht;suchenachmunterricht;incrINCR +anzunterrichtsstundenPER ;anz:=anzsamstagstunden;tagnichtgezaehlt:=TRUE ; +suchevormunterricht;suchenachmunterricht.suchevormunterricht:FOR jFROM 1UPTO +anzREP zeitstd:=incr+j;IF (planSUB zeitstd)=kennungvormTHEN IF unterricht( +objekt,incr+j)THEN anzvormINCR 1;anztageINCR 1;tagnichtgezaehlt:=FALSE ; +LEAVE suchevormunterrichtFI ;ELIF (planSUB zeitstd)=kennungnachmTHEN LEAVE +suchevormunterrichtFI ;PER .suchenachmunterricht:FOR jFROM anzDOWNTO 1REP +zeitstd:=incr+j;IF (planSUB zeitstd)=kennungnachmTHEN IF unterricht(objekt, +incr+j)THEN anznachmINCR 1;IF tagnichtgezaehltTHEN anztageINCR 1;LEAVE +suchenachmunterrichtFI ;FI ;ELIF (planSUB zeitstd)=kennungvormTHEN LEAVE +suchenachmunterrichtFI ;PER .END PROC ermittleunbestwdaten;PROC +zaehlebestwunsch(INT CONST rowindex,TEXT CONST wunsch,BOOL CONST erfuellt): +INT VAR gew;IF wunsch="-3"THEN gew:=1ELIF wunsch="-2"THEN gew:=2ELIF wunsch= +"-1"THEN gew:=3ELIF wunsch="+1"THEN gew:=4ELIF wunsch="+2"THEN gew:=5ELIF +wunsch="+3"THEN gew:=6FI ;IF erfuelltTHEN anzwuenschegesamt(rowindex)(gew) +INCR 1ELSE anznerfwuensche(rowindex)(gew)INCR 1FI END PROC zaehlebestwunsch; +PROC zaehleunbestwunsch(INT CONST rowindex,wanz,wnerf,TEXT CONST wunsch):INT +VAR gewicht;SELECT int(wunsch)OF CASE 3:gewicht:=1CASE 2:gewicht:=2OTHERWISE +gewicht:=3END SELECT ;anzwuenschegesamt(rowindex)(gewicht)INCR wanz;IF wnerf +<>0THEN anznerfwuensche(rowindex)(gewicht)INCR wnerfFI END PROC +zaehleunbestwunsch;BOOL PROC unterricht(TEXT CONST objekt,INT CONST zeit): +TEXT VAR lv,ra,par,daten;INT VAR spos,findpos;IF fall=fldsugrupCOR fall= +fldlehrerCOR fall=fldraeumeTHEN objektunterrichtELSE objektindatenderzeitFI . +objektunterricht:planeintraglesen(zeit,kenn,objekt,lv,ra,par);lv<>"". +objektindatenderzeit:IF fall=fldfaecherTHEN daten:=datenderzeit(zeit,kennzlv) +;findpos:=3ELSE daten:=datenderzeit(zeit,kenn);findpos:=1FI ;IF daten=""THEN +FALSE ELSE suchindatenFI .suchindaten:spos:=1;WHILE spos<>0REP spos:=pos( +daten,objekt,spos);IF spos<>0THEN IF (sposMOD 8)=findposTHEN LEAVE unterricht +WITH TRUE FI ;sposINCR 1FI ;PER ;FALSE .END PROC unterricht;PROC +zeitrasterdaten(BOOL VAR b):IF wert(fnrzrsj)<>schjCOR wert(fnrzrhj)<>schhj +COR dbstatus<>0THEN b:=TRUE ELSE planCAT wert(fnrzrkennungteil);FI END PROC +zeitrasterdaten;PROC faecher(BOOL VAR b):faecherkatalogCAT wert(fnrffach)+ +trennerEND PROC faecher;PROC meldungausgeben(INT VAR fstat):IF fstat=2THEN +standardmeldung(meldungserverfehler,"");ELIF fstat=3THEN standardmeldung( +meldungkeinstdplan,"");ELIF fstat=4THEN standardmeldung(meldungkeinesugruppen +,"");ELIF fstat=5THEN standardmeldung(meldungzuvielesugruppen,"")ELIF fstat=6 +THEN standardmeldung(meldungkeinelv,"")ELIF fstat=7THEN standardmeldung( +meldungzuvielelv,"")ELIF fstat=9THEN standardmeldung(meldungbasisinkon,""); +FI END PROC meldungausgeben;END PACKET einhaltungzeitwuenschepruefen + |