summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.lehrveranstaltungen benennen
blob: 79650006971e8866c7552f2dd4b11ea1ce12b762 (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
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
PACKET lehrveranstaltungenbenennenDEFINES lehrveranstaltungenbenennenstart,
lehrveranstaltungenuebernehmenstart,lehrveranstaltungenuebernehmen,
bearbeitunglehrveranstaltungen,lehrveranstaltungenzeileeinfuegen,
lehrveranstaltungenspeichern:LET maskeeingang=
"ms lehrveranstalt benennen eingang";LET maskebearb=
"ms lehrveranstalt benennen";LET fnrbearbeiten=2,fnrbearbaktsj=3,
fnrbearbgeplsj=4,fnrbearbjgst=5,fnrbearbfach=6,fnrfachanguebernehmen=7,
fnrfachangaktsj=8,fnrfachanggeplsj=9,fnrfachangjgst=10,fnrlehrveruebernehmen=
11,fnrlehrverjgst=12;LET feldanzmaskeeingang=12;ROW feldanzmaskeeingangTEXT 
VAR feldbs1;LET felderprozeile=9;LET ersteseingabefeld=3;LET 
erstestabellenfeld=2;LET incrfuerkennung=1,incrfuerlvart=2,
incrfuerklassengranfang=3,incrfuerklassengrende=6,incrfuerwstd=7;LET 
meldnrdatenspeichern=50,meldnrungueltigeauswahl=56,meldnrkennungzulang=60,
meldnrdatennichtspeichern=63,meldnrbittewarten=69,meldnrbitteangabegenauer=
129,meldnrungueltigeuebernahmejgst=146,meldnrfragedatenuebernehmen=300,
meldnrdatenwerdenuebernommen=301,meldnrdatenwurdenuebernommen=302,
meldnrdatenwurdennichtuebernommen=303,meldnrkeinfachzuanderenangaben=307,
meldnrungueltigesfach=310,meldnrungueltigeart=311,
meldnrletztezeilenichteinfuegen=314,meldnrkeinfaecherangebot=315,
meldnruebernehmenderjgst=316,meldnrlehrveranstaltungloeschen=317,
meldnrfalschetastezuankreuz=318,meldnrfalscheausfuellung=319,
meldnrungueltigeklassengruppe=320,meldnrkeinelehrveranstaltungen=321,
meldnrlehrveranstaltunggibtsschon=322,meldnrfehlerhaftejgst=305;LET kennzhell
="#";LET textschulj="Schuljahr",texthalbj="Schulhalbjahr",ersteshalbjahr="1",
zweiteshalbjahr="2";LET wertaktuell="aktuell",wertgeplant="geplant";LET 
artbestand="c02 art lehrveranstaltung";BOOL VAR aktuelleshalbjahrzubearbeiten
;TEXT VAR gewschulj,gewhalbj,aktschulj:="",akthalbj:="";INT VAR gewjgst,
startjgst,endejgst;TEXT VAR vgljgst:="",vglfach:="";INT VAR 
jgstdesletztensatzes:=0;LET fachlaenge=2;LET kennunglaenge=4;INT VAR zugriff;
BOOL VAR eingangsmaskenfehler:=FALSE ;INT VAR pruefstatus:=0,letztecursorfnr
:=fnrbearbeiten;INT VAR aktzeile;INT VAR ifnr,ijgst;LET trenner="�";TEXT VAR 
geprueftefaecher,gueltigeschuelergruppen:="",gueltigeklassengruppen:="",
gueltigelvart:="";TEXT VAR pruefklasse;INT VAR pruefjgst,pruefbez;TEXT VAR 
sugruppen,sugruppejgst;INT VAR possugruppe,laengesugruppen;LET 
laengeeinersugruppe=6;LET blankzeichen=" ",trennstrich="/",
textueberschriftanfang="Lehrveranstaltungen benennen für Halbjahr ";TEXT VAR 
ueberschrift;LET jgst0=0,jgst5=5,jgst10=10,jgst13=13;BOOL VAR gueltigejgst;
BOOL VAR bearbeitungallerjgst;BOOL VAR leerenbszeigen;LET lvdateiname=
"LV-Datei";FILE VAR lvdatei;TEXT VAR lvdateizeile;TEXT VAR nfschulj,nfhalbj,
nfjgst,nffachkennung;INT VAR izeile,anzahlgezeigtezeilen,
anzahleingegebenezeilen;LET zeilenanzahl=18;ROW zeilenanzahlSTRUCT (TEXT jgst
,TEXT fach,TEXT kennung,TEXT kopplung,TEXT art,TEXT klasse1,TEXT klasse2,
TEXT klasse3,TEXT klasse4,TEXT wstd)VAR bszeile;
initfelderdeseingangsbildschirms;initbszeilepuffer;PROC 
lehrveranstaltungenbenennenstart:standardstartproc(maskeeingang);
wertedeseingangsbildschirmsholen;infeld(fnrbearbeiten);standardfelderausgeben
;infeld(letztecursorfnr);standardnprocEND PROC 
lehrveranstaltungenbenennenstart;PROC lehrveranstaltungenuebernehmenstart:
BOOL VAR ausgangsdatenfehlen:=FALSE ;eingangsbehandlung(1);IF 
eingangsmaskenfehlerTHEN infeld(pruefstatus);return(1)ELSE 
wertedeseingangsbildschirmsmerken;schulhalbjahrbestimmen;IF jgstangabeleer
THEN startjgst:=jgst0;endejgst:=jgst13ELSE startjgst:=int(vgljgst);endejgst:=
startjgstFI ;IF standardmaskenfeld(fnrfachanguebernehmen)<>""THEN 
pruefendesfaecherangebots;IF ausgangsdatenfehlenTHEN standardmeldung(
meldnrkeinfaecherangebot,"");return(1)ELSE standardmeldung(
meldnrfragedatenuebernehmen,"");eingabefeldersperren(fnrfachanguebernehmen);
standardnprocFI ELSE pruefenderlehrveranstaltungen;IF ausgangsdatenfehlen
THEN standardmeldung(meldnrkeinelehrveranstaltungen,"");return(1)ELIF 
gewhalbj=ersteshalbjahrAND startjgst=jgst13THEN standardmeldung(
meldnrungueltigeuebernahmejgst,"");infeld(fnrlehrverjgst);return(1)ELSE 
standardmeldung(meldnrfragedatenuebernehmen,"");eingabefeldersperren(
fnrlehrveruebernehmen);standardnprocFI FI FI .pruefendesfaecherangebots:
ausgangsdatenfehlen:=FALSE ;putwert(fnrfangsj,gewschulj);putwert(fnrfanghj,
gewhalbj);putintwert(fnrfangjgst,startjgst);putintwert(fnrfanglfdnr,0);search
(dnrfaecherangebot,FALSE );IF dbstatus<>okTHEN ausgangsdatenfehlen:=TRUE 
ELIF wert(fnrfanghj)<>gewhalbjCOR wert(fnrfangsj)<>gewschuljCOR intwert(
fnrfangjgst)>endejgstTHEN ausgangsdatenfehlen:=TRUE FI .
pruefenderlehrveranstaltungen:ausgangsdatenfehlen:=FALSE ;putwert(fnrlvsj,
aktschulj);putwert(fnrlvhj,akthalbj);putintwert(fnrlvjgst,startjgst);putwert(
fnrlvfachkennung,"");search(dnrlehrveranstaltungen,FALSE );IF dbstatus<>ok
THEN ausgangsdatenfehlen:=TRUE ELIF wert(fnrlvhj)<>akthalbjCOR wert(fnrlvsj)
<>aktschuljCOR intwert(fnrlvjgst)>endejgstTHEN ausgangsdatenfehlen:=TRUE FI .
END PROC lehrveranstaltungenuebernehmenstart;PROC eingabefeldersperren(INT 
CONST fnrfreiesfeld):FOR ifnrFROM fnrbearbeitenUPTO feldanzmaskeeingangREP 
IF ifnr<>fnrfreiesfeldTHEN feldschutz(ifnr)FI PER ;infeld(fnrfreiesfeld)END 
PROC eingabefeldersperren;PROC eingabefelderfreigeben:FOR ifnrFROM 
fnrbearbeitenUPTO feldanzmaskeeingangREP feldfrei(ifnr)PER END PROC 
eingabefelderfreigeben;PROC lehrveranstaltungenuebernehmen(BOOL CONST 
uebernehmen):INT VAR letztejgst:=-1;IF uebernehmenTHEN standardmeldung(
meldnrdatenwerdenuebernommen,"");IF standardmaskenfeld(fnrfachanguebernehmen)
<>""THEN evtlvorhandenelehrveranstaltungenloeschen;
neuelvausfaecherangebotschreibenELSE neuelvauslehrveranstaltungenschreibenFI 
;evtlkurswahldatenbeimuebernehmenaktualisieren;IF 
aktuelleshalbjahrzubearbeitenTHEN aenderungsvermerksetzen(wertaktuell)ELSE 
aenderungsvermerksetzen(wertgeplant)FI ;standardmeldung(
meldnrdatenwurdenuebernommen,"")ELSE standardmeldung(
meldnrdatenwurdennichtuebernommen,"")FI ;eingabefelderfreigeben;return(2).
evtlkurswahldatenbeimuebernehmenaktualisieren:IF 
aktuelleshalbjahrzubearbeitenOR gewhalbj=zweiteshalbjahrTHEN FOR gewjgstFROM 
startjgstUPTO endejgstREP IF gewjgst>jgst10THEN kurswahlserverlvaktualisieren
(text(gewjgst),text(gewjgst),gewhalbj)FI ;PER ;ELSE FOR gewjgstFROM startjgst
UPTO endejgstREP IF gewjgst>=jgst10THEN kurswahlserverlvaktualisieren(text(
gewjgst),text(gewjgst+1),gewhalbj)FI ;PER ;FI .
evtlvorhandenelehrveranstaltungenloeschen:
sucheerstelehrveranstaltungzugewhalbj;WHILE lehrveranstaltungzuloeschenREP 
meldungzumloeschenbeijgstwechsel;loeschevorhandenelehrveranstaltung;
suchenaechstelehrveranstaltungzugewhalbjPER .
sucheerstelehrveranstaltungzugewhalbj:putwert(fnrlvsj,gewschulj);putwert(
fnrlvhj,gewhalbj);putintwert(fnrlvjgst,startjgst);putwert(fnrlvfachkennung,""
);search(dnrlehrveranstaltungen,FALSE );letztejgst:=-1;.
lehrveranstaltungzuloeschen:dbstatus=okCAND wert(fnrlvsj)=gewschuljCAND wert(
fnrlvhj)=gewhalbjCAND intwert(fnrlvjgst)<=endejgst.
loeschevorhandenelehrveranstaltung:delete(dnrlehrveranstaltungen).
meldungzumloeschenbeijgstwechsel:IF intwert(fnrlvjgst)<>letztejgstTHEN 
letztejgst:=intwert(fnrlvjgst);standardmeldung(
meldnrlehrveranstaltungloeschen,text(letztejgst)+kennzhell)FI .
suchenaechstelehrveranstaltungzugewhalbj:succ(dnrlehrveranstaltungen).
neuelvausfaecherangebotschreiben:letztejgst:=-1;REP 
lehrveranstaltungenzufaecherangebotschreiben;
suchenaechstesfaecherangebotzugewhalbjUNTIL faecherangebotabgehandeltPER .
lehrveranstaltungenzufaecherangebotschreiben:INT VAR satzanzahl:=intwert(
fnrfanganzlv);INT VAR isatz;
setzefestewerteausfaecherangebotfuerlehrveranstaltung;
meldungzuruebernahmebeijgstwechsel;FOR isatzFROM 1UPTO satzanzahlREP 
setzevarwerteausfaecherangebotfuerlehrveranstaltung;insert(
dnrlehrveranstaltungen)PER .meldungzuruebernahmebeijgstwechsel:IF intwert(
fnrlvjgst)<>letztejgstTHEN letztejgst:=intwert(fnrlvjgst);standardmeldung(
meldnruebernehmenderjgst,text(letztejgst)+kennzhell)FI .
setzefestewerteausfaecherangebotfuerlehrveranstaltung:putwert(fnrlvsj,
gewschulj);putwert(fnrlvhj,gewhalbj);putintwert(fnrlvjgst,intwert(fnrfangjgst
));putwert(fnrlvparaphe,"");putwert(fnrlvart,wert(fnrfangart));putintwert(
fnrlvwochenstd,intwert(fnrfangwochenstd));putwert(fnrlvklgrp1,"");putwert(
fnrlvklgrp2,"");putwert(fnrlvklgrp3,"");putwert(fnrlvklgrp4,"");putwert(
fnrlvraumgrp1,"");putwert(fnrlvraumgrp2,"");.
setzevarwerteausfaecherangebotfuerlehrveranstaltung:TEXT VAR lvkennung:=text(
wert(fnrfangart),2)+textzweistellig(isatz);putwert(fnrlvfachkennung,text(wert
(fnrfangfach),fachlaenge)+lvkennung);putwert(fnrlvkopplung,textzweistellig(
intwert(fnrfangjgst))+textzweistellig(intwert(fnrfanglfdnr))+lvkennung);.
suchenaechstesfaecherangebotzugewhalbj:succ(dnrfaecherangebot).
faecherangebotabgehandelt:NOT (dbstatus=okCAND intwert(fnrfangjgst)<=endejgst
CAND wert(fnrfangsj)=gewschuljCAND wert(fnrfanghj)=gewhalbj).
neuelvauslehrveranstaltungenschreiben:lvsaetzezuaktuellenjgstindateischreiben
;evtlvorhandenelehrveranstaltungenloeschenvorbereiten;
evtlvorhandenelehrveranstaltungenloeschen;
lvsaetzeausdateizugeplantenjgstschreiben.
lvsaetzezuaktuellenjgstindateischreiben:forget(lvdateiname,quiet);lvdatei:=
sequentialfile(output,lvdateiname);standardmeldung(meldnrbittewarten,"");
holegueltigelehrveranstaltungen.
evtlvorhandenelehrveranstaltungenloeschenvorbereiten:IF gewhalbj=
ersteshalbjahrAND NOT jgstangabeleerTHEN IF startjgst>=jgst5THEN startjgst
INCR 1;endejgstINCR 1FI FI .lvsaetzeausdateizugeplantenjgstschreiben:
letztejgst:=-1;lvdatei:=sequentialfile(input,lvdateiname);WHILE NOT eof(
lvdatei)REP getline(lvdatei,lvdateizeile);restoretupel(dnrlehrveranstaltungen
,lvdateizeile);putwert(fnrlvhj,gewhalbj);IF gewhalbj=ersteshalbjahrTHEN 
putwert(fnrlvsj,gewschulj);ijgst:=intwert(fnrlvjgst);IF ijgst>0THEN 
putintwert(fnrlvjgst,ijgst+1);TEXT VAR bearbkopplung:=wert(fnrlvkopplung);IF 
int(subtext(bearbkopplung,1,2))=ijgstTHEN putwert(fnrlvkopplung,
textzweistellig(ijgst+1)+subtext(bearbkopplung,3))FI ;FI ;FI ;IF intwert(
fnrlvjgst)>jgst13THEN LEAVE lvsaetzeausdateizugeplantenjgstschreibenELSE 
meldungzuruebernahmebeijgstwechsel;insert(dnrlehrveranstaltungen)FI PER END 
PROC lehrveranstaltungenuebernehmen;PROC holegueltigelehrveranstaltungen:
inittupel(dnrlehrveranstaltungen);putwert(fnrlvsj,aktschulj);putwert(fnrlvhj,
akthalbj);putintwert(fnrlvjgst,startjgst);search(dnrlehrveranstaltungen,
FALSE );statleseschleife(dnrlehrveranstaltungen,aktschulj,akthalbj,fnrlvsj,
fnrlvhj,PROC lehrveranstaltungindateieinlesen)END PROC 
holegueltigelehrveranstaltungen;PROC lehrveranstaltungindateieinlesen(BOOL 
VAR b):IF dbstatus<>0OR wert(fnrlvsj)<>aktschuljOR wert(fnrlvhj)<>akthalbjOR 
intwert(fnrlvjgst)>endejgstTHEN b:=TRUE ELSE savetupel(dnrlehrveranstaltungen
,lvdateizeile);putline(lvdatei,lvdateizeile)FI END PROC 
lehrveranstaltungindateieinlesen;PROC bearbeitunglehrveranstaltungen:
eingangsbehandlung(2);IF eingangsmaskenfehlerTHEN infeld(pruefstatus);return(
1)ELSE wertedeseingangsbildschirmsmerken;schulhalbjahrbestimmen;
zugriffauflehrveranstaltungenbestimmen;erstensatzlesen;IF 
keinelehrveranstaltungengespeichertCAND bearbeitungallerjgstTHEN 
standardmeldung(meldnrkeinelehrveranstaltungen,"");return(1)ELSE 
standardstartproc(maskebearb);ueberschriftzeilezusammensetzen;
standardkopfmaskeaktualisieren(ueberschrift);bsfuellen;infeld(
ersteseingabefeld);standardnprocFI ;FI .
zugriffauflehrveranstaltungenbestimmen:IF fachangabeleerTHEN zugriff:=
ixlvsjhjkoppELIF jgstangabeleerTHEN zugriff:=ixlvsjhjkennELSE zugriff:=
dnrlehrveranstaltungenFI .erstensatzlesen:putwert(fnrlvsj,gewschulj);putwert(
fnrlvhj,gewhalbj);putintwert(fnrlvjgst,int(vgljgst));IF zugriff=ixlvsjhjkopp
THEN putwert(fnrlvkopplung,textzweistellig(int(vgljgst)))ELSE putwert(
fnrlvfachkennung,vglfach)FI ;jgstdesletztensatzes:=int(vgljgst);search(
zugriff,FALSE );leerenbszeigen:=NOT (dbstatus=okCAND wert(fnrlvhj)=gewhalbj
CAND wert(fnrlvsj)=gewschuljCAND (jgstangabeleerCOR intwert(fnrlvjgst)=int(
vgljgst))CAND (fachangabeleerCOR compress(subtext(wert(fnrlvfachkennung),1,
fachlaenge))=vglfach)).keinelehrveranstaltungengespeichert:dbstatus<>0.
ueberschriftzeilezusammensetzen:ueberschrift:=textueberschriftanfang;
ueberschriftCAT gewhalbj;ueberschriftCAT blankzeichen;ueberschriftCAT subtext
(gewschulj,1,2);ueberschriftCAT trennstrich;ueberschriftCAT subtext(gewschulj
,3,4).END PROC bearbeitunglehrveranstaltungen;BOOL PROC fachangabeleer:
vglfach=""END PROC fachangabeleer;BOOL PROC jgstangabeleer:vgljgst=""END 
PROC jgstangabeleer;PROC bsfuellen:izeile:=0;IF NOT leerenbszeigenTHEN 
startebildschirmblock(zugriff,zeilenanzahl-1);bildschirmblock(PROC satzmerken
,BOOL PROC (INT CONST )satzzubehandeln,0);IF dbstatus=0THEN succ(zugriff);IF 
dbstatus<>0THEN inittupel(dnrlehrveranstaltungen)FI ELSE inittupel(
dnrlehrveranstaltungen)FI ;merkesatzalsnachfolgerELSE nffachkennung:=""FI ;
evtlleerzeilenhinzufuegen;werteausbszeileinstandardfeldersetzen;infeld(
erstestabellenfeld);standardfelderausgeben;.evtlleerzeilenhinzufuegen:
anzahlgezeigtezeilen:=izeile;WHILE izeile<zeilenanzahlREP izeileINCR 1;
bszeile(izeile).jgst:=text(jgstdesletztensatzes);bszeile(izeile).fach:="";
bszeile(izeile).kennung:="";bszeile(izeile).kopplung:="";bszeile(izeile).art
:="";bszeile(izeile).klasse1:="";bszeile(izeile).klasse2:="";bszeile(izeile).
klasse3:="";bszeile(izeile).klasse4:="";bszeile(izeile).wstd:=""PER .
werteausbszeileinstandardfeldersetzen:ifnr:=erstestabellenfeld;TEXT VAR 
letztejgst:="-1";FOR izeileFROM 1UPTO zeilenanzahlREP IF bszeile(izeile).jgst
=letztejgstTHEN standardmaskenfeld("  ",ifnr);ELSE letztejgst:=bszeile(izeile
).jgst;standardmaskenfeld(textzweistellig(int(letztejgst)),ifnr);FI ;
standardmaskenfeld(bszeile(izeile).fach,ifnr+1);standardmaskenfeld(bszeile(
izeile).kennung,ifnr+2);standardmaskenfeld(bszeile(izeile).art,ifnr+3);
standardmaskenfeld(bszeile(izeile).klasse1,ifnr+4);standardmaskenfeld(bszeile
(izeile).klasse2,ifnr+5);standardmaskenfeld(bszeile(izeile).klasse3,ifnr+6);
standardmaskenfeld(bszeile(izeile).klasse4,ifnr+7);standardmaskenfeld(bszeile
(izeile).wstd,ifnr+8);ifnrINCR felderprozeilePER .merkesatzalsnachfolger:
nfschulj:=wert(fnrlvsj);nfhalbj:=wert(fnrlvhj);nfjgst:=wert(fnrlvjgst);
nffachkennung:=wert(fnrlvfachkennung).END PROC bsfuellen;BOOL PROC 
satzzubehandeln(INT CONST dummynr):IF NOT (izeile<zeilenanzahlCAND dbstatus=
okCAND wert(fnrlvsj)=gewschuljCAND wert(fnrlvhj)=gewhalbj)THEN LEAVE 
satzzubehandelnWITH FALSE FI ;IF NOT jgstangabeleerCAND intwert(fnrlvjgst)<>
int(vgljgst)THEN LEAVE satzzubehandelnWITH FALSE FI ;IF NOT fachangabeleer
CAND compress(subtext(wert(fnrlvfachkennung),1,fachlaenge))<>vglfachTHEN 
LEAVE satzzubehandelnWITH FALSE FI ;TRUE .END PROC satzzubehandeln;PROC 
satzmerken:izeileINCR 1;bszeile(izeile).jgst:=wert(fnrlvjgst);
jgstdesletztensatzes:=intwert(fnrlvjgst);bszeile(izeile).fach:=compress(
subtext(wert(fnrlvfachkennung),1,2));bszeile(izeile).kennung:=subtext(wert(
fnrlvfachkennung),3);bszeile(izeile).kopplung:=wert(fnrlvkopplung);bszeile(
izeile).art:=wert(fnrlvart);bszeile(izeile).klasse1:=wert(fnrlvklgrp1);
bszeile(izeile).klasse2:=wert(fnrlvklgrp2);bszeile(izeile).klasse3:=wert(
fnrlvklgrp3);bszeile(izeile).klasse4:=wert(fnrlvklgrp4);bszeile(izeile).wstd
:=wert(fnrlvwochenstd);.END PROC satzmerken;PROC lehrveranstaltungenspeichern
(BOOL CONST speichern):IF speichernTHEN plausipruefung;ELSE pruefstatus:=0FI 
;IF pruefstatus<>0THEN infeld(pruefstatus);return(1)ELSE datenspeichern(
speichern);IF nachfolgesatzvorhandenTHEN holewertedesnachfolgersatzes;search(
dnrlehrveranstaltungen,TRUE );IF dbstatus<>0THEN search(
dnrlehrveranstaltungen,FALSE )FI ;izeile:=0;IF satzzubehandeln(izeile)THEN 
changeindex;leerenbszeigen:=FALSE ;setzejgstfuerneuenbildschirm;
naechstenbildschirmzeigenELSE enter(2)FI ELIF letzteeingabezeilegefuelltTHEN 
leerenbszeigen:=TRUE ;naechstenbildschirmzeigenELSE enter(2)FI ;FI .
nachfolgesatzvorhanden:nffachkennung<>"".letzteeingabezeilegefuellt:
standardmaskenfeld((zeilenanzahl-1)*felderprozeile+ersteseingabefeld)<>"".
holewertedesnachfolgersatzes:putwert(fnrlvsj,nfschulj);putwert(fnrlvhj,
nfhalbj);putwert(fnrlvjgst,nfjgst);putwert(fnrlvfachkennung,nffachkennung).
naechstenbildschirmzeigen:bsfuellen;infeld(ersteseingabefeld);return(1).
setzejgstfuerneuenbildschirm:izeile:=zeilenanzahl;WHILE 
keinbezugaufletztensatzREP izeileDECR 1PER ;jgstdesletztensatzes:=int(bszeile
(izeile).jgst);.keinbezugaufletztensatz:bszeile(izeile).fach="".END PROC 
lehrveranstaltungenspeichern;PROC datenspeichern(BOOL CONST speichern):IF 
speichernTHEN standardmeldung(meldnrdatenspeichern,"");
datenspeicherungdurchfuehren;ELSE standardmeldung(meldnrdatennichtspeichern,
"");FI ;END PROC datenspeichern;PROC datenspeicherungdurchfuehren:BOOL VAR 
aenderungsvermerkzusetzen:=FALSE ;FOR izeileFROM 1UPTO zeilenanzahlREP 
holevergleichswerte;IF lvzeileloeschenTHEN aenderungszeileanzeigen;
aenderungsvermerkzusetzen:=TRUE ;altelvloeschenELIF lvzeileeinfuegenTHEN 
aenderungszeileanzeigen;aenderungsvermerkzusetzen:=TRUE ;neuelveinfuegenELIF 
lvzeileueberschreibenTHEN aenderungszeileanzeigen;aenderungsvermerkzusetzen:=
TRUE ;altelvupdateFI PER ;IF aenderungsvermerkzusetzenTHEN IF 
aktuelleshalbjahrzubearbeitenTHEN aenderungsvermerksetzen(wertaktuell)ELSE 
aenderungsvermerksetzen(wertgeplant)FI FI .holevergleichswerte:INT VAR 
prueffnr:=fachfnrin(izeile);TEXT VAR prueffach:=standardmaskenfeld(prueffnr);
TEXT VAR altesfach:=bszeile(izeile).fach.lvzeileloeschen:prueffach=""CAND 
altesfach<>"".altelvloeschen:setzealtesuchwerteindbpuffer;search(
dnrlehrveranstaltungen,TRUE );IF dbstatus=0THEN delete(dnrlehrveranstaltungen
);evtlkurswahldatenbeimbearbeitenaktualisierenFI .lvzeileeinfuegen:prueffach
<>""CAND altesfach="".neuelveinfuegen:setzeneuewerteindbpuffer;
setzenichtsichtbarewerteindbpuffer;insert(dnrlehrveranstaltungen);
evtlkurswahldatenbeimbearbeitenaktualisieren.lvzeileueberschreiben:NOT (
standardmaskenfeld(prueffnr)=bszeile(izeile).fachCAND standardmaskenfeld(
prueffnr+1)=bszeile(izeile).kennungCAND standardmaskenfeld(prueffnr+2)=
bszeile(izeile).artCAND standardmaskenfeld(prueffnr+3)=bszeile(izeile).
klasse1CAND standardmaskenfeld(prueffnr+4)=bszeile(izeile).klasse2CAND 
standardmaskenfeld(prueffnr+5)=bszeile(izeile).klasse3CAND standardmaskenfeld
(prueffnr+6)=bszeile(izeile).klasse4CAND standardmaskenfeld(prueffnr+7)=
bszeile(izeile).wstd).altelvupdate:setzealtesuchwerteindbpuffer;search(
dnrlehrveranstaltungen,TRUE );setzeneuewerteindbpuffer;IF standardmaskenfeld(
prueffnr)<>bszeile(izeile).fachCOR compress(standardmaskenfeld(prueffnr+1))<>
bszeile(izeile).kennungTHEN setzenichtsichtbarewerteindbpufferFI ;update(
dnrlehrveranstaltungen);evtlkurswahldatenbeimbearbeitenaktualisieren.
setzealtesuchwerteindbpuffer:putwert(fnrlvsj,gewschulj);putwert(fnrlvhj,
gewhalbj);putwert(fnrlvjgst,bszeile(izeile).jgst);putwert(fnrlvfachkennung,
text(altesfach,fachlaenge)+bszeile(izeile).kennung).setzeneuewerteindbpuffer:
putwert(fnrlvsj,gewschulj);putwert(fnrlvhj,gewhalbj);putwert(fnrlvjgst,
bszeile(izeile).jgst);putwert(fnrlvfachkennung,neuekennung);putwert(fnrlvart,
standardmaskenfeld(prueffnr+2));putwert(fnrlvklgrp1,standardmaskenfeld(
prueffnr+3));putwert(fnrlvklgrp2,standardmaskenfeld(prueffnr+4));putwert(
fnrlvklgrp3,standardmaskenfeld(prueffnr+5));putwert(fnrlvklgrp4,
standardmaskenfeld(prueffnr+6));putwert(fnrlvwochenstd,standardmaskenfeld(
prueffnr+7)).setzenichtsichtbarewerteindbpuffer:putwert(fnrlvkopplung,
neuekopplung);putwert(fnrlvparaphe,"");putwert(fnrlvraumgrp1,"");putwert(
fnrlvraumgrp2,"").neuekennung:text(prueffach,fachlaenge)+compress(
standardmaskenfeld(prueffnr+1)).neuekopplung:textzweistellig(int(bszeile(
izeile).jgst))+neuekennung.END PROC datenspeicherungdurchfuehren;PROC 
evtlkurswahldatenbeimbearbeitenaktualisieren:IF intwert(fnrlvjgst)>jgst10
THEN IF aktuelleshalbjahrzubearbeitenOR gewhalbj=zweiteshalbjahrTHEN 
kurswahlserverlvaktualisieren(wert(fnrlvjgst),wert(fnrlvjgst),gewhalbj)ELSE 
kurswahlserverlvaktualisieren(text(intwert(fnrlvjgst)-1),wert(fnrlvjgst),
gewhalbj)FI FI END PROC evtlkurswahldatenbeimbearbeitenaktualisieren;PROC 
aenderungszeileanzeigen:infeld((izeile-1)*felderprozeile+ersteseingabefeld)
END PROC aenderungszeileanzeigen;PROC lehrveranstaltungenzeileeinfuegen(BOOL 
CONST zeilerein):INT VAR erstefnr;IF zeilereinTHEN zeileeinfuegenELSE 
zeileloeschenFI ;return(1).zeileeinfuegen:aktzeile:=bearbeitungszeilezufeld(
infeld);IF aktzeile=zeilenanzahlTHEN standardmeldung(
meldnrletztezeilenichteinfuegen,"");LEAVE zeileeinfuegenFI ;IF bszeile(
zeilenanzahl).fach<>""THEN merkeverdraengtensatzalsnachfolgesatz;
anzahlgezeigtezeilen:=zeilenanzahlFI ;FOR izeileFROM zeilenanzahl-1DOWNTO 
aktzeile+1REP zeileiminternenpufferverschieben;
wertederzeileaufdembildschirmverschiebenPER ;izeile:=aktzeile+1;
leerzeileschreiben;jgstineingefuegterzeilevermerken;neuezeilenausgeben.
merkeverdraengtensatzalsnachfolgesatz:nfschulj:=gewschulj;nfhalbj:=gewhalbj;
nfjgst:=bszeile(zeilenanzahl).jgst;nffachkennung:=text(bszeile(zeilenanzahl).
fach,fachlaenge)+bszeile(zeilenanzahl).kennung.
zeileiminternenpufferverschieben:bszeile(izeile+1).jgst:=bszeile(izeile).jgst
;bszeile(izeile+1).fach:=bszeile(izeile).fach;bszeile(izeile+1).kennung:=
bszeile(izeile).kennung;bszeile(izeile+1).kopplung:=bszeile(izeile).kopplung;
bszeile(izeile+1).art:=bszeile(izeile).art;bszeile(izeile+1).klasse1:=bszeile
(izeile).klasse1;bszeile(izeile+1).klasse2:=bszeile(izeile).klasse2;bszeile(
izeile+1).klasse3:=bszeile(izeile).klasse3;bszeile(izeile+1).klasse4:=bszeile
(izeile).klasse4;bszeile(izeile+1).wstd:=bszeile(izeile).wstd;.
wertederzeileaufdembildschirmverschieben:FOR ifnrFROM erstesfeldderzeileUPTO 
letztesfeldderzeileREP standardmaskenfeld(standardmaskenfeld(ifnr),ifnr+
felderprozeile)PER .erstesfeldderzeile:(izeile-1)*felderprozeile+
erstestabellenfeld.letztesfeldderzeile:erstesfeldderzeile+felderprozeile-1.
jgstineingefuegterzeilevermerken:bszeile(izeile).jgst:=bszeile(aktzeile).jgst
;bszeile(izeile).fach:="";bszeile(izeile).kennung:="";bszeile(izeile).
kopplung:="";bszeile(izeile).art:="";bszeile(izeile).klasse1:="";bszeile(
izeile).klasse2:="";bszeile(izeile).klasse3:="";bszeile(izeile).klasse4:="";
bszeile(izeile).wstd:="";standardmaskenfeld(textzweistellig(int(bszeile(
izeile).jgst)),erstefnr);.zeileloeschen:izeile:=bearbeitungszeilezufeld(
infeld);leerzeileschreiben;neuezeilenausgeben.leerzeileschreiben:erstefnr:=
erstesfeldderzeile;standardmaskenfeld("  ",erstefnr);FOR ifnrFROM erstefnr+1
UPTO letztesfeldderzeileREP standardmaskenfeld("",ifnr)PER .
neuezeilenausgeben:infeld(erstefnr);standardfelderausgeben;infeld(erstefnr+1)
.END PROC lehrveranstaltungenzeileeinfuegen;INT PROC bearbeitungszeilezufeld(
INT CONST feldnr):((feldnr-erstestabellenfeld)DIV felderprozeile)+1END PROC 
bearbeitungszeilezufeld;PROC eingangsbehandlung(INT CONST plausiart):LET 
uebernehmen=1,bearbeiten=2;BOOL VAR ok;reinitparsing;eingangsmaskenfehler:=
FALSE ;ankreuzfelderpruefen;IF mehralseineauswahlangekreuztTHEN 
standardmeldung(meldnrungueltigeauswahl,"");pruefstatus:=fnrbearbeiten;
eingangsmaskenfehler:=TRUE ;LEAVE eingangsbehandlungFI ;IF 
uebernehmenpruefungTHEN IF ankreuz1THEN ankreuzfehler(fnrbearbeiten);LEAVE 
eingangsbehandlungFI ELIF bearbeitenpruefungTHEN IF ankreuz2THEN 
ankreuzfehler(fnrfachanguebernehmen);LEAVE eingangsbehandlungELIF ankreuz3
THEN ankreuzfehler(fnrlehrveruebernehmen);LEAVE eingangsbehandlungFI FI ;IF 
bearbeitenpruefungTHEN standardpruefe(5,fnrbearbaktsj,fnrbearbgeplsj,0,"",
pruefstatus);IF pruefstatus<>0THEN eingangsmaskenfehler:=TRUE ;LEAVE 
eingangsbehandlungELSE jgstpruefung(fnrbearbjgst,ok);IF NOT okTHEN jgstfehler
(fnrbearbjgst);LEAVE eingangsbehandlungFI ;vgljgst:=standardmaskenfeld(
fnrbearbjgst);vglfach:=compress(standardmaskenfeld(fnrbearbfach))FI ELIF 
ankreuz2THEN standardpruefe(5,fnrfachangaktsj,fnrfachanggeplsj,0,"",
pruefstatus);IF pruefstatus<>0THEN eingangsmaskenfehler:=TRUE ;LEAVE 
eingangsbehandlungELSE jgstpruefung(fnrfachangjgst,ok);IF NOT okTHEN 
jgstfehler(fnrfachangjgst);LEAVE eingangsbehandlungELSE vgljgst:=
standardmaskenfeld(fnrfachangjgst)FI ;FI ELSE jgstpruefung(fnrlehrverjgst,ok)
;IF NOT okTHEN jgstfehler(fnrlehrverjgst);LEAVE eingangsbehandlungELSE 
vgljgst:=standardmaskenfeld(fnrlehrverjgst)FI ;FI ;IF ankreuz1THEN FOR ifnr
FROM fnrfachanguebernehmenUPTO fnrlehrverjgstREP IF standardmaskenfeld(ifnr)
<>""THEN eintragfehler(ifnr);LEAVE eingangsbehandlungFI PER ELIF ankreuz2
THEN FOR ifnrFROM fnrbearbeitenUPTO fnrbearbfachREP IF standardmaskenfeld(
ifnr)<>""THEN eintragfehler(ifnr);LEAVE eingangsbehandlungFI PER ;IF 
standardmaskenfeld(fnrlehrverjgst)<>""THEN eintragfehler(fnrlehrverjgst);
LEAVE eingangsbehandlungFI ELSE FOR ifnrFROM fnrbearbeitenUPTO fnrfachangjgst
REP IF standardmaskenfeld(ifnr)<>""THEN eintragfehler(ifnr);LEAVE 
eingangsbehandlungFI PER FI .ankreuzfelderpruefen:INT VAR summe:=0;IF 
ankreuz1THEN summeINCR 1FI ;IF ankreuz2THEN summeINCR 1FI ;IF ankreuz3THEN 
summeINCR 1FI .mehralseineauswahlangekreuzt:summe<>1.ankreuz1:
standardmaskenfeld(fnrbearbeiten)<>"".ankreuz2:standardmaskenfeld(
fnrfachanguebernehmen)<>"".ankreuz3:standardmaskenfeld(fnrlehrveruebernehmen)
<>"".uebernehmenpruefung:plausiart=uebernehmen.bearbeitenpruefung:plausiart=
bearbeiten.END PROC eingangsbehandlung;PROC ankreuzfehler(INT CONST 
fehlerfeld):pruefstatus:=fehlerfeld;eingangsmaskenfehler:=TRUE ;
standardmeldung(meldnrfalschetastezuankreuz,"").END PROC ankreuzfehler;PROC 
jgstpruefung(INT CONST fnrpruefjgst,BOOL VAR ok):IF standardmaskenfeld(
fnrpruefjgst)=""THEN bearbeitungallerjgst:=TRUE ;ok:=TRUE ;ELSE 
bearbeitungallerjgst:=FALSE ;gewjgst:=int(standardmaskenfeld(fnrpruefjgst));
ok:=lastconversionokCAND (gewjgst=jgst0OR (gewjgst>=jgst5AND gewjgst<=jgst13)
)FI END PROC jgstpruefung;PROC jgstfehler(INT CONST fehlerfeld):pruefstatus:=
fehlerfeld;eingangsmaskenfehler:=TRUE ;standardmeldung(meldnrfehlerhaftejgst,
"").END PROC jgstfehler;PROC eintragfehler(INT CONST fehlerfeld):pruefstatus
:=fehlerfeld;eingangsmaskenfehler:=TRUE ;standardmeldung(
meldnrfalscheausfuellung,"").END PROC eintragfehler;PROC plausipruefung:
pruefstatus:=0;facheintraegepruefen;IF eingabefehlerTHEN LEAVE plausipruefung
FI ;datenkonsistenzpruefen;IF eingabefehlerTHEN LEAVE plausipruefungFI .
eingabefehler:pruefstatus<>0.END PROC plausipruefung;PROC 
facheintraegepruefen:anzahleingegebenezeilen:=0;geprueftefaecher:=trenner;IF 
gueltigeschuelergruppen=""THEN holegueltigeschuelergruppenFI ;IF 
gueltigeklassengruppen=""THEN holegueltigeklassengruppenFI ;IF gueltigelvart=
""THEN holegueltigelvartenFI ;FOR izeileFROM 1UPTO zeilenanzahlREP IF 
fachfehlerTHEN LEAVE facheintraegepruefenFI PER .fachfehler:INT VAR prueffnr
:=fachfnrin(izeile);TEXT VAR prueffach:=standardmaskenfeld(prueffnr);IF 
prueffachleerTHEN IF eintraginfolgefelderderzeileTHEN pruefstatus:=prueffnr;
standardmeldung(meldnrkeinfachzuanderenangaben,"");TRUE ELSE FALSE FI ELIF 
prueffachungueltigTHEN pruefstatus:=prueffnr;standardmeldung(
meldnrungueltigesfach,"");TRUE ELIF length(standardmaskenfeld(prueffnr+
incrfuerkennung))>kennunglaengeTHEN pruefstatus:=prueffnr+incrfuerkennung;
standardmeldung(meldnrkennungzulang,"");TRUE ELIF compress(standardmaskenfeld
(prueffnr+incrfuerkennung))=""THEN pruefstatus:=prueffnr+incrfuerkennung;
standardmeldung(meldnrbitteangabegenauer,"");TRUE ELIF lvartungueltigTHEN 
TRUE ELIF klassengruppenungueltigTHEN TRUE ELIF wochenstundenungueltigTHEN 
pruefstatus:=prueffnr+incrfuerwstd;TRUE ELSE anzahleingegebenezeilenINCR 1;
FALSE FI .prueffachleer:prueffach="".eintraginfolgefelderderzeile:
standardmaskenfeld(prueffnr+1)<>""COR standardmaskenfeld(prueffnr+2)<>""COR 
standardmaskenfeld(prueffnr+3)<>""COR standardmaskenfeld(prueffnr+4)<>""COR 
standardmaskenfeld(prueffnr+5)<>""COR standardmaskenfeld(prueffnr+6)<>""COR 
standardmaskenfeld(prueffnr+7)<>"".prueffachungueltig:IF 
fachkuerzelschongeprueftTHEN FALSE ELIF fachimfachbestandTHEN 
geprueftefaecherCAT prueffach;geprueftefaecherCAT trenner;FALSE ELSE TRUE FI 
.fachkuerzelschongeprueft:pos(geprueftefaecher,trenner+prueffach+trenner)>0.
fachimfachbestand:putwert(fnrffach,prueffach);search(dnrfaecher,TRUE );
dbstatus=0.lvartungueltig:IF pos(gueltigelvart,trenner+standardmaskenfeld(
prueffnr+incrfuerlvart)+trenner)=0THEN standardmeldung(meldnrungueltigeart,""
);pruefstatus:=prueffnr+incrfuerlvart;TRUE ELSE FALSE FI .
klassengruppenungueltig:pruefjgst:=int(bszeile(izeile).jgst);FOR ifnrFROM 
prueffnr+incrfuerklassengranfangUPTO prueffnr+incrfuerklassengrendeREP 
pruefklasse:=standardmaskenfeld(ifnr);IF klassengruppeungueltigTHEN 
standardmeldung(meldnrungueltigeklassengruppe,"");pruefstatus:=ifnr;LEAVE 
klassengruppenungueltigWITH TRUE FI PER ;FALSE .klassengruppeungueltig:IF 
pruefklasse=""THEN FALSE ELIF pruefklasseistschuelergruppeTHEN FALSE ELIF 
pruefklasseistklassengruppeTHEN FALSE ELIF pruefklasseistgueltigejgstTHEN 
FALSE ELSE TRUE FI .pruefklasseistschuelergruppe:pos(gueltigeschuelergruppen,
trenner+bszeile(izeile).jgst+pruefklasse+trenner)>0.
pruefklasseistklassengruppe:IF pos(gueltigeklassengruppen,trenner+pruefklasse
+trenner)=0THEN FALSE ELIF pruefjgst=jgst0THEN TRUE ELSE putwert(
fnrkgklassengrp,pruefklasse);search(dnrklassengruppen,TRUE );IF dbstatus<>0
THEN FALSE ELSE sugruppen:=wert(fnrkgschuelergrp);laengesugruppen:=length(
sugruppen);possugruppe:=1;WHILE possugruppe<laengesugruppenREP sugruppejgst:=
subtext(sugruppen,possugruppe,possugruppe+1);IF int(sugruppejgst)<>pruefjgst
THEN LEAVE pruefklasseistklassengruppeWITH FALSE FI ;possugruppeINCR 
laengeeinersugruppePER ;TRUE FI FI .pruefklasseistgueltigejgst:gueltigejgst:=
FALSE ;pruefbez:=int(pruefklasse);IF lastconversionokTHEN IF pruefbez>=jgst5
CAND pruefbez<=jgst13THEN IF pruefjgst=jgst0OR pruefjgst=pruefbezTHEN 
gueltigejgst:=TRUE FI FI FI ;gueltigejgst.wochenstundenungueltig:
standardpruefe(1,prueffnr+incrfuerwstd,0,0,"",pruefstatus);IF pruefstatus=0
THEN standardpruefe(2,prueffnr+incrfuerwstd,0,0,"",pruefstatus);pruefstatus<>
0ELSE TRUE FI .END PROC facheintraegepruefen;INT PROC fachfnrin(INT CONST 
zeilennr):(zeilennr-1)*felderprozeile+ersteseingabefeldEND PROC fachfnrin;
PROC datenkonsistenzpruefen:FOR izeileFROM 1UPTO zeilenanzahlREP IF 
zeileungueltigTHEN pruefstatus:=prueffnr;standardmeldung(
meldnrlehrveranstaltunggibtsschon,"");LEAVE datenkonsistenzpruefenFI PER .
zeileungueltig:IF leerzeileTHEN FALSE ELIF 
zeileistimschluesselunveraendertgebliebenTHEN FALSE ELSE 
ergebnisderpruefungzeileschongespeichertFI .leerzeile:INT VAR prueffnr:=
fachfnrin(izeile);TEXT VAR prueffach:=standardmaskenfeld(prueffnr);prueffach=
"".zeileistimschluesselunveraendertgeblieben:standardmaskenfeld(prueffnr)=
bszeile(izeile).fachCAND compress(standardmaskenfeld(prueffnr+1))=bszeile(
izeile).kennung.ergebnisderpruefungzeileschongespeichert:
neuewerteindbpuffersetzen;search(dnrlehrveranstaltungen,TRUE );dbstatus=0.
neuewerteindbpuffersetzen:putwert(fnrlvsj,gewschulj);putwert(fnrlvhj,gewhalbj
);putwert(fnrlvjgst,bszeile(izeile).jgst);putwert(fnrlvfachkennung,text(
prueffach,fachlaenge)+compress(standardmaskenfeld(prueffnr+1))).END PROC 
datenkonsistenzpruefen;PROC schulhalbjahrbestimmen:IF akthalbj=""THEN 
akthalbj:=schulkenndatum(texthalbj);aktschulj:=schulkenndatum(textschulj)FI ;
IF standardmaskenfeld(fnrlehrveruebernehmen)<>""THEN 
aktuelleshalbjahrzubearbeiten:=FALSE ELSE aktuelleshalbjahrzubearbeiten:=
standardmaskenfeld(fnrbearbaktsj)<>""OR standardmaskenfeld(fnrfachangaktsj)<>
""FI ;gewhalbj:=akthalbj;gewschulj:=aktschulj;IF NOT 
aktuelleshalbjahrzubearbeitenTHEN geplanteshjundsjberechnen(gewhalbj,
gewschulj)FI END PROC schulhalbjahrbestimmen;PROC holegueltigeschuelergruppen
:gueltigeschuelergruppen:=trenner;inittupel(dnraktschuelergruppen);
statleseschleife(dnraktschuelergruppen,gewschulj,gewhalbj,fnrsgrpsj,fnrsgrphj
,PROC schuelergruppelesen)END PROC holegueltigeschuelergruppen;PROC 
schuelergruppelesen(BOOL VAR b):IF dbstatus<>0OR wert(fnrsgrpsj)<>gewschulj
OR wert(fnrsgrphj)<>gewhalbjTHEN b:=TRUE ELSE gueltigeschuelergruppenCAT wert
(fnrsgrpjgst);gueltigeschuelergruppenCAT wert(fnrsgrpkennung);
gueltigeschuelergruppenCAT trennerFI END PROC schuelergruppelesen;PROC 
holegueltigeklassengruppen:gueltigeklassengruppen:=trenner;inittupel(
dnrklassengruppen);statleseschleife(dnrklassengruppen,"","",fnrkgklassengrp,
fnrkgklassengrp,PROC klassengruppelesen)END PROC holegueltigeklassengruppen;
PROC klassengruppelesen(BOOL VAR b):IF dbstatus<>0THEN b:=TRUE ELSE 
gueltigeklassengruppenCAT wert(fnrkgklassengrp);gueltigeklassengruppenCAT 
trennerFI END PROC klassengruppelesen;PROC holegueltigelvarten:gueltigelvart
:=trenner;inittupel(dnrschluessel);statleseschleife(dnrschluessel,artbestand,
"",fnrschlsachgebiet,fnrschlschluessel,PROC holelvart)END PROC 
holegueltigelvarten;PROC holelvart(BOOL VAR b):IF wert(fnrschlsachgebiet)>
artbestandCOR dbstatus<>0THEN b:=TRUE ELSE gueltigelvartCAT wert(
fnrschlschluessel);gueltigelvartCAT trennerFI END PROC holelvart;TEXT PROC 
textzweistellig(INT CONST i):IF i<10THEN "0"+text(i)ELSE text(i)FI END PROC 
textzweistellig;PROC initfelderdeseingangsbildschirms:INT VAR i;FOR iFROM 1
UPTO feldanzmaskeeingangREP feldbs1(i):=""PER END PROC 
initfelderdeseingangsbildschirms;PROC wertedeseingangsbildschirmsmerken:INT 
VAR i;letztecursorfnr:=infeld;FOR iFROM 1UPTO feldanzmaskeeingangREP feldbs1(
i):=standardmaskenfeld(i)PER END PROC wertedeseingangsbildschirmsmerken;PROC 
wertedeseingangsbildschirmsholen:INT VAR i;FOR iFROM 1UPTO 
feldanzmaskeeingangREP standardmaskenfeld(feldbs1(i),i)PER END PROC 
wertedeseingangsbildschirmsholen;PROC initbszeilepuffer:FOR izeileFROM 1UPTO 
zeilenanzahlREP bszeile(izeile).jgst:="";bszeile(izeile).fach:="";bszeile(
izeile).kennung:="";bszeile(izeile).art:="";bszeile(izeile).klasse1:="";
bszeile(izeile).klasse2:="";bszeile(izeile).klasse3:="";bszeile(izeile).
klasse4:="";bszeile(izeile).wstd:="";PER END PROC initbszeilepuffer;END 
PACKET lehrveranstaltungenbenennen