summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listenweise klassenbildung
blob: c56301910d9b73c40387bee5b4de98edbb2bff29 (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
PACKET listenweiseklassenbildungDEFINES bearbeitungklassenbildung,
klassenbildungnichtspeichern,klassenbildungspeichern:LET meldbestleer=59,
meldnichtspeichern=63,meldwarten=69,meldspeicherung=132,meldspeicherfehler=
131,meldplausi=57,meldfalscheauswahl=56,meldexistiertnicht=134,
meldzuggewechselt=135,meldfalscheshj=78;LET meldtrenner="#",meldkznorm="+";
LET fnrneuan5=2,fnrneuan11=3,fnrneuansonst=4,fnrjgst=5,fnrtutor=6,
fnrnurnichtvers=7,fnrgeplhj=8,fnrakthj=9;LET fnrherk=2,fnralteklasse=3,
fnrname=4,fnrneueklasse=5;LET tofather=1,tograndfather=2;LET niltext="",blank
=" ",namenstrenner=", ";LET pruefartalternative=5,pruefartgrenzen=3,jgst5=5,
jgst13=13,null=0,freigabeincr=2;LET schuljahrkey="Schuljahr",schulhalbjahrkey
="Schulhalbjahr",best5="n05",best11="n11",bestsonst="nso",bestlaufsj="ls";
LET jgst05="05",jgst11="11",maxjgst="13",leerejgst="  ";LET kzwiederholer="w"
;LET standardanfang=1,standardeinstieg=6;LET ersteskommendeshj=1,
geplanteszweiteshj=2,aktuelleshj=3;LET maxschueler=15,erstesfeld=2,
felderprozeile=5,schuelerproseite=16,anzkenndaten=3;LET gwherk=1,gwalteklasse
=2,gwneuejgst=3;LET logtextbeginn="Anw. 1.4.1 Klassenbildung ",logtextneu5=
"Neu 5",logtextneu11="Neu 11",logtextneuso="Neu sonstige",logtextwiederhol=
", Wiederholer",logtextfuer="für ",logtextakthj="aktuelles Halbjahr ";BOOL 
VAR nochwelcheda,klassenbehandlung,nurnichtversetzte,logakthalbjahr;LET 
allespruefen=1,einejgstpruefen=2,eineklassepruefen=3,
einejgstwiederholerpruefen=4,eineklassewiederholerpruefen=5;INT VAR 
waspruefen:=0;INT VAR laengeherk,laengealteklasse,laengename,laengeneueklasse
,bestandindex,halbjahresindex,indexbestand,schuelerzahl,aktuellesfeld,
wiederholerbestand;ROW schuelerproseiteROW anzkenndatenTEXT VAR kenndatum;#
ROW schuelerproseiteTEXT VAR name;ROW schuelerproseiteTEXT VAR rufname;ROW 
schuelerproseiteTEXT VAR gebdat;##17.07.87dr#ROW schuelerproseiteTEXT VAR 
zugtutor;TEXT VAR altejgst,neuejgst,benoetigtevergljgst,vergleichsjgst,
vergleichszug,sicherungstupel,klassenbildungsbestand,aktschuljahr,
aktschulhalbjahr;PROC bearbeitungklassenbildung:reinitparsing;
eingangsbildschirmpruefen;IF eingangsbildschirmokTHEN 
initialisierungenvornehmen;naechsteportionlesen;IF keinemehrdaTHEN 
bestandleermelden;enter(tofather)ELSE standardnprocFI ELSE 
eingangsmaskenfehler;return(tofather)FI .eingangsbildschirmpruefen:
ankreuzfelderpruefen;IF eingangsbildschirmokTHEN jgstzugpruefen;IF 
eingangsbildschirmokTHEN halbjahrmitankreuzungvergleichenFI FI .
ankreuzfelderpruefen:INT VAR pruefstatus;standardpruefe(pruefartalternative,
fnrneuan5,fnrjgst,null,niltext,pruefstatus);.jgstzugpruefen:IF 
standardmaskenfeld(fnrjgst)<>niltextTHEN standardpruefe(pruefartgrenzen,
fnrjgst,jgst5,jgst13,niltext,pruefstatus)FI ;IF eingangsbildschirmokTHEN 
nurnichtversetzte:=standardmaskenfeld(fnrnurnichtvers)<>niltext;
bestimmebestandindex;IF nurnichtversetzteCAND (bestandindex<fnrjgst)THEN 
standardmeldung(meldfalscheauswahl,niltext);pruefstatus:=fnrnurnichtversFI 
FI .bestimmebestandindex:FOR bestandindexFROM fnrneuan5UPTO fnrjgstREP IF 
standardmaskenfeld(bestandindex)<>niltextTHEN LEAVE bestimmebestandindexFI 
PER .halbjahrmitankreuzungvergleichen:aktschulhalbjahr:=schulkenndatum(
schulhalbjahrkey);aktschuljahr:=schulkenndatum(schuljahrkey);IF 
aktschulhalbjahr="2"THEN IF standardmaskenfeld(fnrgeplhj)<>""THEN 
standardmeldung(meldfalscheshj,aktschulhalbjahr+meldkznorm);pruefstatus:=
fnrgeplhjFI ELIF aktschulhalbjahr="1"THEN IF standardmaskenfeld(fnrgeplhj)=""
CAND standardmaskenfeld(fnrakthj)=""THEN standardmeldung(meldfalscheshj,
aktschulhalbjahr+meldkznorm);pruefstatus:=fnrgeplhjFI FI .
eingangsbildschirmok:pruefstatus=0.initialisierungenvornehmen:
bestandunddbmaskesetzen;halbjahrsetzen;nichtverspruefen;
plausipruefungvorbereiten;standardstartproc(maske(vergleichsknoten));
laengenfestlegen;IF nurnichtversetzteTHEN startebildschirmblock(
wiederholerbestand,maxschueler)ELSE startebildschirmblock(indexbestand,
maxschueler)FI .bestandunddbmaskesetzen:standardmeldung(meldwarten,niltext);
klassenbehandlung:=FALSE ;SELECT bestandindexOF CASE fnrneuan5:neuan5setzen
CASE fnrneuan11:neuan11setzenCASE fnrneuansonst:neuansonstsetzenOTHERWISE 
jgstoderzugsetzenEND SELECT ;pruefebestand.neuan5setzen:vergleichsjgst:=
jgst05;benoetigtevergljgst:=vergleichsjgst;klassenbildungsbestand:=best5;
indexbestand:=ixsustatschulkenn;waspruefen:=allespruefen;infeld(fnrneuan5).
neuan11setzen:vergleichsjgst:=jgst11;benoetigtevergljgst:=vergleichsjgst;
klassenbildungsbestand:=best11;indexbestand:=ixsustatschulkenn;waspruefen:=
allespruefen;infeld(fnrneuan11).neuansonstsetzen:vergleichsjgst:=niltext;
benoetigtevergljgst:=vergleichsjgst;klassenbildungsbestand:=bestsonst;
indexbestand:=ixsustatschulkenn;waspruefen:=allespruefen;infeld(fnrneuansonst
).jgstoderzugsetzen:TEXT CONST jgst:=jgstaufber(standardmaskenfeld(fnrjgst));
vergleichsjgst:=jgst;klassenbildungsbestand:=bestlaufsj;IF eineklasseTHEN 
setzeklasseELSE setzejgstFI ;IF NOT ((akthalbjahrCOR geplhalbjahr)COR 
nurnichtversetzte)THEN neuejgst:=jgstaufber(text(int(altejgst)+1));
benoetigtevergljgst:=neuejgstELSE neuejgst:=altejgst;benoetigtevergljgst:=
altejgstFI .eineklasse:TEXT CONST zug:=standardmaskenfeld(fnrtutor);
vergleichszug:=zug;klassenbehandlung:=zug<>niltext;klassenbehandlung.
setzeklasse:IF nurnichtversetzteTHEN wiederholerbestand:=ixhjdsjhjverjgstkenn
;waspruefen:=eineklassewiederholerpruefenELSE indexbestand:=ixsustatjgstzug;
waspruefen:=eineklassepruefen;FI ;altejgst:=jgst;infeld(fnrtutor).setzejgst:
IF nurnichtversetzteTHEN IF NOT klassenbehandlungTHEN #???index#
wiederholerbestand:=ixhjdsjhjverjgst;#wiederholer#ELSE wiederholerbestand:=
ixhjdsjhjverjgstkenn;FI ;waspruefen:=einejgstwiederholerpruefenELSE IF NOT 
klassenbehandlungTHEN indexbestand:=ixsustatjgst;ELSE indexbestand:=
ixsustatjgstzug;FI ;waspruefen:=einejgstpruefen;FI ;altejgst:=jgst;infeld(
fnrjgst).pruefebestand:reinitparsing;IF nurnichtversetzteTHEN inittupel(
dnrhalbjahresdaten);schluesselfelderinhalbjahresdatenbelegen;search(
wiederholerbestand,FALSE );ELSE inittupel(dnrschueler);
schluesselfelderinschuelerbelegen;search(indexbestand,FALSE );FI ;IF 
bestandnichtvorhandenTHEN bestandleermelden;return(tofather);LEAVE 
bearbeitungklassenbildungELSE nochwelcheda:=TRUE FI .
schluesselfelderinhalbjahresdatenbelegen:putwert(fnrhjdversetzung,
kzwiederholer);putwert(fnrhjdsj,aktschuljahr);putwert(fnrhjdhj,
aktschulhalbjahr);putwert(fnrhjdjgst,vergleichsjgst);putwert(fnrhjdkennung,
vergleichszug);.schluesselfelderinschuelerbelegen:putwert(fnrsustatuss,
klassenbildungsbestand);IF indexbestand=ixsustatjgstzugOR indexbestand=
ixsustatjgstTHEN putwert(fnrsusgrpjgst,vergleichsjgst);putwert(
fnrsusgrpzugtut,vergleichszug)FI .bestandnichtvorhanden:dbstatus<>okOR (NOT 
nurnichtversetzteCAND NOT pruefungspeziell(waspruefen))OR (nurnichtversetzte
CAND NOT pruefungspeziell(waspruefen)).halbjahrsetzen:logakthalbjahr:=FALSE ;
IF geplhalbjahrTHEN geplhalbjahrsetzenELIF akthalbjahrTHEN logakthalbjahr:=
TRUE ;akthalbjahrsetzenELSE ersteshalbjahrsetzenFI .geplhalbjahr:INT VAR 
angekreuztesfeld;standardmaskenfeld(fnrgeplhj)<>niltext.geplhalbjahrsetzen:
IF akthalbjahrCOR neuanmeldungTHEN angekreuztesfeld:=fnrgeplhj;falscheauswahl
ELSE halbjahresindex:=geplanteszweiteshjFI .akthalbjahr:standardmaskenfeld(
fnrakthj)<>niltext.akthalbjahrsetzen:IF neuanmeldungTHEN angekreuztesfeld:=
fnrakthj;falscheauswahlELSE halbjahresindex:=aktuelleshjFI .
ersteshalbjahrsetzen:halbjahresindex:=ersteskommendeshj.neuanmeldung:
bestandindex<=fnrneuansonst.falscheauswahl:standardmeldung(meldfalscheauswahl
,niltext);infeld(angekreuztesfeld);return(tofather);LEAVE 
bearbeitungklassenbildung.nichtverspruefen:IF (nurnichtversetzteCAND (
halbjahresindex<>ersteskommendeshj))COR (((NOT nurnichtversetzte)CAND (jgst=
maxjgst))CAND (halbjahresindex=ersteskommendeshj))THEN angekreuztesfeld:=
fnrnurnichtvers;falscheauswahlELIF nurnichtversetzteTHEN halbjahresindex:=
ersteskommendeshjFI .plausipruefungvorbereiten:#holevergleichssg(
benoetigtevergljgst,(halbjahresindex=aktuelleshj)COR nurnichtversetzte)dr13.
11.87#holevergleichssg(benoetigtevergljgst,halbjahresindex=aktuelleshj).
laengenfestlegen:laengeherk:=standardfeldlaenge(fnrherk);laengealteklasse:=
standardfeldlaenge(fnralteklasse);laengename:=standardfeldlaenge(fnrname);
laengeneueklasse:=standardfeldlaenge(fnrneueklasse).naechsteportionlesen:
blocklesenundausgeben.keinemehrda:NOT nochwelcheda.bestandleermelden:
standardmeldung(meldbestleer,niltext).eingangsmaskenfehler:infeld(pruefstatus
).END PROC bearbeitungklassenbildung;PROC klassenbildungnichtspeichern:
nichtspeichernmelden;startkeyssetzen;neuerblock.nichtspeichernmelden:
standardmeldung(meldnichtspeichern,niltext);pause(10).startkeyssetzen:
restoretupel(dnrschueler,sicherungstupel);changeindex.END PROC 
klassenbildungnichtspeichern;PROC klassenbildungspeichern:
bestimmeaenderungsart;pruefeplausibilitaet;IF dateninordnungTHEN 
speicherungdurchfuehren;startkeyssetzen;neuerblockELSE eingabefehler;return(
tofather)FI .bestimmeaenderungsart:BOOL VAR normalfall:=NOT ((bestandindex>
fnrneuansonst)CAND (halbjahresindex=aktuelleshj));.pruefeplausibilitaet:BOOL 
VAR dateninordnung:=TRUE ;INT VAR aktfeld:=1;TEXT VAR bezugsjgst:="",
gelesenejgst;standardmeldung(meldplausi,niltext);FOR suindFROM 1UPTO 
schuelerzahlREP pruefezeile;IF NOT dateninordnungTHEN LEAVE 
pruefeplausibilitaetFI ;PER .pruefezeile:TEXT VAR aktuellerzug;TEXT VAR 
aktuelleschuelergruppe;aktfeldINCR felderprozeile;aktuellerzug:=
standardmaskenfeld(aktfeld);gelesenejgst:=standardmaskenfeld(aktfeld-1);IF 
gelesenejgst<>leerejgstTHEN bezugsjgst:=gelesenejgst;FI ;
aktuelleschuelergruppe:=bezugsjgst+aktuellerzug;IF normalfallTHEN 
dateninordnung:=(aktuellerzug=niltext)COR istzulaessigesg(
aktuelleschuelergruppe)ELSE dateninordnung:=istzulaessigesg(
aktuelleschuelergruppe)CAND (aktuellerzug<>niltext)FI .
speicherungdurchfuehren:vorbereiten;logeintragvornehmen;aendernschleife;
kurzwarten.logeintragvornehmen:TEXT VAR eintrag:=logtextbeginn;IF 
klassenbildungsbestand=best5THEN eintragCAT logtextfuer;eintragCAT 
logtextneu5ELIF klassenbildungsbestand=best11THEN eintragCAT logtextfuer;
eintragCAT logtextneu11ELIF klassenbildungsbestand=bestsonstTHEN eintragCAT 
logtextfuer;eintragCAT logtextneusoELIF klassenbildungsbestand=bestlaufsj
THEN IF logakthalbjahrTHEN eintragCAT logtextakthjFI ;eintragCAT logtextfuer;
eintragCAT vergleichsjgst;eintragCAT vergleichszug;IF nurnichtversetzteTHEN 
eintragCAT logtextwiederholFI ;FI ;logeintrag(eintrag).kurzwarten:pause(10).
vorbereiten:INT VAR aufsatzpunkt:=null;.aendernschleife:INT VAR suind;INT 
VAR zahlderaenderungen:=null;FOR suindFROM 1UPTO schuelerzahlREP 
behandleschuelersatzPER .behandleschuelersatz:IF datenveraendertTHEN 
fuehreaenderungaus;meldevollzugELSE merkenalsaufsatzpunktFI .datenveraendert:
zugtutor(suind)<>standardmaskenfeld((suind*felderprozeile)+1).
merkenalsaufsatzpunkt:aufsatzpunkt:=suind.fuehreaenderungaus:lesenvorbereiten
;lesen;IF normalfallTHEN zurueckschreibenELSE aenderneinheitFI .
lesenvorbereiten:putwert(fnrsufamnames,kenndatum[suind][1]);putwert(
fnrsurufnames,kenndatum[suind][2]);putwert(fnrsugebdatums,datumskonversion(
kenndatum[suind][3]));zahlderaenderungenINCR 1;.lesen:search(dnrschueler,
TRUE ).zurueckschreiben:IF dbstatus=0THEN putwert(fnrsuneuerzugtut,
standardmaskenfeld((suind*felderprozeile)+1));replace(dnrschueler,gettid)FI .
aenderneinheit:TEXT VAR alterzug:=zugtutor(suind);TEXT VAR neuerzug:=
standardmaskenfeld((suind*felderprozeile)+1);TEXT VAR geliefertejgst:=
jgstaufber(wert(fnrsusgrpjgst));TEXT VAR gelieferterzug:=wert(fnrsusgrpzugtut
);IF dbstatus=0CAND geliefertejgst=altejgstCAND gelieferterzug=alterzugTHEN 
TEXT VAR schuelertid:=gettid;aenderntransaktion;ELSE transaktionsfehlerFI .
aenderntransaktion:removeoutofindex(ixsustatjgstzug);#
aenderunginstatraumvorbereiten(FALSE );dr10.05.88
einenschuelerausstatraumentfernen;#IF wert(fnrsutidakthjd)<>niltextTHEN 
readtid(dnrhalbjahresdaten,wert(fnrsutidakthjd));putwert(fnrhjdkennung,
neuerzug);#update(dnrhalbjahresdaten);dr10.05.88#selupdate(dnrhalbjahresdaten
);putwert(fnrsutidakthjd,gettid)ELSE FI ;putwert(fnrsusgrpzugtut,neuerzug);
replace(dnrschueler,schuelertid);insertinindex(ixsustatjgstzug);#IF dbstatus
<>okTHEN putwert(fnrsusgrpzugtut,zugtutor[suind]);FI ;
einenschuelerinstatraumeinfuegen;dr10.05.88#.transaktionsfehler:
standardmeldung(meldzuggewechselt,niltext);return(tofather);infeld((suind*
felderprozeile)+1);LEAVE klassenbildungspeichern.meldevollzug:TEXT VAR 
meldungstext;INT VAR satzindex:=(suind*felderprozeile)-1;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 klassenbildungspeichernFI ;infeld(satzindex+2).
startkeyssetzen:IF (NOT klassenbehandlung)OR normalfallTHEN aufsatzpunkt:=
schuelerzahlFI ;IF aufsatzpunkt>nullTHEN restoretupel(dnrschueler,
sicherungstupel);changeindexFI .eingabefehler:standardmeldung(
meldexistiertnicht,standardmaskenfeld(aktfeld)+meldtrenner);infeld(aktfeld).
END PROC klassenbildungspeichern;PROC neuerblock:blocklesenundausgeben;IF 
nochwelchedaTHEN return(tofather)ELSE enter(tograndfather)FI .END PROC 
neuerblock;PROC blocklesenundausgeben:vorbereiten;initgruppenwechsel;SELECT 
bestandindexOF CASE fnrneuan5:neuan5lesenCASE fnrneuan11:neuan11lesenCASE 
fnrneuansonst:neuansonstlesenOTHERWISE jgstoderzuglesenEND SELECT ;
nachbereiten.vorbereiten:IF NOT nochwelchedaTHEN LEAVE blocklesenundausgeben
FI ;standardmeldung(meldwarten,niltext);schuelerzahl:=null;aktuellesfeld:=
erstesfeld.neuan5lesen:bildschirmblock(PROC neuan5zeigen,BOOL PROC (INT 
CONST )pruefungspeziell,waspruefen).neuan11lesen:bildschirmblock(PROC 
neuan11zeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).
neuansonstlesen:bildschirmblock(PROC neuansonstzeigen,BOOL PROC (INT CONST )
pruefungspeziell,waspruefen).jgstoderzuglesen:bildschirmblock(PROC 
jgstoderzugzeigen,BOOL PROC (INT CONST )pruefungspeziell,waspruefen).
nachbereiten:nochwelcheda:=(schuelerzahl>null);IF nochwelchedaTHEN savetupel(
dnrschueler,sicherungstupel);restlichezeilenloeschen;infeld(standardanfang);
standardfelderausgebenFI ;infeld(standardeinstieg).restlichezeilenloeschen:
INT VAR zeilenzaehler;INT VAR zeilenfeld:=(schuelerzahl*felderprozeile)+1;
FOR zeilenzaehlerFROM schuelerzahlUPTO maxschuelerREP loeschezeilePER .
loeschezeile:INT VAR zeilenincr;FOR zeilenincrFROM 1UPTO felderprozeileREP 
zeilenfeldINCR 1;standardmaskenfeld(standardfeldlaenge(zeilenfeld)*blank,
zeilenfeld)PER ;feldschutz(zeilenfeld).END PROC blocklesenundausgeben;PROC 
neuanzeigen(TEXT CONST jgst):schuelerzahlINCR 1;herkunftsschulezeigen;
alteklassezeigen;namezeigen;neueklassezeigen;neuerzugtutorzeigen.
neueklassezeigen:gruppenwechsel(jgst,gwneuejgst,laengeneueklasse,1,
aktuellesfeld).END PROC neuanzeigen;PROC namezeigen:namenretten;
standardmaskenfeld(text(schuelername+namenstrenner+schuelervorname,laengename
),aktuellesfeld);INT VAR eingabefeld:=aktuellesfeld+freigabeincr;
standardmaskenfeld(niltext,eingabefeld);feldfrei(eingabefeld);aktuellesfeld
INCR 1.namenretten:TEXT VAR schuelername,schuelervorname;schuelername:=wert(
fnrsufamnames);schuelervorname:=wert(fnrsurufnames);kenndatum[schuelerzahl][1
]:=schuelername;kenndatum[schuelerzahl][2]:=schuelervorname;kenndatum[
schuelerzahl][3]:=datumrekonversion(wert(fnrsugebdatums));.END PROC 
namezeigen;PROC herkunftsschulezeigen:gruppenwechsel(wert(fnrsuskennlschule),
gwherk,laengeherk,1,aktuellesfeld)END PROC herkunftsschulezeigen;PROC 
alteklassezeigen:gruppenwechsel(wert(fnrsuklasselschule),gwalteklasse,
laengealteklasse,1,aktuellesfeld)END PROC alteklassezeigen;PROC neuan5zeigen:
neuanzeigen(jgst05)END PROC neuan5zeigen;PROC neuan11zeigen:neuanzeigen(
jgst11)END PROC neuan11zeigen;PROC neuansonstzeigen:schuelerzahlINCR 1;
herkunftsschulezeigen;alteklassezeigen;namezeigen;neueklassezeigen;
neuerzugtutorzeigen.neueklassezeigen:gruppenwechsel(jgstaufber(wert(
fnrsujgsteintr)),gwneuejgst,2,1,aktuellesfeld).END PROC neuansonstzeigen;
PROC neuerzugtutorzeigen:TEXT CONST neuerzugtutor:=wert(fnrsuneuerzugtut);
standardmaskenfeld(neuerzugtutor,aktuellesfeld);zugtutor(schuelerzahl):=
neuerzugtutor;aktuellesfeldINCR 1END PROC neuerzugtutorzeigen;PROC 
jgstoderzugzeigen:schuelerzahlINCR 1;herkunftsschuleloeschen;
aktuelleklassezeigen;namezeigen;neueklassezeigen;zugtutorbehandeln.
herkunftsschuleloeschen:feldloeschen(laengeherk);aktuellesfeldINCR 1.
aktuelleklassezeigen:TEXT VAR aktjgst:=jgstaufber(wert(fnrsusgrpjgst));IF 
halbjahresindex=aktuelleshjTHEN feldloeschen(laengealteklasse);aktuellesfeld
INCR 1ELSE gruppenwechsel(aktjgst+wert(fnrsusgrpzugtut),gwalteklasse,
laengealteklasse,1,aktuellesfeld)FI .neueklassezeigen:IF halbjahresindex=
ersteskommendeshjTHEN gruppenwechsel(neuejgst,gwneuejgst,2,1,aktuellesfeld)
ELSE gruppenwechsel(aktjgst,gwneuejgst,2,1,aktuellesfeld)FI .
zugtutorbehandeln:IF halbjahresindex<>aktuelleshjTHEN neuerzugtutorzeigen
ELSE TEXT CONST zugtutordesschuelers:=wert(fnrsusgrpzugtut);zugtutor(
schuelerzahl):=zugtutordesschuelers;standardmaskenfeld(zugtutordesschuelers,
aktuellesfeld);aktuellesfeldINCR 1FI .END PROC jgstoderzugzeigen;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)CASE einejgstwiederholerpruefen:
pruefungeinejgstwiederholer(b)CASE eineklassewiederholerpruefen:
pruefungeineklassewiederholer(b)END SELECT ;bEND PROC pruefungspeziell;PROC 
pruefungalleklassen(BOOL VAR bool):bool:=(wert(fnrsustatuss)=
klassenbildungsbestand)END PROC pruefungalleklassen;PROC pruefungeinejgst(
BOOL VAR bool):bool:=(wert(fnrsustatuss)=bestlaufsjCAND jgstaufber(wert(
fnrsusgrpjgst))=vergleichsjgst)END PROC pruefungeinejgst;PROC 
pruefungeineklasse(BOOL VAR bool):bool:=(wert(fnrsustatuss)=bestlaufsjCAND 
jgstaufber(wert(fnrsusgrpjgst))=vergleichsjgstCAND wert(fnrsusgrpzugtut)=
vergleichszug)END PROC pruefungeineklasse;PROC pruefungeinejgstwiederholer(
BOOL VAR bool):inschuelerdateisuchen;bool:=(wert(fnrhjdversetzung)=
kzwiederholerCAND wert(fnrhjdsj)=aktschuljahrCAND wert(fnrhjdhj)=
aktschulhalbjahrCAND jgstaufber(wert(fnrhjdjgst))=vergleichsjgst)END PROC 
pruefungeinejgstwiederholer;PROC pruefungeineklassewiederholer(BOOL VAR bool)
:inschuelerdateisuchen;bool:=(wert(fnrhjdversetzung)=kzwiederholerCAND wert(
fnrhjdsj)=aktschuljahrCAND wert(fnrhjdhj)=aktschulhalbjahrCAND jgstaufber(
wert(fnrhjdjgst))=vergleichsjgstCAND wert(fnrhjdkennung)=vergleichszug)END 
PROC pruefungeineklassewiederholer;PROC inschuelerdateisuchen:inittupel(
dnrschueler);putwert(fnrsufamnames,wert(fnrhjdfamnames));putwert(
fnrsurufnames,wert(fnrhjdrufnames));putwert(fnrsugebdatums,wert(fnrhjdgebdats
));putwert(fnrsustatuss,bestlaufsj);search(ixsustatfamrufgeb,TRUE );END PROC 
inschuelerdateisuchen;END PACKET listenweiseklassenbildung