PACKET kurszuordnungundumwahlfuereinzelneschuelersek2DEFINES kurszuordnungundumwahlsek2anfang,kurszuordnungundumwahlbearbeiten, kurszuordnungundumwahlspeichern,kurszuordnungundumwahlkurselisten, kurszuordnungundumwahlkopieren,kurszuordnungundumwahlrechtehaelfte, kurszuordnungundumwahllinkehaelfte,kurszuordnungundumwahlvorwaerts, kurszuordnungundumwahlrueckwaerts,kurszuordnungundumwahlbeenden, kurszuordnungundumwahllistezeigen,kurszuordnungundumwahllisteblaettern, kurszuordnungundumwahllistebearbeiten,kurszuordnungundumwahllistebeenden:LET artbestand="c02 art lehrveranstaltung",abiklbestand="c02 abitur klausur", kuwa2sperre="Kurswahl-2 ",eingangsmaske= "ms kurszuordnung und umwahl sek2 eingang",bearbmaske= "ms kurszuordnung und umwahl sek2 bearb",listenmaske="mu objektliste", schuljahr="Schuljahr",halbjahr="Schulhalbjahr",laengefake=6,laengefakeartkl=9 ,laengevname=15,laengeplbleinesbs=36,laengekurseeinesbs=42,laengefamname=30, laengegebdat=8,laengename=53,einganggewjgst=2,einganggewhj=3,eingangaktjgst=4 ,eingangaktneue=5,eingangfamname=6,eingangrufname=7,eingangdatum=8,bearbname= 2,bearbfaecher=3,bearbkurse=42,meldungwarten=69,meldungpraezisieren=129, meldungpruefen=329,meldungspeichern=50,meldungnspeichern=63, meldungfeldfuellen=52,meldungfalschejgst=404,meldungfalscheshj=405, meldungandereauswahl=318,meldunglistezeigen=7,meldungkeineschueler=423, meldungserverfehler=416,meldungkeinblaettern=72,meldungfalschesfach=310, meldungfalscheart=311,meldungunbeklv=360,meldungblockschnitt=424, meldungspfehler=419,meldungparallelanw=425,meldungfalscheartzk=434, meldungunbekannt=126,trenner="�",leerespraefix=" ",leererblock=" ", leerebloecke=" ",ausgzeichen="#",namenstrenner=", ",kzdoppeltbelegt= " * ",kzfaecher="F",kznurneue="N",kzname="N",kzohneneue="O",kzkurse="K", kzalle="A",kzart="A",kzstd="S",kzplbl="P",kzfaplbl="FP",kzfakeartkl="FKAk", logtext1="Anw. 2.3.1 Umwahl ",text1=" """,text2=""" ",punkt=".",komma=", ", ersteslistenfeld=2,erstesfachfeld=3,ersteskursfeld=42,anzbearbeingfelder=13, anzlistenfelder=18,anzbearbzeilen=12,anzfeldereingang=8;TEXT VAR gewsj,aktsj :="0000",akthj,gewjgst,gewhj,aktjgst,aktneue,aktwahl,aktname,aktvname, aktgebdatum,aktfaecher,aktartkl,aktkurse,aktschueler,schuelergruppe, schuelerliste,aktblock,alleplanbloecke:="",faecherbloecke,wahldaten,fach,art, klausur,kennung,fehlerblock,allearten:=trenner,allefaecher:=trenner,block12, block1,block2,alleklausurbez:="",praefix,kurse,pruefbloecke:=trenner, logmeldung;INT VAR i,j,letztepos:=2,fstat:=0,aktlistennr,fachfeld:= erstesfachfeld,artfeld:=16,klfeld:=17,kursfeld:=ersteskursfeld,aktplblindex:= 1,anfpos,aktbsseite:=1,letztesfeld,listenpos:=1,aktindex,ersterindex:= ersterschueler;ROW anzbearbeingfelderROW 4TEXT VAR bearbrow;ROW anzfeldereingangTEXT VAR eingangrow;ROW anzlistenfelderTEXT VAR aktliste; BOOL VAR listenbearbeitung:=FALSE ,rechtsscrollen:=FALSE ,sperreok, kopierfunktion:=FALSE ,scrollen:=FALSE ;WINDOW VAR w;initroweingang; initrowbearb;PROC initroweingang:FOR iFROM 2UPTO anzfeldereingangREP eingangrow(i):=""PER ;END PROC initroweingang;PROC initrowbearb:INT VAR i; FOR iFROM 1UPTO anzbearbeingfelderREP bearbrow(i):=ROW 4TEXT :("","","","") PER ;END PROC initrowbearb;PROC kurszuordnungundumwahlsek2anfang:aktplblindex :=1;standardstartproc(eingangsmaske);gibeingangaus;infeld(1); standardfelderausgeben;infeld(letztepos);standardnproc.gibeingangaus:FOR i FROM 2UPTO anzfeldereingangREP standardmaskenfeld(eingangrow(i),i);IF eingangrow(i)<>""THEN letztepos:=iFI PER .END PROC kurszuordnungundumwahlsek2anfang;PROC kurszuordnungundumwahlbearbeiten: listenbearbeitung:=FALSE ;kopierfunktion:=FALSE ;schuelerliste:=""; standardmeldung(meldungwarten,"");merkeeingang;aktname:=eingangrow( eingangfamname);aktvname:=eingangrow(eingangrufname);aktgebdatum:=konvdatum( eingangrow(eingangdatum));prueffeld2bis5;IF fstat<>0THEN LEAVE kurszuordnungundumwahlbearbeitenFI ;kurswahlinitialisieren(aktjgst,gewjgst, gewhj,schuelergruppe,gewsj);kurswahlbasisholen(fstat);IF fstat<>0THEN meldungausgeben(meldungserverfehler,einganggewjgst,1);LEAVE kurszuordnungundumwahlbearbeitenELIF letzterschueler0THEN meldungausgeben(meldungunbekannt,eingangfamname,1); kurswahlsperrebeenden(kuwa2sperre);LEAVE kurszuordnungundumwahlbearbeitenFI . END PROC kurszuordnungundumwahlbearbeiten;PROC schuelerbearbeiten:INT VAR kurspos,rowindex:=1;aktschueler:=aktname+namenstrenner+aktvname+namenstrenner +aktgebdatum;initrowbearb;ermittlefaecherartklkurse;standardmaskenfeld(text( aktschueler,laengename),bearbname);zeigplanblockkurszuordnung. ermittlefaecherartklkurse:fachfeld:=erstesfachfeld;artfeld:=16;klfeld:=17; kursfeld:=ersteskursfeld;kurspos:=1;aktfaecher:="";aktartkl:="";aktkurse:=""; rowindex:=1;aktwahl:=wahldatenzumschueler(aktname,aktvname,aktgebdatum, kzfakeartkl);IF dbstatus=1COR aktwahl=""THEN aktwahl:="";initrowbearb;FOR j FROM 1UPTO anzbearbeingfelderREP standardmaskenfeld("",fachfeld); standardmaskenfeld("",artfeld);standardmaskenfeld("",klfeld); standardmaskenfeld("",kursfeld);fachfeldINCR 1;artfeldINCR 2;klfeldINCR 2; kursfeldINCR 1;PER ;ELSE gibwahlausFI .gibwahlaus:WHILE kursposlaengeplbleinesbs; zeigbearbdaten(aktplblindex).END PROC schuelerbearbeiten;PROC zeigbearbdaten( INT CONST planblocknr):INT VAR blockpos:=planblocknr*3-2;pruefbloecke:= trenner;faecherbloecke:=wahldatenzumschueler(aktname,aktvname,aktgebdatum, kzfaplbl);rechtsscrollen:=FALSE ;FOR iFROM 1UPTO anzbearbzeilenREP aktblock:= subtext(alleplanbloecke,blockpos,blockpos+2);IF aktblock=""THEN scrollen:= FALSE ;standardmaskenfeld("",i*4+51);standardmaskenfeld("",i*4+52); standardmaskenfeld("",i*4+53);standardmaskenfeld("",i*4+54)ELSE standardmaskenfeld(konvplanblock(aktblock),i*4+51);standardmaskenfeld( planblockdaten(aktblock,kzstd),i*4+52);standardmaskenfeld("",i*4+53); ermittlemoeglichekurse;blockposINCR 3;FI ;PER ; kurszuordnungundumwahlkopierenvorbereiten;infeld(erstesfachfeld).END PROC zeigbearbdaten;PROC ermittlemoeglichekurse:TEXT VAR kurse:=planblockdaten( aktblock,kzkurse),ausgabekurse;INT VAR kurspos:=1,berhilfe:=aktbsseite* laengekurseeinesbs;IF length(kurse)>berhilfeTHEN rechtsscrollen:=TRUE ;FI ; kurse:=subtext(kurse,berhilfe-laengekurseeinesbs+1,berhilfe);konvkurse; standardmaskenfeld(ausgabekurse,i*4+54).konvkurse:ausgabekurse:="";kurspos:=1 ;WHILE kursposlength(schuelerliste)THEN kurswahlsperrebeenden(kuwa2sperre);enter(3)ELSE kopierfunktion:=FALSE ;IF naechsterschuelerTHEN infeld(1);schuelerbearbeiten; return(1)ELSE kurswahlsperrebeenden(kuwa2sperre);enter(3)FI FI ;ELSE kurswahlsperrebeenden(kuwa2sperre);enter(2)FI .pruefundspeicheraenderungen: standardmeldung(meldungpruefen,"");fachfeld:=erstesfachfeld;artfeld:=16; klfeld:=17;kursfeld:=ersteskursfeld;aenderung:=FALSE ;wahldaten:="";FOR i FROM 1UPTO anzbearbeingfelderREP infeld(fachfeld);fach:=standardmaskenfeld( fachfeld);art:=standardmaskenfeld(artfeld);klausur:=standardmaskenfeld(klfeld );kennung:=standardmaskenfeld(kursfeld);block12:=kursdaten(text(fach,2)+ kennung,kzplbl);IF fach<>bearbrow(i)(1)COR art<>bearbrow(i)(2)COR klausur<> bearbrow(i)(3)COR kennung<>bearbrow(i)(4)THEN aenderung:=TRUE FI ;IF fach<>"" THEN IF art=""CAND kennung=""THEN meldungfeldfuellenausgebenELSE prueffachFI ELIF art<>""COR kennung<>""THEN meldungfeldfachfuellenausgeben;LEAVE kurszuordnungundumwahlspeichernFI ;IF art<>""THEN pruefartFI ;IF kennung<>"" THEN pruefkennung;pruefartzumkurs;IF block12<>leerebloeckeTHEN pruefkursueberschneidungFI FI ;IF fach<>""THEN wahldatenCAT text(klausur,1); wahldatenCAT text(art,2);wahldatenCAT text(fach,2);wahldatenCAT text(kennung, 4);wahldatenCAT text(block12,6)FI ;fachfeldINCR 1;artfeldINCR 2;klfeldINCR 2; kursfeldINCR 1PER ;IF aenderungTHEN standardmeldung(meldungspeichern,""); schuelerwahleintragen(aktname,aktvname,aktgebdatum,wahldaten);IF dbstatus<>0 THEN meldungausgeben(meldungspfehler,bearbfaecher,1);LEAVE kurszuordnungundumwahlspeichernELSE logbucheintragvornehmen;kurswahl2sichern( fstat)FI FI .prueffach:IF allefaecher=trennerTHEN holepruefdatenFI ;IF pos( allefaecher,trenner+fach+trenner)=0THEN meldungausgeben(meldungfalschesfach, fachfeld,1);LEAVE kurszuordnungundumwahlspeichernFI .pruefart:IF pos( allearten,trenner+art+trenner)=0THEN meldungausgeben(meldungfalscheart, artfeld,1);LEAVE kurszuordnungundumwahlspeichernFI .pruefkennung:std:= compress(kursdaten(text(fach,2)+text(kennung,4),kzart));IF dbstatus<>0THEN standardmeldung(meldungunbeklv,text(fach,2)+kennung+ausgzeichen);infeld( kursfeld);return(1);LEAVE kurszuordnungundumwahlspeichernFI .pruefartzumkurs: IF art<>""CAND std<>artCAND std<>""THEN meldungfalscheartausgeben;LEAVE kurszuordnungundumwahlspeichernFI .pruefkursueberschneidung:TEXT VAR kuform; block1:=text(block12,3);block2:=subtext(block12,4);FOR jFROM 1UPTO i-1REP fa :=standardmaskenfeld(erstesfachfeld+j-1);ke:=standardmaskenfeld( ersteskursfeld+j-1);kuform:=text(text(fa,2)+ke,laengefake);IF fa<>""CAND ke<> ""THEN IF kuform<>text(text(fach,2)+kennung,laengefake)THEN IF planblockschnitt(kuform)THEN meldungblockschnittausgeben;LEAVE kurszuordnungundumwahlspeichernFI FI FI PER ;FOR jFROM i+1UPTO anzbearbeingfelderREP fa:=standardmaskenfeld(erstesfachfeld+j-1);ke:= standardmaskenfeld(ersteskursfeld+j-1);kuform:=text(text(fa,2)+ke,laengefake) ;IF fa<>""CAND ke<>""THEN IF kuform<>text(text(fach,2)+kennung,laengefake) THEN IF planblockschnitt(kuform)THEN meldungblockschnittausgeben;LEAVE kurszuordnungundumwahlspeichernFI FI FI PER .meldungfeldfuellenausgeben: meldungausgeben(meldungfeldfuellen,artfeld,1).meldungfeldfachfuellenausgeben: meldungausgeben(meldungfeldfuellen,fachfeld,1).meldungfalscheartausgeben: standardmeldung(meldungfalscheartzk,text(fach,2)+kennung+ausgzeichen+std+ ausgzeichen);infeld(artfeld);return(1).meldungblockschnittausgeben: standardmeldung(meldungblockschnitt,compress(fehlerblock)+ausgzeichen);infeld (kursfeld);return(1).END PROC kurszuordnungundumwahlspeichern;BOOL PROC naechsterschueler:aktindex:=int(subtext(schuelerliste,listenpos,listenpos+2)) ;belegeglobalevariablen(aktindex);listenposINCR 4;aktname<>""END PROC naechsterschueler;BOOL PROC planblockschnitt(TEXT CONST andererkurs):TEXT VAR bl1,bl2,bl12;IF compress(andererkurs)=""THEN LEAVE planblockschnittWITH FALSE ELIF block1=leererblockCAND block2=leererblockTHEN LEAVE planblockschnittWITH FALSE FI ;bl12:=kursdaten(andererkurs,kzplbl);IF dbstatus=1THEN LEAVE planblockschnittWITH FALSE FI ;IF bl12=leerebloeckeTHEN LEAVE planblockschnittWITH FALSE FI ;IF block1<>leererblockTHEN bl1:=text( bl12,3);IF block1ganzerblockCOR bl1ganzerblockTHEN block1:=text(block1,2);bl1 :=text(bl12,2);ELSE bl1:=text(bl12,3)FI ;IF block1=bl1COR block1=bl2THEN fehlerblock:=block1;LEAVE planblockschnittWITH TRUE FI ;FI ;IF block2<> leererblockTHEN bl2:=subtext(bl12,4);IF block2ganzerblockCOR bl2ganzerblock THEN block2:=text(block2,2);bl2:=subtext(bl12,4,5)ELSE bl2:=subtext(bl12,4) FI ;IF block2=bl1COR block2=bl2THEN fehlerblock:=block2;LEAVE planblockschnittWITH TRUE FI ;FI ;FALSE .block1ganzerblock:(block1SUB 3)=" ". bl1ganzerblock:(bl1SUB 3)=" ".block2ganzerblock:(block2SUB 3)=" ". bl2ganzerblock:(bl2SUB 3)=" ".END PROC planblockschnitt;PROC holepruefdaten: allefaecher:=trenner;allearten:=trenner;inittupel(dnrfaecher); statleseschleife(dnrfaecher,"","",fnrffach,fnrffach,PROC sammleallefaecher); inittupel(dnrschluessel);statleseschleife(dnrschluessel,artbestand,"", fnrschlsachgebiet,fnrschlschluessel,PROC sammleallearten)END PROC holepruefdaten;PROC sammleallefaecher(BOOL VAR b):allefaecherCAT wert( fnrffach);allefaecherCAT trennerEND PROC sammleallefaecher;PROC sammleallearten(BOOL VAR b):IF wert(fnrschlsachgebiet)>artbestandCOR dbstatus <>0THEN b:=TRUE ELSE alleartenCAT wert(fnrschlschluessel);alleartenCAT trenner;alleartenCAT text(wert(fnrschlschluessel),2);alleartenCAT trennerFI END PROC sammleallearten;PROC kurszuordnungundumwahlkurselisten:TEXT VAR kursliste,liste,ausgabeart;INT VAR aktfeld;kursliste:="";aktfeld:=infeld;w:= startwindow(20,23,77,1);liste:="";standardmeldung(meldunglistezeigen,"");#IF menuedraussen08.02.91THEN reorganizescreenFI ;#fuelleliste;infeld(1); standardfelderausgeben;open(w);auskunfterteilung(liste,w,FALSE ); reorganizescreen;setlasteditvalues;infeld(aktfeld);return(1).fuelleliste: holklausurkuerzel;listeCAT "Zusammensetzung der Kurse";listeCAT auskunftstextende;listeCAT " ";listeCAT auskunftstextende;listeCAT "Fach Art Kurs Schüler Klausur";listeCAT auskunftstextende;listeCAT " ges. ";FOR iFROM 1UPTO 6REP IF (alleklausurbezSUB i)<>"" THEN listeCAT text((alleklausurbezSUB i),5)FI PER ;listeCAT auskunftstextende ;listeallerkurse.holklausurkuerzel:IF alleklausurbez=""THEN statleseschleife( dnrschluessel,abiklbestand,"",fnrschlsachgebiet,fnrschlschluessel,PROC sammlealleabikl)FI .listeallerkurse:belegefachart;betrachtekurse;anfpos:=1; praefix:=text(fach,5)+text(ausgabeart,4);WHILE anfpos""THEN praefix:=leerespraefixFI ;kennung:= subtext(kursliste,anfpos,anfpos+3);listeCAT text(kennung,6);listeCAT text( anzahlschuelermitwahl(fach,kennung,"",""),3);listeCAT " ";FOR iFROM 1UPTO 6 REP IF (alleklausurbezSUB i)<>""THEN listeCAT text(anzahlschuelermitwahl(fach ,kennung,ausgabeart,(alleklausurbezSUB i)),5)FI PER ;listeCAT auskunftstextende;anfposINCR 4PER ;listeCAT auskunftstextende.betrachtekurse: anfpos:=1;kursliste:="";kurse:=allekurse;WHILE anfpos<>0REP anfpos:=pos(kurse ,fach,anfpos);IF anfposMOD 10=1THEN IF subtext(kurse,anfpos,anfpos+1)=text( fach,2)CAND subtext(kurse,anfpos+8,anfpos+9)=text(art,2)THEN kurslisteCAT subtext(kurse,anfpos+2,anfpos+5)FI FI ;IF anfpos<>0THEN anfposINCR 1FI PER ; IF kursliste=""THEN ausgabeart:="";ermittleallekursezumfachELSE ausgabeart:= artFI .ermittleallekursezumfach:anfpos:=1;kursliste:="";WHILE anfpos<>0REP anfpos:=pos(kurse,fach,anfpos);IF anfposMOD 10=1THEN IF subtext(kurse,anfpos, anfpos+1)=fachTHEN kurslisteCAT subtext(kurse,anfpos+2,anfpos+5)FI FI ;IF anfpos<>0THEN anfposINCR 1FI PER .belegefachart:aktfeld:=infeld;IF aktfeld>2 CAND aktfeld<16THEN fach:=standardmaskenfeld(aktfeld);art:=standardmaskenfeld (((aktfeld-2)*2-1)+15)ELIF aktfeld>15CAND aktfeld<42THEN fach:= standardmaskenfeld(aktfeldDIV 2-5);IF aktfeldMOD 2=0THEN art:= standardmaskenfeld(aktfeld)ELSE art:=standardmaskenfeld(aktfeld-1)FI ELSE fach:=standardmaskenfeld(aktfeld-39);art:=standardmaskenfeld((aktfeld-39)*2+ 10)FI ;art:=compress(art).END PROC kurszuordnungundumwahlkurselisten;PROC kurszuordnungundumwahllistebeenden:kurswahlsperrebeenden(kuwa2sperre);enter(2 )END PROC kurszuordnungundumwahllistebeenden;PROC sammlealleabikl(BOOL VAR b) :IF wert(fnrschlsachgebiet)>abiklbestandCOR dbstatus<>0THEN b:=TRUE ELSE alleklausurbezCAT wert(fnrschlschluessel)FI END PROC sammlealleabikl;PROC kurszuordnungundumwahlkopierenvorbereiten:TEXT VAR fa,ke,f,k,aktplbl;INT VAR z;TEXT VAR var:="",neuerkurseintrag:="";IF pruefbloecke=trennerTHEN ermittlegezeigtebloecke;FI ;FOR jFROM 1UPTO anzbearbeingfelderREP fa:= standardmaskenfeld(bearbfaecher+j-1);ke:=standardmaskenfeld(bearbkurse+j-1); IF altedatenleerundneuedatenTHEN neuedateneintragenELIF altedatenundneuedatenleerTHEN altedatenloeschenELIF altedatenundneuedaten THEN altedatenloeschenundneuedateneintragenFI ;bearbrow(j)(1):=fa;bearbrow(j) (4):=kePER ;standardfelderausgeben.altedatenleerundneuedaten:bearbrow(j)(4)= ""CAND fa<>""CAND ke<>"".altedatenundneuedatenleer:bearbrow(j)(1)<>""CAND bearbrow(j)(4)<>""CAND ke="".altedatenundneuedaten:bearbrow(j)(1)<>""CAND bearbrow(j)(4)<>""CAND fa<>""CAND ke<>"".ermittlegezeigtebloecke:aktplbl:= subtext(alleplanbloecke,aktplblindex*3-2,(aktplblindex+anzbearbzeilen-1)*3); pruefbloecke:=trenner;FOR jFROM 1UPTO length(aktplbl)DIV 3REP pruefbloecke CAT subtext(aktplbl,j*3-2,j*3);pruefbloeckeCAT trennerPER .neuedateneintragen :faecherbloecke:=kursdaten(text(fa,2)+ke,kzplbl);IF faecherbloecke= leerebloeckeTHEN LEAVE neuedateneintragenFI ;aktplbl:=text(faecherbloecke,3); IF aktplbl<>leererblockTHEN i:=pos(pruefbloecke,trenner+aktplbl+trenner);IF i >0THEN i:=iDIV 4+1;tragneuenkurseinFI FI ;aktplbl:=subtext(faecherbloecke,4); IF aktplbl<>leererblockTHEN i:=pos(pruefbloecke,trenner+aktplbl+trenner);IF i >0THEN i:=iDIV 4+1;tragneuenkurseinFI FI .tragneuenkursein:IF standardmaskenfeld(i*4+53)<>""CAND standardmaskenfeld(i*4+53)<>text(fa,2)+ text(ke,4)THEN standardmaskenfeld(kzdoppeltbelegt,i*4+53)ELSE standardmaskenfeld(text(fa,2)+text(ke,4),i*4+53)FI .altedatenloeschen: loescheintrag.altedatenloeschenundneuedateneintragen:IF bearbrow(j)(1)<>fa COR bearbrow(j)(4)<>keTHEN loescheintragFI ;neuedateneintragen.loescheintrag: faecherbloecke:=kursdaten(text(bearbrow(j)(1),2)+bearbrow(j)(4),kzplbl);IF faecherbloecke=leerebloeckeTHEN LEAVE loescheintragFI ;aktplbl:=text( faecherbloecke,3);IF aktplbl<>leererblockTHEN i:=pos(pruefbloecke,trenner+ aktplbl+trenner);IF i>0THEN i:=iDIV 4+1;IF standardmaskenfeld(i*4+53)= kzdoppeltbelegtTHEN traganderenkurseinELSE standardmaskenfeld("",i*4+53)FI FI FI ;aktplbl:=subtext(faecherbloecke,4);IF aktplbl<>leererblockTHEN i:=pos( pruefbloecke,trenner+aktplbl+trenner);IF i>0THEN i:=iDIV 4+1;IF standardmaskenfeld(i*4+53)=kzdoppeltbelegtTHEN traganderenkurseinELSE standardmaskenfeld("",i*4+53)FI FI FI .traganderenkursein:neuerkurseintrag:= "";FOR zFROM 1UPTO j-1REP f:=standardmaskenfeld(bearbfaecher+z-1);IF f<>"" THEN k:=standardmaskenfeld(bearbkurse+z-1);IF k<>""THEN var:=text(f,2)+k;var :=kursdaten(var,kzplbl);IF text(var,3)=aktplblCOR subtext(var,4)=aktplblTHEN IF neuerkurseintrag=""THEN neuerkurseintrag:=text(f,2)+text(k,4)ELSE standardmaskenfeld(kzdoppeltbelegt,i*4+53);LEAVE traganderenkurseinFI FI FI FI PER ;FOR zFROM j+1UPTO anzbearbeingfelderREP f:=standardmaskenfeld( bearbfaecher+z-1);IF f<>""THEN k:=standardmaskenfeld(bearbkurse+z-1);IF k<>"" THEN var:=text(f,2)+k;var:=kursdaten(var,kzplbl);IF text(var,3)=aktplblCOR subtext(var,4)=aktplblTHEN IF neuerkurseintrag=""THEN neuerkurseintrag:=text( f,2)+text(k,4)ELSE standardmaskenfeld(kzdoppeltbelegt,i*4+53);LEAVE traganderenkurseinFI FI FI FI PER ;IF neuerkurseintrag=""THEN standardmaskenfeld("",i*4+53)ELSE tragkursausehemdoppelbeleinFI . tragkursausehemdoppelbelein:standardmaskenfeld(neuerkurseintrag,i*4+53).END PROC kurszuordnungundumwahlkopierenvorbereiten;PROC kurszuordnungundumwahlkopieren:kopierfunktion:=TRUE ; kurszuordnungundumwahlkopierenvorbereiten;kopierfunktion:=FALSE ;return(1) END PROC kurszuordnungundumwahlkopieren;PROC kurszuordnungundumwahlrechtehaelfte:INT VAR blockpos:=aktplblindex*3-2, aktfeld:=infeld;IF rechtsscrollenTHEN aktbsseiteINCR 1; zeigweiteremoeglichekurseELSE letztesfeld:=infeld;meldungausgeben( meldungkeinblaettern,letztesfeld,1)FI .zeigweiteremoeglichekurse:FOR iFROM 1 UPTO anzbearbzeilenREP aktblock:=subtext(alleplanbloecke,blockpos,blockpos+2) ;IF aktblock=""THEN standardmaskenfeld("",i*4+54)ELSE ermittlemoeglichekurse; blockposINCR 3;FI ;PER ;infeld(1);standardfelderausgeben;infeld(aktfeld); return(1).END PROC kurszuordnungundumwahlrechtehaelfte;PROC kurszuordnungundumwahllinkehaelfte:INT VAR blockpos:=aktplblindex*3-2,aktfeld :=infeld;IF aktbsseite<>1THEN rechtsscrollen:=TRUE ;aktbsseiteDECR 1; zeigweiteremoeglichekurseELSE letztesfeld:=infeld;meldungausgeben( meldungkeinblaettern,letztesfeld,1)FI .zeigweiteremoeglichekurse:FOR iFROM 1 UPTO anzbearbzeilenREP aktblock:=subtext(alleplanbloecke,blockpos,blockpos+2) ;IF aktblock=""THEN standardmaskenfeld("",i*4+54)ELSE ermittlemoeglichekurse; blockposINCR 3;FI ;PER ;infeld(1);standardfelderausgeben;infeld(aktfeld); return(1).END PROC kurszuordnungundumwahllinkehaelfte;PROC kurszuordnungundumwahlvorwaerts:INT VAR aktfeld:=infeld;IF scrollenTHEN aktplblindexINCR anzbearbzeilen;zeigbearbdaten(aktplblindex);infeld(aktfeld); return(1)ELSE letztesfeld:=infeld;meldungausgeben(meldungkeinblaettern, letztesfeld,1)FI END PROC kurszuordnungundumwahlvorwaerts;PROC kurszuordnungundumwahlrueckwaerts:INT VAR aktfeld:=infeld;IF aktplblindex>1 THEN scrollen:=TRUE ;aktplblindexDECR anzbearbzeilen;zeigbearbdaten( aktplblindex);infeld(aktfeld);return(1)ELSE letztesfeld:=infeld; meldungausgeben(meldungkeinblaettern,letztesfeld,1)FI END PROC kurszuordnungundumwahlrueckwaerts;PROC kurszuordnungundumwahlbeenden: kurswahlsperrebeenden(kuwa2sperre);IF listenbearbeitungTHEN enter(3)ELSE enter(2)FI END PROC kurszuordnungundumwahlbeenden;BOOL PROC datumkorrekt: standardpruefe(6,eingangdatum,1,1,"",fstat);fstat=0END PROC datumkorrekt; PROC prueffeld2bis5:fstat:=0;IF aktsj="0000"THEN aktsj:=schulkenndatum( schuljahr);akthj:=schulkenndatum(halbjahr)FI ;gewjgst:=eingangrow( einganggewjgst);gewhj:=eingangrow(einganggewhj);aktjgst:=eingangrow( eingangaktjgst);aktneue:=eingangrow(eingangaktneue);prueffeld2;prueffeld3; prueffeld4und5;prueffeld4;IF fstat=1THEN LEAVE prueffeld2bis5FI ;prueffeld5. prueffeld2:i:=int(gewjgst);IF gewjgst=""THEN meldungausgeben( meldungfeldfuellen,einganggewjgst,1);LEAVE prueffeld2bis5ELIF i<11COR i>14 THEN meldungausgeben(meldungfalschejgst,einganggewjgst,1);LEAVE prueffeld2bis5FI .prueffeld3:i:=int(gewhj);IF gewhj=""THEN meldungausgeben( meldungfeldfuellen,einganggewhj,1);LEAVE prueffeld2bis5ELIF i<1COR i>2THEN meldungausgeben(meldungfalscheshj,einganggewhj,1);LEAVE prueffeld2bis5FI . prueffeld4und5:IF aktjgst=""CAND aktneue=""THEN meldungausgeben( meldungpraezisieren,eingangaktjgst,1);LEAVE prueffeld2bis5ELIF aktjgst="" CAND aktneue<>""THEN schuelergruppe:=kznurneueELIF aktjgst<>""CAND aktneue="" THEN schuelergruppe:=kzohneneueELSE schuelergruppe:=kzalleFI .prueffeld4:i:= int(aktjgst);IF i<10COR i>14THEN meldungausgeben(meldungfalschejgst, einganggewjgst,1)ELIF i>int(gewjgst)THEN meldungausgeben(meldungandereauswahl ,einganggewjgst,1)ELIF i=int(gewjgst)THEN IF gewhj="1"CAND akthj="2"THEN meldungausgeben(meldungandereauswahl,einganggewhj,1)FI FI .prueffeld5:i:=int( aktneue);IF aktneue<>""CAND aktjgst<>""THEN IF i-1<>int(aktjgst)THEN meldungausgeben(meldungandereauswahl,eingangaktneue,1)FI ELIF aktneue<>"" CAND aktjgst=""THEN IF i<11COR i>14THEN meldungausgeben(meldungfalschejgst, eingangaktneue,1)ELIF i+1>int(gewjgst)THEN meldungausgeben( meldungandereauswahl,eingangaktneue,1)ELIF i-1=int(gewjgst)THEN IF gewhj="1" CAND akthj="2"THEN meldungausgeben(meldungandereauswahl,einganggewhj,1)FI FI FI .END PROC prueffeld2bis5;PROC kurszuordnungundumwahllistezeigen: standardmeldung(meldungwarten,"");merkeeingang;prueffeld2bis5;IF fstat<>0 THEN LEAVE kurszuordnungundumwahllistezeigenELSE standardmeldung( meldunglistezeigen,"");kurswahlinitialisieren(aktjgst,gewjgst,gewhj, schuelergruppe,gewsj);kurswahlbasisholen(fstat);IF fstat<>0THEN meldungausgeben(meldungserverfehler,einganggewjgst,1);LEAVE kurszuordnungundumwahllistezeigenELIF letzterschueler0THEN standardmaskenfeld("x",i*2);aktliste(i):="x"ELSE standardmaskenfeld("",i*2); aktliste(i):=""FI PER ;infeld(1);standardfelderausgeben;infeld( ersteslistenfeld).END PROC zeigliste;PROC suchindices:TEXT VAR aktname; aktname:=eingangrow(eingangfamname);IF aktname=""THEN ersterindex:= ersterschuelerELSE vergleichnamenFI .vergleichnamen:aktname:=text(aktname, laengefamname);aktnameCAT trenner;aktnameCAT text(eingangrow(eingangrufname), laengevname);aktnameCAT trenner;aktnameCAT text(eingangrow(eingangdatum), laengegebdat);aktnameCAT trenner;FOR iFROM ersterschuelerUPTO letzterschueler REP IF wahldatenzumindex(i,kzname)>=aktnameTHEN ersterindex:=i;LEAVE suchindicesFI PER ;ersterindex:=letzterschueler.END PROC suchindices;PROC kurszuordnungundumwahllisteblaettern(INT CONST aktion):INT VAR ersterschuelerletzterbs,aktfeld:=infeld;IF aktion=1THEN IF aktlistennr<> ersterschuelerTHEN analysierekennzeichnungen;ersterindex:=ersterschueler; zeigliste(ersterindex);return(1)ELSE fehlermeldungaktionnichtmöglichFI ELIF aktion=2THEN ersterschuelerletzterbs:=letzterschueler-anzlistenfelder+1;IF aktlistennrersterschuelerletzterbs THEN analysierekennzeichnungen;zeigliste(ersterschuelerletzterbs);return(1) ELIF aktlistennr=ersterschuelerletzterbsTHEN fehlermeldungaktionnichtmöglich FI ELIF aktion=3THEN IF aktlistennr>=letzterschueler-anzlistenfelder+1THEN fehlermeldungaktionnichtmöglichELSE analysierekennzeichnungen;zeigliste( aktlistennr+anzlistenfelder);return(1)FI ELIF aktion=4THEN IF aktlistennr= ersterindexTHEN fehlermeldungaktionnichtmöglichELSE analysierekennzeichnungen ;IF (aktlistennr-anzlistenfelder+1)aktliste(i)THEN schuelerlisteCAT text(aktlistennr+i-1,3);schuelerlisteCAT trennerFI PER .END PROC analysierekennzeichnungen;PROC kurszuordnungundumwahllistebearbeiten: listenpos:=1;listenbearbeitung:=TRUE ;kopierfunktion:=FALSE ; analysierekennzeichnungen;IF schuelerliste=trennerTHEN kurswahlsperrebeenden( kuwa2sperre);enter(2);LEAVE kurszuordnungundumwahllistebearbeitenELSE schuelerliste:=subtext(schuelerliste,2)FI ;standardstartproc(bearbmaske); standardkopfmaskeaktualisieren("Kurszuordnung für jetzige Jgst. "+aktjgst+ " in "+gewjgst+"."+gewhj);aktbsseite:=1;aktplblindex:=1;aktindex:=int(subtext (schuelerliste,listenpos,listenpos+2));belegeglobalevariablen(aktindex); schuelerbearbeiten;standardnproc;listenposINCR 4.END PROC kurszuordnungundumwahllistebearbeiten;PROC belegeglobalevariablen(INT CONST index):TEXT VAR iddaten:=wahldatenzumindex(index,kzname);INT VAR trenner1pos :=pos(iddaten,trenner),trenner2pos:=pos(iddaten,trenner,trenner1pos+1);IF dbstatus=0THEN aktname:=text(iddaten,trenner1pos-1);aktvname:=subtext(iddaten ,trenner1pos+1,trenner2pos-1);aktgebdatum:=subtext(iddaten,trenner2pos+1); ELSE aktname:="";aktvname:="";aktgebdatum:=""FI ;eingangrow(eingangfamname):= aktname;eingangrow(eingangrufname):=aktvname;eingangrow(eingangdatum):= datumrekonversion(aktgebdatum)END PROC belegeglobalevariablen;PROC meldungausgeben(INT CONST meldung,gewfeld,gewruecksprung):fstat:=1; standardmeldung(meldung,"");infeld(gewfeld);return(gewruecksprung)END PROC meldungausgeben;PROC merkeeingang:FOR iFROM 2UPTO anzfeldereingangREP eingangrow(i):=standardmaskenfeld(i)PER END PROC merkeeingang;PROC logbucheintragvornehmen:logmeldung:=logtext1;logmeldungCAT gewjgst;logmeldung CAT punkt;logmeldungCAT gewhj;logmeldungCAT text1;logmeldungCAT aktname; logmeldungCAT komma;logmeldungCAT aktvname;logmeldungCAT komma;logmeldungCAT aktgebdatum;logmeldungCAT text2;logeintrag(logmeldung)END PROC logbucheintragvornehmen;END PACKET kurszuordnungundumwahlfuereinzelneschuelersek2