app/schulis/2.2.1/src/1.listenweise klassenbildung

Raw file
Back to index

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