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 --- .../2.2.1/src/2.schueler zu kursen zuordnen | 384 +++++++++++++++++++++ 1 file changed, 384 insertions(+) create mode 100644 app/schulis/2.2.1/src/2.schueler zu kursen zuordnen (limited to 'app/schulis/2.2.1/src/2.schueler zu kursen zuordnen') diff --git a/app/schulis/2.2.1/src/2.schueler zu kursen zuordnen b/app/schulis/2.2.1/src/2.schueler zu kursen zuordnen new file mode 100644 index 0000000..32187e4 --- /dev/null +++ b/app/schulis/2.2.1/src/2.schueler zu kursen zuordnen @@ -0,0 +1,384 @@ +PACKET schuelerzukursenzuordnenDEFINES schuelerkursenzuordnenabbruch, +schuelerkursenzuordnenanfang,schuelerkursenzuordnenpruefuebernahme, +schuelerkursenzuordnenuebernahme,schuelerkursenzuordnenpruefung, +schuelerkursenzuordnenspeichern,schuelerkursenzuordnenkopieren, +schuelerkursenzuordnenlisten:LET server="kurswahl server",kuwa2sperre= +"Kurswahl-2 ",anzschuelerbs=15,laengefakeartkl=9,laengekurs=6,laengedseintrag +=15,az="#",trenner1="$",trenner2="�",maskeeingang= +"ms schueler zu kursen zuordnen eingang",maskebearb= +"ms schueler zu kursen zuordnen bearb",stdzeigbloecke= +"1 2 3 4 5 6 7 8 9 10 11 ",leerewahldaten=" ", +leereweiterewahldaten=" ",kzname="N",kzkurse="K",kznurneue="N",kzohneneue= +"O",kzalle="A",kennungplanbl="P",kennungfapl="FP",kennungfaartkl="FAk", +kennungfakeartkl="FKAk",kennungfake="FK",kennungkeinkurs=" - ", +kennungkeinfach=" * ",meldungbearbwird=352,meldungfeldleeren=390, +meldungunbeklv=360,meldungfeldfuellen=52,meldungschonkurs=424, +meldungbittewarten=69,meldungfalscherwert=55,meldungspeicherfehler=364, +meldungjgstfalsch=404,meldungjgstfehlt=172,meldunghjfalsch=405,meldungpruefen +=329,meldungspeichern=50,meldungnspeichern=63,meldungandereauswahl=318, +meldungunzulauswahl=56,meldungserverfehler=376,meldunglistezeigen=7, +meldungparallelanw=425,meldungkeinedaten=68,meldungkeinekopfunktion=318, +logtext1="Anw. 2.2.2 ",logtext2=" für akt. ",text1="Kurszuordnung ",text2= +"Kurse übernehmen ",text3=" nach ",punkt=".",felderstername=7, +felderstekennung=9,feldletztekennung=65,anzfeldereingang=36;INT VAR i,j,z; +INT VAR letztepos:=2,ijgst,ihj,fstat,aktpos:=1,aktfeld,pos1,pos2,blockpos, +suchab,jgst1,jgst2,findpos,feld,blpos,kopzeile,aktzeile,anfpos,anzkurse, +anzsch,endpos,anzschueler,fapos,saktpos,ssuchab;TEXT VAR aktjgst,akthj:="", +gewjgst,gewhj,zusjgst,zushj,gewsj,alleplblbez,alleschueler1:="",alleschueler2 +:="",wahl,neuewahldaten,weiterewahldaten,wahldaten,alleschueler:="", +zeigbloecke,fach:="",art:="",kennungdesschuelers,name,kennungjetzt, +kennungvorher,planbloecke,aktfeldinh,t,nname,vname,gdat,ausgabe:="",block, +vorz,blockbez,aktkennung,liste:="",kurse,kurs,kennung,kursliste,fakennung, +fawahl,sname,logmeldung,klkz,klwahl;ROW anzfeldereingangTEXT VAR eingangrow; +ROW anzschuelerbsROW 4TEXT VAR schueler;BOOL VAR zusspaltezeigen:=FALSE , +belegungpruefen:=FALSE ,sperreok,speicherungsfehler:=FALSE ,bewertung, +klausurkz:=FALSE ;WINDOW VAR w;PROC schuelerkursenzuordnenpruefuebernahme:IF +menuedraussenTHEN reorganizescreenFI END PROC +schuelerkursenzuordnenpruefuebernahme;PROC schuelerkursenzuordnenuebernahme( +BOOL CONST uebernehmen):merkeeingangbs;IF uebernehmenTHEN standardmeldung( +meldungbittewarten,"");aktpos:=1;gewjgst:=eingangrow(2);gewhj:=eingangrow(3); +ijgst:=int(gewjgst);ihj:=int(gewhj);zusjgst:=eingangrow(35);zushj:=eingangrow +(36);IF akthj=""THEN akthj:=schulkenndatum("Schulhalbjahr")FI ;prueffeld2und3 +;prueffeld4;prueffeld5;prueffeld634;prueffeld3536;datenholen; +betrachtealleschueler;logmeldung:=text2;logmeldungCAT zusjgst;logmeldungCAT +punkt;logmeldungCAT zushj;logmeldungCAT text3;logmeldungCAT gewjgst; +logmeldungCAT punkt;logmeldungCAT gewhj;logbucheintragvornehmen(logmeldung); +kurswahlsperrebeenden(kuwa2sperre)FI ;enter(2).prueffeld2und3:IF gewjgst="" +THEN fehlermeldungausgeben(2,meldungjgstfehlt,1);LEAVE +schuelerkursenzuordnenuebernahmeELIF gewhj=""THEN fehlermeldungausgeben(2, +meldunghjfalsch,1);LEAVE schuelerkursenzuordnenuebernahmeELIF jgstfalsch( +gewjgst,"11")THEN fehlermeldungausgeben(2,meldungjgstfalsch,1);LEAVE +schuelerkursenzuordnenuebernahmeELIF ihj<1COR ihj>2THEN fehlermeldungausgeben +(3,meldunghjfalsch,1);LEAVE schuelerkursenzuordnenuebernahmeFI .prueffeld4: +aktfeldinh:=eingangrow(4);IF aktfeldinh=""THEN IF eingangrow(5)=""THEN +fehlermeldungausgeben(4,meldungandereauswahl,1);LEAVE +schuelerkursenzuordnenuebernahmeELSE LEAVE prueffeld4FI ELIF jgstfalsch( +gewjgst,aktfeldinh)THEN fehlermeldungausgeben(4,meldungunzulauswahl,1);LEAVE +schuelerkursenzuordnenuebernahmeELIF int(aktfeldinh)=ijgstTHEN pruefhjELIF +aktfeldinh="10"CAND akthj="1"THEN fehlermeldungausgeben(4, +meldungandereauswahl,1);LEAVE schuelerkursenzuordnenuebernahmeFI .pruefhj:IF +gewhj="1"CAND akthj="2"THEN fehlermeldungausgeben(3,meldungandereauswahl,1); +LEAVE schuelerkursenzuordnenuebernahmeFI .prueffeld5:aktfeldinh:=eingangrow(5 +);IF aktfeldinh=""THEN LEAVE prueffeld5ELIF aktfeldinh<>""CAND eingangrow(4) +<>""THEN IF int(aktfeldinh)<>int(eingangrow(4))+1THEN fehlermeldungausgeben(5 +,meldungunzulauswahl,1);LEAVE schuelerkursenzuordnenuebernahmeFI ELIF int( +aktfeldinh)>ijgstTHEN fehlermeldungausgeben(5,meldungunzulauswahl,1);LEAVE +schuelerkursenzuordnenuebernahmeFI .prueffeld634:FOR iFROM 6UPTO 34REP IF +standardmaskenfeld(i)<>""THEN fehlermeldungausgeben(i,meldungfeldleeren,1); +LEAVE schuelerkursenzuordnenuebernahmeFI PER .prueffeld3536:zusjgst:= +eingangrow(35);zushj:=eingangrow(36);IF zusjgst=""THEN fehlermeldungausgeben( +35,meldungjgstfehlt,1);LEAVE schuelerkursenzuordnenuebernahmeELIF zushj="" +THEN fehlermeldungausgeben(36,meldunghjfalsch,1);LEAVE +schuelerkursenzuordnenuebernahmeELIF zusjgst=gewjgstCAND zushj=gewhjTHEN +fehlermeldungausgeben(35,meldungandereauswahl,1);LEAVE +schuelerkursenzuordnenuebernahmeELIF jgstfalsch(zusjgst,"11")THEN +fehlermeldungausgeben(35,meldungjgstfalsch,1);LEAVE +schuelerkursenzuordnenuebernahmeELIF zushj<>"1"CAND zushj<>"2"THEN +fehlermeldungausgeben(36,meldunghjfalsch,1);LEAVE +schuelerkursenzuordnenuebernahmeFI .datenholen:IF NOT exists(/server)THEN +fehlermeldungausgeben(letztepos,meldungserverfehler,1);LEAVE +schuelerkursenzuordnenuebernahmeFI ;IF eingangrow(4)=""THEN t:=kznurneue; +aktjgst:=text(int(eingangrow(5))-1)ELIF eingangrow(5)=""THEN t:=kzohneneue; +aktjgst:=eingangrow(4)ELSE t:=kzalle;aktjgst:=eingangrow(4)FI ; +kurswahlinitialisieren(aktjgst,gewjgst,gewhj,t,gewsj);kurswahlbasisholen( +fstat);erweitertekurswahlbasisholen(zusjgst,zushj,fstat);kurswahlsperresetzen +(kuwa2sperre,sperreok);IF NOT sperreokTHEN fehlermeldungausgeben(infeld, +meldungparallelanw,1);LEAVE schuelerkursenzuordnenuebernahmeFI . +betrachtealleschueler:FOR iFROM ersterschuelerUPTO letzterschuelerREP +wahldaten:=wahldatenzumindex(i,kzkurse);name:=wahldatenzumindex(i,kzname); +pos1:=pos(name,trenner2,1)-1;pos2:=pos(name,trenner2,pos1+2)-1;nname:=subtext +(name,1,pos1);vname:=subtext(name,pos1+2,pos2);gdat:=subtext(name,pos2+2,pos2 ++9);standardmeldung(meldungbearbwird,vname+" "+nname+az);weiterewahldaten:= +weiterewahldatenzumschueler(nname,vname,gdat,kennungfakeartkl); +betrachtekennungen;kurswahl2sichern(fstat)PER .betrachtekennungen:pos1:=1; +neuewahldaten:="";WHILE pos1kennungvorherTHEN planbloecke:=kursdaten(fach+kennungvorher, +kennungplanbl);IF dbstatus=0THEN neuewahldatenCAT text(wahl,1);neuewahldaten +CAT art;neuewahldatenCAT fach;neuewahldatenCAT kennungvorher;neuewahldaten +CAT planbloeckeELSE neuewahldatenCAT wahlFI ELSE neuewahldatenCAT wahlFI ; +pos1INCR laengedseintragPER ;IF wahldaten<>neuewahldatenTHEN +schuelerwahleintragen(nname,vname,gdat,neuewahldaten)FI .END PROC +schuelerkursenzuordnenuebernahme;PROC schuelerkursenzuordnenanfang: +standardstartproc(maskeeingang);gibeingangaus;standardfelderausgeben;infeld( +letztepos);standardnproc.gibeingangaus:FOR iFROM 2UPTO anzfeldereingangREP +standardmaskenfeld(eingangrow(i),i);IF eingangrow(i)<>""THEN letztepos:=iFI +PER .END PROC schuelerkursenzuordnenanfang;PROC +schuelerkursenzuordnenpruefung:standardmeldung(meldungbittewarten,""); +merkeeingangbs;aktpos:=1;gewjgst:=eingangrow(2);gewhj:=eingangrow(3);ijgst:= +int(gewjgst);ihj:=int(gewhj);IF akthj=""THEN akthj:=schulkenndatum( +"Schulhalbjahr")FI ;prueffeld2und3;prueffeld4;prueffeld5;prueffeld6und7; +prueffeld8bis13;prueffeld3536;datenholen;betrachtebelegung; +planblockbezpruefen;schueleraufzeigen.betrachtebelegung:FOR iFROM 14UPTO 23 +REP IF eingangrow(i)<>""THEN planblockvorzpruefen;planblockbez15bis23pruefen; +belegungpruefen:=TRUE ;LEAVE betrachtebelegungFI ;PER ;belegungpruefen:= +FALSE .prueffeld2und3:IF gewjgst=""THEN fehlermeldungausgeben(2, +meldungjgstfehlt,1);LEAVE schuelerkursenzuordnenpruefungELIF gewhj=""THEN +fehlermeldungausgeben(2,meldunghjfalsch,1);LEAVE +schuelerkursenzuordnenpruefungELIF jgstfalsch(gewjgst,"11")THEN +fehlermeldungausgeben(2,meldungjgstfalsch,1);LEAVE +schuelerkursenzuordnenpruefungELIF ihj<1COR ihj>2THEN fehlermeldungausgeben(3 +,meldunghjfalsch,1);LEAVE schuelerkursenzuordnenpruefungFI .prueffeld4: +aktfeldinh:=eingangrow(4);IF aktfeldinh=""THEN IF eingangrow(5)=""THEN +fehlermeldungausgeben(4,meldungandereauswahl,1);LEAVE +schuelerkursenzuordnenpruefungELSE LEAVE prueffeld4FI ELIF jgstfalsch(gewjgst +,aktfeldinh)THEN fehlermeldungausgeben(4,meldungunzulauswahl,1);LEAVE +schuelerkursenzuordnenpruefungELIF int(aktfeldinh)=ijgstTHEN pruefhjELIF +aktfeldinh="10"CAND akthj="1"THEN fehlermeldungausgeben(4, +meldungandereauswahl,1);LEAVE schuelerkursenzuordnenpruefungFI .pruefhj:IF +gewhj="1"CAND akthj="2"THEN fehlermeldungausgeben(3,meldungandereauswahl,1); +LEAVE schuelerkursenzuordnenpruefungFI .prueffeld5:aktfeldinh:=eingangrow(5); +IF aktfeldinh=""THEN LEAVE prueffeld5ELIF aktfeldinh<>""CAND eingangrow(4)<> +""THEN IF int(aktfeldinh)<>int(eingangrow(4))+1THEN fehlermeldungausgeben(5, +meldungunzulauswahl,1);LEAVE schuelerkursenzuordnenpruefungFI ELIF int( +aktfeldinh)>ijgstTHEN fehlermeldungausgeben(5,meldungunzulauswahl,1);LEAVE +schuelerkursenzuordnenpruefungFI .prueffeld6und7:zusjgst:=eingangrow(6);zushj +:=eingangrow(7);IF zusjgst=""CAND zushj<>""THEN fehlermeldungausgeben(6, +meldungjgstfehlt,1);LEAVE schuelerkursenzuordnenpruefungELIF zushj=""CAND +zusjgst<>""THEN fehlermeldungausgeben(7,meldunghjfalsch,1);LEAVE +schuelerkursenzuordnenpruefungELIF zushj=""CAND zusjgst=""THEN +zusspaltezeigen:=FALSE ELIF zusjgst=gewjgstCAND zushj=gewhjTHEN +fehlermeldungausgeben(6,meldungandereauswahl,1);LEAVE +schuelerkursenzuordnenpruefungELIF jgstfalsch(gewjgst,"11")THEN +fehlermeldungausgeben(6,meldungjgstfalsch,1);LEAVE +schuelerkursenzuordnenpruefungELIF ihj<1COR ihj>2THEN fehlermeldungausgeben(7 +,meldunghjfalsch,1);LEAVE schuelerkursenzuordnenpruefungELIF jgstfalsch( +gewjgst,zusjgst)THEN fehlermeldungausgeben(6,meldungandereauswahl,1);LEAVE +schuelerkursenzuordnenpruefungELSE zusspaltezeigen:=TRUE FI .prueffeld8bis13: +klkz:=compress(eingangrow(10));klausurkz:=klkz<>"";FOR iFROM 8UPTO 13REP IF +eingangrow(i)<>""THEN LEAVE prueffeld8bis13FI PER ;fehlermeldungausgeben(8, +meldungfeldfuellen,1);LEAVE schuelerkursenzuordnenpruefung.prueffeld3536:IF +eingangrow(35)<>""COR eingangrow(36)<>""THEN fehlermeldungausgeben(35, +meldungandereauswahl,1);LEAVE schuelerkursenzuordnenpruefungFI . +planblockvorzpruefen:IF planblockvorzfalsch(14)COR planblockvorzfalsch(16) +COR planblockvorzfalsch(18)COR planblockvorzfalsch(20)COR planblockvorzfalsch +(22)THEN kurswahlsperrebeenden(kuwa2sperre);LEAVE +schuelerkursenzuordnenpruefungFI .datenholen:IF NOT exists(/server)THEN +fehlermeldungausgeben(letztepos,meldungserverfehler,1);LEAVE +schuelerkursenzuordnenpruefungFI ;IF eingangrow(4)=""THEN t:=kznurneue; +aktjgst:=text(int(eingangrow(5))-1)ELIF eingangrow(5)=""THEN t:=kzohneneue; +aktjgst:=eingangrow(4)ELSE t:=kzalle;aktjgst:=eingangrow(4)FI ; +kurswahlinitialisieren(aktjgst,gewjgst,gewhj,t,gewsj);kurswahlbasisholen( +fstat);IF zusspaltezeigenTHEN erweitertekurswahlbasisholen(zusjgst,zushj, +fstat);FI ;kurswahlsperresetzen(kuwa2sperre,sperreok);IF sperreokTHEN +alleplblbez:=alleplanblockbezeichnerELSE fehlermeldungausgeben(infeld, +meldungparallelanw,1);LEAVE schuelerkursenzuordnenpruefungFI . +planblockbez15bis23pruefen:IF planblockbezfalsch(eingangrow(15))THEN +fehlermeldungausgeben(15,meldungfalscherwert,1);kurswahlsperrebeenden( +kuwa2sperre);LEAVE schuelerkursenzuordnenpruefungELIF planblockbezfalsch( +eingangrow(17))THEN fehlermeldungausgeben(17,meldungfalscherwert,1); +kurswahlsperrebeenden(kuwa2sperre);LEAVE schuelerkursenzuordnenpruefungELIF +planblockbezfalsch(eingangrow(19))THEN fehlermeldungausgeben(19, +meldungfalscherwert,1);kurswahlsperrebeenden(kuwa2sperre);LEAVE +schuelerkursenzuordnenpruefungELIF planblockbezfalsch(eingangrow(21))THEN +fehlermeldungausgeben(21,meldungfalscherwert,1);kurswahlsperrebeenden( +kuwa2sperre);LEAVE schuelerkursenzuordnenpruefungELIF planblockbezfalsch( +eingangrow(23))THEN fehlermeldungausgeben(23,meldungfalscherwert,1); +kurswahlsperrebeenden(kuwa2sperre);LEAVE schuelerkursenzuordnenpruefungFI . +planblockbezpruefen:zeigbloecke:="";FOR iFROM 24UPTO 34REP IF +planblockbezfalsch(eingangrow(i))THEN fehlermeldungausgeben(i, +meldungfalscherwert,1);kurswahlsperrebeenden(kuwa2sperre);LEAVE +schuelerkursenzuordnenpruefungFI ;IF eingangrow(i)<>""THEN zeigbloeckeCAT +konvblock(eingangrow(i))FI ;PER .END PROC schuelerkursenzuordnenpruefung; +BOOL PROC planblockbezfalsch(TEXT CONST anwblock):suchab:=1;IF anwblock="" +THEN FALSE ELSE block:=text(anwblock,3);WHILE pos(alleplblbez,block,suchab)<> +0REP j:=pos(alleplblbez,block,suchab);IF jMOD 3=1THEN LEAVE +planblockbezfalschWITH FALSE ELSE suchab:=j+1FI PER ;TRUE FI END PROC +planblockbezfalsch;BOOL PROC planblockvorzfalsch(INT CONST feld):t:=( +eingangrow(feld)SUB 1);IF t<>""THEN IF eingangrow(feld+1)=""THEN +fehlermeldungausgeben(feld+1,meldungfeldfuellen,1);TRUE ELIF NOT (t="-"COR t= +"+")THEN fehlermeldungausgeben(feld,meldungfalscherwert,1);TRUE ELSE FALSE +FI ELIF eingangrow(feld+1)<>""THEN fehlermeldungausgeben(feld, +meldungfeldfuellen,1);TRUE ELSE FALSE FI END PROC planblockvorzfalsch;PROC +fehlermeldungausgeben(INT CONST feld,meldung,ruecksprung):infeld(feld); +standardmeldung(meldung,"");return(ruecksprung)END PROC fehlermeldungausgeben +;BOOL PROC jgstfalsch(TEXT CONST jgst,abjgst):jgst1:=int(jgst);jgst2:=int( +abjgst);jgst113END PROC jgstfalsch;PROC initbspuffer:FOR i +FROM 1UPTO anzschuelerbsREP schueler(i)(1):="";schueler(i)(2):="";schueler(i) +(3):="";schueler(i)(4):=""PER END PROC initbspuffer;PROC schueleraufzeigen: +fach:=text(eingangrow(8),2);art:=text(eingangrow(9),2);holschueler;IF +alleschueler=""THEN meldungkeineschueler;kurswahlsperrebeenden(kuwa2sperre) +ELSE zeigbearbschirm;standardnprocFI .zeigbearbschirm:standardstartproc( +maskebearb);standardkopfmaskeaktualisieren("Kurszuordnung für jetzige Jgst. " ++aktjgst+" in "+gewjgst+"."+gewhj);ausgabe:=fach;ausgabeCAT art;ausgabeCAT +text(eingangrow(10),1);IF eingangrow(11)<>""THEN ausgabeCAT "+";ausgabeCAT +text(eingangrow(11),2);ausgabeCAT text(eingangrow(12),2);ausgabeCAT text( +eingangrow(13),1);ELSE ausgabeCAT " "FI ;standardmaskenfeld(ausgabe,2); +ausgabe:=" ";ausgabeCAT text(eingangrow(14),1);ausgabeCAT konvblock( +eingangrow(15));ausgabeCAT text(eingangrow(16),1);ausgabeCAT konvblock( +eingangrow(17));ausgabeCAT text(eingangrow(18),1);ausgabeCAT konvblock( +eingangrow(19));ausgabeCAT text(eingangrow(20),1);ausgabeCAT konvblock( +eingangrow(21));ausgabeCAT text(eingangrow(22),1);ausgabeCAT konvblock( +eingangrow(23));standardmaskenfeld(ausgabe,3);IF zusspaltezeigenTHEN +standardmaskenfeld(eingangrow(6)+"."+eingangrow(7),4);ELSE standardmaskenfeld +(" ",4);FI ;standardmaskenfeld(fach,5);IF zeigbloecke=""THEN zeigbloecke:= +stdzeigbloecke;standardmaskenfeld(stdzeigbloecke,6)ELSE standardmaskenfeld( +text(zeigbloecke,33),6)FI ;zeigschueler.meldungkeineschueler: +fehlermeldungausgeben(14,meldungkeinedaten,1).holschueler:alleschueler:=""; +alleschueler1:=schuelermitwahl(fach,"",art,eingangrow(10));IF eingangrow(11) +<>""THEN alleschueler2:=schuelermitwahl(eingangrow(11),"",eingangrow(12), +eingangrow(13));schuelervergleichELSE alleschueler2:="";IF belegungpruefen +THEN pruefbelegungallerschuelerELSE alleschueler:=alleschueler1;anzschueler:= +anzahlschuelermitwahl(fach,"",art,eingangrow(10))FI ;FI . +pruefbelegungallerschueler:saktpos:=1;ssuchab:=2;alleschueler:="";anzschueler +:=0;WHILE saktpos<>0REP saktpos:=pos(alleschueler1,trenner1,ssuchab);IF +saktpos<>0THEN sname:=subtext(alleschueler1,ssuchab,saktpos-1);IF +richtigebelegung(sname)THEN alleschuelerCAT trenner1+sname;anzschuelerINCR 1 +FI ;ssuchab:=saktpos+1FI PER ;sname:=subtext(alleschueler1,ssuchab);IF +richtigebelegung(sname)THEN alleschuelerCAT trenner1+sname;anzschuelerINCR 1 +FI .END PROC schueleraufzeigen;PROC zeigschueler:aktfeld:=felderstername; +initbspuffer;FOR iFROM 1UPTO anzschuelerbsREP wahldaten:="";weiterewahldaten +:="";kennungdesschuelers:="";standardmaskenfeld(schuelername,aktfeld); +standardmaskenfeld(text(wahldaten,22),aktfeld+3);standardmaskenfeld( +weiterewahldaten,aktfeld+1);IF kennungdesschuelers=leereweiterewahldatenTHEN +standardmaskenfeld("",aktfeld+2)ELSE standardmaskenfeld(kennungdesschuelers, +aktfeld+2)FI ;aktfeldINCR 4PER ;infeld(1);standardfelderausgeben;infeld(9). +END PROC zeigschueler;TEXT PROC schuelername:findpos:=pos(alleschueler, +trenner1,aktpos+1);IF findpos>0THEN name:=subtext(alleschueler,aktpos+2, +findpos-1);aktpos:=findposELIF aktpos=length(alleschueler)THEN name:=""ELSE +name:=subtext(alleschueler,aktpos+2);aktpos:=length(alleschueler)FI ; +bereitenameauf(name)END PROC schuelername;TEXT PROC bereitenameauf(TEXT +CONST name):ausgabe:=name;change(ausgabe,trenner2,", ");ausgabe:=text(ausgabe +,pos(ausgabe,trenner2)-1);wahldatenaufbereiten(name);text(ausgabe,23)END +PROC bereitenameauf;PROC wahldatenaufbereiten(TEXT CONST name):TEXT VAR +zblock;IF name=""THEN wahldaten:=leerewahldaten;weiterewahldaten:= +leereweiterewahldatenELSE pos1:=pos(name,trenner2,1)-1;pos2:=pos(name, +trenner2,pos1+2)-1;nname:=subtext(name,1,pos1);vname:=subtext(name,pos1+2, +pos2);gdat:=subtext(name,pos2+2,pos2+9);kennungdesschuelers:=kennungvonfach( +FALSE );IF kennungdesschuelers=kennungkeinfachCOR kennungdesschuelers= +kennungkeinkursTHEN kennungdesschuelers:=""FI ;schueler(i)(1):=nname;schueler +(i)(2):=vname;schueler(i)(3):=gdat;schueler(i)(4):=kennungdesschuelers; +ermittlewahldaten;ermittleweiterewahldatenFI .ermittlewahldaten:wahl:= +wahldatenzumschueler(nname,vname,gdat,kennungfake);blockpos:=1;WHILE blockpos +0REP aktpos:=pos(quelle, +teilmuster,suchab);IF aktposMOD laengekurs=1THEN LEAVE kurseingetragenWITH +TRUE ELSE suchab:=aktpos+1FI PER ;FALSE END PROC kurseingetragen;PROC +schuelervergleich:saktpos:=1;ssuchab:=2;anzschueler:=0;WHILE saktpos<>0REP +saktpos:=pos(alleschueler1,trenner1,ssuchab);IF saktpos<>0THEN sname:=subtext +(alleschueler1,ssuchab,saktpos-1);IF pos(alleschueler2,sname)>0THEN IF +belegungpruefenTHEN IF richtigebelegung(sname)THEN alleschuelerCAT trenner1+ +sname;anzschuelerINCR 1FI ELSE alleschuelerCAT trenner1+sname;anzschueler +INCR 1FI FI ;ssuchab:=saktpos+1FI PER ;sname:=subtext(alleschueler1,ssuchab); +IF pos(alleschueler2,sname)>0THEN IF belegungpruefenTHEN IF richtigebelegung( +sname)THEN alleschuelerCAT trenner1+sname;anzschuelerINCR 1FI ELSE +alleschuelerCAT trenner1+sname;anzschuelerINCR 1FI FI .END PROC +schuelervergleich;BOOL PROC richtigebelegung(TEXT CONST name):bewertung:= +TRUE ;pos1:=pos(name,trenner2,2)-1;pos2:=pos(name,trenner2,pos1+2)-1;nname:= +subtext(name,2,pos1);vname:=subtext(name,pos1+2,pos2);gdat:=subtext(name,pos2 ++2,pos2+9);feld:=12;FOR iFROM 1UPTO 5REP feldINCR 2;vorz:=eingangrow(feld); +IF vorz<>""THEN blockbez:=eingangrow(feld+1);block:=konvblock(blockbez);IF +vorz="-"THEN bewertung:=NOT schuelerinplanblock(nname,vname,gdat,block)ELSE +bewertung:=schuelerinplanblock(nname,vname,gdat,block)FI ;IF NOT bewertung +THEN LEAVE richtigebelegungWITH FALSE FI FI ;PER ;bewertungEND PROC +richtigebelegung;PROC schuelerkursenzuordnenspeichern(BOOL CONST speichern): +speicherungsfehler:=FALSE ;IF speichernTHEN pruefkennungen;speicherkennungen; +logmeldung:=text1;logmeldungCAT gewjgst;logmeldungCAT punkt;logmeldungCAT +gewhj;logbucheintragvornehmen(logmeldung);kurswahl2sichern(i);ELSE +standardmeldung(meldungnspeichern," ")FI ;naechsterbildschirm.pruefkennungen: +standardmeldung(meldungpruefen," ");j:=felderstekennung;FOR iFROM 1UPTO +anzschuelerbsREP kennung:=standardmaskenfeld(j);infeld(j);IF kennung<>""THEN +IF schueler(i)(1)=""THEN fehlermeldungkeinschuelerFI ;planbloecke:=compress( +kursdaten(fach+kennung,kennungplanbl));IF dbstatus<>0THEN +fehlermeldungunbekkennungELIF planbloecke<>""CAND kennung<>schueler(i)(4) +THEN pruefplanbloeckeFI FI ;jINCR 4PER .pruefplanbloecke:prueferstenblock;IF +length(planbloecke)>3THEN pruefzweitenblockFI .prueferstenblock:IF +schuelerinplanblock(schueler(i)(1),schueler(i)(2),schueler(i)(3),text( +planbloecke,3))THEN fehlermeldungschonkursblock1FI .pruefzweitenblock:IF +schuelerinplanblock(schueler(i)(1),schueler(i)(2),schueler(i)(3),subtext( +planbloecke,4))THEN fehlermeldungschonkursblock2FI . +fehlermeldungschonkursblock1:infeld((i-1)*4+9);standardmeldung( +meldungschonkurs,text(planbloecke,3)+az);return(1);LEAVE +schuelerkursenzuordnenspeichern.fehlermeldungschonkursblock2:infeld((i-1)*4+9 +);standardmeldung(meldungschonkurs,subtext(planbloecke,4)+az);return(1); +LEAVE schuelerkursenzuordnenspeichern.fehlermeldungkeinschueler: +fehlermeldungausgeben((i-1)*4+9,meldungfeldleeren,1);LEAVE +schuelerkursenzuordnenspeichern.fehlermeldungunbekkennung:infeld((i-1)*4+9); +standardmeldung(meldungunbeklv,fach+kennung+az);return(1);LEAVE +schuelerkursenzuordnenspeichern.speicherkennungen:standardmeldung( +meldungspeichern," ");j:=felderstekennung;FOR iFROM 1UPTO anzschuelerbsREP +kennung:=standardmaskenfeld(j);infeld(j);IF kennung<>schueler(i)(4)THEN IF +NOT klausurkzTHEN ermittleklkennzFI ;schuelerwahlaendern(schueler(i)(1), +schueler(i)(2),schueler(i)(3),fach,schueler(i)(4),art,fach,kennung,art,klkz); +IF dbstatus<>0THEN speicherungsfehler:=TRUE FI ;FI ;jINCR 4PER ;IF +speicherungsfehlerTHEN kurswahlserveraktualisieren(aktjgst,gewjgst,gewhj)FI . +naechsterbildschirm:kurswahl0holen(fstat);kurswahl1holen(fstat);IF aktpos< +length(alleschueler)CAND NOT speicherungsfehlerTHEN zeigschueler;return(1); +IF speicherungsfehlerTHEN standardmeldung(meldungspeicherfehler,"");FI ELSE +kurswahlsperrebeenden(kuwa2sperre);enter(2);IF speicherungsfehlerTHEN +standardmeldung(meldungspeicherfehler,"");infeld(letztepos)FI FI .END PROC +schuelerkursenzuordnenspeichern;PROC ermittleklkennz:klwahl:= +wahldatenzumschueler(schueler(i)(1),schueler(i)(2),schueler(i)(3), +kennungfaartkl);z:=1;WHILE z""REP +standardmaskenfeld(aktkennung,aktzeile);aktzeileINCR 4PER ;infeld(kopzeile+4) +;standardfelderausgeben;infeld(kopzeile+4);FI ;return(1).fehlermeldungkeinkop +:standardmeldung(meldungkeinekopfunktion,"").END PROC +schuelerkursenzuordnenkopieren;PROC schuelerkursenzuordnenlisten:kursliste:= +"";aktfeld:=infeld;w:=startwindow(35,23,77,1);liste:="";standardmeldung( +meldunglistezeigen,"");IF menuedraussenTHEN reorganizescreenFI ;fuelleliste; +infeld(1);standardfelderausgeben;open(w);auskunfterteilung(liste,w,FALSE ); +reorganizescreen;setlasteditvalues;infeld(aktfeld);return(1).fuelleliste: +listeCAT "Anzahl Schüler wie ausgewählt";listeCAT auskunftstextende;listeCAT +text(anzschueler);listeCAT auskunftstextende;listeCAT " ";listeCAT +auskunftstextende;listeCAT "Fach gewählt Kurszahl/-größe";listeCAT +auskunftstextende;listeCAT fach;listeCAT " ";listeCAT art;listeCAT " "; +listeCAT gewaehlteschueler;listeCAT " ";listeCAT anzahlkurse;listeCAT +kursgroesse;listeCAT auskunftstextende;listeCAT " ";listeCAT +auskunftstextende;listeCAT "Kurse Planblock Schüler";listeCAT +auskunftstextende;listeallerkurse.listeallerkurse:anfpos:=1;WHILE anfpos< +length(kursliste)REP listeCAT fach+" ";kennung:=subtext(kursliste,anfpos, +anfpos+3);listeCAT kennung;listeCAT " ";kurs:=kursdaten(fach+kennung, +kennungplanbl);IF kurs=""THEN listeCAT " "ELSE listeCAT text(int( +text(kurs,3)),2);listeCAT " ";listeCAT text(int(subtext(kurs,4)),2);liste +CAT " ";FI ;listeCAT text(anzahlschuelermitwahl(fach,kennung,"","")); +listeCAT auskunftstextende;anfposINCR 4PER .gewaehlteschueler:anzsch:= +anzahlschuelermitwahl(fach,"",art,"");text(text(anzsch),6).kursgroesse:text( +anzschDIV anzkurse).anzahlkurse:kurse:=allekurse;suchanfang;suchende;IF +anfpos=0THEN "0 "ELSE kurse:=subtext(kurse,anfpos,endpos); +betrachtekurse;text(text(anzkurse),10)FI .betrachtekurse:anzkurse:=0;anfpos:= +1;kursliste:="";WHILE anfpos0REP IF (anfposMOD 10)=1CAND subtext(kurse, +anfpos+8,anfpos+9)=artTHEN LEAVE suchanfangELSE anfpos:=pos(kurse,fach,anfpos ++1)FI ;PER .suchende:findpos:=pos(kurse,fach,anfpos+1);IF anfpos<>0THEN +endpos:=anfpos+9;WHILE findpos<>0REP IF (findposMOD 10)=1CAND subtext(kurse, +findpos+8,findpos+9)=artTHEN endpos:=findpos+9FI ;findpos:=pos(kurse,fach, +findpos+1)PER ;ELSE endpos:=0FI .END PROC schuelerkursenzuordnenlisten;TEXT +PROC konvblock(TEXT CONST blockbez):INT VAR block;IF blockbez<>""THEN block:= +int(text(blockbez,2));IF block<10THEN "0"+text(block)+text(blockbezSUB 3,1) +ELSE text(block)+text(blockbezSUB 3,1)FI ELSE " "FI END PROC konvblock; +PROC initrow:FOR iFROM 2UPTO anzfeldereingangREP eingangrow(i):=""PER END +PROC initrow;PROC merkeeingangbs:FOR iFROM 2UPTO anzfeldereingangREP +eingangrow(i):=standardmaskenfeld(i)PER .END PROC merkeeingangbs;PROC +logbucheintragvornehmen(TEXT CONST escfunktion):logeintrag(logtext1+ +escfunktion+logtext2+aktjgst)END PROC logbucheintragvornehmen;initrow;END +PACKET schuelerzukursenzuordnen; + -- cgit v1.2.3