PACKET listenweisedifdaterfDEFINES bearbeitungdifdaterf, difdaterfnichtspeichern,difdaterfspeichern:LET tofather=1,tograndfather=2, maxsek1="10",niltext="",blank=" ",namenstrenner=", ",null=0,meldtrenner="#"; LET maskennamepreallg="ms dif dat erf bearbeitung";LET jgst5=5,jgst13=13, standardanfang=1;LET maxschueler=14,schuelerproseite=15;LET meldbestleer=59, meldnichtspeichern=63,meldplausi=57,meldwarten=69,meldspeicherung=132, meldspeicherfehler=131,meldnrfalschesdatum=157,meldnrfalscherschluessel=34; LET pruefartalternative=5,pruefartgrenzen=3;LET fnrjgst=2,fnrtutor=3,fnrfs1=4 ,fnrag=12,fnrmaskentitel=3,fnrklasse=2;LET mnr1=1,mnr2=2,mnr3=3,mnr4=4,mnr5=5 ,titel09="09",titel10="10",ef1=4,fpz1=4,ef2=3,fpz3=2,fpz4=5;LET awfs1=1,awfs2 =2,awfs3=3,awfs4=4,awreli=5,awkunst=6,awwp9=7,awwp10=8,awag=9, auswertungsdistanz=3;LET maxag=3;LET allespruefen=1,einejgstpruefen=2, eineklassepruefen=3;LET schuelerbestand="ls";LET logtextbeginn="Anw. 1.4.2 ", logtextalleklassen="alle Klassen";LET logtext1=".Fremdsprache",logtext2= "Teilnahme am Religionsunterricht",logtext3="Kunst/Musik",logtext4= "Wahlpflichtfächer",logtext5="Arbeitsgemeinschaften";TEXT VAR logarttext; BOOL VAR nochwelcheda,alleklassen,tutorenkurs,sek2,eineklasse, nochweiterebestaende,einejgst;INT VAR fremdsprachenindex,wpindex,waspruefen, erstesfeld,felderprozeile,standardeinstieg,laengename,laengeklasse, schuelerzahl,aktuellesfeld,auswertungsnr;ROW schuelerproseiteTEXT VAR name; ROW schuelerproseiteTEXT VAR rufname;ROW schuelerproseiteTEXT VAR gebdat;ROW schuelerproseiteTEXT VAR altedaten;TEXT VAR vergleichsjgst,vergleichszug, sicherungstupel;PROC bearbeitungdifdaterf:TEXT VAR jgst,zug;reinitparsing; eingangsbildschirmpruefen;IF eingangsbildschirmokTHEN initialisierungenvornehmen;naechsteportionlesen;IF keinemehrdaTHEN bestandleermelden;enter(tofather)ELSE standardnprocFI ELSE eingangsmaskenfehler;return(tofather)FI .eingangsbildschirmok:pruefstatus=0. eingangsbildschirmpruefen:ankreuzfelderpruefen;IF eingangsbildschirmokTHEN jgstzugpruefenFI .ankreuzfelderpruefen:INT VAR pruefstatus;standardpruefe( pruefartalternative,fnrfs1,fnrag,null,niltext,pruefstatus);.jgstzugpruefen: alleklassen:=FALSE ;IF standardmaskenfeld(fnrjgst)<>niltextTHEN standardpruefe(pruefartgrenzen,fnrjgst,jgst5,jgst13,niltext,pruefstatus)ELIF standardmaskenfeld(fnrtutor)<>niltextTHEN pruefstatus:=fnrtutorELSE alleklassen:=TRUE FI .initialisierungenvornehmen:bestandundmaskesetzen; bearbeitungsmaskevorbereiten;laengenfestlegen;IF sek2CAND NOT tutorenkurs THEN startebildschirmblock(ixsustatjgst,maxschueler)ELSE startebildschirmblock(ixsustatjgstzug,maxschueler)FI . bearbeitungsmaskevorbereiten:standardstartproc(maskennamepreallg+text( auswertungsmaskennr));IF maskentitel<>niltextTHEN standardmaskenfeld( maskentitel,fnrmaskentitel)FI ;SELECT auswertungsmaskennrOF CASE mnr1: erstesfeld:=ef1;felderprozeile:=fpz1CASE mnr2:erstesfeld:=ef2;felderprozeile :=fpz1CASE mnr3:erstesfeld:=ef2;felderprozeile:=fpz3CASE mnr4:erstesfeld:=ef1 ;felderprozeile:=fpz4CASE mnr5:erstesfeld:=ef2;felderprozeile:=fpz1END SELECT ;standardeinstieg:=erstesfeld+1.laengenfestlegen:laengeklasse:= standardfeldlaenge(fnrklasse);laengename:=standardfeldlaenge(erstesfeld). naechsteportionlesen:blocklesenundausgeben.keinemehrda:NOT nochwelcheda. bestandleermelden:standardmeldung(meldbestleer,niltext).eingangsmaskenfehler: #standardmeldung(meldfalscheauswahl,niltext);#infeld(pruefstatus). bestandundmaskesetzen:standardmeldung(meldwarten,niltext);bestimmebestand; setzestartkeys;pruefebestand;bestimmemaske.bestimmebestand:eineklasse:=FALSE ;einejgst:=FALSE ;jgst:=jgstaufber(standardmaskenfeld(fnrjgst));zug:= standardmaskenfeld(fnrtutor);IF alleklassenTHEN alleklassensetzenELIF nureineklasseTHEN setzeklasseELSE setzejgstFI .alleklassensetzen:waspruefen:= allespruefen;sek2:=FALSE ;vergleichsjgst:=niltext;infeld(fnrjgst). nureineklasse:tutorenkurs:=zug<>niltext;tutorenkurs.setzeklasse:eineklasse:= TRUE ;waspruefen:=eineklassepruefen;vergleichsjgst:=jgst;vergleichszug:=zug; sek2:=FALSE ;infeld(fnrtutor).setzejgst:sek2:=istsek2(jgst);einejgst:=TRUE ; waspruefen:=einejgstpruefen;vergleichsjgst:=jgst;infeld(fnrjgst). setzestartkeys:inittupel(dnrschueler);putwert(fnrsustatuss,schuelerbestand); putwert(fnrsusgrpjgst,jgst);putwert(fnrsusgrpzugtut,zug);.pruefebestand: search(ixsustatjgstzug,FALSE );IF dbstatus=nullCAND (pruefungspeziell( waspruefen))THEN vergleichsjgst:=wert(fnrsusgrpjgst);vergleichszug:=wert( fnrsusgrpzugtut);nochwelcheda:=TRUE ;IF alleklassenTHEN waspruefen:= eineklassepruefenELIF NOT sek2CAND waspruefen=einejgstpruefenTHEN waspruefen :=eineklassepruefenFI ELSE bestandleermelden;return(tofather);LEAVE bearbeitungdifdaterfFI .bestimmemaske:setzeauswertungsnr;SELECT auswertungsnr OF CASE awfs1,awfs2,awfs3,awfs4:auswertungfremdspracheCASE awreli: auswertungreliCASE awkunst:auswertungkunstCASE awwp9:auswertungwp9CASE awwp10 :auswertungwp10CASE awag:auswertungagEND SELECT .auswertungfremdsprache:INT VAR auswertungsmaskennr:=mnr1;maskentitel:=text(auswertungsnr);logarttext:= maskentitel;logarttextCAT logtext1.auswertungreli:auswertungsmaskennr:=mnr2; logarttext:=logtext2.auswertungkunst:auswertungsmaskennr:=mnr3;logarttext:= logtext3.auswertungwp9:auswertungsmaskennr:=mnr4;maskentitel:=titel09; logarttext:=logtext4.auswertungwp10:auswertungsmaskennr:=mnr4;maskentitel:= titel10;logarttext:=logtext4.auswertungag:auswertungsmaskennr:=mnr5; logarttext:=logtext5.setzeauswertungsnr:INT VAR indauswertungsnr;TEXT VAR maskentitel:=niltext;FOR indauswertungsnrFROM fnrfs1UPTO fnragREP IF standardmaskenfeld(indauswertungsnr)<>niltextTHEN auswertungsnr:= indauswertungsnr-auswertungsdistanz;LEAVE setzeauswertungsnrFI PER .END PROC bearbeitungdifdaterf;PROC difdaterfnichtspeichern:nichtspeichernmelden; startkeyssetzen;neuerblock.nichtspeichernmelden:standardmeldung( meldnichtspeichern,niltext);pause(10).startkeyssetzen:restoretupel( dnrschueler,sicherungstupel);changeindex.END PROC difdaterfnichtspeichern; PROC difdaterfspeichern:BOOL VAR falschesdatum:=FALSE ;INT VAR lv; pruefeplausibilitaet;IF dateninordnungTHEN speicherungdurchfuehren; startkeyssetzen;neuerblockELSE eingabefehler;return(tofather);FI . pruefeplausibilitaet:BOOL VAR dateninordnung:=TRUE ;standardmeldung( meldplausi,niltext);aktuellesfeldvorbelegen;FOR suindFROM 1UPTO schuelerzahl REP pruefezeile;IF NOT dateninordnungTHEN LEAVE pruefeplausibilitaetFI PER . aktuellesfeldvorbelegen:SELECT auswertungsnrOF CASE awfs1,awfs2,awfs3,awfs4: vorbelegungmitsprungCASE awreli:vorbelegungmitsprungCASE awkunst: vorbelegungmitsprungCASE awwp9,awwp10:vorbelegungohnesprungCASE awag: vorbelegungohnesprungEND SELECT .vorbelegungmitsprung:aktuellesfeld:= erstesfeld+1-felderprozeile.vorbelegungohnesprung:aktuellesfeld:=erstesfeld. pruefezeile:falschesdatum:=FALSE ;SELECT auswertungsnrOF CASE awfs1,awfs2, awfs3,awfs4:ueberpruefefachmitsprungCASE awreli:ueberpruefefachmitsprungCASE awkunst:ueberpruefefachmitsprungCASE awwp9,awwp10:ueberpruefefachinreiheCASE awag:ueberpruefefachinreiheEND SELECT .ueberpruefefachmitsprung:aktuellesfeld :=aktuellesfeld+felderprozeile;dateninordnung:=schluesselexistiert;IF auswertungsnr=awreliTHEN disablestop;FOR lvFROM 1UPTO 2REP putwert( fnrddreliunter+lv,datumskonversion(standardmaskenfeld(aktuellesfeld+lv)));IF iserrorTHEN clearerror;falschesdatum:=TRUE ;dateninordnung:=FALSE ;enablestop ;LEAVE ueberpruefefachmitsprungFI ;PER ;enablestop;FI .ueberpruefefachinreihe :INT VAR i;FOR iFROM 1UPTO felderprozeile-1REP aktuellesfeldINCR 1; dateninordnung:=schluesselexistiert;IF NOT dateninordnungTHEN LEAVE ueberpruefefachinreiheFI PER ;aktuellesfeldINCR 1.schluesselexistiert:TEXT CONST schleintrag:=compress(subtext(standardmaskenfeld(aktuellesfeld),1,2));( schleintrag=niltext)COR schluesselvorhanden(schleintrag). speicherungdurchfuehren:logeintragvornehmen;aendernschleife;kurzwarten. logeintragvornehmen:TEXT VAR eintrag:=logtextbeginn;eintragCAT logarttext; eintragCAT " für ";IF alleklassenTHEN eintragCAT logtextalleklassenELSE eintragCAT vergleichsjgst;eintragCAT vergleichszugFI ;logeintrag(eintrag). kurzwarten:pause(10).aendernschleife:INT VAR suind;INT VAR zahlderaenderungen :=null;INT VAR satzindex:=erstesfeld;FOR suindFROM 1UPTO schuelerzahlREP behandleschuelersatz;satzindexINCR felderprozeilePER .behandleschuelersatz: IF datenveraendertTHEN fuehreaenderungaus;meldevollzugFI .fuehreaenderungaus: lesenvorbereiten;lesen;zurueckschreiben;.lesenvorbereiten:zahlderaenderungen INCR 1;putwert(fnrsufamnames,name(suind));putwert(fnrsurufnames,rufname(suind ));putwert(fnrsugebdatums,gebdat(suind)).lesen:search(dnrschueler,TRUE );IF dbstatus=okCAND wert(fnrsutiddiffdaten)<>niltextTHEN readtid(dnrdiffdaten, wert(fnrsutiddiffdaten))ELSE dbstatus(notfound)FI .zurueckschreiben:IF dbstatus=0THEN dbwertesetzen;aenderntransaktionFI .dbwertesetzen: aktuellesfeld:=satzindex+1;SELECT auswertungsnrOF CASE awfs1,awfs2,awfs3, awfs4:setzefremdsprachenCASE awreli:setzereliCASE awkunst:setzekunstCASE awwp9,awwp10:setzewpCASE awag:setzeagEND SELECT .aenderntransaktion:replace( dnrdiffdaten,wert(fnrsutiddiffdaten)).meldevollzug:TEXT VAR meldungstext;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 difdaterfspeichernFI ;infeld(satzindex+1 ).datenveraendert:altedaten(suind)<>jetzigedaten.jetzigedaten:INT VAR datind; TEXT VAR datenindermaske:=niltext;FOR datindFROM 1UPTO felderprozeile-1REP datenindermaskeCAT text(standardmaskenfeld(satzindex+datind), standardfeldlaenge(satzindex+datind))PER ;datenindermaske.startkeyssetzen: restoretupel(dnrschueler,sicherungstupel);changeindex.eingabefehler:IF falschesdatumTHEN standardmeldung(meldnrfalschesdatum,niltext);infeld( aktuellesfeld+lv)ELSE standardmeldung(meldnrfalscherschluessel,niltext); infeld(aktuellesfeld)FI ;.END PROC difdaterfspeichern;BOOL PROC schluesselvorhanden(TEXT CONST eingabe):putwert(fnrffach,eingabe);search( dnrfaecher,TRUE );dbstatus=okEND PROC schluesselvorhanden;PROC neuerblock: evtlnaechsterbestand;blocklesenundausgeben;IF nochwelchedaTHEN return( tofather)ELSE enter(tograndfather)FI .evtlnaechsterbestand:IF schuelerzahl= maxschuelerTHEN IF sek2CAND NOT tutorenkursTHEN succ(ixsustatjgst)ELSE succ( ixsustatjgstzug);FI ;IF dbstatus<>0THEN nochwelcheda:=FALSE ; nochweiterebestaende:=FALSE ;FI FI ;IF NOT pruefungspeziell(waspruefen)THEN IF naechsterbestandTHEN changeindex;vergleichsjgst:=wert(fnrsusgrpjgst); vergleichszug:=wert(fnrsusgrpzugtut);startebildschirmblock(ixsustatjgstzug, maxschueler)ELSE nochwelcheda:=FALSE FI ELSE restoretupel(dnrschueler, sicherungstupel);changeindexFI .END PROC neuerblock;PROC blocklesenundausgeben:REP vorbereiten;gewuenschteszeigen;nachbereitenPER . vorbereiten:IF NOT nochwelchedaTHEN LEAVE blocklesenundausgebenFI ; standardmeldung(meldwarten,niltext);schuelerzahl:=null;aktuellesfeld:= erstesfeld.nachbereiten:nochwelcheda:=(schuelerzahl>null);IF nochwelcheda THEN savetupel(dnrschueler,sicherungstupel);restlichezeilenloeschen;infeld( standardanfang);standardfelderausgeben;infeld(standardeinstieg);LEAVE blocklesenundausgebenELIF naechsterbestandTHEN vergleichsjgst:=wert( fnrsusgrpjgst);vergleichszug:=wert(fnrsusgrpzugtut);#???# startebildschirmblock(ixsustatjgstzug,maxschueler);nochwelcheda:=TRUE ELSE LEAVE blocklesenundausgebenFI ;.restlichezeilenloeschen:INT VAR zeilenzaehler ;INT VAR zeilenfeld:=(schuelerzahl*felderprozeile)+(erstesfeld-1);FOR zeilenzaehlerFROM schuelerzahlUPTO maxschuelerREP loeschezeilePER . loeschezeile:INT VAR zeilenincr;FOR zeilenincrFROM 1UPTO felderprozeileREP zeilenfeldINCR 1;standardmaskenfeld(standardfeldlaenge(zeilenfeld)*blank, zeilenfeld);feldschutz(zeilenfeld)PER ;.gewuenschteszeigen:SELECT auswertungsnrOF CASE awfs1:zeigefremdsprache1CASE awfs2:zeigefremdsprache2 CASE awfs3:zeigefremdsprache3CASE awfs4:zeigefremdsprache4CASE awreli: zeigereliCASE awkunst:zeigekunstCASE awwp9:zeigewp9CASE awwp10:zeigewp10CASE awag:zeigeagEND SELECT ;.zeigefremdsprache1:fremdsprachenindex:= fnrdd1fremdfach;bildschirmblock(PROC fremdsprachezeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).zeigefremdsprache2:fremdsprachenindex:= fnrdd2fremdfach;bildschirmblock(PROC fremdsprachezeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).zeigefremdsprache3:fremdsprachenindex:= fnrdd3fremdfach;bildschirmblock(PROC fremdsprachezeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).zeigefremdsprache4:fremdsprachenindex:= fnrdd4fremdfach;bildschirmblock(PROC fremdsprachezeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).zeigereli:bildschirmblock(PROC relizeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).zeigekunst:bildschirmblock( PROC kunstzeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).zeigewp9: wpindex:=fnrddfach091a;bildschirmblock(PROC wpzeigen,BOOL PROC (INT CONST ) pruefungspeziell,waspruefen).zeigewp10:wpindex:=fnrddfach101a;bildschirmblock (PROC wpzeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).zeigeag: bildschirmblock(PROC agzeigen,BOOL PROC (INT CONST )pruefungspeziell, waspruefen).END PROC blocklesenundausgeben;PROC namezeigen:IF ersterTHEN klassezeigenundrettenFI ;namenretten;standardmaskenfeld(text(schuelername+ namenstrenner+schuelervorname,laengename),aktuellesfeld);readtid(dnrdiffdaten ,wert(fnrsutiddiffdaten));aktuellesfeldINCR 1.erster:schuelerzahl=null. klassezeigenundretten:sek2:=istsek2(wert(fnrsusgrpjgst));IF sek2CAND (NOT tutorenkurs)THEN sek2sonderbehandlungELSE normalbehandlungFI . normalbehandlung:vergleichsjgst:=wert(fnrsusgrpjgst);vergleichszug:=wert( fnrsusgrpzugtut);standardmaskenfeld(text(vergleichsjgst+vergleichszug, laengeklasse),fnrklasse).sek2sonderbehandlung:vergleichsjgst:=wert( fnrsusgrpjgst);standardmaskenfeld(text(vergleichsjgst,laengeklasse),fnrklasse ).namenretten:TEXT VAR schuelername,schuelervorname;schuelername:=wert( fnrsufamnames);schuelervorname:=wert(fnrsurufnames);schuelerzahlINCR 1;name( schuelerzahl):=schuelername;rufname(schuelerzahl):=schuelervorname;gebdat( schuelerzahl):=wert(fnrsugebdatums).END PROC namezeigen;PROC fremdsprachezeigen:namezeigen;gewaehltefremdsprachezeigen. gewaehltefremdsprachezeigen:TEXT VAR was;INT VAR lv;altedaten(schuelerzahl):= niltext;FOR lvFROM fremdsprachenindexUPTO fremdsprachenindex+2REP was:=wert( lv);standardmaskenfeld(was,aktuellesfeld);altedaten(schuelerzahl)CAT text(was ,standardfeldlaenge(aktuellesfeld));feldfrei(aktuellesfeld);aktuellesfeld INCR 1PER .END PROC fremdsprachezeigen;PROC setzefremdsprachen:TEXT VAR was; INT VAR lv;FOR lvFROM fremdsprachenindexUPTO fremdsprachenindex+2REP was:= standardmaskenfeld(aktuellesfeld);putwert(lv,was);aktuellesfeldINCR 1;PER . END PROC setzefremdsprachen;PROC relizeigen:namezeigen;relidatenzeigen. relidatenzeigen:INT VAR was:=fnrddreliunter,lv;TEXT VAR daten;altedaten( schuelerzahl):=niltext;FOR lvFROM wasUPTO was+2REP IF lv=wasTHEN daten:=(wert (lv));ELSE daten:=datumrekonversion(wert(lv))FI ;standardmaskenfeld(daten, aktuellesfeld);altedaten(schuelerzahl)CAT text(daten,standardfeldlaenge( aktuellesfeld));feldfrei(aktuellesfeld);aktuellesfeldINCR 1PER .END PROC relizeigen;PROC setzereli:INT VAR was:=fnrddreliunter,lv;TEXT VAR daten;FOR lvFROM wasUPTO was+2REP IF lv=wasTHEN daten:=standardmaskenfeld(aktuellesfeld );ELSE daten:=datumskonversion(standardmaskenfeld(aktuellesfeld));FI ;putwert (lv,daten);aktuellesfeldINCR 1PER END PROC setzereli;PROC kunstzeigen: namezeigen;fachzeigen;merken.fachzeigen:TEXT VAR fach:=wert(fnrddkunstmusik); standardmaskenfeld(fach,aktuellesfeld);feldfrei(aktuellesfeld);aktuellesfeld INCR 1.merken:altedaten(schuelerzahl):=text(fach,2).END PROC kunstzeigen; PROC setzekunst:putwert(fnrddkunstmusik,standardmaskenfeld(aktuellesfeld)); END PROC setzekunst;PROC wpzeigen:namezeigen;zeigefaecher;merken.zeigefaecher :INT VAR lv;TEXT VAR wpfaecher:=niltext,fach;FOR lvFROM wpindexUPTO wpindex+3 REP fach:=wert(lv);standardmaskenfeld(fach,aktuellesfeld);feldfrei( aktuellesfeld);aktuellesfeldINCR 1;wpfaecherCAT text(fach,2)PER .merken: altedaten(schuelerzahl):=wpfaecher.END PROC wpzeigen;PROC setzewp:INT VAR lv; TEXT VAR fach;FOR lvFROM wpindexUPTO wpindex+3REP fach:=standardmaskenfeld( aktuellesfeld);putwert(lv,fach);aktuellesfeldINCR 1PER END PROC setzewp;PROC agzeigen:namezeigen;agdatenzeigen.agdatenzeigen:INT VAR agind,woher:=0, laengeag:=2;TEXT VAR ag:=niltext;altedaten(schuelerzahl):=niltext;FOR agind FROM 0UPTO maxag-1REP ag:=text(wert(fnrddagthema1+woher),laengeag);agCAT text (wert(fnrddagthema1b+woher),laengeag+1);agCAT text(wert(fnrddagthema1e+woher) ,laengeag+1);IF compress(ag)<>niltextTHEN standardmaskenfeld(ag,aktuellesfeld );ELSE standardmaskenfeld(niltext,aktuellesfeld);FI ;altedaten(schuelerzahl) CAT text(ag,standardfeldlaenge(aktuellesfeld));feldfrei(aktuellesfeld); aktuellesfeldINCR 1;woherINCR 3PER .END PROC agzeigen;PROC setzeag:INT VAR agind,wohin:=0;TEXT VAR ag:=niltext;FOR agindFROM 0UPTO maxag-1REP ag:= standardmaskenfeld(aktuellesfeld);putwert(fnrddagthema1+wohin,subtext(ag,1,2) );putwert(fnrddagthema1b+wohin,subtext(ag,3,5));putwert(fnrddagthema1e+wohin, subtext(ag,6,8));wohinINCR 3;aktuellesfeldINCR 1;PER END PROC setzeag;PROC feldloeschen(INT CONST laenge):standardmaskenfeld(laenge*blank,aktuellesfeld) END PROC feldloeschen;BOOL PROC istsek2(TEXT CONST jgst):jgst>maxsek1END PROC istsek2;BOOL PROC naechsterbestand:nochweiterebestaende:=(alleklassen CAND pruefungspeziell(allespruefen))OR (einejgstCAND pruefungspeziell( einejgstpruefen))OR (eineklasseCAND pruefungspeziell(eineklassepruefen)); nochweiterebestaendeEND PROC naechsterbestand;BOOL PROC pruefungspeziell(INT CONST wasistzutun):BOOL VAR b:=FALSE ;SELECT wasistzutunOF CASE allespruefen: pruefungalleklassen(b)CASE einejgstpruefen:pruefungeinejgst(b)CASE eineklassepruefen:pruefungeineklasse(b)END SELECT ;bEND PROC pruefungspeziell ;PROC pruefungalleklassen(BOOL VAR bool):bool:=wert(fnrsustatuss)= schuelerbestandEND PROC pruefungalleklassen;PROC pruefungeinejgst(BOOL VAR bool):bool:=(wert(fnrsustatuss)=schuelerbestandCAND wert(fnrsusgrpjgst)= vergleichsjgst)END PROC pruefungeinejgst;PROC pruefungeineklasse(BOOL VAR bool):bool:=(wert(fnrsustatuss)=schuelerbestandCAND wert(fnrsusgrpjgst)= vergleichsjgstCAND wert(fnrsusgrpzugtut)=vergleichszug)END PROC pruefungeineklasse;END PACKET listenweisedifdaterf