summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/2.erf wahldaten
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/2.erf wahldaten')
-rw-r--r--app/schulis/2.2.1/src/2.erf wahldaten395
1 files changed, 395 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/2.erf wahldaten b/app/schulis/2.2.1/src/2.erf wahldaten
new file mode 100644
index 0000000..79ab36c
--- /dev/null
+++ b/app/schulis/2.2.1/src/2.erf wahldaten
@@ -0,0 +1,395 @@
+PACKET erfwahldatenDEFINES wahldatenveraendern,wahldatenspeichern,
+wahldatenbeenden,wahldatenuebernehmen,wahldatenschuelerlisten,
+wahldatenlisteblaettern,wahldatenlistenachbereiten:LET eingangsmaske=
+"ms wahldaten eingang",textzumeingangsknoten="Wahldaten bearbeiten",
+fnreingbetrjgst=2,fnreingbetrhj=3,fnreingsuderjgst=4,fnreingneuangzurjgst=5,
+fnreingfamiliennamesu=6,fnreingrufnamesu=7,fnreinggeburtsdatumsu=8,
+fnreingkurse=9,fnreinguebernausjgst=10,fnreinguebernaushj=11,
+fnreingcursorruhepos=12;LET jgst10="10",jgst11="11",jgst12="12",jgst13="13",
+hj1="1",hj2="2";LET logtext1="Anw. 2.1.1 Wahl ",logtext2="übernehmen ",
+logtext3=" nach ",logtext4=" für akt. ",text1=" """,text2=""" ",komma=", ",
+punkt=".";TEXT VAR logmeldung;TEXT VAR betrjgst,betrhj,jgstfuersu,
+jgstfuerneuang,aktjgst,schuelermenge,gewsj,sufamname,surufname,sugebdatum,
+kurswahlgewünscht,uebernausjgst,uebernaushj;LET bearbeitungsmaske=
+"ms wahldaten",fnrmeldungsfeld=1,fnrschuljahr=2,fnrschueler=3,
+fnrerstesfachart=4,fnrersteeingabe=5,letztefeldnummer=195,
+offsetnächsteeingabe=2,textfaecherwahl="Fächerwahl",textkurswahl="Kurswahl",
+titelanfang=" eingeben für jetzige Jgst. ",titelmitte=" in ",trennerfuerjgst=
+".",trennerfuerschuljahr="/";LET längedesfaches=2,längederart=2,
+längederkennung=4,längefachmitkennung=6,längeeinesplbl=3,maxfächeroderkurse=
+96,maximalewahlen=13;TEXT VAR aktuellerschueler,alleabiturklausurkürzel;LET
+ankreuzung="x";TEXT VAR allefächeroderkursangebote;INT VAR
+längefachoderkursangebot;LET längefachangebot=4,posfachimfachangebot=3,
+längekursangebot=10,poskennungimkursangebot=3,endposkennungimkursangebot=6,
+posartimkursangebot=9;LET listenmaske="mu objektliste",fnrerstesankreuzfeld=2
+,felderprolisteneintrag=2,listeneintraegeproseite=18;LET andenanfang=1,
+ansende=2,vorwaerts=3,rueckwaerts=4,dummyschueler="",sunamenstrenner=", ",
+sulaengeohnedatum=60,datumstrenner=".",maxankreuzungen=1000,ankreuzungliste=
+"x",keineankreuzung="",boolvektordatei="Boolvektor";BOUND ROW maxankreuzungen
+BOOL VAR boolvektor;LET meldungfalschejgst=404,meldungfalscheshj=405,
+meldungfalschejgstfuersu=404,meldungfalschejgstfuerneuang=404,
+meldungmindestenseinejgst=409,meldungjgstsaufeinanderfolgend=410,
+meldungjgstzurueckliegend=411,meldunghjzurueckliegend=412,
+meldungnurzweiteshjmoeglich=413,meldungfeldleerlassen=390,meldungfamnamefehlt
+=166,meldungrufnamefehlt=129,meldungsperrengescheitert=425,
+meldungkeinenschülerangeben=414,meldungübernahmeinsichselbst=415,
+meldungfrageuebernehmen=300,meldungdatenfehlen=68,meldunguebernehmen=301,
+meldunginbearbeitung=352,meldungdatenuebernommen=302,meldungplausi=57,
+meldunglistewirderstellt=7,meldungblaetternnichtmöglich=72,
+meldungkurswahlserverfehlt=416,meldungsugruppeleer=423,meldungkeinangebot=417
+,meldungangebotzugross=418,meldungzuvielewahlen=421,meldungfalscheskürzel=55,
+meldunginkonsistenz=419,meldungdoppelbelegung=420,meldungspeicherung=50,
+meldungspeicherfehler=73;LET kuerzelfuerneuang="N",kuerzelfuersuderjgst="O",
+kuerzelfuerallesu="",kennungnursuname="N",kennungnurwahldatenzumsu="K",
+kennungalleszumsu="A",längeeinerwahl=15,posklausurineinerwahl=1,
+posartineinerwahl=2,leereart=" ",posfachineinerwahl=4,poskennungineinerwahl=
+6,leerekennung=" ",posplbl1ineinerwahl=10,leererplbl=" ",
+leerekennungundplbl=" ",kennungnurplanblöcke="P",poszweiterplbl=4,
+keinplbl="",zusperrenderkwdatenraum="Kurswahl-2 ";LET dbtrenner="�",
+textschulhalbjahr="Schulhalbjahr",textschuljahr="Schuljahr",
+bestandabiturklausur="c02 abitur klausur";LET blank=" ",niltext="";TEXT VAR
+zugrundeliegendeshj:=niltext,zugrundeliegendessj:=niltext,
+zugrundeliegendejgst:=niltext;BOOL VAR übernahmeingang:=FALSE ,
+bearbeitennachliste:=FALSE ,bearbeitungingang:=FALSE ;INT VAR aktuellezeile,
+erstezeile,letztezeile;LET pufferdatenraum="temporärdatei";ROW maximalewahlen
+TEXT VAR plbl1,plbl2;ROW maximalewahlenINT VAR fnrzurwahl;TEXT VAR eintrag;
+FILE VAR f;BOOL VAR keineplanblöcke;INT VAR ptrfachoderkursangebot,zähler,
+rücksprungweite:=1;PROC wahldatenveraendern:INT VAR fehlerstatus,fnr,i;BOOL
+VAR sperregesetzt;IF NOT bearbeitennachlisteTHEN fehlerstatus:=
+angabenpruefungdereingangsmaske(2);IF fehlerstatus<>0THEN infeld(fehlerstatus
+);return(1);LEAVE wahldatenveraendernFI ;FI ;holeallerelevantendaten;
+bearbeitungingang:=TRUE ;setzeueberschriftindenmaskekopf;
+bleibendeangabenindiemaskefüllen;gefuelltebearbeitungsmaskeausgeben;
+standardnproc.holeallerelevantendaten:IF NOT bearbeitennachlisteTHEN
+kurswahlinitialisieren(aktjgst,betrjgst,betrhj,schuelermenge,gewsj);
+kurswahlbasisholen(fehlerstatus);IF fehlerstatus<>0THEN infeld(
+fnreingbetrjgst);wahldatenbeenden;standardmeldung(meldungkurswahlserverfehlt,
+niltext);LEAVE wahldatenveraendernFI ;IF letzterschueler<ersterschuelerTHEN
+IF schuelermenge=kuerzelfuerneuangTHEN infeld(fnreingneuangzurjgst)ELSE
+infeld(fnreingsuderjgst)FI ;wahldatenbeenden;standardmeldung(
+meldungsugruppeleer,niltext);LEAVE wahldatenveraendernFI ;
+ermittlelistenstartundende;FI ;IF kurswahlgewünscht=niltextTHEN
+zugrundeliegendejgst:=aktjgst;IF aktjgst<betrjgstCOR zugrundeliegendeshj<
+betrhjTHEN geplanteshjundsjberechnen(zugrundeliegendeshj,zugrundeliegendessj)
+;IF zugrundeliegendeshj=hj1THEN zugrundeliegendejgst:=text(int(aktjgst)+1,2)
+FI FI ;allefächeroderkursangebote:=niltext;first(dnrfaecherangebot);
+statleseschleife(dnrfaecherangebot,zugrundeliegendessj,zugrundeliegendeshj,
+fnrfangsj,fnrfanghj,PROC (BOOL VAR )sammlefächerangebot);
+längefachoderkursangebot:=längefachangebot;ELSE allefächeroderkursangebote:=
+allekurse;längefachoderkursangebot:=längekursangebot;FI ;IF
+allefächeroderkursangebote=niltextTHEN infeld(fnreingbetrjgst);
+wahldatenbeenden;standardmeldung(meldungkeinangebot,niltext);LEAVE
+wahldatenveraendernFI ;IF length(allefächeroderkursangebote)DIV
+längefachoderkursangebot>maxfächeroderkurseTHEN infeld(fnreingbetrjgst);
+wahldatenbeenden;standardmeldung(meldungangebotzugross,niltext);LEAVE
+wahldatenveraendernFI ;alleabiturklausurkürzel:=ankreuzung;first(
+dnrschluessel);statleseschleife(dnrschluessel,bestandabiturklausur,"",
+fnrschlsachgebiet,fnrschlschluessel,PROC (BOOL VAR )sammlekürzel);IF
+bearbeitennachlisteTHEN aktuellezeile:=erstezeile-1ELSE aktuellezeileDECR 1
+FI ;naechsterindex(aktuellezeile);IF aktuellezeile=0THEN infeld(
+fnreingbetrjgst);wahldatenbeenden;LEAVE wahldatenveraendernFI ;
+kurswahlsperresetzen(zusperrenderkwdatenraum,sperregesetzt);IF NOT
+sperregesetztTHEN infeld(fnreingbetrjgst);wahldatenbeenden;standardmeldung(
+meldungsperrengescheitert,niltext);LEAVE wahldatenveraendernFI ;.
+setzeueberschriftindenmaskekopf:TEXT VAR t;IF kurswahlgewünscht<>niltextTHEN
+t:=textkurswahlELSE t:=textfaecherwahlFI ;tCAT titelanfang;tCAT aktjgst;tCAT
+titelmitte;tCAT betrjgst;tCAT trennerfuerjgst;tCAT betrhj;standardstartproc(
+bearbeitungsmaske);standardkopfmaskeaktualisieren(t).
+bleibendeangabenindiemaskefüllen:standardmaskenfeld(text(gewsj,2)+
+trennerfuerschuljahr+subtext(gewsj,3),fnrschuljahr);fnr:=fnrerstesfachart;
+FOR iFROM 1UPTO length(allefächeroderkursangebote)DIV
+längefachoderkursangebotREP eintrag:=subtext(allefächeroderkursangebote,1+(i-
+1)*längefachoderkursangebot,i*längefachoderkursangebot);IF kurswahlgewünscht=
+niltextTHEN eintrag:=subtext(eintrag,posfachimfachangebot)+blank+text(text(
+eintrag,längederart),längederkennung)ELSE eintrag:=text(eintrag,
+längedesfaches)+blank+subtext(eintrag,poskennungimkursangebot,
+endposkennungimkursangebot)FI ;standardmaskenfeld(eintrag,fnr);fnrINCR
+offsetnächsteeingabePER ;fnrINCR 1;WHILE fnr<=letztefeldnummerREP feldschutz(
+fnr);fnrINCR offsetnächsteeingabePER .END PROC wahldatenveraendern;PROC
+wahldatenspeichern(BOOL CONST speichern):INT VAR i,j,fnr,fehlerstatus;TEXT
+VAR wahldaten,p1,p2,fname,rname,gebdat;IF speichernTHEN
+evtlaktuelleplanblöckeholen;pruefeplausibilitaet;speicherungdurchfuehren;
+logbucheintragausfuehrenFI ;naechsterindex(aktuellezeile);IF aktuellezeile<>0
+THEN gefuelltebearbeitungsmaskeausgeben;return(1)ELSE wahldatenbeendenFI .
+logbucheintragausfuehren:logmeldung:=betrjgst;logmeldungCAT punkt;logmeldung
+CAT betrhj;logmeldungCAT text1;logmeldungCAT fname;logmeldungCAT komma;
+logmeldungCAT rname;logmeldungCAT komma;logmeldungCAT gebdat;logmeldungCAT
+text2;logbucheintragvornehmen(logmeldung);.evtlaktuelleplanblöckeholen:IF
+kurswahlgewünscht<>niltextTHEN kurswahl1holen(fehlerstatus);keineplanblöcke:=
+fehlerstatus<>0FI .pruefeplausibilitaet:standardmeldung(meldungplausi,niltext
+);wahldaten:=niltext;zähler:=0;fnr:=fnrersteeingabe;FOR iFROM 1UPTO length(
+allefächeroderkursangebote)DIV längefachoderkursangebotREP IF
+standardmaskenfeld(fnr)<>niltextTHEN zählerINCR 1;IF zähler>maximalewahlen
+THEN standardmeldung(meldungzuvielewahlen,niltext);infeld(fnr);return(1);
+LEAVE wahldatenspeichernFI ;IF length(standardmaskenfeld(fnr))>1COR pos(
+alleabiturklausurkürzel,standardmaskenfeld(fnr))=0THEN standardmeldung(
+meldungfalscheskürzel,niltext);infeld(fnr);return(1);LEAVE wahldatenspeichern
+FI ;IF standardmaskenfeld(fnr)=ankreuzungTHEN wahldatenCAT blankELSE
+wahldatenCAT standardmaskenfeld(fnr)FI ;ptrfachoderkursangebot:=(i-1)*
+längefachoderkursangebot;IF kurswahlgewünscht=niltextTHEN wahldatenCAT
+subtext(allefächeroderkursangebote,ptrfachoderkursangebot+1,
+ptrfachoderkursangebot+längefachoderkursangebot);wahldatenCAT
+leerekennungundplbl;ELSE wahldatenCAT subtext(allefächeroderkursangebote,
+ptrfachoderkursangebot+posartimkursangebot,ptrfachoderkursangebot+
+längekursangebot);p1:=subtext(allefächeroderkursangebote,
+ptrfachoderkursangebot+1,ptrfachoderkursangebot+längefachmitkennung);
+wahldatenCAT p1;IF keineplanblöckeTHEN wahldatenCAT leererplbl;wahldatenCAT
+leererplblELSE p1:=kursdaten(p1,kennungnurplanblöcke);IF p1=keinplblTHEN p1:=
+leererplbl;p2:=leererplblELSE p2:=subtext(p1,poszweiterplbl);p1:=subtext(p1,1
+,längeeinesplbl)FI ;FOR jFROM 1UPTO zähler-1REP IF (p1<>leererplblCAND (p1=
+plbl1[j]COR p1=plbl2[j]))COR (p2<>leererplblCAND (p2=plbl2[j]COR p2=plbl1[j])
+)THEN standardmeldung(meldungdoppelbelegung,standardmaskenfeld(fnrzurwahl[j])
++"#");infeld(fnr);return(1);LEAVE wahldatenspeichernFI ;PER ;plbl1[zähler]:=
+p1;plbl2[zähler]:=p2;wahldatenCAT p1;wahldatenCAT p2;fnrzurwahl[zähler]:=fnr-
+1;FI FI FI ;fnrINCR offsetnächsteeingabePER .speicherungdurchfuehren:
+standardmeldung(meldungspeicherung,niltext);i:=pos(aktuellerschueler,
+dbtrenner);j:=pos(aktuellerschueler,dbtrenner,i+1);fname:=text(
+aktuellerschueler,i-1);rname:=subtext(aktuellerschueler,i+1,j-1);gebdat:=
+subtext(aktuellerschueler,j+1);schuelerwahleintragen(fname,rname,gebdat,
+wahldaten);.END PROC wahldatenspeichern;PROC wahldatenbeenden:INT VAR
+fehlerstatus:=0,i;rücksprungweite:=1;IF übernahmeingangTHEN forget(
+pufferdatenraum,quiet);FOR iFROM fnreingbetrjgstUPTO fnreinguebernaushjREP
+feldfrei(i)PER ;feldschutz(fnreingcursorruhepos);infeld(fnreingbetrjgst);IF
+NOT bearbeitungingangTHEN kurswahlsperrebeenden(zusperrenderkwdatenraum);
+rücksprungweiteINCR 1FI ;übernahmeingang:=FALSE ELSE IF bearbeitennachliste
+COR bearbeitungingangTHEN fülleeingangsmaskeFI FI ;IF bearbeitennachliste
+THEN forget(boolvektordatei,quiet);bearbeitennachliste:=FALSE ;
+rücksprungweiteINCR 1FI ;IF bearbeitungingangTHEN kurswahl2sichern(
+fehlerstatus);IF fehlerstatus<>0THEN standardmeldung(meldungspeicherfehler,
+niltext);infeld(fnreingbetrjgst)FI ;kurswahlsperrebeenden(
+zusperrenderkwdatenraum);bearbeitungingang:=FALSE ;rücksprungweiteINCR 1FI ;
+return(rücksprungweite).fülleeingangsmaske:standardstartproc(eingangsmaske);
+standardkopfmaskeaktualisieren(textzumeingangsknoten);standardmaskenfeld(
+betrjgst,fnreingbetrjgst);standardmaskenfeld(betrhj,fnreingbetrhj);
+standardmaskenfeld(jgstfuersu,fnreingsuderjgst);standardmaskenfeld(
+jgstfuerneuang,fnreingneuangzurjgst);standardmaskenfeld(sufamname,
+fnreingfamiliennamesu);standardmaskenfeld(surufname,fnreingrufnamesu);
+standardmaskenfeld(sugebdatum,fnreinggeburtsdatumsu);standardmaskenfeld(
+kurswahlgewünscht,fnreingkurse);standardmaskenfeld(uebernausjgst,
+fnreinguebernausjgst);standardmaskenfeld(uebernaushj,fnreinguebernaushj);
+standardmaskenfeld(niltext,fnreingcursorruhepos);.END PROC wahldatenbeenden;
+PROC wahldatenuebernehmen(BOOL CONST hauptaktion):INT VAR i,j1,j2,j3,j4,
+fehlerstatus;TEXT VAR zeile,wahlen,t;BOOL VAR sperregesetzt;IF NOT
+hauptaktionTHEN fehlerstatus:=angabenpruefungdereingangsmaske(1);IF
+fehlerstatus<>0THEN infeld(fehlerstatus);return(1);LEAVE wahldatenuebernehmen
+FI ;kurswahlinitialisieren(aktjgst,uebernausjgst,uebernaushj,schuelermenge,
+gewsj);kurswahlbasisholen(fehlerstatus);IF fehlerstatus<>0THEN
+standardmeldung(meldungkurswahlserverfehlt,niltext);infeld(fnreingbetrjgst);
+return(1);LEAVE wahldatenuebernehmenFI ;IF letzterschueler<ersterschueler
+THEN standardmeldung(meldungsugruppeleer,niltext);IF schuelermenge=
+kuerzelfuerneuangTHEN infeld(fnreingneuangzurjgst)ELSE infeld(
+fnreingsuderjgst)FI ;return(1);LEAVE wahldatenuebernehmenFI ;IF NOT
+kurswahldatenvorhandenTHEN standardmeldung(meldungdatenfehlen,niltext);infeld
+(fnreinguebernausjgst);return(1);LEAVE wahldatenuebernehmenFI ;f:=
+sequentialfile(output,pufferdatenraum);FOR iFROM ersterschuelerUPTO
+letzterschuelerREP putline(f,wahldatenzumindex(i,kennungalleszumsu))PER ;
+kurswahlinitialisieren(aktjgst,betrjgst,betrhj,schuelermenge,gewsj);
+kurswahlbasisholen(fehlerstatus);IF fehlerstatus<>0THEN standardmeldung(
+meldungkurswahlserverfehlt,niltext);infeld(fnreingbetrjgst);forget(
+pufferdatenraum,quiet);return(1);LEAVE wahldatenuebernehmenFI ;
+kurswahlsperresetzen(zusperrenderkwdatenraum,sperregesetzt);IF NOT
+sperregesetztTHEN standardmeldung(meldungsperrengescheitert,niltext);infeld(
+fnreingbetrjgst);forget(pufferdatenraum,quiet);return(1);LEAVE
+wahldatenuebernehmenFI ;übernahmeingang:=TRUE ;standardmeldung(
+meldungfrageuebernehmen,niltext);FOR iFROM fnreingbetrjgstUPTO
+fnreinguebernaushjREP feldschutz(i)PER ;feldfrei(fnreingcursorruhepos);infeld
+(fnreingcursorruhepos);standardnproc;ELSE standardmeldung(meldunguebernehmen,
+niltext);bearbeitungingang:=TRUE ;f:=sequentialfile(input,pufferdatenraum);
+WHILE NOT eof(f)REP getline(f,zeile);j1:=pos(zeile,dbtrenner);j2:=pos(zeile,
+dbtrenner,j1+1);j3:=pos(zeile,dbtrenner,j2+1);j4:=pos(zeile,dbtrenner,j3+1);
+standardmeldung(meldunginbearbeitung,subtext(zeile,j1+1,j2-1)+"#");IF
+kurswahlgewünscht=niltextTHEN t:=text(zeile,j1-1);wahlen:=niltext;FOR iFROM 1
+UPTO length(t)DIV längeeinerwahlREP wahlenCAT subtext(t,(i-1)*längeeinerwahl+
+1,(i-1)*längeeinerwahl+poskennungineinerwahl-1);wahlenCAT leerekennungundplbl
+PER ELSE wahlen:=text(zeile,j1-1)FI ;schuelerwahleintragen(subtext(zeile,j1+1
+,j2-1),subtext(zeile,j2+1,j3-1),subtext(zeile,j3+1,j4-1),wahlen);PER ;
+standardmeldung(meldungdatenuebernommen,niltext);logmeldung:=logtext2;
+logmeldungCAT uebernausjgst;logmeldungCAT punkt;logmeldungCAT uebernaushj;
+logmeldungCAT logtext3;logmeldungCAT betrjgst;logmeldungCAT punkt;logmeldung
+CAT betrhj;logmeldungCAT logtext4;logmeldungCAT aktjgst;
+logbucheintragvornehmen(logmeldung);wahldatenbeendenFI END PROC
+wahldatenuebernehmen;PROC wahldatenschuelerlisten:INT VAR i,fehlerstatus;
+fehlerstatus:=angabenpruefungdereingangsmaske(2);IF fehlerstatus<>0THEN
+infeld(fehlerstatus);return(1);LEAVE wahldatenschuelerlistenFI ;
+standardmeldung(meldunglistewirderstellt,niltext);kurswahlinitialisieren(
+aktjgst,betrjgst,betrhj,schuelermenge,gewsj);kurswahlbasisholen(fehlerstatus)
+;IF fehlerstatus<>0THEN standardmeldung(meldungkurswahlserverfehlt,niltext);
+infeld(fnreingbetrjgst);return(1);LEAVE wahldatenschuelerlistenFI ;IF
+letzterschueler<ersterschuelerTHEN standardmeldung(meldungsugruppeleer,
+niltext);IF schuelermenge=kuerzelfuerneuangTHEN infeld(fnreingneuangzurjgst)
+ELSE infeld(fnreingsuderjgst)FI ;return(1);LEAVE wahldatenschuelerlistenFI ;
+bearbeitennachliste:=TRUE ;ermittlelistenstartundende;initboolvektor;
+standardstartproc(listenmaske);listezeigenabzeile(aktuellezeile);
+wahldatenlistenachbereiten.initboolvektor:boolvektor:=new(boolvektordatei);
+FOR iFROM erstezeileUPTO letztezeileREP boolvektor(i):=FALSE PER .END PROC
+wahldatenschuelerlisten;PROC wahldatenlisteblaettern(INT CONST aktion):
+SELECT aktionOF CASE andenanfang:aktuellezeile:=erstezeile;listezeigenabzeile
+(aktuellezeile)CASE ansende:IF aktuellezeile+listeneintraegeproseite>
+letztezeileTHEN standardmeldung(meldungblaetternnichtmöglich,"")ELSE
+aktuellezeile:=max(1,letztezeile-listeneintraegeproseite+1);
+listezeigenabzeile(aktuellezeile)FI CASE vorwaerts:IF aktuellezeile+
+listeneintraegeproseite>letztezeileTHEN standardmeldung(
+meldungblaetternnichtmöglich,"")ELSE aktuellezeileINCR
+listeneintraegeproseite;listezeigenabzeile(aktuellezeile)FI CASE rueckwaerts:
+IF aktuellezeile=erstezeileTHEN standardmeldung(meldungblaetternnichtmöglich,
+"")ELSE aktuellezeileDECR listeneintraegeproseite;aktuellezeile:=max(
+aktuellezeile,erstezeile);listezeigenabzeile(aktuellezeile)FI END SELECT ;
+return(1)END PROC wahldatenlisteblaettern;PROC wahldatenlistenachbereiten:
+INT VAR i,fnr;infeld(fnrerstesankreuzfeld);standardnproc;fnr:=
+fnrerstesankreuzfeld;FOR iFROM aktuellezeileUPTO min(aktuellezeile+
+listeneintraegeproseite,letztezeile)REP boolvektor(i):=standardmaskenfeld(fnr
+)<>niltext;fnrINCR felderprolisteneintragPER END PROC
+wahldatenlistenachbereiten;PROC ermittlelistenstartundende:INT VAR index,j1,
+j2;TEXT VAR t;letztezeile:=min(maxankreuzungen,letzterschueler);erstezeile:=
+min(ersterschueler,letztezeile);aktuellezeile:=erstergewuenschterschueler.
+erstergewuenschterschueler:index:=erstezeile;IF sufamname<>niltextTHEN t:=
+wahldatenzumindex(index,kennungnursuname);j1:=pos(t,dbtrenner);WHILE
+sufamname>text(t,j1-1)CAND index<letztezeileREP indexINCR 1;t:=
+wahldatenzumindex(index,kennungnursuname);j1:=pos(t,dbtrenner);PER ;IF
+sufamname=text(t,j1-1)THEN j2:=pos(t,dbtrenner,j1+1);WHILE sufamname=text(t,
+j1-1)CAND surufname>subtext(t,j1+1,j2-1)CAND index<letztezeileREP indexINCR 1
+;t:=wahldatenzumindex(index,kennungnursuname);j1:=pos(t,dbtrenner);j2:=pos(t,
+dbtrenner,j1+1);PER ;FI ;IF sugebdatum<>niltextTHEN WHILE sufamname=text(t,j1
+-1)CAND surufname=subtext(t,j1+1,j2-1)CAND text(sugebdatum,2)+datumstrenner+
+subtext(sugebdatum,3,4)+datumstrenner+subtext(sugebdatum,5)<>subtext(t,j2+1)
+CAND index<letztezeileREP indexINCR 1;t:=wahldatenzumindex(index,
+kennungnursuname);j1:=pos(t,dbtrenner);j2:=pos(t,dbtrenner,j1+1);PER ;FI ;FI
+;index.END PROC ermittlelistenstartundende;PROC listezeigenabzeile(INT CONST
+zeile):INT VAR i,j1,j2,fnr;TEXT VAR t,t1;fnr:=fnrerstesankreuzfeld;FOR iFROM
+zeileUPTO zeile+listeneintraegeproseiteREP IF i<=letztezeileTHEN t:=
+wahldatenzumindex(i,kennungnursuname);feldfrei(fnr);IF boolvektor(i)THEN
+standardmaskenfeld(ankreuzungliste,fnr);ELSE standardmaskenfeld(
+keineankreuzung,fnr);FI ;bereiteschuelerzeileauf;standardmaskenfeld(t1,fnr+1)
+;ELSE standardmaskenfeld(niltext,fnr);feldschutz(fnr);standardmaskenfeld(
+dummyschueler,fnr+1)FI ;fnrINCR felderprolisteneintrag;PER ;infeld(
+fnrerstesankreuzfeld);standardfelderausgeben;.bereiteschuelerzeileauf:j1:=pos
+(t,dbtrenner);j2:=pos(t,dbtrenner,j1+1);t1:=text(t,j1-1);t1CAT
+sunamenstrenner;t1CAT subtext(t,j1+1,j2-1);t1:=text(t1,sulaengeohnedatum);t1
+CAT blank;t1CAT subtext(t,j2+1).END PROC listezeigenabzeile;PROC
+naechsterindex(INT VAR index):indexINCR 1;IF bearbeitennachlisteTHEN WHILE
+index<=letztezeileCAND NOT boolvektor(index)REP indexINCR 1PER FI ;IF index>
+letztezeileTHEN index:=0FI END PROC naechsterindex;PROC sammlefächerangebot(
+BOOL VAR b):IF intwert(fnrfangsj)>int(zugrundeliegendessj)COR intwert(
+fnrfanghj)>int(zugrundeliegendeshj)COR intwert(fnrfangjgst)>int(
+zugrundeliegendejgst)COR dbstatus<>0THEN b:=TRUE ELIF intwert(fnrfangjgst)=
+int(zugrundeliegendejgst)THEN allefächeroderkursangeboteCAT text(wert(
+fnrfangart),längederart);allefächeroderkursangeboteCAT text(wert(fnrfangfach)
+,längedesfaches);FI END PROC sammlefächerangebot;PROC sammlekürzel(BOOL VAR b
+):IF wert(fnrschlsachgebiet)<>bestandabiturklausurCOR dbstatus<>0THEN b:=
+TRUE ELSE alleabiturklausurkürzelCAT wert(fnrschlschluessel)FI ;END PROC
+sammlekürzel;PROC gefuelltebearbeitungsmaskeausgeben:TEXT VAR wahldaten,
+klausurleiste,suchtext;INT VAR i,anfposaktuellewahl,position,fnr;BOOL VAR
+warnung:=FALSE ;wahldaten:=wahldatenzumindex(aktuellezeile,kennungnursuname);
+aktuellerschueler:=wahldaten;changeall(wahldaten,dbtrenner,sunamenstrenner);
+standardmaskenfeld(text(wahldaten,standardfeldlaenge(fnrschueler)),
+fnrschueler);wahldaten:=wahldatenzumindex(aktuellezeile,
+kennungnurwahldatenzumsu);klausurleiste:=(length(allefächeroderkursangebote)
+DIV längefachoderkursangebot)*dbtrenner;FOR iFROM 1UPTO length(wahldaten)DIV
+längeeinerwahlREP anfposaktuellewahl:=(i-1)*längeeinerwahl;IF
+kurswahlgewünscht=niltextTHEN IF subtext(wahldaten,anfposaktuellewahl+
+poskennungineinerwahl,anfposaktuellewahl+posplbl1ineinerwahl-1)<>leerekennung
+THEN warnung:=TRUE FI ;IF subtext(wahldaten,anfposaktuellewahl+
+posartineinerwahl,anfposaktuellewahl+posfachineinerwahl-1)=leereartTHEN
+warnung:=TRUE ELSE suchtext:=subtext(wahldaten,anfposaktuellewahl+
+posartineinerwahl,anfposaktuellewahl+poskennungineinerwahl-1);position:=pos(
+allefächeroderkursangebote,suchtext);WHILE position<>0CAND positionMOD
+längefachoderkursangebot<>1REP position:=pos(allefächeroderkursangebote,
+suchtext,position+1);PER ;IF position=0THEN warnung:=TRUE ELSE position:=
+positionDIV längefachoderkursangebot+1;IF (klausurleisteSUB position)<>
+dbtrennerTHEN warnung:=TRUE ELSE IF (wahldatenSUB (anfposaktuellewahl+
+posklausurineinerwahl))=blankTHEN change(klausurleiste,position,position,
+ankreuzung)ELSE change(klausurleiste,position,position,wahldatenSUB (
+anfposaktuellewahl+posklausurineinerwahl))FI FI ;FI FI ELSE IF subtext(
+wahldaten,anfposaktuellewahl+posartineinerwahl,anfposaktuellewahl+
+posfachineinerwahl-1)=leereartTHEN warnung:=TRUE FI ;suchtext:=subtext(
+wahldaten,anfposaktuellewahl+posfachineinerwahl,anfposaktuellewahl+
+posplbl1ineinerwahl-1);position:=pos(allefächeroderkursangebote,suchtext);
+WHILE position<>0CAND positionMOD längefachoderkursangebot<>1REP position:=
+pos(allefächeroderkursangebote,suchtext,position+1);PER ;IF position=0THEN
+warnung:=TRUE ELSE position:=positionDIV längefachoderkursangebot+1;IF (
+klausurleisteSUB position)<>dbtrennerTHEN warnung:=TRUE ELSE IF (wahldaten
+SUB (anfposaktuellewahl+posklausurineinerwahl))=blankTHEN change(
+klausurleiste,position,position,ankreuzung)ELSE change(klausurleiste,position
+,position,wahldatenSUB (anfposaktuellewahl+posklausurineinerwahl))FI FI FI
+FI ;PER ;fnr:=fnrersteeingabe;FOR iFROM 1UPTO length(klausurleiste)REP IF (
+klausurleisteSUB i)=dbtrennerTHEN standardmaskenfeld(niltext,fnr)ELSE
+standardmaskenfeld(klausurleisteSUB i,fnr)FI ;fnrINCR offsetnächsteeingabe
+PER ;IF warnungTHEN standardmeldung(meldunginkonsistenz,niltext);infeld(
+fnrschuljahr)ELSE infeld(fnrmeldungsfeld)FI ;standardfelderausgeben;infeld(
+fnrersteeingabe)END PROC gefuelltebearbeitungsmaskeausgeben;INT PROC
+angabenpruefungdereingangsmaske(INT CONST aktion):INT VAR fehlerstatus;
+betrjgst:=standardmaskenfeld(fnreingbetrjgst);betrhj:=standardmaskenfeld(
+fnreingbetrhj);IF betrjgst<>jgst11AND betrjgst<>jgst12AND betrjgst<>jgst13
+THEN standardmeldung(meldungfalschejgst,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreingbetrjgstFI ;IF betrhj<>hj1AND
+betrhj<>hj2THEN standardmeldung(meldungfalscheshj,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreingbetrhjFI ;jgstfuersu:=
+standardmaskenfeld(fnreingsuderjgst);IF jgstfuersu<>niltextCAND jgstfuersu<>
+jgst10CAND jgstfuersu<>jgst11CAND jgstfuersu<>jgst12CAND jgstfuersu<>jgst13
+THEN standardmeldung(meldungfalschejgstfuersu,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreingsuderjgstFI ;jgstfuerneuang:=
+standardmaskenfeld(fnreingneuangzurjgst);IF jgstfuerneuang<>niltextCAND
+jgstfuerneuang<>jgst11CAND jgstfuerneuang<>jgst12CAND jgstfuerneuang<>jgst13
+THEN standardmeldung(meldungfalschejgstfuerneuang,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreingneuangzurjgstFI ;IF jgstfuersu=
+niltextCAND jgstfuerneuang=niltextTHEN standardmeldung(
+meldungmindestenseinejgst,niltext);LEAVE angabenpruefungdereingangsmaskeWITH
+fnreingsuderjgstFI ;IF jgstfuersu<>niltextCAND jgstfuerneuang<>niltextCAND
+int(jgstfuersu)+1<>int(jgstfuerneuang)THEN standardmeldung(
+meldungjgstsaufeinanderfolgend,niltext);LEAVE angabenpruefungdereingangsmaske
+WITH fnreingsuderjgstFI ;zugrundeliegendeshj:=schulkenndatum(
+textschulhalbjahr);zugrundeliegendessj:=schulkenndatum(textschuljahr);IF
+jgstfuerneuang<>niltextTHEN IF jgstfuerneuang>betrjgstTHEN standardmeldung(
+meldungjgstzurueckliegend,niltext);LEAVE angabenpruefungdereingangsmaskeWITH
+fnreingbetrjgstFI ;aktjgst:=text(int(jgstfuerneuang)-1);IF jgstfuersu<>
+niltextTHEN schuelermenge:=kuerzelfuerallesuELSE schuelermenge:=
+kuerzelfuerneuangFI ELSE IF jgstfuersu>betrjgstTHEN standardmeldung(
+meldungjgstzurueckliegend,niltext);LEAVE angabenpruefungdereingangsmaskeWITH
+fnreingbetrjgstFI ;IF betrjgst=jgstfuersuCAND betrhj<zugrundeliegendeshjTHEN
+standardmeldung(meldunghjzurueckliegend,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreingbetrhjFI ;aktjgst:=jgstfuersu;
+schuelermenge:=kuerzelfuersuderjgstFI ;IF aktjgst=jgst10CAND
+zugrundeliegendeshj=hj1THEN standardmeldung(meldungnurzweiteshjmoeglich,
+niltext);IF jgstfuersu<>niltextTHEN LEAVE angabenpruefungdereingangsmaske
+WITH fnreingsuderjgstELSE LEAVE angabenpruefungdereingangsmaskeWITH
+fnreingneuangzurjgstFI FI ;kurswahlgewünscht:=standardmaskenfeld(fnreingkurse
+);sufamname:=standardmaskenfeld(fnreingfamiliennamesu);surufname:=
+standardmaskenfeld(fnreingrufnamesu);sugebdatum:=standardmaskenfeld(
+fnreinggeburtsdatumsu);uebernausjgst:=standardmaskenfeld(fnreinguebernausjgst
+);uebernaushj:=standardmaskenfeld(fnreinguebernaushj);IF aktion=2THEN IF
+sufamname=niltextCAND (surufname<>niltextOR sugebdatum<>niltext)THEN
+standardmeldung(meldungfamnamefehlt,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreingfamiliennamesuFI ;IF surufname=
+niltextCAND sugebdatum<>niltextTHEN standardmeldung(meldungrufnamefehlt,
+niltext);LEAVE angabenpruefungdereingangsmaskeWITH fnreingrufnamesuFI ;IF
+sugebdatum<>niltextTHEN standardpruefe(6,fnreinggeburtsdatumsu,0,0,"",
+fehlerstatus);IF fehlerstatus<>0THEN LEAVE angabenpruefungdereingangsmaske
+WITH fehlerstatusFI FI ;IF uebernausjgst<>niltextTHEN standardmeldung(
+meldungfeldleerlassen,niltext);LEAVE angabenpruefungdereingangsmaskeWITH
+fnreinguebernausjgstFI ;IF uebernaushj<>niltextTHEN standardmeldung(
+meldungfeldleerlassen,niltext);LEAVE angabenpruefungdereingangsmaskeWITH
+fnreinguebernaushjFI ELSE IF length(sufamname)+length(surufname)+length(
+sugebdatum)>0THEN standardmeldung(meldungkeinenschülerangeben,niltext);IF
+sufamname<>niltextTHEN LEAVE angabenpruefungdereingangsmaskeWITH
+fnreingfamiliennamesuELIF surufname<>niltextTHEN LEAVE
+angabenpruefungdereingangsmaskeWITH fnreingrufnamesuELSE LEAVE
+angabenpruefungdereingangsmaskeWITH fnreinggeburtsdatumsuFI ;FI ;IF
+uebernausjgst<>jgst11AND uebernausjgst<>jgst12AND uebernausjgst<>jgst13THEN
+standardmeldung(meldungfalschejgst,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreinguebernausjgstFI ;IF uebernaushj<>
+hj1AND uebernaushj<>hj2THEN standardmeldung(meldungfalscheshj,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreinguebernaushjFI ;IF uebernausjgst=
+betrjgstCAND uebernaushj=betrhjTHEN standardmeldung(
+meldungübernahmeinsichselbst,niltext);LEAVE angabenpruefungdereingangsmaske
+WITH fnreinguebernausjgstFI ;IF jgstfuerneuang<>niltextTHEN IF jgstfuerneuang
+>uebernausjgstTHEN standardmeldung(meldungjgstzurueckliegend,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreinguebernausjgstFI ;ELSE IF
+jgstfuersu>uebernausjgstTHEN standardmeldung(meldungjgstzurueckliegend,
+niltext);LEAVE angabenpruefungdereingangsmaskeWITH fnreinguebernausjgstFI ;
+IF uebernausjgst=jgstfuersuCAND uebernaushj<zugrundeliegendeshjTHEN
+standardmeldung(meldunghjzurueckliegend,niltext);LEAVE
+angabenpruefungdereingangsmaskeWITH fnreinguebernaushjFI ;FI ;FI ;0END PROC
+angabenpruefungdereingangsmaske;PROC logbucheintragvornehmen(TEXT CONST
+escfunktion):logeintrag(logtext1+escfunktion)END PROC logbucheintragvornehmen
+;END PACKET erfwahldaten
+