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
|
PACKET stdpluebersichtenDEFINES merkeartderstdpluebersichtundzeigemaske,
stdpluebersichterstellenunddruckenggfvorherzeigen,
stdpluebersichtdruckenundggfnaechsteerstellen:INT VAR
ausgewaehlteuebersichtsart;LET artlehrer=1,artraeume=2,artsek1=3,artsek2=4,
artzeiten=5,maskennamefuerlehrer="ms stdpluebersicht fuer lehrer",
maskennamefuerraeume="ms stdpluebersicht fuer raeume",maskennamefuersek1=
"ms stdpluebersicht fuer sek1",maskennamefuersek2=
"ms stdpluebersicht fuer sek2",maskennamefuerzeiten=
"ms stdpluebersicht fuer zeiten";TEXT VAR sj,hj,kennung,vonobjekt,bisobjekt,
sek1kennungvon,sek1kennungbis,ueberschrift1,ueberschrift2,tag,
listeallerobjekte:="";INT VAR laengederlistenobjekte,ptraktobjekt,sek1jgstvon
,sek1jgstbis,varspbreite,anzahlspalten,vonstd,bisstd,anzahltage;BOOL VAR
nurdrucken,zweizeilig;LET fnr2geplsj=2,fnr3aktsj=3,fnr4einzeilig=4,
fnr5zweizeilig=5,fnr6vonobjekt=6,fnr7bisobjekt=7,fnr8vonstd=8,fnr9bisstd=9,
fnr10spaltenproseite=10,fnr11tageproseite=11,fnr12bildschirm=12,fnr13drucker=
13,fnrz4vonstd=4,fnrz5bisstd=5,fnrz6anzspalten=6,fnrz7bildschirm=7,
fnrz8drucker=8;LET erstestd=1,letztestdmofr=12,letztestdsa=6,maxanzstdn=66,
letztertag=6,erstertag=1,allewochentagsbezeichnungen=
"MODIMIDOFRSAMoDiMiDoFrSamodimidofrsa";LET konstspbreite=6,
konstkopplungsbreite=8,maxanzspalten1bis4=9,maxanzspalten5=5,maxanzspalten=9,
minanzspalten=1,spaltenbreite8=8,spaltenbreite10=10,spaltenbreite12=12,
spaltenbreite27=27,druckdatei="liste.1",textstdpluebersicht=
"Stundenplanübersicht für ",textlehrer="Lehrer",textraeume="Räume",textsek1=
"Klassen der Sek. 1",textsek2="Jgst. ",textzeiten="Zeiten",
textanfangfuerschulhalbjahr="Schuljahr 19",trennerfuerschuljahr="/",
textmittefuerschulhalbjahr=", ",textendefuerschulhalbjahr=". Halbjahr",
ueberschriftenzahl=2,spaltentrenner=":",trennstrichzeichen="-",
spaltentrennerimstrich="+",textzeiterstespalte="Zeit :",leereerstespalte=
" :",textmontag="Mo",textdienstag="Di",textmittwoch="Mi",textdonnerstag=
"Do",textfreitag="Fr",textsamstag="Sa",textkeintag=" ",trennstrichfuerlv="/"
,ueberschriftspalte2beiart4="Kopplung:",ueberschriftspalte3beiart4=
" Lehrveranstaltungen",ueberschriftbeiart5="Lv /R /P /Kopplg. ",
endeposjgstinlv=2,anfposfachinlv=3,endeposfachinlv=4,anfposkennunginlv=5,
laengeeinerlv=8,laengeeinerkopplung=8,laengeeinerparaphe=4,laengeeinesraumes=
4,laengeeinersgrp=6,laengeeinerjgst=2,zeilebeianfangneueseite=2,
maxtabzahljedruckdatei=10;LET meldnrlistewirdaufgebaut=7,
meldnrbittezahlangeben=53,meldnrzahlausserhalbdergrenzen=54,
meldnrungueltigeeingabe=55,meldnrauswahlnichtsinnvoll=56,meldnrplausi=57,
meldnrlistewirdausgedruckt=58,meldnrbittewarten=69,meldnrinbearbeitung=352,
meldnrkeinegueltigejgst=146,meldnrungueltigeparaphe=344,
meldnrkeinelehrerdatenda=337,meldnrfalscheraumangabe=359,
meldnrkeineraumdatenda=365,meldnrkeinestdpldatenda=366,meldnrfalschetagesbez=
385,meldnrfalschestundenfolge=386,meldnralphabetischefolge=380,
meldnrkeinehjdatenda=382,meldnrmaxzeichenueberschritten=383,
meldnrstdpldatenwerdenaufbereitet=384;INT VAR fehlermeldnr:=
meldnrauswahlnichtsinnvoll,status,aktdnr;BOOL VAR druckenfertig;LET niltext=
"",blank=" ",null=0,bestandraeume="c02 raeume";LET letztejgstsek1=10,jgst11=
"11",jgst12="12",jgst13="13";PROC merkeartderstdpluebersichtundzeigemaske(
INT CONST art):ausgewaehlteuebersichtsart:=art;SELECT artOF CASE artlehrer:
laengederlistenobjekte:=laengeeinerparaphe;kennung:="P";varspbreite:=
spaltenbreite10;standardvproc(maskennamefuerlehrer)CASE artraeume:
laengederlistenobjekte:=laengeeinesraumes;kennung:="R";varspbreite:=
spaltenbreite10;standardvproc(maskennamefuerraeume)CASE artsek1:
laengederlistenobjekte:=laengeeinersgrp;kennung:="S";varspbreite:=
spaltenbreite8;standardvproc(maskennamefuersek1)CASE artsek2:
laengederlistenobjekte:=laengeeinerjgst;kennung:="L";varspbreite:=
spaltenbreite12;standardvproc(maskennamefuersek2)CASE artzeiten:varspbreite:=
spaltenbreite27;standardvproc(maskennamefuerzeiten)END SELECT ;END PROC
merkeartderstdpluebersichtundzeigemaske;PROC
stdpluebersichtdruckenundggfnaechsteerstellen(BOOL CONST drucken):FILE VAR f;
IF druckenTHEN standardmeldung(meldnrlistewirdausgedruckt,niltext);f:=
sequentialfile(output,druckdatei);drucknachbereiten;ELSE TEXT VAR dateiname:=
niltext;INT VAR index:=0;THESAURUS VAR t:=allLIKE "liste.*";get(t,dateiname,
index);WHILE dateiname<>niltextREP forget(dateiname,quiet);get(t,dateiname,
index)PER ;FI ;IF druckenfertigTHEN enter(2)ELSE IF
ausgewaehlteuebersichtsart=artzeitenTHEN bereitetabellefuerzeitenaufELSE
bereitetabelleninderdruckdateiaufFI ;return(1)FI ;END PROC
stdpluebersichtdruckenundggfnaechsteerstellen;PROC
stdpluebersichterstellenunddruckenggfvorherzeigen:standardmeldung(
meldnrplausi,niltext);IF NOT (maskenwerteok)THEN return(1)ELSE IF NOT (
druckwerteok)THEN fehlermeldnr:=meldnrmaxzeichenueberschritten;
standardmeldung(fehlermeldnr,niltext);return(1)ELSE IF NOT (datenvorhanden)
THEN standardmeldung(fehlermeldnr,niltext);return(1)ELSE IF nurdruckenTHEN
standardmeldung(meldnrbittewarten,niltext)ELSE standardmeldung(
meldnrlistewirdaufgebaut,niltext)FI ;ueberschrift2:=
textanfangfuerschulhalbjahr;ueberschrift2CAT text(sj,2);ueberschrift2CAT
trennerfuerschuljahr;ueberschrift2CAT subtext(sj,3);ueberschrift2CAT
textmittefuerschulhalbjahr;ueberschrift2CAT hj;ueberschrift2CAT
textendefuerschulhalbjahr;initdruckkopf(ueberschrift1,ueberschrift2);
setzemitseitennummern(TRUE );druckenfertig:=FALSE ;ptraktobjekt:=1;IF
ausgewaehlteuebersichtsart=artzeitenTHEN bereitetabellefuerzeitenaufELSE
bereitetabelleninderdruckdateiaufFI ;IF nurdruckenTHEN drucknachbereiten;
WHILE NOT druckenfertigREP IF ausgewaehlteuebersichtsart=artzeitenTHEN
bereitetabellefuerzeitenaufELSE bereitetabelleninderdruckdateiaufFI ;
drucknachbereiten;PER ;enter(1)ELSE zeigedatei(druckdatei,"vr");FI ;FI ;FI ;
FI ;END PROC stdpluebersichterstellenunddruckenggfvorherzeigen;BOOL PROC
maskenwerteok:standardpruefe(5,fnr2geplsj,fnr3aktsj,null,niltext,status);IF
status<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE FI ;sj:=
schulkenndatum("Schuljahr");hj:=schulkenndatum("Schulhalbjahr");IF
standardmaskenfeld(fnr3aktsj)=niltextTHEN geplanteshjundsjberechnen(hj,sj)FI
;stundenplanhalbjahrsetzen(hj,sj);IF ausgewaehlteuebersichtsart<>artzeiten
THEN IF NOT (druckerbildschirmok(fnr12bildschirm,fnr13drucker))THEN LEAVE
maskenwerteokWITH FALSE FI ;standardpruefe(5,fnr4einzeilig,fnr5zweizeilig,
null,niltext,status);IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH
FALSE FI ;zweizeilig:=standardmaskenfeld(fnr4einzeilig)=niltext;IF NOT (
spaltenanzahlok(fnr10spaltenproseite))THEN LEAVE maskenwerteokWITH FALSE FI ;
IF (standardmaskenfeld(fnr11tageproseite))=niltextTHEN anzahltage:=letztertag
+1ELSE standardpruefe(2,fnr11tageproseite,null,null,niltext,status);IF status
=0THEN standardpruefe(3,fnr11tageproseite,erstertag,letztertag,niltext,status
);IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE ELSE
anzahltage:=int(standardmaskenfeld(fnr11tageproseite));FI ;ELSE infeld(status
);LEAVE maskenwerteokWITH FALSE FI ;FI ;IF standardmaskenfeld(fnr8vonstd)=
niltextTHEN vonstd:=erstestdELSE standardpruefe(2,fnr8vonstd,null,null,
niltext,status);IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH
FALSE FI ;standardpruefe(3,fnr8vonstd,erstestd,letztestdmofr,niltext,status);
IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE FI ;vonstd:=int
(standardmaskenfeld(fnr8vonstd))FI ;IF standardmaskenfeld(fnr9bisstd)=niltext
THEN bisstd:=letztestdmofrELSE standardpruefe(2,fnr9bisstd,null,null,niltext,
status);IF status<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE FI ;
standardpruefe(3,fnr9bisstd,erstestd,letztestdmofr,niltext,status);IF status
<>0THEN infeld(status);LEAVE maskenwerteokWITH FALSE FI ;bisstd:=int(
standardmaskenfeld(fnr9bisstd))FI ;IF vonstd>bisstdTHEN infeld(fnr9bisstd);
fehlermeldnr:=meldnrauswahlnichtsinnvoll;standardmeldung(fehlermeldnr,niltext
);LEAVE maskenwerteokWITH FALSE ;FI ;vonobjekt:=standardmaskenfeld(
fnr6vonobjekt);bisobjekt:=standardmaskenfeld(fnr7bisobjekt);ELSE IF NOT (
druckerbildschirmok(fnrz7bildschirm,fnrz8drucker))THEN LEAVE maskenwerteok
WITH FALSE ELSE IF NOT anfangsundendzeitokTHEN standardmeldung(fehlermeldnr,
niltext);LEAVE maskenwerteokWITH FALSE FI ;IF NOT (spaltenanzahlok(
fnrz6anzspalten))THEN LEAVE maskenwerteokWITH FALSE FI ;FI ;FI ;TRUE .
anfangsundendzeitok:TEXT VAR hilfstext;INT VAR tag;hilfstext:=
standardmaskenfeld(fnrz4vonstd);IF hilfstext=niltextTHEN vonstd:=erstestd
ELSE tag:=pos(allewochentagsbezeichnungen,text(hilfstext,2));IF tag=0THEN
fehlermeldnr:=meldnrfalschetagesbez;infeld(fnrz4vonstd);LEAVE
anfangsundendzeitokWITH FALSE FI ;tag:=(tagMOD 12)DIV 2;vonstd:=int(subtext(
hilfstext,3));IF NOT lastconversionokTHEN fehlermeldnr:=
meldnrbittezahlangeben;infeld(fnrz4vonstd);LEAVE anfangsundendzeitokWITH
FALSE FI ;IF vonstd<erstestdCOR (tag<letztertag-1AND vonstd>letztestdmofr)
COR (tag=letztertag-1AND vonstd>letztestdsa)THEN fehlermeldnr:=
meldnrzahlausserhalbdergrenzen;infeld(fnrz4vonstd);LEAVE anfangsundendzeitok
WITH FALSE FI ;vonstd:=vonstd+(tag*letztestdmofr);FI ;hilfstext:=
standardmaskenfeld(fnrz5bisstd);IF hilfstext=niltextTHEN bisstd:=maxanzstdn
ELSE tag:=pos(allewochentagsbezeichnungen,text(hilfstext,2));IF tag=0THEN
fehlermeldnr:=meldnrfalschetagesbez;infeld(fnrz5bisstd);LEAVE
anfangsundendzeitokWITH FALSE FI ;tag:=(tagMOD 12)DIV 2;bisstd:=int(subtext(
hilfstext,3));IF NOT lastconversionokTHEN fehlermeldnr:=
meldnrbittezahlangeben;infeld(fnrz5bisstd);LEAVE anfangsundendzeitokWITH
FALSE FI ;IF bisstd<erstestdCOR (tag<letztertag-1AND bisstd>letztestdmofr)
COR (tag=letztertag-1AND bisstd>letztestdsa)THEN fehlermeldnr:=
meldnrzahlausserhalbdergrenzen;infeld(fnrz4vonstd);LEAVE anfangsundendzeitok
WITH FALSE FI ;bisstd:=bisstd+(tag*letztestdmofr);FI ;IF vonstd>bisstdTHEN
fehlermeldnr:=meldnrfalschestundenfolge;infeld(fnrz4vonstd);LEAVE
anfangsundendzeitokWITH FALSE FI ;TRUE END PROC maskenwerteok;BOOL PROC
druckerbildschirmok(INT CONST fnrbs,fnrdr):BOOL VAR richtig:=FALSE ;
standardpruefe(5,fnrbs,fnrdr,null,niltext,status);IF status<>0THEN infeld(
status);ELSE richtig:=TRUE ;nurdrucken:=standardmaskenfeld(fnrbs)=niltext;FI
;richtigEND PROC druckerbildschirmok;BOOL PROC spaltenanzahlok(INT CONST
fnrspaltenanz):BOOL VAR richtig:=FALSE ;INT VAR spaltenmax,spaltenstandard;
IF ausgewaehlteuebersichtsart=artzeitenTHEN spaltenstandard:=2;spaltenmax:=
maxanzspalten5;ELIF ausgewaehlteuebersichtsart=artsek2THEN spaltenstandard:=4
;spaltenmax:=maxanzspalten1bis4ELSE spaltenstandard:=5;spaltenmax:=
maxanzspalten1bis4FI ;IF standardmaskenfeld(fnrspaltenanz)=niltextTHEN
anzahlspalten:=spaltenstandard;richtig:=TRUE ELSE standardpruefe(2,
fnrspaltenanz,null,null,niltext,status);IF status<>0THEN infeld(status);ELSE
standardpruefe(3,fnrspaltenanz,minanzspalten,spaltenmax,niltext,status);IF
status<>0THEN infeld(status)ELSE anzahlspalten:=int(standardmaskenfeld(
fnrspaltenanz));richtig:=TRUE FI ;FI ;FI ;richtigEND PROC spaltenanzahlok;
BOOL PROC druckwerteok:BOOL VAR richtig;IF ausgewaehlteuebersichtsart=artsek2
THEN richtig:=konstspbreite+1+konstkopplungsbreite+1+(varspbreite+1)*
anzahlspalten<=druckbreiteELSE richtig:=konstspbreite+1+(varspbreite+1)*
anzahlspalten<=druckbreiteFI ;IF NOT richtigTHEN IF
ausgewaehlteuebersichtsart=artzeitenTHEN infeld(fnrz6anzspalten)ELSE infeld(
fnr10spaltenproseite)FI ;FI ;richtigEND PROC druckwerteok;BOOL PROC
datenvorhanden:BOOL VAR richtig:=FALSE ;stundenplanbasisundstundenplanholen(
status);IF status<>0AND status<>8THEN fehlermeldnr:=meldnrkeinestdpldatenda;
infeld(fnr2geplsj);ELSE SELECT ausgewaehlteuebersichtsartOF CASE artlehrer:
aktdnr:=dnrlehrer;IF (datenpruefungok(fnrlparaphe,fnrlfamname))THEN richtig:=
TRUE ;ueberschrift1:=textstdpluebersicht;ueberschrift1CAT textlehrer;FI ;
CASE artraeume:aktdnr:=dnrschluessel;IF (datenpruefungok(fnrschlsachgebiet,
fnrschlschluessel))THEN richtig:=TRUE ;ueberschrift1:=textstdpluebersicht;
ueberschrift1CAT textraeume;FI ;CASE artsek1:aktdnr:=dnraktschuelergruppen;
IF (datenpruefungok(fnrsgrpsj,fnrsgrphj))THEN richtig:=TRUE ;ueberschrift1:=
textstdpluebersicht;ueberschrift1CAT textsek1;FI ;CASE artsek2:IF jgstokTHEN
richtig:=TRUE ;ueberschrift1:=textstdpluebersicht;ueberschrift1CAT textsek2;
FI ;CASE artzeiten:richtig:=TRUE ;ueberschrift1:=textstdpluebersicht;
ueberschrift1CAT textzeiten;END SELECT ;FI ;richtig.jgstok:IF vonobjekt=
niltextTHEN vonobjekt:=jgst11FI ;IF bisobjekt=niltextTHEN bisobjekt:=jgst13
FI ;IF vonobjekt<>jgst11AND vonobjekt<>jgst12AND vonobjekt<>jgst13THEN
fehlermeldnr:=meldnrkeinegueltigejgst;infeld(fnr6vonobjekt);LEAVE jgstokWITH
FALSE FI ;IF bisobjekt<>jgst11AND bisobjekt<>jgst12AND bisobjekt<>jgst13THEN
fehlermeldnr:=meldnrkeinegueltigejgst;infeld(fnr7bisobjekt);LEAVE jgstokWITH
FALSE FI ;IF int(bisobjekt)<int(vonobjekt)THEN fehlermeldnr:=
meldnrauswahlnichtsinnvoll;infeld(fnr6vonobjekt);LEAVE jgstokWITH FALSE FI ;
listeallerobjekte:=vonobjekt;IF vonobjekt=jgst11AND bisobjekt=jgst13THEN
listeallerobjekteCAT jgst12FI ;IF listeallerobjekte<>bisobjektTHEN
listeallerobjekteCAT bisobjektFI ;TRUE END PROC datenvorhanden;BOOL PROC
datenpruefungok(INT CONST erstesfeld,zweitesfeld):TEXT VAR ersterparameter,
zweiterparameter;inittupel(aktdnr);listeallerobjekte:=niltext;IF
ausgewaehlteuebersichtsart=artlehrerTHEN IF records(aktdnr)=0.0THEN
fehlermeldnr:=meldnrkeinelehrerdatenda;infeld(fnr6vonobjekt);LEAVE
datenpruefungokWITH FALSE ;FI ;IF vonobjekt<>niltextTHEN putwert(fnrlparaphe,
vonobjekt);search(aktdnr,TRUE );IF dbstatus<>0THEN fehlermeldnr:=
meldnrungueltigeparaphe;infeld(fnr6vonobjekt);LEAVE datenpruefungokWITH
FALSE ;FI ;FI ;IF bisobjekt<>niltextTHEN putwert(fnrlparaphe,bisobjekt);
search(aktdnr,TRUE );IF dbstatus<>0THEN fehlermeldnr:=meldnrungueltigeparaphe
;infeld(fnr7bisobjekt);LEAVE datenpruefungokWITH FALSE ;FI ;FI ;
ersterparameter:=vonobjekt;zweiterparameter:=niltext;inittupel(aktdnr);ELIF
ausgewaehlteuebersichtsart=artraeumeTHEN ersterparameter:=bestandraeume;
zweiterparameter:=vonobjekt;putwert(fnrschlsachgebiet,ersterparameter);
putwert(fnrschlschluessel,zweiterparameter);search(dnrschluessel,FALSE );IF
dbstatus<>0OR wert(fnrschlsachgebiet)<>bestandraeumeTHEN IF vonobjekt=niltext
THEN fehlermeldnr:=meldnrkeineraumdatenda;ELSE fehlermeldnr:=
meldnrfalscheraumangabe;FI ;infeld(fnr6vonobjekt);LEAVE datenpruefungokWITH
FALSE FI ;IF vonobjekt<>niltextTHEN search(dnrschluessel,TRUE );IF dbstatus<>
0THEN fehlermeldnr:=meldnrfalscheraumangabe;infeld(fnr6vonobjekt);LEAVE
datenpruefungokWITH FALSE FI ;FI ;IF bisobjekt<>niltextTHEN putwert(
fnrschlschluessel,bisobjekt);search(dnrschluessel,TRUE );IF dbstatus<>0THEN
fehlermeldnr:=meldnrfalscheraumangabe;infeld(fnr7bisobjekt);LEAVE
datenpruefungokWITH FALSE FI ;FI ;inittupel(aktdnr);ELSE ersterparameter:=sj;
zweiterparameter:=hj;putwert(fnrsgrpsj,ersterparameter);putwert(fnrsgrphj,
zweiterparameter);search(dnrschluessel,FALSE );IF dbstatus<>0OR wert(
fnrsgrphj)<>hjTHEN infeld(fnr6vonobjekt);fehlermeldnr:=meldnrkeinehjdatenda;
LEAVE datenpruefungokWITH FALSE FI ;IF vonobjekt<>niltextTHEN sek1kennungvon
:=subtext(vonobjekt,3,6);sek1jgstvon:=int(subtext(vonobjekt,1,2));IF NOT (
lastconversionok)THEN infeld(fnr6vonobjekt);fehlermeldnr:=
meldnrkeinegueltigejgst;LEAVE datenpruefungokWITH FALSE FI ;FI ;IF bisobjekt
<>niltextTHEN sek1kennungbis:=subtext(bisobjekt,3,6);sek1jgstbis:=int(subtext
(bisobjekt,1,2));IF NOT lastconversionokCOR sek1jgstvon<5COR sek1jgstvon>11
COR sek1jgstbis<5COR sek1jgstbis>11THEN infeld(fnr7bisobjekt);fehlermeldnr:=
meldnrkeinegueltigejgst;LEAVE datenpruefungokWITH FALSE ELSE putintwert(
fnrsgrpjgst,sek1jgstvon);putwert(fnrsgrpkennung,sek1kennungvon);IF
sek1jgstvon>sek1jgstbisTHEN infeld(fnr6vonobjekt);fehlermeldnr:=
meldnrzahlausserhalbdergrenzen;LEAVE datenpruefungokWITH FALSE FI ;IF
sek1jgstvon=sek1jgstbisTHEN IF sek1kennungvon>sek1kennungbisTHEN infeld(
fnr6vonobjekt);fehlermeldnr:=meldnralphabetischefolge;LEAVE datenpruefungok
WITH FALSE FI ;FI ;IF sek1jgstbis<>10THEN bisobjekt:="0"+text(sek1jgstbis)+
sek1kennungbis;FI ;IF sek1jgstvon<>10THEN vonobjekt:="0"+text(sek1jgstvon)+
sek1kennungvon;FI ;FI ;FI ;FI ;IF vonanfangbisendeTHEN statleseschleife(
aktdnr,ersterparameter,zweiterparameter,erstesfeld,zweitesfeld,PROC dateiende
);ELIF vonanfangbiswertTHEN IF NOT bezeichnungzulaessig(kennung,bisobjekt)
THEN infeld(fnr7bisobjekt);fehlermeldnr:=meldnrungueltigeeingabe;
standardmeldung(fehlermeldnr,niltext);LEAVE datenpruefungokWITH FALSE ELSE
statleseschleife(aktdnr,ersterparameter,zweiterparameter,erstesfeld,
zweitesfeld,PROC endewert);FI ;ELIF vonwertbisendeTHEN IF NOT
bezeichnungzulaessig(kennung,vonobjekt)THEN infeld(fnr6vonobjekt);
fehlermeldnr:=meldnrungueltigeeingabe;standardmeldung(fehlermeldnr,niltext);
LEAVE datenpruefungokWITH FALSE ELSE statleseschleife(aktdnr,ersterparameter,
zweiterparameter,erstesfeld,zweitesfeld,PROC dateiende);FI ;ELIF
vonwertbiswertTHEN IF NOT bezeichnungzulaessig(kennung,vonobjekt)THEN infeld(
fnr6vonobjekt);fehlermeldnr:=meldnrungueltigeeingabe;standardmeldung(
fehlermeldnr,niltext);LEAVE datenpruefungokWITH FALSE ELSE IF NOT
bezeichnungzulaessig(kennung,bisobjekt)THEN infeld(fnr7bisobjekt);
fehlermeldnr:=meldnrungueltigeeingabe;standardmeldung(fehlermeldnr,niltext);
LEAVE datenpruefungokWITH FALSE ELSE IF vonobjekt>bisobjektTHEN infeld(
fnr7bisobjekt);fehlermeldnr:=meldnralphabetischefolge;standardmeldung(
fehlermeldnr,niltext);LEAVE datenpruefungokWITH FALSE ELSE statleseschleife(
aktdnr,ersterparameter,zweiterparameter,erstesfeld,zweitesfeld,PROC endewert)
;FI ;FI ;FI ;ELSE statleseschleife(aktdnr,ersterparameter,zweiterparameter,
erstesfeld,zweitesfeld,PROC endewert);FI ;TRUE .vonanfangbisende:vonobjekt=
niltextAND bisobjekt=niltext.vonanfangbiswert:vonobjekt=niltextAND bisobjekt
<>niltext.vonwertbisende:vonobjekt<>niltextAND bisobjekt=niltext.
vonwertbiswert:vonobjekt<>niltextAND bisobjekt<>niltextEND PROC
datenpruefungok;PROC endewert(BOOL VAR letzter):IF ausgewaehlteuebersichtsart
=artlehrerTHEN IF dbstatus=0AND wert(fnrlparaphe)<=bisobjektTHEN
listeallerobjekteCAT text(wert(fnrlparaphe),laengederlistenobjekte)ELSE
letzter:=TRUE ;FI ;ELIF ausgewaehlteuebersichtsart=artraeumeTHEN IF dbstatus=
0AND wert(fnrschlsachgebiet)=bestandraeumeAND bisobjekt>=wert(
fnrschlschluessel)THEN listeallerobjekteCAT text(wert(fnrschlschluessel),
laengederlistenobjekte)ELSE letzter:=TRUE ;FI ;ELSE IF dbstatus=0AND wert(
fnrsgrpsj)=sjAND wert(fnrsgrphj)=hjAND (sek1jgstbis>intwert(fnrsgrpjgst)OR (
sek1jgstbis=intwert(fnrsgrpjgst)AND sek1kennungbis>=wert(fnrsgrpkennung)))
THEN listeallerobjekteCAT text(wert(fnrsgrpjgst),2);listeallerobjekteCAT text
(wert(fnrsgrpkennung),4);ELSE letzter:=TRUE ;FI ;FI ;END PROC endewert;PROC
dateiende(BOOL VAR ende):IF ausgewaehlteuebersichtsart=artlehrerTHEN IF
dbstatus=0THEN listeallerobjekteCAT text(wert(fnrlparaphe),
laengederlistenobjekte)ELSE ende:=TRUE FI ;ELIF ausgewaehlteuebersichtsart=
artraeumeTHEN IF dbstatus=0AND wert(fnrschlsachgebiet)=bestandraeumeTHEN
listeallerobjekteCAT text(wert(fnrschlschluessel),laengederlistenobjekte);
ELSE ende:=TRUE FI ;ELSE IF dbstatus=0AND wert(fnrsgrpsj)=sjAND wert(
fnrsgrphj)=hjAND letztejgstsek1>=intwert(fnrsgrpjgst)THEN listeallerobjekte
CAT text(wert(fnrsgrpjgst),2);listeallerobjekteCAT text(wert(fnrsgrpkennung),
4);ELSE ende:=TRUE ;FI ;FI ;END PROC dateiende;PROC drucketrennstrich:TEXT
VAR t:=konstspbreite*trennstrichzeichen;tCAT spaltentrennerimstrich;IF
ausgewaehlteuebersichtsart=artsek2THEN tCAT konstkopplungsbreite*
trennstrichzeichen;tCAT spaltentrennerimstrich;FI ;tCAT anzahlspalten*(
varspbreite*trennstrichzeichen+spaltentrennerimstrich);druckzeileschreiben(t)
END PROC drucketrennstrich;PROC druckespaltenueberschriften(ROW maxanzspalten
TEXT CONST spaltenueberschrift):TEXT VAR t:=textzeiterstespalte;INT VAR i;IF
ausgewaehlteuebersichtsart=artsek2THEN tCAT spaltenueberschrift[1];tCAT
spaltenueberschrift[2]ELSE FOR iFROM 1UPTO anzahlspaltenREP tCAT text(
spaltenueberschrift[i],varspbreite);tCAT spaltentrennerPER FI ;tCAT blank;
druckzeileschreiben(t)END PROC druckespaltenueberschriften;PROC
bereitetabelleninderdruckdateiauf:TEXT VAR jgstbez,lvsderjgst,aktlv,aktkopplg
,lvsprozeit,kopplgnprozeit,kopplgundlvs;INT VAR ptraktlv;INT VAR position,
anfpos,endpos;INT VAR zeilenzaehler,aktstd,spaltenzaehler,stundenzaehler,
tagzaehler,tabellenzaehler;TEXT VAR t,t1,lv,rm,par;BOOL VAR
erstezeilederstunde,stundenochnichtfertig;ROW maxanzspaltenTEXT VAR
spaltenueberschrift,zusatzangabe;druckvorbereiten;FOR tabellenzaehlerFROM 1
UPTO maxtabzahljedruckdateiREP bestimmespaltenueberschriften;IF
ausgewaehlteuebersichtsart<>artsek2THEN standardmeldung(meldnrinbearbeitung,
spaltenueberschrift(1)+"#");FI ;zeilenzaehler:=zeilebeianfangneueseite;
druckkopfschreiben;druckespaltenueberschriften(spaltenueberschrift);
drucketrennstrich;FOR tagzaehlerFROM erstertagUPTO letztertagREP IF
tagzaehler=letztertagTHEN aktstd:=min(bisstd,letztestdsa)ELSE aktstd:=bisstd
FI ;FOR stundenzaehlerFROM vonstdUPTO aktstdREP bereitezeileneinerstundeauf
PER ;IF zeilenzaehler>zeilebeianfangneueseiteTHEN drucketrennstrich;
zeilenzaehlerINCR 1;evtlseitenumbruchwgueberlaenge;FI ;
evtlseitenumbruchwgtageszahljeseite;PER ;IF zeilenzaehler>
zeilebeianfangneueseiteTHEN seitenwechsel;zeilenzaehler:=
zeilebeianfangneueseite;FI ;PER ;druckenfertig:=ptraktobjekt>length(
listeallerobjekte).bestimmespaltenueberschriften:IF
ausgewaehlteuebersichtsart=artsek2THEN IF ptraktobjekt>length(
listeallerobjekte)THEN druckenfertig:=TRUE ;LEAVE
bereitetabelleninderdruckdateiaufFI ;jgstbez:=subtext(listeallerobjekte,
ptraktobjekt,ptraktobjekt+laengederlistenobjekte-1);lvsderjgst:=
lvderschuelergruppe(jgstbez);spaltenueberschrift[1]:=
ueberschriftspalte2beiart4;spaltenueberschrift[2]:=ueberschriftspalte3beiart4
;initdruckkopf(ueberschrift1+blank+jgstbez,ueberschrift2);ptraktobjektINCR
laengederlistenobjekte;ELSE spaltenzaehler:=0;WHILE (spaltenzaehler<
anzahlspalten)AND (ptraktobjekt<=length(listeallerobjekte))REP spaltenzaehler
INCR 1;spaltenueberschrift[spaltenzaehler]:=subtext(listeallerobjekte,
ptraktobjekt,ptraktobjekt+laengederlistenobjekte-1);ptraktobjektINCR
laengederlistenobjekte;PER ;IF spaltenzaehler=0THEN druckenfertig:=TRUE ;
LEAVE bereitetabelleninderdruckdateiaufFI ;anzahlspalten:=spaltenzaehlerFI .
bereitezeileneinerstundeauf:erstezeilederstunde:=TRUE ;stundenochnichtfertig
:=TRUE ;WHILE stundenochnichtfertigREP IF erstezeilederstundeTHEN IF
stundenzaehler=vonstdTHEN SELECT tagzaehlerOF CASE 1:t:=textmontag;CASE 2:t:=
textdienstag;CASE 3:t:=textmittwoch;CASE 4:t:=textdonnerstag;CASE 5:t:=
textfreitag;CASE 6:t:=textsamstag;END SELECT ;tag:=t;ELSE t:=textkeintagFI ;t
CAT blank;tCAT text(stundenzaehler,2);tCAT blank;tCAT spaltentrenner;ELSE t:=
leereerstespalte;FI ;IF ausgewaehlteuebersichtsart=artsek2THEN IF
erstezeilederstundeTHEN anfpos:=1;endpos:=8;lvsprozeit:=datenderzeit((
tagzaehler-1)*letztestdmofr+stundenzaehler,"L");kopplgnprozeit:=datenderzeit(
(tagzaehler-1)*letztestdmofr+stundenzaehler,"K");position:=0;WHILE endpos<=
length(lvsderjgst)AND positionMOD 8<>1REP aktlv:=subtext(lvsderjgst,anfpos,
endpos);position:=pos(lvsprozeit,aktlv);anfposINCR 8;endposINCR 8PER ;IF
position<>0THEN aktkopplg:=subtext(kopplgnprozeit,position,position+7);
kopplgundlvs:=aktkopplg;anfpos:=1;endpos:=8;position:=pos(kopplgnprozeit,
aktkopplg);WHILE endpos<=length(kopplgnprozeit)AND position<>0REP IF position
MOD 8=1THEN aktlv:=subtext(lvsprozeit,position,position+7);IF pos(
kopplgundlvs,aktlv)=0THEN kopplgundlvsCAT aktlvFI ;anfposINCR 8;endposINCR 8;
FI ;position:=pos(kopplgnprozeit,aktkopplg,position+1);PER ;ELSE kopplgundlvs
:=niltextFI ;tCAT text(text(kopplgundlvs,laengeeinerkopplung),
konstkopplungsbreite);ptraktlv:=laengeeinerkopplung+1;ELSE tCAT
konstkopplungsbreite*blankFI ;tCAT spaltentrenner;standardmeldung(
meldnrinbearbeitung,"Jahrgangsstufe: "+jgstbez+" Wochentag: "+tag+"#");FI ;
aktstd:=(tagzaehler-1)*letztestdmofr+stundenzaehler;FOR spaltenzaehlerFROM 1
UPTO anzahlspaltenREP IF ausgewaehlteuebersichtsart=artsek2THEN IF ptraktlv<=
length(kopplgundlvs)THEN lv:=subtext(kopplgundlvs,ptraktlv,ptraktlv+
laengeeinerlv-1);ptraktlvINCR laengeeinerlv;planeintraglesen(aktstd,kennung,
lv,lv,rm,par);rm:=8*blank+rm;t1:=subtext(lv,anfposfachinlv,endeposfachinlv);
t1CAT blank;t1CAT subtext(lv,anfposkennunginlv);t1CAT trennstrichfuerlv;t1
CAT par;ELSE t1:=niltext;par:=niltext;rm:=niltext;FI ;ELSE planeintraglesen(
aktstd,kennung,spaltenueberschrift[spaltenzaehler],lv,rm,par);IF lv=niltext
THEN t1:=niltextELSE IF ausgewaehlteuebersichtsart=artsek1THEN IF length(lv)>
laengeeinerlvTHEN lv:=text(lv,laengeeinerlv);t1:=datenzurlv("K",lv);rm:=
niltext;ELSE t1:=blank;t1CAT subtext(lv,anfposfachinlv,endeposfachinlv);t1
CAT blank;t1CAT par;FI ;rm:=4*blank+rmELSE t1:=text(lv,endeposjgstinlv);t1
CAT blank;t1CAT subtext(lv,anfposfachinlv,endeposfachinlv);t1CAT blank;t1CAT
subtext(lv,anfposkennunginlv);FI ;FI ;FI ;tCAT text(t1,varspbreite);tCAT
spaltentrenner;IF zweizeiligTHEN IF ausgewaehlteuebersichtsart=artraeumeTHEN
zusatzangabe[spaltenzaehler]:=parELSE zusatzangabe[spaltenzaehler]:=rmFI ;
zusatzangabe[spaltenzaehler]:=text(zusatzangabe[spaltenzaehler],varspbreite);
FI ;PER ;druckzeileschreiben(t);zeilenzaehlerINCR 1;IF zeilenzaehler=
drucklaenge(ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler:=
zeilebeianfangneueseite;IF zweizeiligCOR tagzaehler<letztertagCOR
stundenzaehler<min(bisstd,letztestdsa)COR (ausgewaehlteuebersichtsart=artsek2
AND ptraktlv<=length(kopplgundlvs))THEN druckkopfschreiben;
druckespaltenueberschriften(spaltenueberschrift);drucketrennstrich;FI ;FI ;
IF zweizeiligTHEN t:=leereerstespalte;IF ausgewaehlteuebersichtsart=artsek2
THEN tCAT konstkopplungsbreite*blank;tCAT spaltentrenner;FI ;FOR
spaltenzaehlerFROM 1UPTO anzahlspaltenREP tCAT zusatzangabe[spaltenzaehler];t
CAT spaltentrenner;PER ;druckzeileschreiben(t);zeilenzaehlerINCR 1;IF
zeilenzaehler=drucklaenge(ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler
:=zeilebeianfangneueseite;IF tagzaehler<letztertagCOR stundenzaehler<min(
bisstd,letztestdsa)COR (ausgewaehlteuebersichtsart=artsek2AND ptraktlv<=
length(kopplgundlvs))THEN druckkopfschreiben;druckespaltenueberschriften(
spaltenueberschrift);drucketrennstrich;FI ;FI ;FI ;IF
ausgewaehlteuebersichtsart=artsek2THEN stundenochnichtfertig:=ptraktlv<=
length(kopplgundlvs)ELSE stundenochnichtfertig:=FALSE FI ;erstezeilederstunde
:=FALSE ;PER .evtlseitenumbruchwgueberlaenge:IF zeilenzaehler=drucklaenge(
ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler:=zeilebeianfangneueseite;
IF tagzaehler<letztertagTHEN druckkopfschreiben;druckespaltenueberschriften(
spaltenueberschrift);drucketrennstrich;FI ;FI .
evtlseitenumbruchwgtageszahljeseite:IF tagzaehlerMOD anzahltage=0AND
zeilenzaehler>zeilebeianfangneueseiteTHEN seitenwechsel;zeilenzaehler:=
zeilebeianfangneueseite;IF tagzaehler<letztertagTHEN druckkopfschreiben;
druckespaltenueberschriften(spaltenueberschrift);drucketrennstrich;FI ;FI .
END PROC bereitetabelleninderdruckdateiauf;PROC bereitetabellefuerzeitenauf:
BOOL VAR erstezeilederstunde:=TRUE ;TEXT VAR stringkopplungen,stringparaphen,
stringraeume;INT VAR ptraktkopplung,ptraktparaphe,ptraktraum;ROW
maxanzspaltenTEXT VAR spaltenueberschrift;INT VAR zeilenzaehler,
stundenzaehler,spaltenzaehler;TEXT VAR t;bestimmespaltenueberschriften;
druckvorbereiten;druckkopfschreiben;druckespaltenueberschriften(
spaltenueberschrift);drucketrennstrich;zeilenzaehler:=zeilebeianfangneueseite
;FOR stundenzaehlerFROM vonstdUPTO bisstdREP IF stundenzaehler=vonstdOR
stundenzaehlerMOD letztestdmofr=1THEN SELECT (stundenzaehler-1)DIV
letztestdmofrOF CASE 0:tag:=textmontag;CASE 1:tag:=textdienstag;CASE 2:tag:=
textmittwoch;CASE 3:tag:=textdonnerstag;CASE 4:tag:=textfreitag;CASE 5:tag:=
textsamstag;END SELECT ;standardmeldung(meldnrinbearbeitung,"Wochentag : "+
tag+"#");FI ;bereitezeileneinerstundeauf;evtltrennstrichdrucken;PER ;
druckenfertig:=TRUE ;.bestimmespaltenueberschriften:FOR spaltenzaehlerFROM 1
UPTO anzahlspaltenREP spaltenueberschrift[spaltenzaehler]:=
ueberschriftbeiart5;PER ;.evtltrennstrichdrucken:IF (stundenzaehlerMOD
letztestdmofr=0OR stundenzaehler=bisstd)AND zeilenzaehler>
zeilebeianfangneueseiteTHEN drucketrennstrich;zeilenzaehlerINCR 1;IF
zeilenzaehler=drucklaenge(ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler
:=zeilebeianfangneueseite;IF stundenzaehler<bisstdTHEN druckkopfschreiben;
druckespaltenueberschriften(spaltenueberschrift);drucketrennstrich;FI ;FI FI
;.bereitezeileneinerstundeauf:listeallerobjekte:=datenderzeit(stundenzaehler,
"L");ptraktobjekt:=1;stringkopplungen:=datenderzeit(stundenzaehler,"K");
ptraktkopplung:=1;stringparaphen:=datenderzeit(stundenzaehler,"P");
ptraktparaphe:=1;stringraeume:=datenderzeit(stundenzaehler,"R");ptraktraum:=1
;erstezeilederstunde:=TRUE ;WHILE ptraktobjekt<=length(listeallerobjekte)OR
erstezeilederstundeREP IF erstezeilederstundeOR zeilenzaehler=
zeilebeianfangneueseiteTHEN t:=tag;tCAT blank;tCAT text((stundenzaehler-1)
MOD letztestdmofr+1,2);tCAT blank;tCAT spaltentrenner;erstezeilederstunde:=
FALSE ELSE t:=leereerstespalteFI ;FOR spaltenzaehlerFROM 1UPTO anzahlspalten
REP IF ptraktobjekt>length(listeallerobjekte)THEN tCAT konstkopplungsbreite*
blank;tCAT trennstrichfuerlv;tCAT 4*blank;tCAT trennstrichfuerlv;tCAT 4*blank
;tCAT trennstrichfuerlv;tCAT konstkopplungsbreite*blank;tCAT spaltentrenner;
ELSE tCAT subtext(listeallerobjekte,ptraktobjekt,ptraktobjekt+laengeeinerlv-1
);tCAT trennstrichfuerlv;ptraktobjektINCR laengeeinerlv;tCAT subtext(
stringraeume,ptraktraum,ptraktraum+laengeeinesraumes-1);tCAT
trennstrichfuerlv;ptraktraumINCR laengeeinesraumes;tCAT subtext(
stringparaphen,ptraktparaphe,ptraktparaphe+laengeeinerparaphe-1);tCAT
trennstrichfuerlv;ptraktparapheINCR laengeeinerparaphe;tCAT subtext(
stringkopplungen,ptraktkopplung,ptraktkopplung+laengeeinerkopplung-1);tCAT
spaltentrenner;ptraktkopplungINCR laengeeinerkopplung;FI ;PER ;
druckzeileschreiben(t);zeilenzaehlerINCR 1;evtlseitenumbruchwgueberlaenge;
PER .evtlseitenumbruchwgueberlaenge:IF zeilenzaehler=drucklaenge(
ueberschriftenzahl)THEN seitenwechsel;zeilenzaehler:=zeilebeianfangneueseite;
IF stundenzaehler<bisstdCOR listeallerobjekte<>niltextTHEN druckkopfschreiben
;druckespaltenueberschriften(spaltenueberschrift);drucketrennstrich;FI ;FI ;.
END PROC bereitetabellefuerzeitenauf;END PACKET stdpluebersichten;
|