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 (bestandindexniltextTHEN 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