summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listenweise klassenbildung
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/1.listenweise klassenbildung')
-rw-r--r--app/schulis/2.2.1/src/1.listenweise klassenbildung270
1 files changed, 270 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/1.listenweise klassenbildung b/app/schulis/2.2.1/src/1.listenweise klassenbildung
new file mode 100644
index 0000000..c563019
--- /dev/null
+++ b/app/schulis/2.2.1/src/1.listenweise klassenbildung
@@ -0,0 +1,270 @@
+PACKET listenweiseklassenbildungDEFINES bearbeitungklassenbildung,
+klassenbildungnichtspeichern,klassenbildungspeichern:LET meldbestleer=59,
+meldnichtspeichern=63,meldwarten=69,meldspeicherung=132,meldspeicherfehler=
+131,meldplausi=57,meldfalscheauswahl=56,meldexistiertnicht=134,
+meldzuggewechselt=135,meldfalscheshj=78;LET meldtrenner="#",meldkznorm="+";
+LET fnrneuan5=2,fnrneuan11=3,fnrneuansonst=4,fnrjgst=5,fnrtutor=6,
+fnrnurnichtvers=7,fnrgeplhj=8,fnrakthj=9;LET fnrherk=2,fnralteklasse=3,
+fnrname=4,fnrneueklasse=5;LET tofather=1,tograndfather=2;LET niltext="",blank
+=" ",namenstrenner=", ";LET pruefartalternative=5,pruefartgrenzen=3,jgst5=5,
+jgst13=13,null=0,freigabeincr=2;LET schuljahrkey="Schuljahr",schulhalbjahrkey
+="Schulhalbjahr",best5="n05",best11="n11",bestsonst="nso",bestlaufsj="ls";
+LET jgst05="05",jgst11="11",maxjgst="13",leerejgst=" ";LET kzwiederholer="w"
+;LET standardanfang=1,standardeinstieg=6;LET ersteskommendeshj=1,
+geplanteszweiteshj=2,aktuelleshj=3;LET maxschueler=15,erstesfeld=2,
+felderprozeile=5,schuelerproseite=16,anzkenndaten=3;LET gwherk=1,gwalteklasse
+=2,gwneuejgst=3;LET logtextbeginn="Anw. 1.4.1 Klassenbildung ",logtextneu5=
+"Neu 5",logtextneu11="Neu 11",logtextneuso="Neu sonstige",logtextwiederhol=
+", Wiederholer",logtextfuer="für ",logtextakthj="aktuelles Halbjahr ";BOOL
+VAR nochwelcheda,klassenbehandlung,nurnichtversetzte,logakthalbjahr;LET
+allespruefen=1,einejgstpruefen=2,eineklassepruefen=3,
+einejgstwiederholerpruefen=4,eineklassewiederholerpruefen=5;INT VAR
+waspruefen:=0;INT VAR laengeherk,laengealteklasse,laengename,laengeneueklasse
+,bestandindex,halbjahresindex,indexbestand,schuelerzahl,aktuellesfeld,
+wiederholerbestand;ROW schuelerproseiteROW anzkenndatenTEXT VAR kenndatum;#
+ROW schuelerproseiteTEXT VAR name;ROW schuelerproseiteTEXT VAR rufname;ROW
+schuelerproseiteTEXT VAR gebdat;##17.07.87dr#ROW schuelerproseiteTEXT VAR
+zugtutor;TEXT VAR altejgst,neuejgst,benoetigtevergljgst,vergleichsjgst,
+vergleichszug,sicherungstupel,klassenbildungsbestand,aktschuljahr,
+aktschulhalbjahr;PROC bearbeitungklassenbildung:reinitparsing;
+eingangsbildschirmpruefen;IF eingangsbildschirmokTHEN
+initialisierungenvornehmen;naechsteportionlesen;IF keinemehrdaTHEN
+bestandleermelden;enter(tofather)ELSE standardnprocFI ELSE
+eingangsmaskenfehler;return(tofather)FI .eingangsbildschirmpruefen:
+ankreuzfelderpruefen;IF eingangsbildschirmokTHEN jgstzugpruefen;IF
+eingangsbildschirmokTHEN halbjahrmitankreuzungvergleichenFI FI .
+ankreuzfelderpruefen:INT VAR pruefstatus;standardpruefe(pruefartalternative,
+fnrneuan5,fnrjgst,null,niltext,pruefstatus);.jgstzugpruefen:IF
+standardmaskenfeld(fnrjgst)<>niltextTHEN standardpruefe(pruefartgrenzen,
+fnrjgst,jgst5,jgst13,niltext,pruefstatus)FI ;IF eingangsbildschirmokTHEN
+nurnichtversetzte:=standardmaskenfeld(fnrnurnichtvers)<>niltext;
+bestimmebestandindex;IF nurnichtversetzteCAND (bestandindex<fnrjgst)THEN
+standardmeldung(meldfalscheauswahl,niltext);pruefstatus:=fnrnurnichtversFI
+FI .bestimmebestandindex:FOR bestandindexFROM fnrneuan5UPTO fnrjgstREP IF
+standardmaskenfeld(bestandindex)<>niltextTHEN LEAVE bestimmebestandindexFI
+PER .halbjahrmitankreuzungvergleichen:aktschulhalbjahr:=schulkenndatum(
+schulhalbjahrkey);aktschuljahr:=schulkenndatum(schuljahrkey);IF
+aktschulhalbjahr="2"THEN IF standardmaskenfeld(fnrgeplhj)<>""THEN
+standardmeldung(meldfalscheshj,aktschulhalbjahr+meldkznorm);pruefstatus:=
+fnrgeplhjFI ELIF aktschulhalbjahr="1"THEN IF standardmaskenfeld(fnrgeplhj)=""
+CAND standardmaskenfeld(fnrakthj)=""THEN standardmeldung(meldfalscheshj,
+aktschulhalbjahr+meldkznorm);pruefstatus:=fnrgeplhjFI FI .
+eingangsbildschirmok:pruefstatus=0.initialisierungenvornehmen:
+bestandunddbmaskesetzen;halbjahrsetzen;nichtverspruefen;
+plausipruefungvorbereiten;standardstartproc(maske(vergleichsknoten));
+laengenfestlegen;IF nurnichtversetzteTHEN startebildschirmblock(
+wiederholerbestand,maxschueler)ELSE startebildschirmblock(indexbestand,
+maxschueler)FI .bestandunddbmaskesetzen:standardmeldung(meldwarten,niltext);
+klassenbehandlung:=FALSE ;SELECT bestandindexOF CASE fnrneuan5:neuan5setzen
+CASE fnrneuan11:neuan11setzenCASE fnrneuansonst:neuansonstsetzenOTHERWISE
+jgstoderzugsetzenEND SELECT ;pruefebestand.neuan5setzen:vergleichsjgst:=
+jgst05;benoetigtevergljgst:=vergleichsjgst;klassenbildungsbestand:=best5;
+indexbestand:=ixsustatschulkenn;waspruefen:=allespruefen;infeld(fnrneuan5).
+neuan11setzen:vergleichsjgst:=jgst11;benoetigtevergljgst:=vergleichsjgst;
+klassenbildungsbestand:=best11;indexbestand:=ixsustatschulkenn;waspruefen:=
+allespruefen;infeld(fnrneuan11).neuansonstsetzen:vergleichsjgst:=niltext;
+benoetigtevergljgst:=vergleichsjgst;klassenbildungsbestand:=bestsonst;
+indexbestand:=ixsustatschulkenn;waspruefen:=allespruefen;infeld(fnrneuansonst
+).jgstoderzugsetzen:TEXT CONST jgst:=jgstaufber(standardmaskenfeld(fnrjgst));
+vergleichsjgst:=jgst;klassenbildungsbestand:=bestlaufsj;IF eineklasseTHEN
+setzeklasseELSE setzejgstFI ;IF NOT ((akthalbjahrCOR geplhalbjahr)COR
+nurnichtversetzte)THEN neuejgst:=jgstaufber(text(int(altejgst)+1));
+benoetigtevergljgst:=neuejgstELSE neuejgst:=altejgst;benoetigtevergljgst:=
+altejgstFI .eineklasse:TEXT CONST zug:=standardmaskenfeld(fnrtutor);
+vergleichszug:=zug;klassenbehandlung:=zug<>niltext;klassenbehandlung.
+setzeklasse:IF nurnichtversetzteTHEN wiederholerbestand:=ixhjdsjhjverjgstkenn
+;waspruefen:=eineklassewiederholerpruefenELSE indexbestand:=ixsustatjgstzug;
+waspruefen:=eineklassepruefen;FI ;altejgst:=jgst;infeld(fnrtutor).setzejgst:
+IF nurnichtversetzteTHEN IF NOT klassenbehandlungTHEN #???index#
+wiederholerbestand:=ixhjdsjhjverjgst;#wiederholer#ELSE wiederholerbestand:=
+ixhjdsjhjverjgstkenn;FI ;waspruefen:=einejgstwiederholerpruefenELSE IF NOT
+klassenbehandlungTHEN indexbestand:=ixsustatjgst;ELSE indexbestand:=
+ixsustatjgstzug;FI ;waspruefen:=einejgstpruefen;FI ;altejgst:=jgst;infeld(
+fnrjgst).pruefebestand:reinitparsing;IF nurnichtversetzteTHEN inittupel(
+dnrhalbjahresdaten);schluesselfelderinhalbjahresdatenbelegen;search(
+wiederholerbestand,FALSE );ELSE inittupel(dnrschueler);
+schluesselfelderinschuelerbelegen;search(indexbestand,FALSE );FI ;IF
+bestandnichtvorhandenTHEN bestandleermelden;return(tofather);LEAVE
+bearbeitungklassenbildungELSE nochwelcheda:=TRUE FI .
+schluesselfelderinhalbjahresdatenbelegen:putwert(fnrhjdversetzung,
+kzwiederholer);putwert(fnrhjdsj,aktschuljahr);putwert(fnrhjdhj,
+aktschulhalbjahr);putwert(fnrhjdjgst,vergleichsjgst);putwert(fnrhjdkennung,
+vergleichszug);.schluesselfelderinschuelerbelegen:putwert(fnrsustatuss,
+klassenbildungsbestand);IF indexbestand=ixsustatjgstzugOR indexbestand=
+ixsustatjgstTHEN putwert(fnrsusgrpjgst,vergleichsjgst);putwert(
+fnrsusgrpzugtut,vergleichszug)FI .bestandnichtvorhanden:dbstatus<>okOR (NOT
+nurnichtversetzteCAND NOT pruefungspeziell(waspruefen))OR (nurnichtversetzte
+CAND NOT pruefungspeziell(waspruefen)).halbjahrsetzen:logakthalbjahr:=FALSE ;
+IF geplhalbjahrTHEN geplhalbjahrsetzenELIF akthalbjahrTHEN logakthalbjahr:=
+TRUE ;akthalbjahrsetzenELSE ersteshalbjahrsetzenFI .geplhalbjahr:INT VAR
+angekreuztesfeld;standardmaskenfeld(fnrgeplhj)<>niltext.geplhalbjahrsetzen:
+IF akthalbjahrCOR neuanmeldungTHEN angekreuztesfeld:=fnrgeplhj;falscheauswahl
+ELSE halbjahresindex:=geplanteszweiteshjFI .akthalbjahr:standardmaskenfeld(
+fnrakthj)<>niltext.akthalbjahrsetzen:IF neuanmeldungTHEN angekreuztesfeld:=
+fnrakthj;falscheauswahlELSE halbjahresindex:=aktuelleshjFI .
+ersteshalbjahrsetzen:halbjahresindex:=ersteskommendeshj.neuanmeldung:
+bestandindex<=fnrneuansonst.falscheauswahl:standardmeldung(meldfalscheauswahl
+,niltext);infeld(angekreuztesfeld);return(tofather);LEAVE
+bearbeitungklassenbildung.nichtverspruefen:IF (nurnichtversetzteCAND (
+halbjahresindex<>ersteskommendeshj))COR (((NOT nurnichtversetzte)CAND (jgst=
+maxjgst))CAND (halbjahresindex=ersteskommendeshj))THEN angekreuztesfeld:=
+fnrnurnichtvers;falscheauswahlELIF nurnichtversetzteTHEN halbjahresindex:=
+ersteskommendeshjFI .plausipruefungvorbereiten:#holevergleichssg(
+benoetigtevergljgst,(halbjahresindex=aktuelleshj)COR nurnichtversetzte)dr13.
+11.87#holevergleichssg(benoetigtevergljgst,halbjahresindex=aktuelleshj).
+laengenfestlegen:laengeherk:=standardfeldlaenge(fnrherk);laengealteklasse:=
+standardfeldlaenge(fnralteklasse);laengename:=standardfeldlaenge(fnrname);
+laengeneueklasse:=standardfeldlaenge(fnrneueklasse).naechsteportionlesen:
+blocklesenundausgeben.keinemehrda:NOT nochwelcheda.bestandleermelden:
+standardmeldung(meldbestleer,niltext).eingangsmaskenfehler:infeld(pruefstatus
+).END PROC bearbeitungklassenbildung;PROC klassenbildungnichtspeichern:
+nichtspeichernmelden;startkeyssetzen;neuerblock.nichtspeichernmelden:
+standardmeldung(meldnichtspeichern,niltext);pause(10).startkeyssetzen:
+restoretupel(dnrschueler,sicherungstupel);changeindex.END PROC
+klassenbildungnichtspeichern;PROC klassenbildungspeichern:
+bestimmeaenderungsart;pruefeplausibilitaet;IF dateninordnungTHEN
+speicherungdurchfuehren;startkeyssetzen;neuerblockELSE eingabefehler;return(
+tofather)FI .bestimmeaenderungsart:BOOL VAR normalfall:=NOT ((bestandindex>
+fnrneuansonst)CAND (halbjahresindex=aktuelleshj));.pruefeplausibilitaet:BOOL
+VAR dateninordnung:=TRUE ;INT VAR aktfeld:=1;TEXT VAR bezugsjgst:="",
+gelesenejgst;standardmeldung(meldplausi,niltext);FOR suindFROM 1UPTO
+schuelerzahlREP pruefezeile;IF NOT dateninordnungTHEN LEAVE
+pruefeplausibilitaetFI ;PER .pruefezeile:TEXT VAR aktuellerzug;TEXT VAR
+aktuelleschuelergruppe;aktfeldINCR felderprozeile;aktuellerzug:=
+standardmaskenfeld(aktfeld);gelesenejgst:=standardmaskenfeld(aktfeld-1);IF
+gelesenejgst<>leerejgstTHEN bezugsjgst:=gelesenejgst;FI ;
+aktuelleschuelergruppe:=bezugsjgst+aktuellerzug;IF normalfallTHEN
+dateninordnung:=(aktuellerzug=niltext)COR istzulaessigesg(
+aktuelleschuelergruppe)ELSE dateninordnung:=istzulaessigesg(
+aktuelleschuelergruppe)CAND (aktuellerzug<>niltext)FI .
+speicherungdurchfuehren:vorbereiten;logeintragvornehmen;aendernschleife;
+kurzwarten.logeintragvornehmen:TEXT VAR eintrag:=logtextbeginn;IF
+klassenbildungsbestand=best5THEN eintragCAT logtextfuer;eintragCAT
+logtextneu5ELIF klassenbildungsbestand=best11THEN eintragCAT logtextfuer;
+eintragCAT logtextneu11ELIF klassenbildungsbestand=bestsonstTHEN eintragCAT
+logtextfuer;eintragCAT logtextneusoELIF klassenbildungsbestand=bestlaufsj
+THEN IF logakthalbjahrTHEN eintragCAT logtextakthjFI ;eintragCAT logtextfuer;
+eintragCAT vergleichsjgst;eintragCAT vergleichszug;IF nurnichtversetzteTHEN
+eintragCAT logtextwiederholFI ;FI ;logeintrag(eintrag).kurzwarten:pause(10).
+vorbereiten:INT VAR aufsatzpunkt:=null;.aendernschleife:INT VAR suind;INT
+VAR zahlderaenderungen:=null;FOR suindFROM 1UPTO schuelerzahlREP
+behandleschuelersatzPER .behandleschuelersatz:IF datenveraendertTHEN
+fuehreaenderungaus;meldevollzugELSE merkenalsaufsatzpunktFI .datenveraendert:
+zugtutor(suind)<>standardmaskenfeld((suind*felderprozeile)+1).
+merkenalsaufsatzpunkt:aufsatzpunkt:=suind.fuehreaenderungaus:lesenvorbereiten
+;lesen;IF normalfallTHEN zurueckschreibenELSE aenderneinheitFI .
+lesenvorbereiten:putwert(fnrsufamnames,kenndatum[suind][1]);putwert(
+fnrsurufnames,kenndatum[suind][2]);putwert(fnrsugebdatums,datumskonversion(
+kenndatum[suind][3]));zahlderaenderungenINCR 1;.lesen:search(dnrschueler,
+TRUE ).zurueckschreiben:IF dbstatus=0THEN putwert(fnrsuneuerzugtut,
+standardmaskenfeld((suind*felderprozeile)+1));replace(dnrschueler,gettid)FI .
+aenderneinheit:TEXT VAR alterzug:=zugtutor(suind);TEXT VAR neuerzug:=
+standardmaskenfeld((suind*felderprozeile)+1);TEXT VAR geliefertejgst:=
+jgstaufber(wert(fnrsusgrpjgst));TEXT VAR gelieferterzug:=wert(fnrsusgrpzugtut
+);IF dbstatus=0CAND geliefertejgst=altejgstCAND gelieferterzug=alterzugTHEN
+TEXT VAR schuelertid:=gettid;aenderntransaktion;ELSE transaktionsfehlerFI .
+aenderntransaktion:removeoutofindex(ixsustatjgstzug);#
+aenderunginstatraumvorbereiten(FALSE );dr10.05.88
+einenschuelerausstatraumentfernen;#IF wert(fnrsutidakthjd)<>niltextTHEN
+readtid(dnrhalbjahresdaten,wert(fnrsutidakthjd));putwert(fnrhjdkennung,
+neuerzug);#update(dnrhalbjahresdaten);dr10.05.88#selupdate(dnrhalbjahresdaten
+);putwert(fnrsutidakthjd,gettid)ELSE FI ;putwert(fnrsusgrpzugtut,neuerzug);
+replace(dnrschueler,schuelertid);insertinindex(ixsustatjgstzug);#IF dbstatus
+<>okTHEN putwert(fnrsusgrpzugtut,zugtutor[suind]);FI ;
+einenschuelerinstatraumeinfuegen;dr10.05.88#.transaktionsfehler:
+standardmeldung(meldzuggewechselt,niltext);return(tofather);infeld((suind*
+felderprozeile)+1);LEAVE klassenbildungspeichern.meldevollzug:TEXT VAR
+meldungstext;INT VAR satzindex:=(suind*felderprozeile)-1;IF dbstatus=0THEN
+meldungstext:=compress(standardmaskenfeld(satzindex))+meldtrenner;
+standardmeldung(meldspeicherung,meldungstext)ELSE meldungstext:=text(dbstatus
+)+meldtrenner;meldungstextCAT compress(standardmaskenfeld(satzindex));
+meldungstextCAT meldtrenner;standardmeldung(meldspeicherfehler,meldungstext);
+return(tofather);LEAVE klassenbildungspeichernFI ;infeld(satzindex+2).
+startkeyssetzen:IF (NOT klassenbehandlung)OR normalfallTHEN aufsatzpunkt:=
+schuelerzahlFI ;IF aufsatzpunkt>nullTHEN restoretupel(dnrschueler,
+sicherungstupel);changeindexFI .eingabefehler:standardmeldung(
+meldexistiertnicht,standardmaskenfeld(aktfeld)+meldtrenner);infeld(aktfeld).
+END PROC klassenbildungspeichern;PROC neuerblock:blocklesenundausgeben;IF
+nochwelchedaTHEN return(tofather)ELSE enter(tograndfather)FI .END PROC
+neuerblock;PROC blocklesenundausgeben:vorbereiten;initgruppenwechsel;SELECT
+bestandindexOF CASE fnrneuan5:neuan5lesenCASE fnrneuan11:neuan11lesenCASE
+fnrneuansonst:neuansonstlesenOTHERWISE jgstoderzuglesenEND SELECT ;
+nachbereiten.vorbereiten:IF NOT nochwelchedaTHEN LEAVE blocklesenundausgeben
+FI ;standardmeldung(meldwarten,niltext);schuelerzahl:=null;aktuellesfeld:=
+erstesfeld.neuan5lesen:bildschirmblock(PROC neuan5zeigen,BOOL PROC (INT
+CONST )pruefungspeziell,waspruefen).neuan11lesen:bildschirmblock(PROC
+neuan11zeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).
+neuansonstlesen:bildschirmblock(PROC neuansonstzeigen,BOOL PROC (INT CONST )
+pruefungspeziell,waspruefen).jgstoderzuglesen:bildschirmblock(PROC
+jgstoderzugzeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).
+nachbereiten:nochwelcheda:=(schuelerzahl>null);IF nochwelchedaTHEN savetupel(
+dnrschueler,sicherungstupel);restlichezeilenloeschen;infeld(standardanfang);
+standardfelderausgebenFI ;infeld(standardeinstieg).restlichezeilenloeschen:
+INT VAR zeilenzaehler;INT VAR zeilenfeld:=(schuelerzahl*felderprozeile)+1;
+FOR zeilenzaehlerFROM schuelerzahlUPTO maxschuelerREP loeschezeilePER .
+loeschezeile:INT VAR zeilenincr;FOR zeilenincrFROM 1UPTO felderprozeileREP
+zeilenfeldINCR 1;standardmaskenfeld(standardfeldlaenge(zeilenfeld)*blank,
+zeilenfeld)PER ;feldschutz(zeilenfeld).END PROC blocklesenundausgeben;PROC
+neuanzeigen(TEXT CONST jgst):schuelerzahlINCR 1;herkunftsschulezeigen;
+alteklassezeigen;namezeigen;neueklassezeigen;neuerzugtutorzeigen.
+neueklassezeigen:gruppenwechsel(jgst,gwneuejgst,laengeneueklasse,1,
+aktuellesfeld).END PROC neuanzeigen;PROC namezeigen:namenretten;
+standardmaskenfeld(text(schuelername+namenstrenner+schuelervorname,laengename
+),aktuellesfeld);INT VAR eingabefeld:=aktuellesfeld+freigabeincr;
+standardmaskenfeld(niltext,eingabefeld);feldfrei(eingabefeld);aktuellesfeld
+INCR 1.namenretten:TEXT VAR schuelername,schuelervorname;schuelername:=wert(
+fnrsufamnames);schuelervorname:=wert(fnrsurufnames);kenndatum[schuelerzahl][1
+]:=schuelername;kenndatum[schuelerzahl][2]:=schuelervorname;kenndatum[
+schuelerzahl][3]:=datumrekonversion(wert(fnrsugebdatums));.END PROC
+namezeigen;PROC herkunftsschulezeigen:gruppenwechsel(wert(fnrsuskennlschule),
+gwherk,laengeherk,1,aktuellesfeld)END PROC herkunftsschulezeigen;PROC
+alteklassezeigen:gruppenwechsel(wert(fnrsuklasselschule),gwalteklasse,
+laengealteklasse,1,aktuellesfeld)END PROC alteklassezeigen;PROC neuan5zeigen:
+neuanzeigen(jgst05)END PROC neuan5zeigen;PROC neuan11zeigen:neuanzeigen(
+jgst11)END PROC neuan11zeigen;PROC neuansonstzeigen:schuelerzahlINCR 1;
+herkunftsschulezeigen;alteklassezeigen;namezeigen;neueklassezeigen;
+neuerzugtutorzeigen.neueklassezeigen:gruppenwechsel(jgstaufber(wert(
+fnrsujgsteintr)),gwneuejgst,2,1,aktuellesfeld).END PROC neuansonstzeigen;
+PROC neuerzugtutorzeigen:TEXT CONST neuerzugtutor:=wert(fnrsuneuerzugtut);
+standardmaskenfeld(neuerzugtutor,aktuellesfeld);zugtutor(schuelerzahl):=
+neuerzugtutor;aktuellesfeldINCR 1END PROC neuerzugtutorzeigen;PROC
+jgstoderzugzeigen:schuelerzahlINCR 1;herkunftsschuleloeschen;
+aktuelleklassezeigen;namezeigen;neueklassezeigen;zugtutorbehandeln.
+herkunftsschuleloeschen:feldloeschen(laengeherk);aktuellesfeldINCR 1.
+aktuelleklassezeigen:TEXT VAR aktjgst:=jgstaufber(wert(fnrsusgrpjgst));IF
+halbjahresindex=aktuelleshjTHEN feldloeschen(laengealteklasse);aktuellesfeld
+INCR 1ELSE gruppenwechsel(aktjgst+wert(fnrsusgrpzugtut),gwalteklasse,
+laengealteklasse,1,aktuellesfeld)FI .neueklassezeigen:IF halbjahresindex=
+ersteskommendeshjTHEN gruppenwechsel(neuejgst,gwneuejgst,2,1,aktuellesfeld)
+ELSE gruppenwechsel(aktjgst,gwneuejgst,2,1,aktuellesfeld)FI .
+zugtutorbehandeln:IF halbjahresindex<>aktuelleshjTHEN neuerzugtutorzeigen
+ELSE TEXT CONST zugtutordesschuelers:=wert(fnrsusgrpzugtut);zugtutor(
+schuelerzahl):=zugtutordesschuelers;standardmaskenfeld(zugtutordesschuelers,
+aktuellesfeld);aktuellesfeldINCR 1FI .END PROC jgstoderzugzeigen;PROC
+feldloeschen(INT CONST laenge):standardmaskenfeld(laenge*blank,aktuellesfeld)
+END PROC feldloeschen;BOOL PROC pruefungspeziell(INT CONST wasistzutun):BOOL
+VAR b:=FALSE ;SELECT wasistzutunOF CASE allespruefen:pruefungalleklassen(b)
+CASE einejgstpruefen:pruefungeinejgst(b)CASE eineklassepruefen:
+pruefungeineklasse(b)CASE einejgstwiederholerpruefen:
+pruefungeinejgstwiederholer(b)CASE eineklassewiederholerpruefen:
+pruefungeineklassewiederholer(b)END SELECT ;bEND PROC pruefungspeziell;PROC
+pruefungalleklassen(BOOL VAR bool):bool:=(wert(fnrsustatuss)=
+klassenbildungsbestand)END PROC pruefungalleklassen;PROC pruefungeinejgst(
+BOOL VAR bool):bool:=(wert(fnrsustatuss)=bestlaufsjCAND jgstaufber(wert(
+fnrsusgrpjgst))=vergleichsjgst)END PROC pruefungeinejgst;PROC
+pruefungeineklasse(BOOL VAR bool):bool:=(wert(fnrsustatuss)=bestlaufsjCAND
+jgstaufber(wert(fnrsusgrpjgst))=vergleichsjgstCAND wert(fnrsusgrpzugtut)=
+vergleichszug)END PROC pruefungeineklasse;PROC pruefungeinejgstwiederholer(
+BOOL VAR bool):inschuelerdateisuchen;bool:=(wert(fnrhjdversetzung)=
+kzwiederholerCAND wert(fnrhjdsj)=aktschuljahrCAND wert(fnrhjdhj)=
+aktschulhalbjahrCAND jgstaufber(wert(fnrhjdjgst))=vergleichsjgst)END PROC
+pruefungeinejgstwiederholer;PROC pruefungeineklassewiederholer(BOOL VAR bool)
+:inschuelerdateisuchen;bool:=(wert(fnrhjdversetzung)=kzwiederholerCAND wert(
+fnrhjdsj)=aktschuljahrCAND wert(fnrhjdhj)=aktschulhalbjahrCAND jgstaufber(
+wert(fnrhjdjgst))=vergleichsjgstCAND wert(fnrhjdkennung)=vergleichszug)END
+PROC pruefungeineklassewiederholer;PROC inschuelerdateisuchen:inittupel(
+dnrschueler);putwert(fnrsufamnames,wert(fnrhjdfamnames));putwert(
+fnrsurufnames,wert(fnrhjdrufnames));putwert(fnrsugebdatums,wert(fnrhjdgebdats
+));putwert(fnrsustatuss,bestlaufsj);search(ixsustatfamrufgeb,TRUE );END PROC
+inschuelerdateisuchen;END PACKET listenweiseklassenbildung
+