PACKET anschrunterrichtsvertlgfuerlehrerDEFINES unterrichtsvertlgfuerlehrereingang,unterrichtsvertlgfuerlehrerstarten, unterrichtsvertlgfuerlehrersonderwerte,unterrichtsvertlgfuerlehrermultistop, unterrichtsvertlgfuerlehrerdruckdateibauen:LET maske= "ms unterrichtsverteilung fuer lehrer drucken",fnrparaphe=2,fnrzeitwuensche=3 ,fnraktsj=4,fnrbsausgabe=5,fnrdrausgabe=6,mnrbittewarten=69, mnrkeinegueltigeparaphe=344,mnrlistewirdaufbereitet=190,trenner="/",blank=" " ,niltext="";TEXT CONST v1datlehrer:="vordruck1 unterrichtsvertlg fuer lehrer" ,v2datlehrveranstgn:="vordruck2 unterrichtsvertlg fuer lehrer", v3dataktschuelergr:="vordruck4 auskunft lehrer",v4datzeitwuensche:= "vordruck5 auskunft lehrer",bestandnamepersoenlermaessigung:= "c02 persoenl ermaess";LET swsj=520,swhj=521,swanrede=522, swermaessgrund1langtext=530,swermaessgrund2langtext=531, swermaessgrund3langtext=532,swermaessgrund4langtext=533,swfach=534,swkennung= 535,swwstd=536,swdummy=526,ganztage=520,ganzgew=521,vormtage=522,vormgew=523, nachtage=524,nachgew=525;BOOL VAR bildschirmausgabe,mitzeitwuenschen, einzelbearbeitung,aktsj;TEXT VAR angegebeneparaphe:="",aktparaphe,halbjahr, schuljahr,wochstdn,fachkennung;INT VAR gemerkterdbstatus,status,sollstdn, differenz,summewochstdn:=0,zeilenhilfszahl,zeilenzahl,zusatzzeilen, swaktklassenleiter,swaktstellvertreter;BOOL PROC paraphevorhanden:putwert( fnrlparaphe,angegebeneparaphe);search(dnrlehrer,TRUE );IF dbstatus=0THEN TRUE ELSE FALSE FI END PROC paraphevorhanden;PROC unterrichtsvertlgfuerlehrereingang:standardvproc(maske)END PROC unterrichtsvertlgfuerlehrereingang;PROC unterrichtsvertlgfuerlehrerstarten: standardpruefe(5,fnrbsausgabe,fnrdrausgabe,0,"",status);IF status<>0THEN infeld(status);return(1);ELSE angegebeneparaphe:=standardmaskenfeld( fnrparaphe);IF angegebeneparaphe=niltextCOR paraphevorhandenTHEN bildschirmausgabe:=standardmaskenfeld(fnrbsausgabe)<>niltext; einzelbearbeitung:=standardmaskenfeld(fnrparaphe)<>niltext;mitzeitwuenschen:= standardmaskenfeld(fnrzeitwuensche)<>niltext;aktsj:=standardmaskenfeld( fnraktsj)<>niltext;aktparaphe:=angegebeneparaphe;startenausfuehrenELSE standardmeldung(mnrkeinegueltigeparaphe,niltext);return(1)FI ;FI . startenausfuehren:halbjahr:=schulkenndatum("Schulhalbjahr");schuljahr:= schulkenndatum("Schuljahr");IF NOT (aktsj)THEN geplanteshjundsjberechnen( halbjahr,schuljahr);FI ;setzesonderwerteschulkenndaten;setzewerte; standardmeldung(mnrbittewarten,niltext);zusammengesetztesanschreiben( dnrlehrer,bildschirmausgabe,einzelbearbeitung,BOOL PROC unterrichtsvertlgfuerlehrersonderwerte,BOOL PROC unterrichtsvertlgfuerlehrermultistop,TEXT PROC unterrichtsvertlgfuerlehrerdruckdateibauen).setzewerte:putwert(fnrlparaphe, aktparaphe)END PROC unterrichtsvertlgfuerlehrerstarten;BOOL PROC unterrichtsvertlgfuerlehrermultistop:BOOL VAR ok;IF einzelbearbeitungTHEN ok :=angegebeneparaphe=wert(fnrlparaphe)AND dbstatus=0ELSE ok:=dbstatus=0FI ;ok END PROC unterrichtsvertlgfuerlehrermultistop;BOOL PROC unterrichtsvertlgfuerlehrersonderwerte:TEXT VAR grund1,grund2,grund3,grund4; initialisieresonderwerte;aktparaphe:=wert(fnrlparaphe);adressat(aktparaphe); gemerkterdbstatus:=dbstatus;setzesonderwert(swsj,subtext(schuljahr,1,2)+ trenner+subtext(schuljahr,3,4));setzesonderwert(swhj,halbjahr);TEXT VAR anredetext;IF wert(fnrlgeschlecht)="m"THEN anredetext:="Herrn"ELSE anredetext :="Frau";FI ;setzesonderwert(swanrede,anredetext);grund1:=wert(fnrlermgrund1) ;grund2:=wert(fnrlermgrund2);grund3:=wert(fnrlermgrund3);grund4:=wert( fnrlermgrund4);sollstdn:=intwert(fnrlsollstd);inittupel(dnrschluessel); putwert(fnrschlsachgebiet,bestandnamepersoenlermaessigung);putwert( fnrschlschluessel,grund1);search(dnrschluessel,TRUE );IF dbstatus=0THEN setzesonderwert(swermaessgrund1langtext,wert(fnrschllangtext))ELSE setzesonderwert(swermaessgrund1langtext,blank)FI ;putwert(fnrschlschluessel, grund2);search(dnrschluessel,TRUE );IF dbstatus=0THEN setzesonderwert( swermaessgrund2langtext,wert(fnrschllangtext));ELSE setzesonderwert( swermaessgrund2langtext,blank);FI ;putwert(fnrschlschluessel,grund3);search( dnrschluessel,TRUE );IF dbstatus=0THEN setzesonderwert( swermaessgrund3langtext,wert(fnrschllangtext))ELSE setzesonderwert( swermaessgrund3langtext,blank)FI ;putwert(fnrschlschluessel,grund4);search( dnrschluessel,TRUE );IF dbstatus=0THEN setzesonderwert( swermaessgrund4langtext,wert(fnrschllangtext))ELSE setzesonderwert( swermaessgrund4langtext,blank)FI ;inittupel(dnrlehrveranstaltungen);putwert( fnrlvsj,schuljahr);putwert(fnrlvhj,halbjahr);putwert(fnrlvparaphe,aktparaphe) ;search(ixlvsjhjpar,TRUE );IF dbstatus=0THEN fachkennung:=wert( fnrlvfachkennung);wochstdn:=wert(fnrlvwochenstd);setzesonderwert(swfach, subtext(fachkennung,1,2));setzesonderwert(swkennung,subtext(fachkennung,3,6)) ;setzesonderwert(swwstd,wochstdn);summewochstdn:=int(wochstdn);ELSE setzesonderwert(swfach,blank);setzesonderwert(swkennung,blank); setzesonderwert(swwstd,blank);summewochstdn:=0;FI ;dbstatus(gemerkterdbstatus );TRUE END PROC unterrichtsvertlgfuerlehrersonderwerte;TEXT PROC unterrichtsvertlgfuerlehrerdruckdateibauen:LET druckdatei="liste.1", hilfsdatei="hilfsdatei";TEXT VAR zeile;zeilenzahl:=0;zusatzzeilen:=0; vordruckeholen;setzemitseitennummern(TRUE );druckvorbereiten;standardmeldung( mnrlistewirdaufbereitet,niltext);briefalternative(v1datlehrer,hilfsdatei); hilfsdateiindruckdatei(hilfsdatei);vordruck2ggfxmalindruckdatei;zeile:=blank; druckzeileschreiben(zeile);zeilenzahlINCR 1;zeile:=42*blank+"Wstd. Summe: "+ text(summewochstdn,2);druckzeileschreiben(zeile);zeilenzahlINCR 1;IF sollstdn <>summewochstdnTHEN differenz:=sollstdn-summewochstdn;IF differenz<0THEN zeile:=43*blank+"Mehrarbeit: "+text(-differenz,2)+" Std.";ELSE zeile:=24* blank+"Sollstunden unterschritten um: "+text(differenz,2)+" Std.";FI ; druckzeileschreiben(zeile);zeilenzahlINCR 1;FI ;zeilenzahl:=5; vordruck3ggfindruckdatei;IF mitzeitwuenschenTHEN zeilenzahl:=17; vordruck4ggfindruckdatei;FI ;drucknachbereitenohneausdrucken; vordruckeloeschen;druckdatei.vordruckeholen:fetch(v1datlehrer,/ "anschreiben server");fetch(v2datlehrveranstgn,/"anschreiben server");fetch( v3dataktschuelergr,/"anschreiben server");fetch(v4datzeitwuensche,/ "anschreiben server");.vordruckeloeschen:forget(v1datlehrer,quiet);forget( v2datlehrveranstgn,quiet);forget(v3dataktschuelergr,quiet);forget( v4datzeitwuensche,quiet);END PROC unterrichtsvertlgfuerlehrerdruckdateibauen; PROC vordruck2ggfxmalindruckdatei:TEXT VAR hilfsdatei:="hilfsdatei";BOOL VAR hilfsdateida:=FALSE ;succ(ixlvsjhjpar);WHILE dbstatus=0AND wert(fnrlvparaphe) =aktparapheREP fachkennung:=wert(fnrlvfachkennung);wochstdn:=subtext(wert( fnrlvwochenstd),1,2);setzesonderwert(swfach,subtext(fachkennung,1,2)); setzesonderwert(swkennung,subtext(fachkennung,3,6));setzesonderwert(swwstd, wochstdn);summewochstdnINCR int(wochstdn);briefalternative(v2datlehrveranstgn ,hilfsdatei);succ(ixlvsjhjpar);hilfsdateida:=TRUE ;PER ;IF hilfsdateidaTHEN hilfsdateiindruckdatei(hilfsdatei)FI ;END PROC vordruck2ggfxmalindruckdatei; PROC vordruck3ggfindruckdatei:LET hilfsdatei="hilfsdatei";TEXT VAR aufberwert :=niltext;BOOL VAR hilfsdateiangelegt:=FALSE ;setzesonderwert(swdummy,blank); swaktklassenleiter:=580;swaktstellvertreter:=581;gemerkterdbstatus:=dbstatus; inittupel(dnraktschuelergruppen);putwert(fnrsgrpsj,schuljahr);putwert( fnrsgrphj,halbjahr);search(dnraktschuelergruppen,FALSE );WHILE dbstatus=0AND wert(fnrsgrphj)=halbjahrREP IF wert(fnrsgrplehrer)=aktparapheAND swaktklassenleiter<590THEN aufberwert:=wert(fnrsgrpjgst);aufberwertCAT wert( fnrsgrpkennung);setzesonderwert(swaktklassenleiter,aufberwert); swaktklassenleiterINCR 2;hilfsdateiangelegt:=TRUE ;ELSE IF wert( fnrsgrpstellvlehrer)=aktparapheAND swaktstellvertreter<591THEN aufberwert:= wert(fnrsgrpjgst);aufberwertCAT wert(fnrsgrpkennung);setzesonderwert( swaktstellvertreter,aufberwert);swaktstellvertreterINCR 2;hilfsdateiangelegt :=TRUE ;FI ;FI ;succ(dnraktschuelergruppen)PER ;IF hilfsdateiangelegtTHEN briefalternative(v3dataktschuelergr,hilfsdatei);hilfsdateiindruckdatei( hilfsdatei);FI ;dbstatus(gemerkterdbstatus)END PROC vordruck3ggfindruckdatei; PROC vordruck4ggfindruckdatei:gemerkterdbstatus:=dbstatus;LET hilfsdatei= "hilfsdatei";TEXT VAR zeitwuensche;initialisieresonderwerte;INT VAR aktswzeitwunsch:=531,position:=1,i;setzesonderwert(swdummy,blank);inittupel( dnrzeitwuensche);putwert(fnrzwsj,schuljahr);putwert(fnrzwhj,halbjahr);putwert (fnrzwbezug,"P");putwert(fnrzwbezugsobjekt,aktparaphe);search(dnrzeitwuensche ,TRUE );IF dbstatus=0THEN zeitwuensche:=wert(fnrzwunbestimmtewuensche); setzesonderwert(ganztage,zeitwuenscheSUB 1);setzesonderwert(ganzgew, zeitwuenscheSUB 3);setzesonderwert(vormtage,zeitwuenscheSUB 4); setzesonderwert(vormgew,zeitwuenscheSUB 6);setzesonderwert(nachtage, zeitwuenscheSUB 7);setzesonderwert(nachgew,zeitwuenscheSUB 9);zeitwuensche:= wert(fnrzwbestimmtewuensche);FOR iFROM 1UPTO 66REP setzesonderwert( aktswzeitwunsch,subtext(zeitwuensche,position,position+1));aktswzeitwunsch INCR 1;positionINCR 2PER ;briefalternative(v4datzeitwuensche,hilfsdatei); hilfsdateiindruckdatei(hilfsdatei);FI ;dbstatus(gemerkterdbstatus)END PROC vordruck4ggfindruckdatei;PROC hilfsdateiindruckdatei(TEXT CONST hilfsdatei): FILE VAR f;INT VAR i;TEXT VAR zeile;f:=sequentialfile(input,hilfsdatei); zeilenhilfszahl:=lines(f);IF zeilenzahl+zeilenhilfszahl+zusatzzeilen>= drucklaengeTHEN seitenwechsel;zeilenzahl:=0;FI ;FOR iFROM 1UPTO zeilenhilfszahlREP getline(f,zeile);druckzeileschreiben(zeile)PER ;forget( hilfsdatei,quiet);zeilenzahlINCR zeilenhilfszahlEND PROC hilfsdateiindruckdatei;END PACKET anschrunterrichtsvertlgfuerlehrer