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 --- ...uordnung und umwahl fuer einzelne schueler sek2 | 420 +++++++++++++++++++++ 1 file changed, 420 insertions(+) create mode 100644 app/schulis/2.2.1/src/2.kurszuordnung und umwahl fuer einzelne schueler sek2 (limited to 'app/schulis/2.2.1/src/2.kurszuordnung und umwahl fuer einzelne schueler sek2') diff --git a/app/schulis/2.2.1/src/2.kurszuordnung und umwahl fuer einzelne schueler sek2 b/app/schulis/2.2.1/src/2.kurszuordnung und umwahl fuer einzelne schueler sek2 new file mode 100644 index 0000000..2c44f7d --- /dev/null +++ b/app/schulis/2.2.1/src/2.kurszuordnung und umwahl fuer einzelne schueler sek2 @@ -0,0 +1,420 @@ +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 + -- cgit v1.2.3