app/schulis/2.2.1/src/1.listenweise erg nachpr

Raw file
Back to index

PACKET listenweiseergnachprDEFINES bearbeitungergnachpr,
ergnachprnichtspeichern,ergnachprspeichern:LET tofather=1,tograndfather=2,
jgst5=5,jgst13=13,niltext="",blank=" ",namenstrenner=", ",null=0,punkt=".",
meldtrenner="#";LET jgstufe10=10;LET einejgst=2,eineklasse=3;LET 
geaendertersatz="x",kznachpruefung="n",dreizehnnachprsatz="N";LET 
standardanfang=1,standardeinstieg=2,abstandzumnamen=2;LET maxschueler=15,
erstesfeld=5,felderprozeile=6,schuelerproseite=16;LET gwklasse=1;LET 
bestandengrenzeeinstellig=4,bestandengrenzezweistellig="05",minnoteeinstellig
=1,maxnoteeinstellig=6,minnotezweistellig="00",maxnotezweistellig="15",
leernote="";LET meldbestleer=59,meldnichtspeichern=63,meldwarten=69,
meldspeicherung=132,meldspeicherfehler=131,meldfalschesfach=147,
meldungueltigenote=148,meldfalschesg=134,meldfehlendesfach=52,
meldtransaktionsfehler=138,meldplausi=57,meldfalscheauswahl=56,
meldzugtutorfehlt=52;LET pruefartgrenzen=3;LET fnrjgst=2,fnrtutor=3,fnrklasse
=2,fnrname=3,fnrbetr=4,fnrfach=5,fnrnote=6,fnrzug=7;LET schuljahrkey=
"Schuljahr",anfangschuljahrkey="Anfang Schulhalbjahr",halbjahr1="1",halbjahr2
="2",bestandlaufsj="ls",bestandabgegangene="abg";LET allespruefen=1,
einejgstpruefen=2,eineklassepruefen=3;LET anzkenndaten=3,sek2min=11;LET 
logtextbeginn="Anw. 1.4.9 Nachprüfungen für ",logtextalleklassen=
"alle Klassen";BOOL VAR nochwelcheda,alleklassen;INT VAR waspruefen,
laengeklasse,laengename,laengebetr,laengefach,laengenote,laengezugtutor,
bestandindex,schuelerzahl,aktuellesfeld;ROW schuelerproseiteTEXT VAR name;
ROW schuelerproseiteTEXT VAR rufname;ROW schuelerproseiteTEXT VAR gebdatum;
ROW schuelerproseiteBOOL VAR dreizehner;ROW schuelerproseiteTEXT VAR 
altedaten;ROW schuelerproseiteTEXT VAR npfaecher;ROW anzkenndatenTEXT VAR key
;TEXT VAR startkey1,startkey2,aktschuljahr,schuljahr,schulhalbjahr,hjdtupel,
schuelertupel,sichtupel;PROC bearbeitungergnachpr:reinitparsing;
eingangsbildschirmpruefen;IF eingangsbildschirmokTHEN 
initialisierungenvornehmen;naechsteportionlesen;IF keinemehrdaTHEN 
bestandleermelden;enter(tofather)ELSE standardnprocFI ELSE 
eingangsmaskenfehler;return(tofather)FI .eingangsbildschirmpruefen:INT VAR 
pruefstatus:=null;startkey1:=niltext;startkey2:=niltext;alleklassen:=FALSE ;
IF standardmaskenfeld(fnrjgst)<>niltextTHEN standardpruefe(pruefartgrenzen,
fnrjgst,jgst5,jgst13,niltext,pruefstatus);IF pruefstatus=nullTHEN startkey1:=
jgstaufber(standardmaskenfeld(fnrjgst));startkey2:=standardmaskenfeld(
fnrtutor);IF standardmaskenfeld(fnrtutor)=niltextTHEN bestandindex:=einejgst
ELSE bestandindex:=eineklasseFI FI ELIF standardmaskenfeld(fnrtutor)<>niltext
THEN pruefstatus:=fnrtutorELSE alleklassen:=TRUE FI .eingangsbildschirmok:
pruefstatus=null.initialisierungenvornehmen:plausipruefungvorbereiten;
bestandsetzen;standardstartproc(maske(vergleichsknoten));laengenfestlegen;IF 
waspruefen=einejgstpruefenAND sek2THEN startebildschirmblock(
ixhjdsjhjverjgstkenn,maxschueler);ELSE startebildschirmblock(ixhjdsjhjverjgst
,maxschueler);FI .sek2:int(startkey1)>=sek2min.bestandsetzen:bestimmebestand;
setzestartkeys;pruefebestand.bestimmebestand:aktschuljahr:=schulkenndatum(
schuljahrkey);schuljahr:=subtext(aktschuljahr,1,2);schuljahr:=text(int(
schuljahr)-1)+schuljahr;schulhalbjahr:=halbjahr2;IF alleklassenTHEN 
alleklassensetzenELSE SELECT bestandindexOF CASE einejgst:bestandjgstCASE 
eineklasse:bestandklasseEND SELECT FI ;.alleklassensetzen:waspruefen:=
allespruefen;infeld(fnrjgst).bestandjgst:waspruefen:=einejgstpruefen;infeld(
fnrjgst).bestandklasse:waspruefen:=eineklassepruefen;infeld(fnrtutor).
setzestartkeys:putwert(fnrhjdsj,schuljahr);putwert(fnrhjdhj,schulhalbjahr);
putwert(fnrhjdjgst,startkey1);putwert(fnrhjdkennung,startkey2);putwert(
fnrhjdversetzung,kznachpruefung).pruefebestand:search(ixhjdsjhjverjgstkenn,
FALSE );IF dbstatus<>nullOR (NOT pruefungspeziell(waspruefen))THEN 
bestandleermelden;return(tofather);LEAVE bearbeitungergnachprELSE 
nochwelcheda:=TRUE FI .laengenfestlegen:laengeklasse:=standardfeldlaenge(
fnrklasse);laengename:=standardfeldlaenge(fnrname);laengebetr:=
standardfeldlaenge(fnrbetr);laengefach:=standardfeldlaenge(fnrfach);
laengenote:=standardfeldlaenge(fnrnote);laengezugtutor:=standardfeldlaenge(
fnrzug).plausipruefungvorbereiten:standardmeldung(meldwarten,niltext);.
naechsteportionlesen:blocklesenundausgeben.keinemehrda:NOT nochwelcheda.
bestandleermelden:infeld(fnrjgst);standardmeldung(meldbestleer,niltext).
eingangsmaskenfehler:standardmeldung(meldfalscheauswahl,niltext);infeld(
pruefstatus).END PROC bearbeitungergnachpr;PROC ergnachprnichtspeichern:
nichtspeichernmelden;startkeyssetzen;neuerblock.nichtspeichernmelden:
standardmeldung(meldnichtspeichern,niltext);pause(10).startkeyssetzen:
restoretupel(dnrhalbjahresdaten,hjdtupel);changeindex.END PROC 
ergnachprnichtspeichern;PROC ergnachprspeichern:BOOL VAR 
halbjahresdateninzwischengeaendert,schuelerdateninzwischengeaendert;TEXT VAR 
altejgst:="",alterzug:="",neuejgst:="";pruefeplausibilitaet;IF dateninordnung
THEN speicherungdurchfuehren;startkeyssetzen;neuerblockELSE eingabefehler;
return(tofather)FI .pruefeplausibilitaet:standardmeldung(meldplausi,niltext);
BOOL VAR dateninordnung:=TRUE ;INT VAR satzindex:=erstesfeld;INT VAR fehlernr
;TEXT VAR fehlertext:=niltext;FOR suindFROM 1UPTO schuelerzahlREP pruefezeile
;IF NOT dateninordnungTHEN LEAVE pruefeplausibilitaetFI ;satzindexINCR 
felderprozeilePER .pruefezeile:dateninordnung:=allesfreiCOR allesrichtig.
allesrichtig:((noterichtig)CAND (schuelergrupperichtig))CAND (fachrichtig).
noterichtig:((NOT fehlendertutor)CAND (gueltigenote))CAND (NOT fehlendesfach)
.fehlendertutor:fehlernr:=meldzugtutorfehlt;aktuellesfeld:=satzindex+2;
sitzengebliebenCAND keintutor.sitzengeblieben:IF length(eingegebenenote)=1
THEN int(eingegebenenote)>bestandengrenzeeinstelligELSE eingegebenenote<
bestandengrenzezweistelligFI .eingegebenenote:standardmaskenfeld(satzindex+1)
.gueltigenote:fehlernr:=meldungueltigenote;aktuellesfeld:=satzindex+1;TEXT 
VAR pruefungsnote:=eingegebenenote;noteimbereich.noteimbereich:pruefungsnote=
leernoteOR (notenichtzukleinCAND notenichtzugross).notenichtzuklein:IF length
(pruefungsnote)=1THEN int(pruefungsnote)>=minnoteeinstelligELSE pruefungsnote
>=minnotezweistelligFI .notenichtzugross:IF length(pruefungsnote)=1THEN int(
pruefungsnote)<=maxnoteeinstelligELSE pruefungsnote<=maxnotezweistelligFI .
fehlendesfach:fehlernr:=meldfehlendesfach;aktuellesfeld:=satzindex;bestanden
CAND keinfach.bestanden:NOT sitzengeblieben.schuelergrupperichtig:fehlernr:=
meldfalschesg;aktuellesfeld:=satzindex+2;fehlertext:=standardmaskenfeld(
aktuellesfeld)+meldtrenner;keintutorCOR schuelergruppeimbestand.
schuelergruppeimbestand:#????#putwert(fnrsgrpsj,aktschuljahr);putwert(
fnrsgrphj,halbjahr1);putwert(fnrsgrpjgst,schuelergruppenschluessel);putwert(
fnrsgrpkennung,eingegebenertutor);search(dnraktschuelergruppen,TRUE );
dbstatus=null.schuelergruppenschluessel:IF bestandenCAND NOT 
dreizehnernachprueflingTHEN jahrgangsstufeeinshoeherELSE 
bisherigejahrgangsstufeFI .bisherigejahrgangsstufe:subtext(altedaten(suind),1
,2).jahrgangsstufeeinshoeher:jgstaufber(text(int(bisherigejahrgangsstufe)+1))
.eingegebenertutor:standardmaskenfeld(satzindex+2).fachrichtig:fehlernr:=
meldfalschesfach;aktuellesfeld:=satzindex;fehlertext:=npfaecher(suind)+
meldtrenner;keinfachCOR ausdemvorgegebenenbereich.ausdemvorgegebenenbereich:
pos(fehlertext,eingegebenesfach)>null.eingegebenesfach:standardmaskenfeld(
satzindex).allesfrei:(keintutorCAND keinfach)CAND keinenote.keintutor:
eingegebenertutor=niltextCOR eingegebenertutor="abg.".keinenote:
standardmaskenfeld(satzindex+1)=niltext.keinfach:eingegebenesfach=niltext.
speicherungdurchfuehren:logeintragvornehmen;aendernschleife;kurzwarten.
logeintragvornehmen:TEXT VAR eintrag:=logtextbeginn;IF alleklassenTHEN 
eintragCAT logtextalleklassenELSE eintragCAT startkey1;eintragCAT startkey2
FI ;logeintrag(eintrag).kurzwarten:pause(10).aendernschleife:INT VAR suind;
INT VAR zahlderaenderungen:=null;satzindex:=erstesfeld-abstandzumnamen;FOR 
suindFROM 1UPTO schuelerzahlREP behandleschuelersatz;satzindexINCR 
felderprozeilePER .behandleschuelersatz:IF datenveraendertTHEN 
aenderungvorbereiten;IF zwischenzeitlichgeaendertTHEN transaktionsfehlerELSE 
dateninpuffersetzen;schreibtransaktion;meldevollzugFI ;FI ;.datenveraendert:
subtext(altedaten(suind),laengeklasse+1)<>jetzigedaten.jetzigedaten:INT VAR 
datenfeldanfang:=satzindex+abstandzumnamen;standardmaskenfeld(datenfeldanfang
)+standardmaskenfeld(datenfeldanfang+1)+standardmaskenfeld(datenfeldanfang+2)
.aenderungvorbereiten:lesenvorbereiten;lesen.lesenvorbereiten:
zahlderaenderungenINCR 1;key(1):=name(suind);key(2):=rufname(suind);key(3):=
datumrekonversion(gebdatum(suind));schluesselfuerhjddateisetzen.
schluesselfuerhjddateisetzen:schluesselfuerhjdsetzen(dnrhalbjahresdaten,key,
schuljahr,halbjahr2,"").lesen:search(dnrhalbjahresdaten,TRUE );
halbjahresdateninzwischengeaendert:=(dbstatus<>ok);IF dbstatus=okTHEN 
saveupdateposition(dnrhalbjahresdaten);savetupel(dnrhalbjahresdaten,sichtupel
);altejgst:=jgstaufber(wert(fnrhjdjgst));schluesselfuerschuelerdateisetzen;
search(dnrschueler,TRUE );schuelerdateninzwischengeaendert:=(dbstatus<>ok);
IF dbstatus=okTHEN alterzug:=wert(fnrsusgrpzugtut);saveupdateposition(
dnrschueler);savetupel(dnrschueler,schuelertupel)FI FI .
zwischenzeitlichgeaendert:halbjahresdateninzwischengeaendertOR 
schuelerdateninzwischengeaendert.transaktionsfehler:standardmeldung(
meldtransaktionsfehler,niltext);return(tofather);infeld(satzindex+
abstandzumnamen);LEAVE ergnachprspeichern.dateninpuffersetzen:IF jetzigedaten
=niltextTHEN noteundfachsetzen;schuelerdatenaendernELIF nichtbestandenTHEN 
nichtbestandenneuELSE notenfachundneuerzugFI ;neuerzugtutorloeschen.
schuelerdatenaendern:putwert(fnrsustatuss,bestandlaufsj);IF 
dreizehnernachprueflingTHEN putwert(fnrsusgrpjgst,text(jgst13));putwert(
fnrsuartzugang,dreizehnnachprsatz)ELSE neuejgst:=jgstaufber(text(int(altejgst
)+1));putwert(fnrsusgrpjgst,neuejgst);putwert(fnrsusgrpzugtut,wert(
fnrhjdkennung));putwert(fnrsuartzugang,kznachpruefung)FI .nichtbestanden:
datenfeldanfang:=satzindex+abstandzumnamen;IF length(standardmaskenfeld(
datenfeldanfang+1))=1THEN int(standardmaskenfeld(datenfeldanfang+1))>
bestandengrenzeeinstelligELSE standardmaskenfeld(datenfeldanfang+1)<
bestandengrenzezweistelligFI .notenfachundneuerzug:noteundfachsetzen;IF 
dreizehnernachprueflingTHEN dreizehnerabmeldenELSE neuejgst:=jgstaufber(text(
int(altejgst)+1));putwert(fnrsusgrpjgst,neuejgst);putwert(fnrsuartzugang,
kznachpruefung);neuerzugsetzenFI .noteundfachsetzen:TEXT VAR fach:=
standardmaskenfeld(datenfeldanfang);TEXT VAR note:=standardmaskenfeld(
datenfeldanfang+1);putwert(fnrhjdnachfach,fach);putwert(fnrhjdnacherg,note).
dreizehnernachpruefling:dreizehner(suind).dreizehnerabmelden:putwert(
fnrsustatuss,bestandabgegangene);putwert(fnrsuabgdats,schulkenndatum(
anfangschuljahrkey)).neuerzugsetzen:TEXT VAR neuerzug;neuerzug:=
standardmaskenfeld(datenfeldanfang+2);IF neuerzug<>niltextTHEN IF neuerzug<>
alterzugTHEN putwert(fnrsusgrpzugtut,neuerzug);FI ELSE IF jgstaufber(wert(
fnrsusgrpjgst))=altejgstTHEN putwert(fnrsusgrpzugtut,wert(fnrhjdkennung))FI 
FI ;zuginakthjdaendern.zuginakthjdaendern:savetupel(dnrhalbjahresdaten,
sichtupel);neueklasseinhalbjahresdateneintragen(key,aktschuljahr,halbjahr1,
neuejgst,neuerzug);IF dbstatus=okTHEN putwert(fnrsutidakthjd,gettid)FI ;
restoretupel(dnrhalbjahresdaten,sichtupel).nichtbestandenneu:
noteundfachsetzen;setzezugang;savetupel(dnrhalbjahresdaten,sichtupel);
setzejgstrunter;halbjahresdatenbearbeiten;restoretupel(dnrhalbjahresdaten,
sichtupel).setzezugang:putwert(fnrsuartzugang,geaendertersatz).
setzejgstrunter:neuejgst:=jgstaufber(text(int(altejgst)));neuerzug:=
standardmaskenfeld(datenfeldanfang+2);putwert(fnrsusgrpjgst,neuejgst);putwert
(fnrsusgrpzugtut,neuerzug);putwert(fnrsustatuss,bestandlaufsj);.
halbjahresdatenbearbeiten:IF NOT dreizehnernachprueflingTHEN 
nachfolgendehjdsloeschen;FI .nachfolgendehjdsloeschen:halbjahresdatenloeschen
(PROC (INT CONST )succ,key,halbjahr2,int(neuejgst),FALSE );.
neuerzugtutorloeschen:putwert(fnrsuneuerzugtut,niltext).schreibtransaktion:
restoreupdateposition(dnrhalbjahresdaten);selupdate(dnrhalbjahresdaten);IF 
dbstatus<>okTHEN restoretupel(dnrschueler,schuelertupel)ELSE 
restoreupdateposition(dnrschueler);selupdate(dnrschueler);IF dbstatus<>ok
THEN restoretupel(dnrschueler,schuelertupel)ELSE IF int(neuejgst)=int(
altejgst)THEN evtlkurswahldatenfuerwiederholerbehandelnFI ;FI FI .
evtlkurswahldatenfuerwiederholerbehandeln:IF int(neuejgst)>=jgstufe10THEN 
kurswahlserveraktualisieren(neuejgst,"","")FI ;IF (int(neuejgst)+1)>=
jgstufe10THEN kurswahlserveraktualisieren(text(int(neuejgst)+1),"","")FI .
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 
ergnachprspeichernFI ;infeld(satzindex+abstandzumnamen).startkeyssetzen:
restoretupel(dnrhalbjahresdaten,hjdtupel);changeindex.eingabefehler:
standardmeldung(fehlernr,fehlertext);infeld(aktuellesfeld).END PROC 
ergnachprspeichern;PROC neuerblock:blocklesenundausgeben;IF nochwelchedaTHEN 
return(tofather)ELSE enter(tograndfather)FI .END PROC neuerblock;PROC 
blocklesenundausgeben:vorbereiten;initgruppenwechsel;gewuenschteszeigen;
nachbereiten.vorbereiten:IF NOT nochwelchedaTHEN LEAVE blocklesenundausgeben
FI ;standardmeldung(meldwarten,niltext);schuelerzahl:=null;aktuellesfeld:=
standardeinstieg.gewuenschteszeigen:bildschirmblock(PROC datenzeigen,BOOL 
PROC (INT CONST )pruefungspeziell,waspruefen).nachbereiten:nochwelcheda:=(
schuelerzahl>null);IF nochwelchedaTHEN savetupel(dnrhalbjahresdaten,hjdtupel)
;restlichezeilenloeschen;infeld(standardanfang);standardfelderausgebenELSE 
LEAVE blocklesenundausgebenFI ;infeld(erstesfeld).restlichezeilenloeschen:
INT VAR zeilenzaehler;INT VAR zeilenfeld:=(schuelerzahl*felderprozeile)+1;
FOR zeilenzaehlerFROM schuelerzahlUPTO schuelerproseite-1REP loeschezeilePER 
.loeschezeile:INT VAR zeilenincr;FOR zeilenincrFROM 1UPTO felderprozeileREP 
zeilenfeldINCR 1;standardmaskenfeld(standardfeldlaenge(zeilenfeld)*blank,
zeilenfeld);feldschutz(zeilenfeld)PER ;.END PROC blocklesenundausgeben;PROC 
datenzeigen:TEXT VAR merkdaten:=niltext;zaehlen;zeigenundmerken.zaehlen:
schuelerzahlINCR 1.zeigenundmerken:altejgstzeigen;namezeigen;aktjgstzeigen;
fachzeigen;npfaechermerken;notezeigen;neuerzugtutorzeigen.altejgstzeigen:IF 
dreizehnerzurnachpruefungTHEN aenderungsetzenELSE neusetzenFI ;
betreffendeszeigen.dreizehnerzurnachpruefung:intwert(fnrhjdjgst)=jgst13.
aenderungsetzen:BOOL VAR satzgeaendert:=TRUE ;.neusetzen:satzgeaendert:=
FALSE ;.betreffendeszeigen:TEXT VAR alteklasse:=jgstaufber(wert(fnrhjdjgst))+
wert(fnrhjdkennung);dreizehner(schuelerzahl):=satzgeaendert;
standardmaskenfeld(text(alteklasse,laengeklasse),aktuellesfeld);merkdaten:=
text(alteklasse,laengeklasse);gruppenwechsel(alteklasse,gwklasse,laengeklasse
,1,aktuellesfeld);.namezeigen:namenretten;standardmaskenfeld(text(
schuelername+namenstrenner+schuelervorname,laengename),aktuellesfeld);
aktuellesfeldINCR 1.namenretten:TEXT VAR schuelername,schuelervorname;
schuelername:=wert(fnrhjdfamnames);schuelervorname:=wert(fnrhjdrufnames);name
(schuelerzahl):=schuelername;rufname(schuelerzahl):=schuelervorname;gebdatum(
schuelerzahl):=wert(fnrhjdgebdats).aktjgstzeigen:TEXT VAR aktklasse:=niltext;
schluesselfuerschuelerdateisetzen;search(dnrschueler,TRUE );IF dbstatus=ok
THEN aktklasse:=jgstaufber(wert(fnrsusgrpjgst))+wert(fnrsusgrpzugtut)FI ;
standardmaskenfeld(aktklasse,aktuellesfeld);aktuellesfeldINCR 1.fachzeigen:
TEXT VAR fach:=niltext,faecher:=niltext;fach:=wert(fnrhjdnachfach);merkdaten
CAT fach;standardmaskenfeld(fach,aktuellesfeld);feldfrei(aktuellesfeld);
aktuellesfeldINCR 1.npfaechermerken:INT VAR fachind;FOR fachindFROM 
fnrhjdnachfach1UPTO fnrhjdnachfach1+2REP faecherCAT wert(fachind);faecherCAT 
namenstrenner;PER ;npfaecher(schuelerzahl):=faecher.notezeigen:TEXT VAR note;
note:=wert(fnrhjdnacherg);merkdatenCAT note;standardmaskenfeld(note,
aktuellesfeld);feldfrei(aktuellesfeld);aktuellesfeldINCR 1.
neuerzugtutorzeigen:#????#TEXT VAR tutor;IF wert(fnrsustatuss)=
bestandabgegangeneTHEN tutor:=bestandabgegangene+punktELSE tutor:=niltext;#
wert(fnrsusgrpzugtut);15.07.87dr#FI ;merkdatenCAT tutor;standardmaskenfeld(
tutor,aktuellesfeld);altedaten(schuelerzahl):=merkdaten;feldfrei(
aktuellesfeld);aktuellesfeldINCR 1.END PROC datenzeigen;PROC 
schluesselfuerschuelerdateisetzen:inittupel(dnrschueler);putwert(
fnrsufamnames,wert(fnrhjdfamnames));putwert(fnrsurufnames,wert(fnrhjdrufnames
));putwert(fnrsugebdatums,wert(fnrhjdgebdats));.END PROC 
schluesselfuerschuelerdateisetzen;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)END SELECT ;b
END PROC pruefungspeziell;PROC pruefungalleklassen(BOOL VAR bool):bool:=(wert
(fnrhjdsj)=schuljahrCAND wert(fnrhjdhj)=schulhalbjahrCAND wert(
fnrhjdversetzung)=kznachpruefung)END PROC pruefungalleklassen;PROC 
pruefungeinejgst(BOOL VAR bool):bool:=(wert(fnrhjdsj)=schuljahrCAND wert(
fnrhjdhj)=schulhalbjahrCAND wert(fnrhjdversetzung)=kznachpruefungCAND 
jgstaufber(wert(fnrhjdjgst))=startkey1)END PROC pruefungeinejgst;PROC 
pruefungeineklasse(BOOL VAR bool):bool:=(wert(fnrhjdsj)=schuljahrCAND wert(
fnrhjdhj)=schulhalbjahrCAND wert(fnrhjdversetzung)=kznachpruefungCAND 
jgstaufber(wert(fnrhjdjgst))=startkey1CAND wert(fnrhjdkennung)=startkey2)END 
PROC pruefungeineklasse;END PACKET listenweiseergnachpr