summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listenweise erg nachpr
blob: 6b5a676c93edfc6c30dcb71a0ae374b7d4c49fbc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
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