summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.einhaltung zeitwuensche pruefen
diff options
context:
space:
mode:
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 pruefen195
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
+