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
|
PACKET schuelerzukursenzuordnenDEFINES schuelerkursenzuordnenabbruch,
schuelerkursenzuordnenanfang,schuelerkursenzuordnenpruefuebernahme,
schuelerkursenzuordnenuebernahme,schuelerkursenzuordnenpruefung,
schuelerkursenzuordnenspeichern,schuelerkursenzuordnenkopieren,
schuelerkursenzuordnenlisten:LET server="kurswahl server",kuwa2sperre=
"Kurswahl-2 ",anzschuelerbs=15,laengefakeartkl=9,laengekurs=6,laengedseintrag
=15,az="#",trenner1="$",trenner2="�",maskeeingang=
"ms schueler zu kursen zuordnen eingang",maskebearb=
"ms schueler zu kursen zuordnen bearb",stdzeigbloecke=
"1 2 3 4 5 6 7 8 9 10 11 ",leerewahldaten=" ",
leereweiterewahldaten=" ",kzname="N",kzkurse="K",kznurneue="N",kzohneneue=
"O",kzalle="A",kennungplanbl="P",kennungfapl="FP",kennungfaartkl="FAk",
kennungfakeartkl="FKAk",kennungfake="FK",kennungkeinkurs=" - ",
kennungkeinfach=" * ",meldungbearbwird=352,meldungfeldleeren=390,
meldungunbeklv=360,meldungfeldfuellen=52,meldungschonkurs=424,
meldungbittewarten=69,meldungfalscherwert=55,meldungspeicherfehler=364,
meldungjgstfalsch=404,meldungjgstfehlt=172,meldunghjfalsch=405,meldungpruefen
=329,meldungspeichern=50,meldungnspeichern=63,meldungandereauswahl=318,
meldungunzulauswahl=56,meldungserverfehler=376,meldunglistezeigen=7,
meldungparallelanw=425,meldungkeinedaten=68,meldungkeinekopfunktion=318,
logtext1="Anw. 2.2.2 ",logtext2=" für akt. ",text1="Kurszuordnung ",text2=
"Kurse übernehmen ",text3=" nach ",punkt=".",felderstername=7,
felderstekennung=9,feldletztekennung=65,anzfeldereingang=36;INT VAR i,j,z;
INT VAR letztepos:=2,ijgst,ihj,fstat,aktpos:=1,aktfeld,pos1,pos2,blockpos,
suchab,jgst1,jgst2,findpos,feld,blpos,kopzeile,aktzeile,anfpos,anzkurse,
anzsch,endpos,anzschueler,fapos,saktpos,ssuchab;TEXT VAR aktjgst,akthj:="",
gewjgst,gewhj,zusjgst,zushj,gewsj,alleplblbez,alleschueler1:="",alleschueler2
:="",wahl,neuewahldaten,weiterewahldaten,wahldaten,alleschueler:="",
zeigbloecke,fach:="",art:="",kennungdesschuelers,name,kennungjetzt,
kennungvorher,planbloecke,aktfeldinh,t,nname,vname,gdat,ausgabe:="",block,
vorz,blockbez,aktkennung,liste:="",kurse,kurs,kennung,kursliste,fakennung,
fawahl,sname,logmeldung,klkz,klwahl;ROW anzfeldereingangTEXT VAR eingangrow;
ROW anzschuelerbsROW 4TEXT VAR schueler;BOOL VAR zusspaltezeigen:=FALSE ,
belegungpruefen:=FALSE ,sperreok,speicherungsfehler:=FALSE ,bewertung,
klausurkz:=FALSE ;WINDOW VAR w;PROC schuelerkursenzuordnenpruefuebernahme:IF
menuedraussenTHEN reorganizescreenFI END PROC
schuelerkursenzuordnenpruefuebernahme;PROC schuelerkursenzuordnenuebernahme(
BOOL CONST uebernehmen):merkeeingangbs;IF uebernehmenTHEN standardmeldung(
meldungbittewarten,"");aktpos:=1;gewjgst:=eingangrow(2);gewhj:=eingangrow(3);
ijgst:=int(gewjgst);ihj:=int(gewhj);zusjgst:=eingangrow(35);zushj:=eingangrow
(36);IF akthj=""THEN akthj:=schulkenndatum("Schulhalbjahr")FI ;prueffeld2und3
;prueffeld4;prueffeld5;prueffeld634;prueffeld3536;datenholen;
betrachtealleschueler;logmeldung:=text2;logmeldungCAT zusjgst;logmeldungCAT
punkt;logmeldungCAT zushj;logmeldungCAT text3;logmeldungCAT gewjgst;
logmeldungCAT punkt;logmeldungCAT gewhj;logbucheintragvornehmen(logmeldung);
kurswahlsperrebeenden(kuwa2sperre)FI ;enter(2).prueffeld2und3:IF gewjgst=""
THEN fehlermeldungausgeben(2,meldungjgstfehlt,1);LEAVE
schuelerkursenzuordnenuebernahmeELIF gewhj=""THEN fehlermeldungausgeben(2,
meldunghjfalsch,1);LEAVE schuelerkursenzuordnenuebernahmeELIF jgstfalsch(
gewjgst,"11")THEN fehlermeldungausgeben(2,meldungjgstfalsch,1);LEAVE
schuelerkursenzuordnenuebernahmeELIF ihj<1COR ihj>2THEN fehlermeldungausgeben
(3,meldunghjfalsch,1);LEAVE schuelerkursenzuordnenuebernahmeFI .prueffeld4:
aktfeldinh:=eingangrow(4);IF aktfeldinh=""THEN IF eingangrow(5)=""THEN
fehlermeldungausgeben(4,meldungandereauswahl,1);LEAVE
schuelerkursenzuordnenuebernahmeELSE LEAVE prueffeld4FI ELIF jgstfalsch(
gewjgst,aktfeldinh)THEN fehlermeldungausgeben(4,meldungunzulauswahl,1);LEAVE
schuelerkursenzuordnenuebernahmeELIF int(aktfeldinh)=ijgstTHEN pruefhjELIF
aktfeldinh="10"CAND akthj="1"THEN fehlermeldungausgeben(4,
meldungandereauswahl,1);LEAVE schuelerkursenzuordnenuebernahmeFI .pruefhj:IF
gewhj="1"CAND akthj="2"THEN fehlermeldungausgeben(3,meldungandereauswahl,1);
LEAVE schuelerkursenzuordnenuebernahmeFI .prueffeld5:aktfeldinh:=eingangrow(5
);IF aktfeldinh=""THEN LEAVE prueffeld5ELIF aktfeldinh<>""CAND eingangrow(4)
<>""THEN IF int(aktfeldinh)<>int(eingangrow(4))+1THEN fehlermeldungausgeben(5
,meldungunzulauswahl,1);LEAVE schuelerkursenzuordnenuebernahmeFI ELIF int(
aktfeldinh)>ijgstTHEN fehlermeldungausgeben(5,meldungunzulauswahl,1);LEAVE
schuelerkursenzuordnenuebernahmeFI .prueffeld634:FOR iFROM 6UPTO 34REP IF
standardmaskenfeld(i)<>""THEN fehlermeldungausgeben(i,meldungfeldleeren,1);
LEAVE schuelerkursenzuordnenuebernahmeFI PER .prueffeld3536:zusjgst:=
eingangrow(35);zushj:=eingangrow(36);IF zusjgst=""THEN fehlermeldungausgeben(
35,meldungjgstfehlt,1);LEAVE schuelerkursenzuordnenuebernahmeELIF zushj=""
THEN fehlermeldungausgeben(36,meldunghjfalsch,1);LEAVE
schuelerkursenzuordnenuebernahmeELIF zusjgst=gewjgstCAND zushj=gewhjTHEN
fehlermeldungausgeben(35,meldungandereauswahl,1);LEAVE
schuelerkursenzuordnenuebernahmeELIF jgstfalsch(zusjgst,"11")THEN
fehlermeldungausgeben(35,meldungjgstfalsch,1);LEAVE
schuelerkursenzuordnenuebernahmeELIF zushj<>"1"CAND zushj<>"2"THEN
fehlermeldungausgeben(36,meldunghjfalsch,1);LEAVE
schuelerkursenzuordnenuebernahmeFI .datenholen:IF NOT exists(/server)THEN
fehlermeldungausgeben(letztepos,meldungserverfehler,1);LEAVE
schuelerkursenzuordnenuebernahmeFI ;IF eingangrow(4)=""THEN t:=kznurneue;
aktjgst:=text(int(eingangrow(5))-1)ELIF eingangrow(5)=""THEN t:=kzohneneue;
aktjgst:=eingangrow(4)ELSE t:=kzalle;aktjgst:=eingangrow(4)FI ;
kurswahlinitialisieren(aktjgst,gewjgst,gewhj,t,gewsj);kurswahlbasisholen(
fstat);erweitertekurswahlbasisholen(zusjgst,zushj,fstat);kurswahlsperresetzen
(kuwa2sperre,sperreok);IF NOT sperreokTHEN fehlermeldungausgeben(infeld,
meldungparallelanw,1);LEAVE schuelerkursenzuordnenuebernahmeFI .
betrachtealleschueler:FOR iFROM ersterschuelerUPTO letzterschuelerREP
wahldaten:=wahldatenzumindex(i,kzkurse);name:=wahldatenzumindex(i,kzname);
pos1:=pos(name,trenner2,1)-1;pos2:=pos(name,trenner2,pos1+2)-1;nname:=subtext
(name,1,pos1);vname:=subtext(name,pos1+2,pos2);gdat:=subtext(name,pos2+2,pos2
+9);standardmeldung(meldungbearbwird,vname+" "+nname+az);weiterewahldaten:=
weiterewahldatenzumschueler(nname,vname,gdat,kennungfakeartkl);
betrachtekennungen;kurswahl2sichern(fstat)PER .betrachtekennungen:pos1:=1;
neuewahldaten:="";WHILE pos1<length(wahldaten)REP wahl:=subtext(wahldaten,
pos1,pos1+laengedseintrag-1);kennungjetzt:=subtext(wahl,6,9);fach:=subtext(
wahl,4,5);art:=subtext(wahl,2,3);kennungvorher:=kennungvonfach(TRUE );IF
kennungjetzt<>kennungvorherTHEN planbloecke:=kursdaten(fach+kennungvorher,
kennungplanbl);IF dbstatus=0THEN neuewahldatenCAT text(wahl,1);neuewahldaten
CAT art;neuewahldatenCAT fach;neuewahldatenCAT kennungvorher;neuewahldaten
CAT planbloeckeELSE neuewahldatenCAT wahlFI ELSE neuewahldatenCAT wahlFI ;
pos1INCR laengedseintragPER ;IF wahldaten<>neuewahldatenTHEN
schuelerwahleintragen(nname,vname,gdat,neuewahldaten)FI .END PROC
schuelerkursenzuordnenuebernahme;PROC schuelerkursenzuordnenanfang:
standardstartproc(maskeeingang);gibeingangaus;standardfelderausgeben;infeld(
letztepos);standardnproc.gibeingangaus:FOR iFROM 2UPTO anzfeldereingangREP
standardmaskenfeld(eingangrow(i),i);IF eingangrow(i)<>""THEN letztepos:=iFI
PER .END PROC schuelerkursenzuordnenanfang;PROC
schuelerkursenzuordnenpruefung:standardmeldung(meldungbittewarten,"");
merkeeingangbs;aktpos:=1;gewjgst:=eingangrow(2);gewhj:=eingangrow(3);ijgst:=
int(gewjgst);ihj:=int(gewhj);IF akthj=""THEN akthj:=schulkenndatum(
"Schulhalbjahr")FI ;prueffeld2und3;prueffeld4;prueffeld5;prueffeld6und7;
prueffeld8bis13;prueffeld3536;datenholen;betrachtebelegung;
planblockbezpruefen;schueleraufzeigen.betrachtebelegung:FOR iFROM 14UPTO 23
REP IF eingangrow(i)<>""THEN planblockvorzpruefen;planblockbez15bis23pruefen;
belegungpruefen:=TRUE ;LEAVE betrachtebelegungFI ;PER ;belegungpruefen:=
FALSE .prueffeld2und3:IF gewjgst=""THEN fehlermeldungausgeben(2,
meldungjgstfehlt,1);LEAVE schuelerkursenzuordnenpruefungELIF gewhj=""THEN
fehlermeldungausgeben(2,meldunghjfalsch,1);LEAVE
schuelerkursenzuordnenpruefungELIF jgstfalsch(gewjgst,"11")THEN
fehlermeldungausgeben(2,meldungjgstfalsch,1);LEAVE
schuelerkursenzuordnenpruefungELIF ihj<1COR ihj>2THEN fehlermeldungausgeben(3
,meldunghjfalsch,1);LEAVE schuelerkursenzuordnenpruefungFI .prueffeld4:
aktfeldinh:=eingangrow(4);IF aktfeldinh=""THEN IF eingangrow(5)=""THEN
fehlermeldungausgeben(4,meldungandereauswahl,1);LEAVE
schuelerkursenzuordnenpruefungELSE LEAVE prueffeld4FI ELIF jgstfalsch(gewjgst
,aktfeldinh)THEN fehlermeldungausgeben(4,meldungunzulauswahl,1);LEAVE
schuelerkursenzuordnenpruefungELIF int(aktfeldinh)=ijgstTHEN pruefhjELIF
aktfeldinh="10"CAND akthj="1"THEN fehlermeldungausgeben(4,
meldungandereauswahl,1);LEAVE schuelerkursenzuordnenpruefungFI .pruefhj:IF
gewhj="1"CAND akthj="2"THEN fehlermeldungausgeben(3,meldungandereauswahl,1);
LEAVE schuelerkursenzuordnenpruefungFI .prueffeld5:aktfeldinh:=eingangrow(5);
IF aktfeldinh=""THEN LEAVE prueffeld5ELIF aktfeldinh<>""CAND eingangrow(4)<>
""THEN IF int(aktfeldinh)<>int(eingangrow(4))+1THEN fehlermeldungausgeben(5,
meldungunzulauswahl,1);LEAVE schuelerkursenzuordnenpruefungFI ELIF int(
aktfeldinh)>ijgstTHEN fehlermeldungausgeben(5,meldungunzulauswahl,1);LEAVE
schuelerkursenzuordnenpruefungFI .prueffeld6und7:zusjgst:=eingangrow(6);zushj
:=eingangrow(7);IF zusjgst=""CAND zushj<>""THEN fehlermeldungausgeben(6,
meldungjgstfehlt,1);LEAVE schuelerkursenzuordnenpruefungELIF zushj=""CAND
zusjgst<>""THEN fehlermeldungausgeben(7,meldunghjfalsch,1);LEAVE
schuelerkursenzuordnenpruefungELIF zushj=""CAND zusjgst=""THEN
zusspaltezeigen:=FALSE ELIF zusjgst=gewjgstCAND zushj=gewhjTHEN
fehlermeldungausgeben(6,meldungandereauswahl,1);LEAVE
schuelerkursenzuordnenpruefungELIF jgstfalsch(gewjgst,"11")THEN
fehlermeldungausgeben(6,meldungjgstfalsch,1);LEAVE
schuelerkursenzuordnenpruefungELIF ihj<1COR ihj>2THEN fehlermeldungausgeben(7
,meldunghjfalsch,1);LEAVE schuelerkursenzuordnenpruefungELIF jgstfalsch(
gewjgst,zusjgst)THEN fehlermeldungausgeben(6,meldungandereauswahl,1);LEAVE
schuelerkursenzuordnenpruefungELSE zusspaltezeigen:=TRUE FI .prueffeld8bis13:
klkz:=compress(eingangrow(10));klausurkz:=klkz<>"";FOR iFROM 8UPTO 13REP IF
eingangrow(i)<>""THEN LEAVE prueffeld8bis13FI PER ;fehlermeldungausgeben(8,
meldungfeldfuellen,1);LEAVE schuelerkursenzuordnenpruefung.prueffeld3536:IF
eingangrow(35)<>""COR eingangrow(36)<>""THEN fehlermeldungausgeben(35,
meldungandereauswahl,1);LEAVE schuelerkursenzuordnenpruefungFI .
planblockvorzpruefen:IF planblockvorzfalsch(14)COR planblockvorzfalsch(16)
COR planblockvorzfalsch(18)COR planblockvorzfalsch(20)COR planblockvorzfalsch
(22)THEN kurswahlsperrebeenden(kuwa2sperre);LEAVE
schuelerkursenzuordnenpruefungFI .datenholen:IF NOT exists(/server)THEN
fehlermeldungausgeben(letztepos,meldungserverfehler,1);LEAVE
schuelerkursenzuordnenpruefungFI ;IF eingangrow(4)=""THEN t:=kznurneue;
aktjgst:=text(int(eingangrow(5))-1)ELIF eingangrow(5)=""THEN t:=kzohneneue;
aktjgst:=eingangrow(4)ELSE t:=kzalle;aktjgst:=eingangrow(4)FI ;
kurswahlinitialisieren(aktjgst,gewjgst,gewhj,t,gewsj);kurswahlbasisholen(
fstat);IF zusspaltezeigenTHEN erweitertekurswahlbasisholen(zusjgst,zushj,
fstat);FI ;kurswahlsperresetzen(kuwa2sperre,sperreok);IF sperreokTHEN
alleplblbez:=alleplanblockbezeichnerELSE fehlermeldungausgeben(infeld,
meldungparallelanw,1);LEAVE schuelerkursenzuordnenpruefungFI .
planblockbez15bis23pruefen:IF planblockbezfalsch(eingangrow(15))THEN
fehlermeldungausgeben(15,meldungfalscherwert,1);kurswahlsperrebeenden(
kuwa2sperre);LEAVE schuelerkursenzuordnenpruefungELIF planblockbezfalsch(
eingangrow(17))THEN fehlermeldungausgeben(17,meldungfalscherwert,1);
kurswahlsperrebeenden(kuwa2sperre);LEAVE schuelerkursenzuordnenpruefungELIF
planblockbezfalsch(eingangrow(19))THEN fehlermeldungausgeben(19,
meldungfalscherwert,1);kurswahlsperrebeenden(kuwa2sperre);LEAVE
schuelerkursenzuordnenpruefungELIF planblockbezfalsch(eingangrow(21))THEN
fehlermeldungausgeben(21,meldungfalscherwert,1);kurswahlsperrebeenden(
kuwa2sperre);LEAVE schuelerkursenzuordnenpruefungELIF planblockbezfalsch(
eingangrow(23))THEN fehlermeldungausgeben(23,meldungfalscherwert,1);
kurswahlsperrebeenden(kuwa2sperre);LEAVE schuelerkursenzuordnenpruefungFI .
planblockbezpruefen:zeigbloecke:="";FOR iFROM 24UPTO 34REP IF
planblockbezfalsch(eingangrow(i))THEN fehlermeldungausgeben(i,
meldungfalscherwert,1);kurswahlsperrebeenden(kuwa2sperre);LEAVE
schuelerkursenzuordnenpruefungFI ;IF eingangrow(i)<>""THEN zeigbloeckeCAT
konvblock(eingangrow(i))FI ;PER .END PROC schuelerkursenzuordnenpruefung;
BOOL PROC planblockbezfalsch(TEXT CONST anwblock):suchab:=1;IF anwblock=""
THEN FALSE ELSE block:=text(anwblock,3);WHILE pos(alleplblbez,block,suchab)<>
0REP j:=pos(alleplblbez,block,suchab);IF jMOD 3=1THEN LEAVE
planblockbezfalschWITH FALSE ELSE suchab:=j+1FI PER ;TRUE FI END PROC
planblockbezfalsch;BOOL PROC planblockvorzfalsch(INT CONST feld):t:=(
eingangrow(feld)SUB 1);IF t<>""THEN IF eingangrow(feld+1)=""THEN
fehlermeldungausgeben(feld+1,meldungfeldfuellen,1);TRUE ELIF NOT (t="-"COR t=
"+")THEN fehlermeldungausgeben(feld,meldungfalscherwert,1);TRUE ELSE FALSE
FI ELIF eingangrow(feld+1)<>""THEN fehlermeldungausgeben(feld,
meldungfeldfuellen,1);TRUE ELSE FALSE FI END PROC planblockvorzfalsch;PROC
fehlermeldungausgeben(INT CONST feld,meldung,ruecksprung):infeld(feld);
standardmeldung(meldung,"");return(ruecksprung)END PROC fehlermeldungausgeben
;BOOL PROC jgstfalsch(TEXT CONST jgst,abjgst):jgst1:=int(jgst);jgst2:=int(
abjgst);jgst1<jgst2COR jgst1>13END PROC jgstfalsch;PROC initbspuffer:FOR i
FROM 1UPTO anzschuelerbsREP schueler(i)(1):="";schueler(i)(2):="";schueler(i)
(3):="";schueler(i)(4):=""PER END PROC initbspuffer;PROC schueleraufzeigen:
fach:=text(eingangrow(8),2);art:=text(eingangrow(9),2);holschueler;IF
alleschueler=""THEN meldungkeineschueler;kurswahlsperrebeenden(kuwa2sperre)
ELSE zeigbearbschirm;standardnprocFI .zeigbearbschirm:standardstartproc(
maskebearb);standardkopfmaskeaktualisieren("Kurszuordnung für jetzige Jgst. "
+aktjgst+" in "+gewjgst+"."+gewhj);ausgabe:=fach;ausgabeCAT art;ausgabeCAT
text(eingangrow(10),1);IF eingangrow(11)<>""THEN ausgabeCAT "+";ausgabeCAT
text(eingangrow(11),2);ausgabeCAT text(eingangrow(12),2);ausgabeCAT text(
eingangrow(13),1);ELSE ausgabeCAT " "FI ;standardmaskenfeld(ausgabe,2);
ausgabe:=" ";ausgabeCAT text(eingangrow(14),1);ausgabeCAT konvblock(
eingangrow(15));ausgabeCAT text(eingangrow(16),1);ausgabeCAT konvblock(
eingangrow(17));ausgabeCAT text(eingangrow(18),1);ausgabeCAT konvblock(
eingangrow(19));ausgabeCAT text(eingangrow(20),1);ausgabeCAT konvblock(
eingangrow(21));ausgabeCAT text(eingangrow(22),1);ausgabeCAT konvblock(
eingangrow(23));standardmaskenfeld(ausgabe,3);IF zusspaltezeigenTHEN
standardmaskenfeld(eingangrow(6)+"."+eingangrow(7),4);ELSE standardmaskenfeld
(" ",4);FI ;standardmaskenfeld(fach,5);IF zeigbloecke=""THEN zeigbloecke:=
stdzeigbloecke;standardmaskenfeld(stdzeigbloecke,6)ELSE standardmaskenfeld(
text(zeigbloecke,33),6)FI ;zeigschueler.meldungkeineschueler:
fehlermeldungausgeben(14,meldungkeinedaten,1).holschueler:alleschueler:="";
alleschueler1:=schuelermitwahl(fach,"",art,eingangrow(10));IF eingangrow(11)
<>""THEN alleschueler2:=schuelermitwahl(eingangrow(11),"",eingangrow(12),
eingangrow(13));schuelervergleichELSE alleschueler2:="";IF belegungpruefen
THEN pruefbelegungallerschuelerELSE alleschueler:=alleschueler1;anzschueler:=
anzahlschuelermitwahl(fach,"",art,eingangrow(10))FI ;FI .
pruefbelegungallerschueler:saktpos:=1;ssuchab:=2;alleschueler:="";anzschueler
:=0;WHILE saktpos<>0REP saktpos:=pos(alleschueler1,trenner1,ssuchab);IF
saktpos<>0THEN sname:=subtext(alleschueler1,ssuchab,saktpos-1);IF
richtigebelegung(sname)THEN alleschuelerCAT trenner1+sname;anzschuelerINCR 1
FI ;ssuchab:=saktpos+1FI PER ;sname:=subtext(alleschueler1,ssuchab);IF
richtigebelegung(sname)THEN alleschuelerCAT trenner1+sname;anzschuelerINCR 1
FI .END PROC schueleraufzeigen;PROC zeigschueler:aktfeld:=felderstername;
initbspuffer;FOR iFROM 1UPTO anzschuelerbsREP wahldaten:="";weiterewahldaten
:="";kennungdesschuelers:="";standardmaskenfeld(schuelername,aktfeld);
standardmaskenfeld(text(wahldaten,22),aktfeld+3);standardmaskenfeld(
weiterewahldaten,aktfeld+1);IF kennungdesschuelers=leereweiterewahldatenTHEN
standardmaskenfeld("",aktfeld+2)ELSE standardmaskenfeld(kennungdesschuelers,
aktfeld+2)FI ;aktfeldINCR 4PER ;infeld(1);standardfelderausgeben;infeld(9).
END PROC zeigschueler;TEXT PROC schuelername:findpos:=pos(alleschueler,
trenner1,aktpos+1);IF findpos>0THEN name:=subtext(alleschueler,aktpos+2,
findpos-1);aktpos:=findposELIF aktpos=length(alleschueler)THEN name:=""ELSE
name:=subtext(alleschueler,aktpos+2);aktpos:=length(alleschueler)FI ;
bereitenameauf(name)END PROC schuelername;TEXT PROC bereitenameauf(TEXT
CONST name):ausgabe:=name;change(ausgabe,trenner2,", ");ausgabe:=text(ausgabe
,pos(ausgabe,trenner2)-1);wahldatenaufbereiten(name);text(ausgabe,23)END
PROC bereitenameauf;PROC wahldatenaufbereiten(TEXT CONST name):TEXT VAR
zblock;IF name=""THEN wahldaten:=leerewahldaten;weiterewahldaten:=
leereweiterewahldatenELSE pos1:=pos(name,trenner2,1)-1;pos2:=pos(name,
trenner2,pos1+2)-1;nname:=subtext(name,1,pos1);vname:=subtext(name,pos1+2,
pos2);gdat:=subtext(name,pos2+2,pos2+9);kennungdesschuelers:=kennungvonfach(
FALSE );IF kennungdesschuelers=kennungkeinfachCOR kennungdesschuelers=
kennungkeinkursTHEN kennungdesschuelers:=""FI ;schueler(i)(1):=nname;schueler
(i)(2):=vname;schueler(i)(3):=gdat;schueler(i)(4):=kennungdesschuelers;
ermittlewahldaten;ermittleweiterewahldatenFI .ermittlewahldaten:wahl:=
wahldatenzumschueler(nname,vname,gdat,kennungfake);blockpos:=1;WHILE blockpos
<length(zeigbloecke)REP zblock:=subtext(zeigbloecke,blockpos,blockpos+2);IF
schuelerinplanblock(nname,vname,gdat,zblock)THEN wahldatenCAT
fachvomplanblock(zblock);ELSE wahldatenCAT " "FI ;blockposINCR 3PER .
ermittleweiterewahldaten:IF zusspaltezeigenTHEN weiterewahldaten:=
kennungvonfach(TRUE )ELSE weiterewahldaten:=leereweiterewahldatenFI .END
PROC wahldatenaufbereiten;TEXT PROC kennungvonfach(BOOL CONST inweiterendaten
):fapos:=1;fawahl:="";IF inweiterendatenTHEN fawahl:=
weiterewahldatenzumschueler(nname,vname,gdat,kennungfakeartkl)ELSE fawahl:=
wahldatenzumschueler(nname,vname,gdat,kennungfakeartkl)FI ;IF fawahl=""THEN
leereweiterewahldatenELSE betrachteallefaecherFI .betrachteallefaecher:WHILE
fapos<length(fawahl)REP IF subtext(fawahl,fapos,fapos+1)=fachCAND subtext(
fawahl,fapos+6,fapos+7)=artTHEN fakennung:=subtext(fawahl,fapos+2,fapos+5);
IF fakennung=leereweiterewahldatenTHEN LEAVE betrachteallefaecherWITH
kennungkeinkursELSE LEAVE betrachteallefaecherWITH compress(fakennung)FI
ELSE faposINCR laengefakeartklFI PER ;kennungkeinfach.END PROC kennungvonfach
;TEXT PROC fachvomplanblock(TEXT CONST block):TEXT VAR plbld:=planblockdaten(
block,kzkurse),k;blpos:=1;WHILE blpos<LENGTH wahlREP k:=subtext(wahl,blpos,
blpos+laengekurs-1);IF kurseingetragen(plbld,k)THEN LEAVE fachvomplanblock
WITH text(k,2)ELSE blposINCR laengekursFI PER ;" "END PROC fachvomplanblock;
BOOL PROC kurseingetragen(TEXT CONST quelle,teilmuster):INT VAR suchab:=1,
aktpos;WHILE pos(quelle,teilmuster,suchab)<>0REP aktpos:=pos(quelle,
teilmuster,suchab);IF aktposMOD laengekurs=1THEN LEAVE kurseingetragenWITH
TRUE ELSE suchab:=aktpos+1FI PER ;FALSE END PROC kurseingetragen;PROC
schuelervergleich:saktpos:=1;ssuchab:=2;anzschueler:=0;WHILE saktpos<>0REP
saktpos:=pos(alleschueler1,trenner1,ssuchab);IF saktpos<>0THEN sname:=subtext
(alleschueler1,ssuchab,saktpos-1);IF pos(alleschueler2,sname)>0THEN IF
belegungpruefenTHEN IF richtigebelegung(sname)THEN alleschuelerCAT trenner1+
sname;anzschuelerINCR 1FI ELSE alleschuelerCAT trenner1+sname;anzschueler
INCR 1FI FI ;ssuchab:=saktpos+1FI PER ;sname:=subtext(alleschueler1,ssuchab);
IF pos(alleschueler2,sname)>0THEN IF belegungpruefenTHEN IF richtigebelegung(
sname)THEN alleschuelerCAT trenner1+sname;anzschuelerINCR 1FI ELSE
alleschuelerCAT trenner1+sname;anzschuelerINCR 1FI FI .END PROC
schuelervergleich;BOOL PROC richtigebelegung(TEXT CONST name):bewertung:=
TRUE ;pos1:=pos(name,trenner2,2)-1;pos2:=pos(name,trenner2,pos1+2)-1;nname:=
subtext(name,2,pos1);vname:=subtext(name,pos1+2,pos2);gdat:=subtext(name,pos2
+2,pos2+9);feld:=12;FOR iFROM 1UPTO 5REP feldINCR 2;vorz:=eingangrow(feld);
IF vorz<>""THEN blockbez:=eingangrow(feld+1);block:=konvblock(blockbez);IF
vorz="-"THEN bewertung:=NOT schuelerinplanblock(nname,vname,gdat,block)ELSE
bewertung:=schuelerinplanblock(nname,vname,gdat,block)FI ;IF NOT bewertung
THEN LEAVE richtigebelegungWITH FALSE FI FI ;PER ;bewertungEND PROC
richtigebelegung;PROC schuelerkursenzuordnenspeichern(BOOL CONST speichern):
speicherungsfehler:=FALSE ;IF speichernTHEN pruefkennungen;speicherkennungen;
logmeldung:=text1;logmeldungCAT gewjgst;logmeldungCAT punkt;logmeldungCAT
gewhj;logbucheintragvornehmen(logmeldung);kurswahl2sichern(i);ELSE
standardmeldung(meldungnspeichern," ")FI ;naechsterbildschirm.pruefkennungen:
standardmeldung(meldungpruefen," ");j:=felderstekennung;FOR iFROM 1UPTO
anzschuelerbsREP kennung:=standardmaskenfeld(j);infeld(j);IF kennung<>""THEN
IF schueler(i)(1)=""THEN fehlermeldungkeinschuelerFI ;planbloecke:=compress(
kursdaten(fach+kennung,kennungplanbl));IF dbstatus<>0THEN
fehlermeldungunbekkennungELIF planbloecke<>""CAND kennung<>schueler(i)(4)
THEN pruefplanbloeckeFI FI ;jINCR 4PER .pruefplanbloecke:prueferstenblock;IF
length(planbloecke)>3THEN pruefzweitenblockFI .prueferstenblock:IF
schuelerinplanblock(schueler(i)(1),schueler(i)(2),schueler(i)(3),text(
planbloecke,3))THEN fehlermeldungschonkursblock1FI .pruefzweitenblock:IF
schuelerinplanblock(schueler(i)(1),schueler(i)(2),schueler(i)(3),subtext(
planbloecke,4))THEN fehlermeldungschonkursblock2FI .
fehlermeldungschonkursblock1:infeld((i-1)*4+9);standardmeldung(
meldungschonkurs,text(planbloecke,3)+az);return(1);LEAVE
schuelerkursenzuordnenspeichern.fehlermeldungschonkursblock2:infeld((i-1)*4+9
);standardmeldung(meldungschonkurs,subtext(planbloecke,4)+az);return(1);
LEAVE schuelerkursenzuordnenspeichern.fehlermeldungkeinschueler:
fehlermeldungausgeben((i-1)*4+9,meldungfeldleeren,1);LEAVE
schuelerkursenzuordnenspeichern.fehlermeldungunbekkennung:infeld((i-1)*4+9);
standardmeldung(meldungunbeklv,fach+kennung+az);return(1);LEAVE
schuelerkursenzuordnenspeichern.speicherkennungen:standardmeldung(
meldungspeichern," ");j:=felderstekennung;FOR iFROM 1UPTO anzschuelerbsREP
kennung:=standardmaskenfeld(j);infeld(j);IF kennung<>schueler(i)(4)THEN IF
NOT klausurkzTHEN ermittleklkennzFI ;schuelerwahlaendern(schueler(i)(1),
schueler(i)(2),schueler(i)(3),fach,schueler(i)(4),art,fach,kennung,art,klkz);
IF dbstatus<>0THEN speicherungsfehler:=TRUE FI ;FI ;jINCR 4PER ;IF
speicherungsfehlerTHEN kurswahlserveraktualisieren(aktjgst,gewjgst,gewhj)FI .
naechsterbildschirm:kurswahl0holen(fstat);kurswahl1holen(fstat);IF aktpos<
length(alleschueler)CAND NOT speicherungsfehlerTHEN zeigschueler;return(1);
IF speicherungsfehlerTHEN standardmeldung(meldungspeicherfehler,"");FI ELSE
kurswahlsperrebeenden(kuwa2sperre);enter(2);IF speicherungsfehlerTHEN
standardmeldung(meldungspeicherfehler,"");infeld(letztepos)FI FI .END PROC
schuelerkursenzuordnenspeichern;PROC ermittleklkennz:klwahl:=
wahldatenzumschueler(schueler(i)(1),schueler(i)(2),schueler(i)(3),
kennungfaartkl);z:=1;WHILE z<LENGTH (klwahl)REP IF subtext(klwahl,z,z+3)=fach
+artTHEN klkz:=klwahlSUB z+4;LEAVE ermittleklkennzELSE zINCR 5FI PER ;klkz:=
""END PROC ermittleklkennz;PROC schuelerkursenzuordnenabbruch:
kurswahlsperrebeenden(kuwa2sperre);enter(2)END PROC
schuelerkursenzuordnenabbruch;PROC schuelerkursenzuordnenkopieren:kopzeile:=
infeld;aktzeile:=kopzeile+4;aktkennung:=standardmaskenfeld(kopzeile);IF
kopzeile=feldletztekennungTHEN fehlermeldungkeinkopELSE WHILE aktzeile<=
feldletztekennungCAND schueler((aktzeile-5)DIV 4)(1)<>""REP
standardmaskenfeld(aktkennung,aktzeile);aktzeileINCR 4PER ;infeld(kopzeile+4)
;standardfelderausgeben;infeld(kopzeile+4);FI ;return(1).fehlermeldungkeinkop
:standardmeldung(meldungkeinekopfunktion,"").END PROC
schuelerkursenzuordnenkopieren;PROC schuelerkursenzuordnenlisten:kursliste:=
"";aktfeld:=infeld;w:=startwindow(35,23,77,1);liste:="";standardmeldung(
meldunglistezeigen,"");IF menuedraussenTHEN reorganizescreenFI ;fuelleliste;
infeld(1);standardfelderausgeben;open(w);auskunfterteilung(liste,w,FALSE );
reorganizescreen;setlasteditvalues;infeld(aktfeld);return(1).fuelleliste:
listeCAT "Anzahl Schüler wie ausgewählt";listeCAT auskunftstextende;listeCAT
text(anzschueler);listeCAT auskunftstextende;listeCAT " ";listeCAT
auskunftstextende;listeCAT "Fach gewählt Kurszahl/-größe";listeCAT
auskunftstextende;listeCAT fach;listeCAT " ";listeCAT art;listeCAT " ";
listeCAT gewaehlteschueler;listeCAT " ";listeCAT anzahlkurse;listeCAT
kursgroesse;listeCAT auskunftstextende;listeCAT " ";listeCAT
auskunftstextende;listeCAT "Kurse Planblock Schüler";listeCAT
auskunftstextende;listeallerkurse.listeallerkurse:anfpos:=1;WHILE anfpos<
length(kursliste)REP listeCAT fach+" ";kennung:=subtext(kursliste,anfpos,
anfpos+3);listeCAT kennung;listeCAT " ";kurs:=kursdaten(fach+kennung,
kennungplanbl);IF kurs=""THEN listeCAT " "ELSE listeCAT text(int(
text(kurs,3)),2);listeCAT " ";listeCAT text(int(subtext(kurs,4)),2);liste
CAT " ";FI ;listeCAT text(anzahlschuelermitwahl(fach,kennung,"",""));
listeCAT auskunftstextende;anfposINCR 4PER .gewaehlteschueler:anzsch:=
anzahlschuelermitwahl(fach,"",art,"");text(text(anzsch),6).kursgroesse:text(
anzschDIV anzkurse).anzahlkurse:kurse:=allekurse;suchanfang;suchende;IF
anfpos=0THEN "0 "ELSE kurse:=subtext(kurse,anfpos,endpos);
betrachtekurse;text(text(anzkurse),10)FI .betrachtekurse:anzkurse:=0;anfpos:=
1;kursliste:="";WHILE anfpos<length(kurse)REP IF subtext(kurse,anfpos,anfpos+
1)=fachCAND subtext(kurse,anfpos+8,anfpos+9)=artTHEN anzkurseINCR 1;kursliste
CAT subtext(kurse,anfpos+2,anfpos+5);FI ;anfposINCR 10PER .suchanfang:anfpos
:=pos(kurse,fach,1);WHILE anfpos<>0REP IF (anfposMOD 10)=1CAND subtext(kurse,
anfpos+8,anfpos+9)=artTHEN LEAVE suchanfangELSE anfpos:=pos(kurse,fach,anfpos
+1)FI ;PER .suchende:findpos:=pos(kurse,fach,anfpos+1);IF anfpos<>0THEN
endpos:=anfpos+9;WHILE findpos<>0REP IF (findposMOD 10)=1CAND subtext(kurse,
findpos+8,findpos+9)=artTHEN endpos:=findpos+9FI ;findpos:=pos(kurse,fach,
findpos+1)PER ;ELSE endpos:=0FI .END PROC schuelerkursenzuordnenlisten;TEXT
PROC konvblock(TEXT CONST blockbez):INT VAR block;IF blockbez<>""THEN block:=
int(text(blockbez,2));IF block<10THEN "0"+text(block)+text(blockbezSUB 3,1)
ELSE text(block)+text(blockbezSUB 3,1)FI ELSE " "FI END PROC konvblock;
PROC initrow:FOR iFROM 2UPTO anzfeldereingangREP eingangrow(i):=""PER END
PROC initrow;PROC merkeeingangbs:FOR iFROM 2UPTO anzfeldereingangREP
eingangrow(i):=standardmaskenfeld(i)PER .END PROC merkeeingangbs;PROC
logbucheintragvornehmen(TEXT CONST escfunktion):logeintrag(logtext1+
escfunktion+logtext2+aktjgst)END PROC logbucheintragvornehmen;initrow;END
PACKET schuelerzukursenzuordnen;
|