summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/2.kurszuordnung und umwahl fuer einzelne schueler sek2
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/2.kurszuordnung und umwahl fuer einzelne schueler sek2')
-rw-r--r--app/schulis/2.2.1/src/2.kurszuordnung und umwahl fuer einzelne schueler sek2420
1 files changed, 420 insertions, 0 deletions
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 letzterschueler<ersterschuelerTHEN
+meldungausgeben(meldungkeineschueler,einganggewjgst,1);LEAVE
+kurszuordnungundumwahlbearbeitenFI ;kurswahlsperresetzen(kuwa2sperre,sperreok
+);IF NOT sperreokTHEN meldungausgeben(meldungparallelanw,einganggewjgst,1);
+LEAVE kurszuordnungundumwahlbearbeitenFI ;prueffeld6bis8;standardstartproc(
+bearbmaske);standardkopfmaskeaktualisieren("Kurszuordnung für jetzige Jgst. "
++aktjgst+" in "+gewjgst+"."+gewhj);aktbsseite:=1;aktplblindex:=1;
+schuelerbearbeiten;standardnproc.prueffeld6bis8:FOR iFROM eingangfamnameUPTO
+eingangdatumREP IF standardmaskenfeld(i)=""THEN meldungausgeben(
+meldungfeldfuellen,i,1);kurswahlsperrebeenden(kuwa2sperre);LEAVE
+kurszuordnungundumwahlbearbeitenFI PER ;pruefexistschueler.pruefexistschueler
+:aktfaecher:=wahldatenzumschueler(aktname,aktvname,aktgebdatum,kzfaecher);IF
+dbstatus<>0THEN 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 kurspos<length(
+aktwahl)REP fach:=subtext(aktwahl,kurspos,kurspos+1);kennung:=subtext(aktwahl
+,kurspos+2,kurspos+5);aktfaecherCAT fach;aktkurseCAT kennung;fach:=compress(
+fach);kennung:=compress(kennung);art:=compress(subtext(aktwahl,kurspos+6,
+kurspos+7));klausur:=compress(aktwahlSUB (kurspos+8));standardmaskenfeld(fach
+,fachfeld);standardmaskenfeld(art,artfeld);standardmaskenfeld(klausur,klfeld)
+;standardmaskenfeld(kennung,kursfeld);bearbrow(rowindex):=ROW 4TEXT :(fach,
+art,klausur,kennung);IF rowindex<anzbearbeingfelderTHEN rowindexINCR 1FI ;
+fachfeldINCR 1;artfeldINCR 2;klfeldINCR 2;kursfeldINCR 1;kursposINCR
+laengefakeartklPER ;IF rowindex<anzbearbeingfelderTHEN FOR jFROM rowindex
+UPTO anzbearbeingfelderREP standardmaskenfeld("",fachfeld);standardmaskenfeld
+("",artfeld);standardmaskenfeld("",klfeld);standardmaskenfeld("",kursfeld);
+bearbrow(rowindex):=ROW 4TEXT :("","","","");IF rowindex<anzbearbeingfelder
+THEN rowindexINCR 1;fachfeldINCR 1;artfeldINCR 2;klfeldINCR 2;kursfeldINCR 1;
+FI PER FI .zeigplanblockkurszuordnung:alleplanbloecke:=
+alleplanblockbezeichner;scrollen:=length(alleplanbloecke)>laengeplbleinesbs;
+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 kurspos<length(kurse)REP ausgabekurseCAT subtext(kurse,kurspos,kurspos
++1);ausgabekurseCAT " ";ausgabekurseCAT subtext(kurse,kurspos+2,kurspos+5);
+kursposINCR 6PER .END PROC ermittlemoeglichekurse;TEXT PROC konvplanblock(
+TEXT CONST planblock):INT VAR blnr:=int(text(planblock,2));IF blnr<10THEN "0"
++text(blnr)+(planblockSUB 3)ELSE planblockFI END PROC konvplanblock;TEXT
+PROC konvdatum(TEXT CONST datumohnepunkte):text(datumohnepunkte,2)+"."+
+subtext(datumohnepunkte,3,4)+"."+subtext(datumohnepunkte,5)END PROC konvdatum
+;PROC kurszuordnungundumwahlspeichern(BOOL CONST speichern):BOOL VAR
+aenderung:=FALSE ;TEXT VAR std,fa,ke;IF speichernTHEN
+pruefundspeicheraenderungen;ELSE standardmeldung(meldungnspeichern,"");FI ;
+naechsterbildschirm.naechsterbildschirm:IF listenbearbeitungTHEN IF listenpos
+>length(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<length(kursliste)REP
+listeCAT praefix;IF praefix<>""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 letzterschueler<ersterschuelerTHEN
+meldungausgeben(meldungkeineschueler,einganggewjgst,1);LEAVE
+kurszuordnungundumwahllistezeigenFI ;kurswahlsperresetzen(kuwa2sperre,
+sperreok);IF NOT sperreokTHEN letztesfeld:=infeld;meldungausgeben(
+meldungparallelanw,letztesfeld,1);LEAVE kurszuordnungundumwahllistezeigenFI ;
+suchindices;zeigelisteFI .zeigeliste:schuelerliste:=trenner;standardstartproc
+(listenmaske);zeigliste(ersterindex);standardnproc.END PROC
+kurszuordnungundumwahllistezeigen;PROC zeigliste(INT CONST zeilennr):
+aktlistennr:=zeilennr;infeld(ersteslistenfeld);FOR iFROM 1UPTO
+anzlistenfelderREP aktname:=wahldatenzumindex(zeilennr+i-1,kzname);changeall(
+aktname,trenner,namenstrenner);standardmaskenfeld(aktname,i*2+1);IF pos(
+schuelerliste,trenner+text(aktlistennr+i-1,3)+trenner)>0THEN
+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
+aktlistennr<ersterschuelerletzterbsCOR aktlistennr>ersterschuelerletzterbs
+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)<ersterindexTHEN zeigliste(ersterindex)
+ELSE zeigliste(aktlistennr-anzlistenfelder)FI ;return(1)FI FI .
+fehlermeldungaktionnichtmöglich:meldungausgeben(meldungkeinblaettern,aktfeld,
+1);LEAVE kurszuordnungundumwahllisteblaettern.END PROC
+kurszuordnungundumwahllisteblaettern;PROC analysierekennzeichnungen:FOR i
+FROM 1UPTO anzlistenfelderREP IF standardmaskenfeld(i*2)<>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
+