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 --- app/schulis/2.2.1/src/2.erf wahldaten | 395 ++++++++++++++++++++++++++++++++++ 1 file changed, 395 insertions(+) create mode 100644 app/schulis/2.2.1/src/2.erf wahldaten (limited to 'app/schulis/2.2.1/src/2.erf wahldaten') 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 letzterschuelermaxfä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 letzterschueler0THEN 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 +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 indexsubtext(t,j1+1,j2-1)CAND indexniltextTHEN 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 +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 betrhjniltextTHEN 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