PACKET uvundkopplungenbearbeitenDEFINES uvukstdvproc,uvukspeichern,uvuklisten ,uvukvorjparaphe,uvukpruefbearb:LET ausknr=746,auskende="*",ra="c02 raeume", sj="Schuljahr",hj="Schulhalbjahr",eingmaske="ms eing uv und kopplungen", bearbmaske="ms bearb uv und kopplungen",kennzeichnungakt="aktuell", kennzeichnunggepl="geplant",ausgparam="#",leereparaphe="",trenner="�",bearbzl =18,letztesfld=163,anzeingfld=10,laengekopplung=8,laengejgst=2,laengefach=2, krlvjgst=2,fldjgst=3,krlvfa=4,fldfa=5,krlvkopp=6,fldkopp=7,krlvpar=8,fldpar=9 ,fldjahr=10,meldg0=56,meldg1=325,meldg2=326,meldg3=69,meldg4=60,meldg6=305, meldg7=355,meldg8=353,meldg9=354,meldg11=149,meldg12=142,meldg13=50,meldg14= 63,meldg15=327,meldg16=328,meldg17=329,meldg18=360,meldg19=318,meldg20=310, meldg21=387,meldg22=388,meldg23=352;ROW anzeingfldTEXT VAR eingbs;ROW bearbzl STRUCT (TEXT kopplg,fakenn,lehrer,ROW 4TEXT klgr,ROW 2TEXT rgr)VAR dbinh;INT VAR i,k,z,zz,letztepos:=2,index:=0,fall:=0,aktpos,suchpos,anzdbsaetze;INT VAR aktzeile,jgst,fachsoll,fachist,lehrersoll,lehrerist,lehrerimfach;TEXT VAR lv,sicherungstupel,allefaecher,fachbez,fachgrbez,fach,paraphe, lehrbeflehrer,liste;TEXT VAR klgrkatalog,jgstkatalog,rgrkatalog,lehrv:="", fachkatalog:="",klgrpruefkatalog,parkatalog,sollstdkatalog,aktschgrkatalog, geplschgrkatalog;TEXT VAR schj,schhj:="0",aktschhj:="0",aktschj:="0", geplschhj:="0",geplschj:="0",aenderungskennzeichen:="";TEXT VAR plausikopp, plausipa,plausilv,jgstsugrp,plausijgst;TEXT VAR kopplung,lvfake,lehrer,sgr1, sgr2,sgr3,sgr4,rgr1,rgr2,maskenkopf;BOOL VAR istfehler:=FALSE , koppparnichtgeprueft:=TRUE ,saetzeunveraendert:=TRUE ,ohnefehler:=TRUE ;PROC holeakthj:aktschhj:=schulkenndatum(hj);aktschj:=schulkenndatum(sj);geplschhj :=aktschhj;geplschj:=aktschj;geplanteshjundsjberechnen(geplschhj,geplschj) END PROC holeakthj;PROC holeaktdatenpruefung:i:=100;statleseschleife( dnrfaecher,"","",fnrffach,fnrffach,PROC spezcat);i:=103;statleseschleife( dnrlehrer,"","",fnrlparaphe,fnrlparaphe,PROC spezcat);END PROC holeaktdatenpruefung;PROC holeaktdatenspeicherung:i:=101;statleseschleife( dnrklassengruppen,"","",fnrkgklassengrp,fnrkgklassengrp,PROC spezcat);i:=102; statleseschleife(dnrraumgruppen,"","",fnrrgraumgrp,fnrrgraumgrp,PROC spezcat) ;i:=104;statleseschleife(dnrschluessel,ra,"",fnrschlsachgebiet, fnrschlschluessel,PROC spezcat);i:=105;statleseschleife(dnraktschuelergruppen ,"","",fnrsgrpsj,fnrsgrphj,PROC spezcat);i:=106;statleseschleife( dnraktschuelergruppen,"","",fnrsgrpsj,fnrsgrphj,PROC spezcat);END PROC holeaktdatenspeicherung;PROC initrows:IF fachkatalog=""THEN fachkatalog:= trenner;klgrkatalog:=trenner;klgrpruefkatalog:=trenner;jgstkatalog:= "�5�05�6�06�7�07�8�08�";jgstkatalogCAT "9�09�10�11�12�13�0�00�"; aktschgrkatalog:=trenner;geplschgrkatalog:=trenner;rgrkatalog:=trenner; parkatalog:=trenner;sollstdkatalog:=trenner;FOR iFROM 1UPTO anzeingfldREP eingbs(i):=""PER ;FOR iFROM 1UPTO bearbzlREP dbinh(i).kopplg:="";dbinh(i). fakenn:="";dbinh(i).lehrer:="";dbinh(i).klgr(1):="";dbinh(i).klgr(2):=""; dbinh(i).klgr(3):="";dbinh(i).klgr(4):="";dbinh(i).rgr(1):="";dbinh(i).rgr(2) :="";PER ;FI END PROC initrows;PROC uvukpruefbearb:standardmeldung(meldg3," " );IF schhj="0"THEN holeakthjFI ;merkeeingsch;istfehler:=FALSE ;gibteskennz; stellejahrfest;putwert(fnrlvsj,schj);putwert(fnrlvhj,schhj);putintwert( fnrlvjgst,0);putwert(fnrlvfachkennung,"");search(dnrlehrveranstaltungen, FALSE );IF dbstatus<>okCAND wert(fnrlvsj)<>schjCAND wert(fnrlvhj)<>schhjTHEN dateileerFI ;pruefung;erfasstelvausgeben;standardnproc.gibteskennz:letztepos :=2;IF eingbs(krlvjgst)<>""THEN fall:=2;LEAVE gibteskennzELIF eingbs(krlvfa) <>""THEN fall:=4;LEAVE gibteskennzELIF eingbs(krlvkopp)<>""THEN fall:=6; LEAVE gibteskennzELIF eingbs(krlvpar)<>""THEN fall:=8;LEAVE gibteskennzELSE zurueckmitmeldg(meldg0,1,letztepos,"");LEAVE uvukpruefbearbFI ;IF eingbs(fall +1)<>""THEN letztepos:=fall+1ELSE letztepos:=fallFI .stellejahrfest:IF eingbs (fldjahr)=""THEN schhj:=geplschhj;schj:=geplschj;aenderungskennzeichen:= kennzeichnunggeplELSE schhj:=aktschhj;schj:=aktschj;aenderungskennzeichen:= kennzeichnungaktFI .pruefung:IF fachkatalog=trennerTHEN holeaktdatenpruefung FI ;prueferest(fall);IF istfehlerTHEN zurueckmitmeldg(meldg0,1,letztepos,""); LEAVE uvukpruefbearbFI ;IF fall=2THEN IF eingbs(fldjgst)<>""THEN pruefejgst; FI ;index:=dnrlehrveranstaltungen;ELIF fall=4THEN pruefedbfld(eingbs(fldfa), fachkatalog,fldfa);index:=ixlvsjhjkennELIF fall=6THEN pruefekopplungsnr;index :=ixlvsjhjkopp;ELSE pruefedbfld(eingbs(fldpar),parkatalog,fldpar);index:= ixlvsjhjparFI ;IF istfehlerTHEN LEAVE uvukpruefbearbFI .pruefekopplungsnr: putwert(fnrlvsj,schj);putwert(fnrlvhj,schhj);putwert(fnrlvkopplung,eingbs( fldkopp));search(ixlvsjhjkopp);IF dbstatus=1COR dbstatus=3THEN koppnichtgefundenFI .koppnichtgefunden:zurueckmitmeldg(meldg1,1,fldkopp,""); LEAVE uvukpruefbearb.dateileer:zurueckmitmeldg(meldg2,1,letztepos,"");LEAVE uvukpruefbearb.END PROC uvukpruefbearb;PROC prueferest(INT CONST feldnr):FOR iFROM 2UPTO feldnr-1REP IF eingbs(i)<>""THEN fehlerFI PER ;FOR iFROM feldnr+2 UPTO 9REP IF eingbs(i)<>""THEN fehlerFI PER .fehler:istfehler:=TRUE ; letztepos:=i;LEAVE prueferest.END PROC prueferest;PROC pruefejgst:IF compress (eingbs(fldjgst))="0"COR eingbs(fldjgst)="00"THEN LEAVE pruefejgstELIF int( eingbs(fldjgst))>4CAND int(eingbs(fldjgst))<14THEN LEAVE pruefejgstELSE zurueckmitmeldg(meldg6,1,fldjgst,"");istfehler:=TRUE ;FI .END PROC pruefejgst ;PROC pruefedbfld(TEXT CONST objekt,katalog,INT CONST feld):plausijgst:=text( standardmaskenfeld(i*9-6),2);IF objekt=""THEN LEAVE pruefedbfldELIF katalog= jgstkatalogTHEN IF pos(jgstkatalog,trenner+objekt+trenner)=0THEN pruefeaufschuelergruppeELSE pruefejgstenFI ;ELIF pos(katalog,trenner+objekt+ trenner)=0THEN istfehler:=TRUE ;IF katalog=fachkatalogTHEN zurueckmitmeldg( meldg11,1,feld,objekt+"#")ELIF katalog=parkatalogTHEN zurueckmitmeldg(meldg12 ,1,feld,objekt+"#")ELIF katalog=rgrkatalogTHEN zurueckmitmeldg(meldg16,1,feld ,objekt+"#")FI FI .pruefeaufschuelergruppe:IF eingbs(fldjahr)<>""THEN IF pos( aktschgrkatalog,trenner+text(int(plausijgst))+objekt+trenner)<>0THEN LEAVE pruefedbfldELSE pruefeaufklgrFI ELIF pos(geplschgrkatalog,trenner+text(int( plausijgst))+objekt+trenner)<>0THEN LEAVE pruefedbfldELSE pruefeaufklgrFI . pruefeaufklgr:IF pos(klgrkatalog,trenner+objekt+trenner)>0THEN IF jgstnichtnullTHEN pruefejgstinklgrFI ELSE istfehler:=TRUE ;zurueckmitmeldg( meldg15,1,feld,objekt+"#")FI .pruefejgsten:IF int(plausijgst)<>int(objekt) CAND int(plausijgst)<>0THEN istfehler:=TRUE ;zurueckmitmeldg(meldg9,1,feld, objekt+"#"+plausijgst+"#");FI .jgstnichtnull:plausijgst<>"00". pruefejgstinklgr:zz:=0;jgstsugrp:="";zz:=pos(klgrpruefkatalog,trenner+objekt+ trenner)+length(objekt)+2;jgstsugrp:=subtext(klgrpruefkatalog,zz,pos( klgrpruefkatalog,trenner,zz)-1);FOR zzFROM 1UPTO length(jgstsugrp)DIV 2REP IF subtext(jgstsugrp,zz*2-1,zz*2)<>plausijgstTHEN istfehler:=TRUE ; zurueckmitmeldg(meldg9,1,feld,objekt+"#"+plausijgst+"#");LEAVE pruefedbfldFI PER ;END PROC pruefedbfld;PROC pruefekopplgpar(TEXT CONST kopp,lv,pa,INT CONST feldnr):plausikopp:=kopp;plausipa:=pa;plausilv:=lv;pruefeindb; pruefeaufbs.pruefeindb:istfehler:=FALSE ;inittupel(dnrlehrveranstaltungen); putwert(fnrlvkopplung,plausikopp);z:=feldnr;statleseschleife(ixlvsjhjkopp, schj,schhj,fnrlvsj,fnrlvhj,PROC suchekopplungen);IF istfehlerTHEN infeld( feldnr);LEAVE pruefekopplgparFI .pruefeaufbs:INT VAR z;FOR zFROM 1UPTO i-1 REP IF plausikopp=standardmaskenfeld(z*9-7)THEN IF plausipa= standardmaskenfeld(z*9-5)THEN istfehler:=TRUE ;zurueckmitmeldg(meldg8,1, feldnr,plausipa+"#"+plausikopp+"#"+text(standardmaskenfeld(z*9-6),2)+dbinh(z) .fakenn+"#");LEAVE pruefekopplgparFI ;FI ;PER ;FOR zFROM i+1UPTO bearbzlREP IF plausikopp=standardmaskenfeld(z*9-7)THEN IF plausipa=standardmaskenfeld(z* 9-5)THEN istfehler:=TRUE ;zurueckmitmeldg(meldg8,1,feldnr,plausipa+"#"+ plausikopp+"#"+text(standardmaskenfeld(z*9-6),2)+dbinh(z).fakenn+"#");LEAVE pruefekopplgparFI ;FI ;PER .END PROC pruefekopplgpar;PROC suchekopplungen( BOOL VAR b):IF wert(fnrlvsj)=schjCAND wert(fnrlvhj)=schhjCAND wert( fnrlvkopplung)=plausikoppCAND dbstatus=0THEN ueberpruefeparapheELSE b:=TRUE FI .ueberpruefeparaphe:IF wert(fnrlvparaphe)=plausipaCAND nichtplausilvTHEN istfehler:=TRUE ;zurueckmitmeldg(meldg8,1,z,plausipa+"#"+plausikopp+"#"+ formattext(wert(fnrlvjgst))+wert(fnrlvfachkennung)+"#");b:=TRUE ;LEAVE suchekopplungenFI .nichtplausilv:formattext(wert(fnrlvjgst))<>text(plausilv,2 )COR wert(fnrlvfachkennung)<>dbinh(i).fakenn.END PROC suchekopplungen;PROC zurueckmitmeldg(INT CONST meldg,ruecksprung,feld,TEXT CONST markiert):IF ruecksprung>0THEN return(ruecksprung)FI ;standardmeldung(meldg,markiert);IF feld>0THEN infeld(feld)FI END PROC zurueckmitmeldg;PROC uvukstdvproc:initrows ;fachbez:=trenner;fachgrbez:=trenner;gibeingschaus;standardnproc.END PROC uvukstdvproc;PROC gibeingschaus:standardstartproc(eingmaske);gibeingbsaus; standardfelderausgeben;infeld(letztepos).gibeingbsaus:FOR iFROM 2UPTO anzeingfldREP standardmaskenfeld(eingbs(i),i);IF eingbs(i)<>""THEN letztepos :=iFI PER .END PROC gibeingschaus;PROC erfasstelvausgeben:anzdbsaetze:=0;k:=1 ;pruefobsaetzevorhanden;loeschefelder;maskenkopf:=text(vergleichsknoten)+" "+ schhj+"."+" "+subtext(schj,1,2)+"/"+subtext(schj,3);standardstartproc( bearbmaske);standardkopfmaskeaktualisieren(maskenkopf);startebildschirmblock( index,bearbzl-1);bildschirmblock(PROC gibbearbzeileaus,BOOL PROC (INT CONST ) pruefung,i);standardfelderausgeben;infeld(2).pruefobsaetzevorhanden:putwert( fnrlvsj,schj);putwert(fnrlvhj,schhj);putintwert(fnrlvjgst,int(eingbs(fldjgst) ));putwert(fnrlvfachkennung,eingbs(fldfa));putwert(fnrlvkopplung,eingbs( fldkopp));putwert(fnrlvparaphe,eingbs(fldpar));search(index,FALSE );IF dbstatus<>okTHEN zurueckmitmeldg(meldg2,1,letztepos,"");LEAVE erfasstelvausgebenELSE pruefobsatzrichtigFI .pruefobsatzrichtig:IF wert( fnrlvsj)=schjCAND wert(fnrlvhj)=schhjTHEN IF fall=1CAND eingbs(fldjgst)<>"" CAND intwert(fnrlvjgst)<>int(eingbs(fldjgst))THEN gibfehlerausELIF fall=2 CAND eingbs(fldfa)<>""CAND text(wert(fnrlvfachkennung),2)<>eingbs(fldfa)THEN gibfehlerausELIF fall=3CAND eingbs(fldkopp)<>""CAND wert(fnrlvkopplung)<> eingbs(fldkopp)THEN gibfehlerausELIF fall=4CAND eingbs(fldpar)<>""CAND wert( fnrlvparaphe)<>eingbs(fldpar)THEN gibfehlerausFI ELSE gibfehlerausFI . gibfehleraus:zurueckmitmeldg(meldg2,1,letztepos,"");LEAVE erfasstelvausgeben. END PROC erfasstelvausgeben;PROC loeschefelder:FOR iFROM 1UPTO bearbzlREP dbinh(i).kopplg:="";dbinh(i).fakenn:="";dbinh(i).lehrer:="";dbinh(i).klgr(1) :="";dbinh(i).klgr(2):="";dbinh(i).klgr(3):="";dbinh(i).klgr(4):="";dbinh(i). rgr(1):="";dbinh(i).rgr(2):="";PER ;FOR iFROM 2UPTO letztesfldREP standardmaskenfeld("",i)PER .END PROC loeschefelder;PROC gibbearbzeileaus: kopplung:=wert(fnrlvkopplung);lvfake:=wert(fnrlvfachkennung);lehrer:=wert( fnrlvparaphe);sgr1:=wert(fnrlvklgrp1);sgr2:=wert(fnrlvklgrp2);sgr3:=wert( fnrlvklgrp3);sgr4:=wert(fnrlvklgrp4);rgr1:=wert(fnrlvraumgrp1);rgr2:=wert( fnrlvraumgrp2);merkdbwerte;lehrv:=formattext(wert(fnrlvjgst))+text(lvfake,2)+ text(subtext(lvfake,3),4)+text(intwert(fnrlvwochenstd),2);standardmaskenfeld( kopplung,k*9-7);standardmaskenfeld(lehrv,k*9-6);standardmaskenfeld(lehrer,k*9 -5);standardmaskenfeld(sgr1,k*9-4);standardmaskenfeld(sgr2,k*9-3); standardmaskenfeld(sgr3,k*9-2);standardmaskenfeld(sgr4,k*9-1); standardmaskenfeld(rgr1,k*9);standardmaskenfeld(rgr2,k*9+1);IF k"00"THEN LEAVE formattextWITH "0"+jgst FI ;jgstEND PROC formattext;PROC uvukspeichern(BOOL CONST speichern):IF speichernTHEN speicherdaten;naechsterbildschirmELSE zurueckmitmeldg(meldg14,0 ,1,"");naechsterbildschirmFI .speicherdaten:saetzeunveraendert:=TRUE ;IF aktschgrkatalog=trennerTHEN holeaktdatenspeicherungFI ;zurueckmitmeldg( meldg17,0,1,"");FOR iFROM 1UPTO anzdbsaetzeREP kopplung:=standardmaskenfeld(i *9-7);lehrer:=standardmaskenfeld(i*9-5);sgr1:=standardmaskenfeld(i*9-4);sgr2 :=standardmaskenfeld(i*9-3);sgr3:=standardmaskenfeld(i*9-2);sgr4:= standardmaskenfeld(i*9-1);rgr1:=standardmaskenfeld(i*9);rgr2:= standardmaskenfeld(i*9+1);IF satzgeaendertTHEN infeld(i*9-7);pruefedaten;FI PER ;zurueckmitmeldg(meldg13,0,1,"");FOR iFROM 1UPTO anzdbsaetzeREP kopplung :=standardmaskenfeld(i*9-7);lehrer:=standardmaskenfeld(i*9-5);sgr1:= standardmaskenfeld(i*9-4);sgr2:=standardmaskenfeld(i*9-3);sgr3:= standardmaskenfeld(i*9-2);sgr4:=standardmaskenfeld(i*9-1);rgr1:= standardmaskenfeld(i*9);rgr2:=standardmaskenfeld(i*9+1);IF satzgeaendertTHEN IF saetzeunveraendertTHEN saetzeunveraendert:=FALSE FI ;infeld(i*9-7); speicheraenderungenFI PER ;IF NOT saetzeunveraendertTHEN aenderungsvermerksetzen(aenderungskennzeichen)FI .satzgeaendert:kopplung<> dbinh(i).kopplgCOR lehrer<>dbinh(i).lehrerCOR sgr1<>dbinh(i).klgr(1)COR sgr2 <>dbinh(i).klgr(2)COR sgr3<>dbinh(i).klgr(3)COR sgr4<>dbinh(i).klgr(4)COR rgr1<>dbinh(i).rgr(1)COR rgr2<>dbinh(i).rgr(2).pruefedaten:istfehler:=FALSE ; koppparnichtgeprueft:=TRUE ;IF kopplung<>dbinh(i).kopplgTHEN pruefekopplungsnrFI ;IF lehrer<>dbinh(i).lehrerCAND lehrer<>leereparapheTHEN pruefelehrerFI ;IF sgr1<>dbinh(i).klgr(1)COR sgr2<>dbinh(i).klgr(2)COR sgr3<> dbinh(i).klgr(3)COR sgr4<>dbinh(i).klgr(4)THEN pruefeklassenFI ;IF rgr1<> dbinh(i).rgr(1)COR rgr2<>dbinh(i).rgr(2)THEN prueferaeumeFI . pruefekopplungsnr:IF kopplung=""THEN istfehler:=TRUE ;zurueckmitmeldg(meldg7, 1,i*9-7,"");LEAVE uvukspeichernELIF length(kopplung)>laengekopplungTHEN istfehler:=TRUE ;zurueckmitmeldg(meldg4,1,i*9-7,"");LEAVE uvukspeichernELSE koppparnichtgeprueft:=FALSE ;IF lehrer<>leereparapheTHEN pruefekopplgpar( kopplung,standardmaskenfeld(i*9-6),lehrer,i*9-7);abfragefehlerFI FI . pruefelehrer:pruefedbfld(lehrer,parkatalog,i*9-5);abfragefehler;IF koppparnichtgeprueftTHEN pruefekopplgpar(kopplung,standardmaskenfeld(i*9-6), lehrer,i*9-5);abfragefehlerFI .pruefeklassen:IF sgr1<>dbinh(i).klgr(1)THEN pruefedbfld(sgr1,jgstkatalog,i*9-4);abfragefehlerFI ;IF sgr2<>dbinh(i).klgr(2 )THEN pruefedbfld(sgr2,jgstkatalog,i*9-3);abfragefehlerFI ;IF sgr3<>dbinh(i). klgr(3)THEN pruefedbfld(sgr3,jgstkatalog,i*9-2);abfragefehlerFI ;IF sgr4<> dbinh(i).klgr(4)THEN pruefedbfld(sgr4,jgstkatalog,i*9-1);abfragefehlerFI . prueferaeume:pruefedbfld(rgr1,rgrkatalog,i*9);abfragefehler;pruefedbfld(rgr2, rgrkatalog,i*9+1);abfragefehler.abfragefehler:IF istfehlerTHEN LEAVE uvukspeichernFI .speicheraenderungen:putwert(fnrlvsj,schj);putwert(fnrlvhj, schhj);putintwert(fnrlvjgst,int(text(standardmaskenfeld(i*9-6),2)));putwert( fnrlvfachkennung,dbinh(i).fakenn);search(dnrlehrveranstaltungen,TRUE );IF dbstatus=0THEN aktualisierenFI .aktualisieren:putwert(fnrlvkopplung,kopplung) ;putwert(fnrlvparaphe,lehrer);putwert(fnrlvklgrp1,sgr1);putwert(fnrlvklgrp2, sgr2);putwert(fnrlvklgrp3,sgr3);putwert(fnrlvklgrp4,sgr4);putwert( fnrlvraumgrp1,rgr1);putwert(fnrlvraumgrp2,rgr2);update(dnrlehrveranstaltungen ).naechsterbildschirm:IF anzdbsaetzeokTHEN enter(2)ELSE anzdbsaetze:=0; standardkopfmaskeaktualisieren(maskenkopf);startebildschirmblock(index, bearbzl-1);bildschirmblock(PROC gibbearbzeileaus,BOOL PROC (INT CONST ) pruefung,i);infeld(1);standardfelderausgeben;infeld(2);return(1)FI .END PROC uvukspeichern;PROC uvuklisten:INT VAR aktfeld:=infeld;WINDOW VAR w:= startwindow(42,23,77,1);liste:="";standardmeldung(meldg3,"");aktzeile:=( aktfeld-2)DIV 9+1;jgst:=int(text(standardmaskenfeld(aktzeile*9-6),laengejgst) );lv:=text(dbinh(aktzeile).fakenn,laengefach);sicherdbposition; berechnefachdaten;bereitelisteauf;giballelehreraus;listeCAT "*";listeCAT auskunftstextende;erstelledbposition;IF menuedraussenTHEN reorganizescreenFI ;open(w);auskunfterteilung(liste,w,FALSE );reorganizescreen;setlasteditvalues ;return(1).sicherdbposition:savetupel(index,sicherungstupel);. erstelledbposition:restoretupel(index,sicherungstupel).berechnefachdaten: allefaecher:=trenner;inittupel(dnrfaecher);putwert(fnrffach,compress(lv)); search(dnrfaecher,TRUE );IF dbstatus<>okTHEN standardmeldung(meldg20,""); return(1);LEAVE uvuklistenELSE IF wert(fnrffachgrp)<>""THEN lv:=text(wert( fnrffachgrp),laengefach);ermittleanderefaecherELSE allefaecherCAT lv; allefaecherCAT trenner;FI ;ermittlestdenFI .ermittleanderefaecher:IF fachbez= trennerTHEN IF records(dnrfaecher)=0.0THEN standardmeldung(meldg21,"");return (1);LEAVE uvuklistenELSE statleseschleife(dnrfaecher,"","",fnrffach,fnrffach, PROC faecherholen)FI ;FI ;holallefaecher.holallefaecher:allefaecher:= allefaecherzu(trenner+lv+trenner).ermittlestden:allestdenberechnen. bereitelisteauf:listeCAT "Lehrbefähigte mit Stundenzahl:";listeCAT auskunftstextende;listeCAT " Soll Ist im Fach Rest";listeCAT auskunftstextende;listeCAT "Fach: ----+----+-------+----";listeCAT auskunftstextende;listeCAT text(lv,5);listeCAT text(fachsoll,6);listeCAT text (fachist,5);listeCAT text(fachsoll-fachist,13);listeCAT auskunftstextende; listeCAT " ";listeCAT auskunftstextende.giballelehreraus:IF fachkatalog= trennerTHEN holeaktdatenpruefungFI ;lehrbeflehrer:="";inittupel( dnrlehrbefaehigungen);statleseschleife(dnrlehrbefaehigungen,compress(lv),"", fnrlbfach,fnrlbparaphe,PROC lehrbeflehrerholen);IF lehrbeflehrer=""THEN meldungkeinelehrbeflehrerELSE giblehrerausFI .meldungkeinelehrbeflehrer: standardmeldung(meldg22,lv+ausgparam);return(1);LEAVE uvuklisten.giblehreraus :suchpos:=1;aktpos:=1;listeCAT "Lehrer:";listeCAT auskunftstextende;WHILE aktpos>0REP aktpos:=pos(lehrbeflehrer,trenner,suchpos);IF aktpos>0THEN paraphe:=subtext(lehrbeflehrer,suchpos,aktpos-1);standardmeldung(meldg23, paraphe+ausgparam);ermittlestdenlehrer;IF ohnefehlerTHEN listeCAT text( paraphe,5);listeCAT text(lehrersoll,6);listeCAT text(lehrerist,5);listeCAT text(lehrerimfach,8);listeCAT text(lehrersoll-lehrerist,5);listeCAT auskunftstextendeFI ;suchpos:=aktpos+1FI ;PER ;infeld(1); standardfelderausgeben;infeld(aktfeld).END PROC uvuklisten;PROC ermittlestdenlehrer:lehrersoll:=0;lehrerist:=0;lehrerimfach:=0;ohnefehler:= TRUE ;ermittlelehrersoll;ermittlelehreristundimfach.ermittlelehrersoll:zz:= pos(parkatalog,trenner+paraphe+trenner);IF zz>0THEN lehrersoll:=int(( sollstdkatalogSUB (zz+1))+(sollstdkatalogSUB (zz+2)))ELSE ohnefehler:=FALSE ; LEAVE ermittlestdenlehrerFI .ermittlelehreristundimfach:inittupel( dnrlehrveranstaltungen);putwert(fnrlvparaphe,paraphe);statleseschleife( ixlvsjhjpar,schj,schhj,fnrlvsj,fnrlvhj,PROC holelehrerstden).END PROC ermittlestdenlehrer;PROC holelehrerstden(BOOL VAR b):TEXT VAR lvfach:=text( wert(fnrlvfachkennung),laengefach);IF wert(fnrlvsj)<>schjCOR wert(fnrlvhj)<> schhjCOR wert(fnrlvparaphe)<>parapheTHEN b:=TRUE ELSE IF inallefaecher(lvfach )THEN lehrerimfachINCR intwert(fnrlvwochenstd)FI ;lehreristINCR intwert( fnrlvwochenstd)FI END PROC holelehrerstden;BOOL PROC inallefaecher(TEXT CONST fach):pos(allefaecher,trenner+text(fach,laengefach)+trenner)>0END PROC inallefaecher;PROC lehrbeflehrerholen(BOOL VAR b):IF dbstatus<>okCOR text( wert(fnrlbfach),laengefach)<>lvTHEN b:=TRUE ELSE lehrbeflehrerCAT wert( fnrlbparaphe);lehrbeflehrerCAT trenner;FI END PROC lehrbeflehrerholen;PROC allestdenberechnen:INT VAR i;fachsoll:=0;fachist:=0;FOR iFROM 1UPTO length( allefaecher)DIV (laengefach+1)REP fach:=(subtext(allefaecher,(i-1)*( laengefach+1)+2,i*(laengefach+1)));berechnestdenzufachPER END PROC allestdenberechnen;PROC berechnestdenzufach:inittupel(dnrlehrveranstaltungen) ;putwert(fnrlvfachkennung,fach);statleseschleife(ixlvsjhjkenn,schj,schhj, fnrlvsj,fnrlvhj,PROC stdenzufach)END PROC berechnestdenzufach;PROC stdenzufach(BOOL VAR b):TEXT VAR lvfach:=text(wert(fnrlvfachkennung), laengefach);INT VAR lvstd;IF wert(fnrlvsj)<>schjCOR wert(fnrlvhj)<>schhjCOR lvfach>fachTHEN b:=TRUE ELSE IF lvfach=fachTHEN lvstd:=intwert(fnrlvwochenstd );fachsollINCR lvstd;IF wert(fnrlvparaphe)<>""THEN fachistINCR lvstdFI FI FI END PROC stdenzufach;TEXT PROC allefaecherzu(TEXT CONST bez):suchpos:=1; aktpos:=1;WHILE aktpos>0REP aktpos:=pos(fachgrbez,bez,suchpos);IF aktpos>0 THEN allefaecherCAT (fachbezSUB (aktpos+1));allefaecherCAT (fachbezSUB ( aktpos+2));allefaecherCAT trenner;suchpos:=aktpos+1;FI PER ;allefaecherEND PROC allefaecherzu;PROC uvukvorjparaphe:IF aenderungskennzeichen= kennzeichnungaktTHEN standardmeldung(meldg19,"");return(1)ELSE aktzeile:=( infeld-2)DIV 9+1;jgst:=int(text(standardmaskenfeld(aktzeile*9-6),laengejgst)) ;lv:=dbinh(aktzeile).fakenn;IF geplschhj="1"CAND jgst=5THEN standardmeldung( meldg19,"");return(1);LEAVE uvukvorjparapheFI ;suchedbsatzundausgabeFI . suchedbsatzundausgabe:savetupel(index,sicherungstupel);saveupdateposition( index);IF index<>dnrlehrveranstaltungenTHEN changeindex;FI ;inittupel( dnrlehrveranstaltungen);putwert(fnrlvsj,aktschj);putwert(fnrlvhj,aktschhj); IF aktschhj="2"CAND jgst>5THEN putintwert(fnrlvjgst,jgst-1);ELSE putintwert( fnrlvjgst,jgst)FI ;putwert(fnrlvfachkennung,lv);search(dnrlehrveranstaltungen ,TRUE );IF dbstatus<>okTHEN standardmeldung(meldg18,"Schulj. "+aktschhj+". "+ text(aktschj,2)+"/"+subtext(aktschj,3)+" Lv. "+text(jgst)+lv+ausgparam); return(1);LEAVE uvukvorjparapheELSE standardmaskenfeld(wert(fnrlvparaphe), aktzeile*9-5);standardfelderausgebenFI ;IF index<>dnrlehrveranstaltungenTHEN changeindex;FI ;restoreupdateposition(index);restoretupel(index, sicherungstupel);return(1).END PROC uvukvorjparaphe;PROC faecherholen(BOOL VAR b):IF dbstatus<>okTHEN b:=TRUE ELSE fachbezCAT text(wert(fnrffach), laengefach);fachbezCAT trenner;fachgrbezCAT text(wert(fnrffachgrp),laengefach );fachgrbezCAT trennerFI END PROC faecherholen;PROC spezcat(BOOL VAR b):TEXT VAR zwsp:="";IF i=100THEN fachkatalogCAT wert(fnrffach)+trenner;ELIF i=101 THEN jgstsugrp:="";klgrkatalogCAT wert(fnrkgklassengrp)+trenner; klgrpruefkatalogCAT wert(fnrkgklassengrp)+trenner;jgstsugrp:=wert( fnrkgschuelergrp);stellejgstzurklgrfest;ELIF i=105THEN IF wert(fnrsgrphj)= aktschhjCAND dbstatus=okTHEN aktschgrkatalogCAT wert(fnrsgrpjgst)+wert( fnrsgrpkennung)+trenner;ELIF dbstatus<>okTHEN b:=TRUE FI ELIF i=106THEN IF wert(fnrsgrphj)=geplschhjCAND dbstatus=okTHEN geplschgrkatalogCAT wert( fnrsgrpjgst)+wert(fnrsgrpkennung)+trenner;ELIF dbstatus<>okTHEN b:=TRUE FI ELIF i=102THEN rgrkatalogCAT wert(fnrrgraumgrp)+trenner;ELIF i=103THEN zwsp:= wert(fnrlparaphe)+trenner;parkatalogCAT zwsp;sollstdkatalogCAT text(wert( fnrlsollstd),length(zwsp))ELIF i=104THEN IF wert(fnrschlsachgebiet)=raTHEN rgrkatalogCAT wert(fnrschlschluessel)+trenner;ELIF wert(fnrschlsachgebiet)>ra THEN b:=TRUE FI FI .stellejgstzurklgrfest:FOR zzFROM 1UPTO length(jgstsugrp) DIV 6REP klgrpruefkatalogCAT subtext(jgstsugrp,zz*6-5,zz*6-4)PER ; klgrpruefkatalogCAT trenner.END PROC spezcat;END PACKET uvundkopplungenbearbeiten;