summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listenweise dif dat erf
blob: 0ef8cfd64b0ca04204ad0162a1d716ed405225c5 (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
251
252
253
254
255
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