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
|
PACKET vertretungenorganisierenDEFINES vertretungenorgbearbeiten,
vertretungenorgvertretungsdatenlisten,vertretungenorginlisteblaettern,
vertretungenorgspeichern,vertretungenorglvauflisten,
vertretungenorglvauflisteneinlesen,vertretungenorginlvlisteblaettern,
vertretungenorgangekreuztebearbeiten:LET maskebearb=
"ms vertretungen organisieren",maskeliste="mu objektliste";LET fnrsuchparaphe
=2,fnrstartdatum=3,fnrstartstunde=4,fnrendedatum=5,fnrendestunde=6,fnrparaphe
=2,fnranrechnungart=3,fnrvertretdatum=4,fnrvertrettag=5,fnrvertretstd=6,
fnrvertretlv=7,fnrvertretparaphe=8,fnrtabellenanfang=9;LET
meldnrlistewirdaufbereitet=7,meldnrbittefuellen=52,
meldnrungueltigerschluessel=55,meldnrletzterbehandelt=67,meldnrbittewarten=69
,meldnrblaetternnichtmoeglich=72,meldnrspeicherungunmoeglich=73,
meldnrzulangevertretungsdauer=157,meldnrdatenwerdengespeichert=301,
meldnrdatenwerdennichtgespeichert=303,meldnrungueltigeparaphe=344,
meldnrstundenplanfehlt=366,meldnrparapheschonzugeteilt=361,
meldnrzweitesdatumkleiner=386,meldnrkeinunterrichtzurzeit=395;LET schuljahr=
"Schuljahr",schulhalbjahr="Schulhalbjahr";LET sachgebietanrechnungskennz=
"c02 anrechnung vertret";LET kennzhell="#";LET kennzfreistunde="f",ankreuzung
="x",fehlanzeige="-",lehrerbelegt="1",trenner="�";LET erstestunde=1,
letztestunde=66,samstagstd=6,stundenprotag=12;LET kennungparaphe="P",
kennunglv="L";LET laengesugruppe=6,laengeparaphe=4,laengelv=8;LET
logbucheintrag="Anw. 4.6.1 Vertretungen eingegeben oder geändert";INT VAR
pruefstatus:=0;INT VAR ifnr;TEXT VAR gueltigeanrechnungskennz:="",
gueltigeparaphen:="";TEXT VAR paraphe,gespeicherteparaphe,startdatum,
startstunde,endedatum,endestunde,aktschuljahr:="",akthalbjahr:="";TEXT VAR
auszeile;TEXT VAR liste:="";TEXT VAR lv,letztebehandeltelv:="",
vertretungsdatum,hinweisfreistunde,hinweisvorherfrei,hinweisnachherfrei,
hinweislehrerinsugruppe,hinweislehrbefaehigung,hinweislehrbefart;INT VAR std,
dauer,erstevertretstd,letztevertretstd,idatum;INT VAR ivertret,maxvertret,
erstevertretaufbildschirm;LET maxvertretaufbildschirm=14;FILE VAR fvertret;
LET namevertretdatei="Liste der Vertretungsmöglichkeiten";INT VAR ilv,maxlv;
ROW letztestundeSTRUCT (INT datum,INT std,TEXT lv)VAR vertret;ROW
letztestundeBOOL VAR listenankreuzung;INT VAR erstelvinliste;INT VAR izeile;
LET maxlistenzeile=18,erstesfeldinliste=2,felderprozeileinliste=2;TEXT VAR
zeitendeslehrers,paraphenzursugruppe,allelvdersugruppe,lehrerderzeitvorher,
lehrerderzeit,lehrerderzeitnachher,freielehrerderzeit,lehrerdesfachs,
lehrbefartdesfachs,sugruppe,sugruppen,zuletztbehandeltesugruppen:="";TEXT
VAR fundlv,fundraum,fundparaphe,suchfach,zuletztbehandeltesfach:="";INT VAR
poslv,posparaphe,posfachlehrer,possugruppe;BOOL VAR vertretungliegtvor,
bearbeitungueberobjektliste;INT VAR fstatusstuplan;PROC
vertretungenorgbearbeiten:eingangspruefung;IF pruefstatus<>0THEN infeld(
pruefstatus);return(1)ELSE standardmeldung(meldnrbittewarten,"");
vertretungsorganisationvorbereiten;IF zuvertretendelvvorhandenTHEN
standardstartproc(maskebearb);bearbeitungueberobjektliste:=FALSE ;
zeigebsmitvertretungsmoeglichkeiten;standardnprocELSE standardmeldung(
meldnrkeinunterrichtzurzeit,"");infeld(fnrstartdatum);return(1)FI FI .
zuvertretendelvvorhanden:ilv<=maxlv.END PROC vertretungenorgbearbeiten;PROC
vertretungsorganisationvorbereiten:zeitendeslehrers:=allezeitenvon(
kennungparaphe,paraphe);idatum:=datum(startdatum);erstevertretstd:=stundezu(
startdatum,startstunde);letztevertretstd:=stundezu(endedatum,endestunde);ilv
:=0;IF erstevertretstd>letztevertretstdTHEN FOR stdFROM erstevertretstdUPTO
letztestundeREP IF (zeitendeslehrersSUB std)=lehrerbelegtTHEN
planeintraglesen(std,kennungparaphe,paraphe,fundlv,fundraum,fundparaphe);ilv
INCR 1;vertret(ilv).datum:=idatum;vertret(ilv).std:=std;vertret(ilv).lv:=
fundlv;FI ;IF (stdMOD stundenprotag)=0THEN idatumINCR 1FI PER ;idatumINCR 2;
erstevertretstd:=erstestunde;FI ;std:=erstevertretstd;WHILE std<=
letztevertretstdREP IF (zeitendeslehrersSUB std)=lehrerbelegtTHEN
planeintraglesen(std,kennungparaphe,paraphe,fundlv,fundraum,fundparaphe);ilv
INCR 1;vertret(ilv).datum:=idatum;vertret(ilv).std:=std;vertret(ilv).lv:=
fundlv;FI ;IF (stdMOD stundenprotag)=0THEN idatumINCR 1FI ;stdINCR 1PER ;
maxlv:=ilv;ilv:=1END PROC vertretungsorganisationvorbereiten;PROC
zeigebsmitvertretungsmoeglichkeiten:lv:=vertret(ilv).lv;std:=vertret(ilv).std
;idatum:=vertret(ilv).datum;vertretungsdatum:=datum(idatum);
standardmaskenfeld(vertretungsdatum,fnrvertretdatum);standardmaskenfeld(
namedestags(tagnummer(vertretungsdatum)),fnrvertrettag);standardmaskenfeld(
stundennummer(std),fnrvertretstd);standardmaskenfeld(lv,fnrvertretlv);
standardmaskenfeld(text(paraphe,laengeparaphe),fnrvertretparaphe);
holemoeglichevertretungenzulv;vertretungliegtvor:=FALSE ;inittupel(
dnrvertretungen);putwert(fnrvdatum,vertretungsdatum);putintwert(fnrvtagstd,
std);search(dnrvertretungen,FALSE );WHILE dbstatus=0AND wert(fnrvdatum)=
vertretungsdatumAND intwert(fnrvtagstd)=stdREP IF compress(wert(
fnrvveranstaltung))=compress(lv)THEN vertretungliegtvor:=TRUE ;
standardmaskenfeld(wert(fnrvparaphe),fnrparaphe);standardmaskenfeld(wert(
fnrvanrechnung),fnranrechnungart);FI ;succ(dnrvertretungen);UNTIL
vertretungliegtvorPER ;IF NOT vertretungliegtvorTHEN standardmaskenfeld("",
fnrparaphe);standardmaskenfeld("",fnranrechnungart);FI ;gespeicherteparaphe:=
standardmaskenfeld(fnrparaphe);infeld(1);standardfelderausgeben;infeld(
fnrparaphe).END PROC zeigebsmitvertretungsmoeglichkeiten;PROC
holemoeglichevertretungenzulv:moeglichevertretungsdatenzusammenstellen;
vertretungsdatenzeigen(1).moeglichevertretungsdatenzusammenstellen:ivertret:=
0;forget(namevertretdatei,quiet);fvertret:=sequentialfile(output,
namevertretdatei);IF (stdMOD stundenprotag)=0THEN lehrerderzeitnachher:="";
lehrerderzeitvorher:=datenderzeit(std-1,kennungparaphe)ELIF (stdMOD
stundenprotag)=1THEN lehrerderzeitvorher:="";lehrerderzeitnachher:=
datenderzeit(std+1,kennungparaphe)ELSE lehrerderzeitvorher:=datenderzeit(std-
1,kennungparaphe);lehrerderzeitnachher:=datenderzeit(std+1,kennungparaphe)FI
;IF lv<>letztebehandeltelvTHEN letztebehandeltelv:=lv;sugruppen:=
beteiligteschuelergruppen(kennunglv,lv);IF sugruppen<>
zuletztbehandeltesugruppenTHEN zuletztbehandeltesugruppen:=sugruppen;
bestimmedieparaphenzursugruppeFI FI ;freielehrerderzeit:="";
holeallelehrerdesfachs;inittupel(dnrvertretungen);putwert(fnrvdatum,
vertretungsdatum);putintwert(fnrvtagstd,std);search(dnrvertretungen,FALSE );
WHILE dbstatus=0AND wert(fnrvdatum)=vertretungsdatumAND intwert(fnrvtagstd)=
stdREP IF wert(fnrvanrechnung)=kennzfreistundeTHEN fundparaphe:=wert(
fnrvparaphe);hinweisfreistunde:=ankreuzung;
weiterehinweisezugefundenerparaphesetzen;
ausgabezeilezugefundenerparapheindateischreibenFI ;succ(dnrvertretungen);PER
;lehrerderzeit:=datenderzeit(std,kennungparaphe);posparaphe:=1;WHILE
posparaphe<length(gueltigeparaphen)REP fundparaphe:=subtext(gueltigeparaphen,
posparaphe,posparaphe+laengeparaphe-1);IF suchpos(lehrerderzeit,fundparaphe,
laengeparaphe)=0THEN hinweisfreistunde:=fehlanzeige;
weiterehinweisezugefundenerparaphesetzen;
ausgabezeilezugefundenerparapheindateischreibenFI ;posparapheINCR
laengeparaphePER ;maxvertret:=ivertret.bestimmedieparaphenzursugruppe:
allelvdersugruppe:="";possugruppe:=1;WHILE possugruppe<length(sugruppen)REP
sugruppe:=subtext(sugruppen,possugruppe,possugruppe+laengesugruppe-1);
allelvdersugruppeCAT lvderschuelergruppe(sugruppe);possugruppeINCR
laengesugruppePER ;paraphenzursugruppe:="";poslv:=1;WHILE poslv<length(
allelvdersugruppe)REP fundlv:=subtext(allelvdersugruppe,poslv,poslv+laengelv-
1);paraphenzursugruppeCAT datenzurlv(kennungparaphe,fundlv);poslvINCR
laengelvPER END PROC holemoeglichevertretungenzulv;PROC
holeallelehrerdesfachs:suchfach:=compress(subtext(lv,3,4));IF suchfach<>
zuletztbehandeltesfachTHEN zuletztbehandeltesfach:=suchfach;
holeallelehrerdesfachsganzneuFI .holeallelehrerdesfachsganzneu:lehrerdesfachs
:="";lehrbefartdesfachs:="";dbstatus(0);inittupel(dnrlehrbefaehigungen);
statleseschleife(dnrlehrbefaehigungen,suchfach,suchfach,fnrlbfach,fnrlbfach,
PROC lehrbefaehigunglesen);inittupel(dnrfaecher);putwert(fnrffach,suchfach);
search(dnrfaecher,TRUE );IF dbstatus=0AND wert(fnrffachgrp)<>""THEN suchfach
:=wert(fnrffachgrp);inittupel(dnrlehrbefaehigungen);statleseschleife(
dnrlehrbefaehigungen,suchfach,suchfach,fnrlbfach,fnrlbfach,PROC
lehrbefaehigunglesen);FI ;END PROC holeallelehrerdesfachs;PROC
lehrbefaehigunglesen(BOOL VAR b):IF dbstatus<>0OR suchfach<>wert(fnrlbfach)
THEN b:=TRUE ELSE lehrerdesfachsCAT text(wert(fnrlbparaphe),laengeparaphe);
lehrbefartdesfachsCAT text(wert(fnrlbart),1)FI END PROC lehrbefaehigunglesen;
PROC weiterehinweisezugefundenerparaphesetzen:IF suchpos(lehrerderzeitvorher,
fundparaphe,laengeparaphe)>0THEN hinweisvorherfrei:=ankreuzungELSE
hinweisvorherfrei:=fehlanzeigeFI ;IF suchpos(lehrerderzeitnachher,fundparaphe
,laengeparaphe)>0THEN hinweisnachherfrei:=ankreuzungELSE hinweisnachherfrei:=
fehlanzeigeFI ;IF suchpos(paraphenzursugruppe,fundparaphe,laengeparaphe)>0
THEN hinweislehrerinsugruppe:=ankreuzungELSE hinweislehrerinsugruppe:=
fehlanzeigeFI ;posfachlehrer:=suchpos(lehrerdesfachs,fundparaphe,
laengeparaphe);IF posfachlehrer>0THEN hinweislehrbefaehigung:=ankreuzung;
hinweislehrbefart:=lehrbefartdeslehrersELSE hinweislehrbefaehigung:=
fehlanzeige;hinweislehrbefart:=" "FI .lehrbefartdeslehrers:lehrbefartdesfachs
SUB ((posfachlehrerDIV laengeparaphe)+1).END PROC
weiterehinweisezugefundenerparaphesetzen;PROC
ausgabezeilezugefundenerparapheindateischreiben:auszeile:=text(fundparaphe,
laengeparaphe);freielehrerderzeitCAT auszeile;auszeileCAT hinweisfreistunde;
auszeileCAT hinweisvorherfrei;auszeileCAT hinweisnachherfrei;auszeileCAT
hinweislehrerinsugruppe;auszeileCAT hinweislehrbefaehigung;auszeileCAT
hinweislehrbefart;putline(fvertret,auszeile);ivertretINCR 1END PROC
ausgabezeilezugefundenerparapheindateischreiben;PROC vertretungsdatenzeigen(
INT CONST abzeile):fvertret:=sequentialfile(modify,namevertretdatei);
erstevertretaufbildschirm:=abzeile;toline(fvertret,abzeile);col(fvertret,1);
ivertret:=1;ifnr:=fnrtabellenanfang;WHILE ivertret<=maxvertretaufbildschirm
REP IF NOT eof(fvertret)THEN readrecord(fvertret,auszeile);standardmaskenfeld
(auszeile,ifnr);down(fvertret)ELSE standardmaskenfeld(" ",ifnr)FI ;
ifnrINCR 1;ivertretINCR 1PER ;END PROC vertretungsdatenzeigen;PROC
vertretungenorgvertretungsdatenlisten:WINDOW VAR w:=startwindow(37,24,77,7);
fundparaphe:=standardmaskenfeld(fnrparaphe);IF parapheungueltigTHEN
standardmeldung(meldnrungueltigeparaphe,"");return(1)ELSE standardmeldung(
meldnrlistewirdaufbereitet,"");bereitelistenausgabeauf;IF menuedraussenTHEN
reorganizescreenFI ;open(w);auskunfterteilung(liste,w,FALSE );
reorganizescreen;setlasteditvalues;infeld(1);standardfelderausgeben;infeld(
fnrparaphe);return(1)FI .bereitelistenausgabeauf:liste:=
"Vertretungsdaten zu Paraphe ";listeCAT fundparaphe;listeCAT
auskunftstextende;listeCAT "Datum Zeit Art Lehrveranst.";listeCAT
auskunftstextende;inittupel(dnrvertretungen);dbstatus(0);statleseschleife(
ixvpar,fundparaphe,fundparaphe,fnrvparaphe,fnrvparaphe,PROC
vertretdatenzuparapheaufbereiten);listeCAT "*";listeCAT auskunftstextende.
END PROC vertretungenorgvertretungsdatenlisten;PROC
vertretdatenzuparapheaufbereiten(BOOL VAR b):IF dbstatus=0AND wert(
fnrvparaphe)=fundparapheTHEN listeCAT wert(fnrvdatum);listeCAT " ";listeCAT
namedestags(tagnummer(wert(fnrvdatum)));listeCAT " ";listeCAT stundennummer(
intwert(fnrvtagstd));listeCAT ". ";listeCAT text(wert(fnrvanrechnung),2);
listeCAT " ";listeCAT lvaufbereitet;listeCAT auskunftstextendeELSE b:=TRUE
FI .lvaufbereitet:fundlv:=wert(fnrvveranstaltung);subtext(fundlv,1,2)+" "+
subtext(fundlv,3,4)+" "+subtext(fundlv,5,8).END PROC
vertretdatenzuparapheaufbereiten;PROC vertretungenorginlisteblaettern(BOOL
CONST vor):IF vorTHEN IF erstevertretaufbildschirm+maxvertretaufbildschirm>
maxvertretTHEN standardmeldung(meldnrblaetternnichtmoeglich,"")ELSE
vertretungsdatenzeigen(erstevertretaufbildschirm+maxvertretaufbildschirm)FI
ELSE IF erstevertretaufbildschirm=1THEN standardmeldung(
meldnrblaetternnichtmoeglich,"")ELSE vertretungsdatenzeigen(
erstevertretaufbildschirm-maxvertretaufbildschirm)FI FI ;return(1)END PROC
vertretungenorginlisteblaettern;PROC vertretungenorgspeichern(BOOL CONST
speichern):IF speichernTHEN fundparaphe:=standardmaskenfeld(fnrparaphe);IF
plausifehlerTHEN return(1)ELSE vertretungwieangegebenspeichern;logeintrag(
logbucheintrag);IF dbstatus<>0THEN standardmeldung(
meldnrspeicherungunmoeglich,"");return(1)ELSE naechstelvzeigenoderzurueckFI
FI ELSE standardmeldung(meldnrdatenwerdennichtgespeichert,"");
naechstelvzeigenoderzurueckFI .plausifehler:IF fundparaphe=""THEN
standardmeldung(meldnrbittefuellen,"");infeld(fnrparaphe);TRUE ELIF
parapheungueltigTHEN standardmeldung(meldnrungueltigeparaphe,"");infeld(
fnrparaphe);TRUE ELIF suchpos(freielehrerderzeit,fundparaphe,laengeparaphe)=0
THEN standardmeldung(meldnrparapheschonzugeteilt,fundparaphe+kennzhell);
infeld(fnrparaphe);TRUE ELIF standardmaskenfeld(fnranrechnungart)=
kennzfreistundeTHEN standardmeldung(meldnrungueltigerschluessel,"");infeld(
fnranrechnungart);TRUE ELIF ungueltigesanrechnungskennz(standardmaskenfeld(
fnranrechnungart))THEN standardmeldung(meldnrungueltigerschluessel,"");infeld
(fnranrechnungart);TRUE ELIF vertretungkannsonichtgespeichertwerdenTHEN
standardmeldung(meldnrparapheschonzugeteilt,fundparaphe+kennzhell);infeld(
fnrparaphe);TRUE ELSE FALSE FI .vertretungkannsonichtgespeichertwerden:
inittupel(dnrvertretungen);putwert(fnrvdatum,vertretungsdatum);putintwert(
fnrvtagstd,std);putwert(fnrvparaphe,fundparaphe);search(dnrvertretungen,TRUE
);IF dbstatus<>0THEN FALSE ELIF wert(fnrvanrechnung)=kennzfreistundeTHEN
delete(dnrvertretungen);FALSE ELIF wert(fnrvveranstaltung)=compress(lv)THEN
FALSE ELSE TRUE FI .vertretungwieangegebenspeichern:standardmeldung(
meldnrdatenwerdengespeichert,"");putwert(fnrvdatum,vertretungsdatum);
putintwert(fnrvtagstd,std);IF gespeicherteparaphe=""THEN putwert(fnrvparaphe,
fundparaphe);putwert(fnrvanrechnung,standardmaskenfeld(fnranrechnungart));
putwert(fnrvveranstaltung,compress(lv));insert(dnrvertretungen)ELSE putwert(
fnrvparaphe,gespeicherteparaphe);search(dnrvertretungen,TRUE );IF dbstatus=0
THEN putwert(fnrvparaphe,fundparaphe);putwert(fnrvanrechnung,
standardmaskenfeld(fnranrechnungart));putwert(fnrvveranstaltung,compress(lv))
;update(dnrvertretungen)FI FI .naechstelvzeigenoderzurueck:IF
bearbeitungueberobjektlisteTHEN naechsteangekreuztelvsetzenELSE ilvINCR 1FI ;
IF ilv>maxlvTHEN standardmeldung(meldnrletzterbehandelt,"");IF
bearbeitungueberobjektlisteTHEN enter(3)ELSE enter(2)FI ELSE
zeigebsmitvertretungsmoeglichkeiten;return(1)FI .naechsteangekreuztelvsetzen:
ilvINCR 1;WHILE NOT listenankreuzung(ilv)REP ilvINCR 1UNTIL ilv>maxlvPER .
END PROC vertretungenorgspeichern;PROC vertretungenorglvauflisten:
eingangspruefung;IF pruefstatus<>0THEN infeld(pruefstatus);return(1)ELSE
vertretungsorganisationvorbereiten;IF zuvertretendelvvorhandenTHEN
bearbeitungueberobjektliste:=TRUE ;standardstartproc(maskeliste);
standardmeldung(meldnrbittewarten,"");initlistenankreuzung;erstelvinliste:=1;
zeigelvinliste;vertretungenorglvauflisteneinlesenELSE standardmeldung(
meldnrkeinunterrichtzurzeit,"");infeld(fnrstartdatum);return(1)FI FI .
zuvertretendelvvorhanden:ilv<=maxlv.initlistenankreuzung:FOR ilvFROM 1UPTO
letztestundeREP listenankreuzung(ilv):=FALSE PER .END PROC
vertretungenorglvauflisten;PROC zeigelvinliste:ifnr:=erstesfeldinliste;ilv:=
erstelvinliste;FOR izeileFROM 1UPTO maxlistenzeileREP IF ilv>maxlvTHEN
zeigeleerzeileELSE zeigelvzeile;ilvINCR 1FI ;ifnrINCR felderprozeileinliste
PER ;infeld(1);standardfelderausgeben;infeld(erstesfeldinliste);.
zeigeleerzeile:feldschutz(ifnr);standardmaskenfeld("",ifnr);
standardmaskenfeld(" ",ifnr+1).zeigelvzeile:feldfrei(ifnr);IF
listenankreuzung(ilv)THEN standardmaskenfeld(ankreuzung,ifnr)ELSE
standardmaskenfeld("",ifnr)FI ;auszeilezusammenbauen;standardmaskenfeld(
auszeile,ifnr+1).auszeilezusammenbauen:auszeile:=datum(vertret(ilv).datum);
auszeileCAT " ";auszeileCAT namedestags(tagnummer(datum(vertret(ilv).datum))
);auszeileCAT " ";auszeileCAT stundennummer(vertret(ilv).std);auszeileCAT
". ";auszeileCAT " ";auszeileCAT lvaufbereitet.lvaufbereitet:fundlv:=
vertret(ilv).lv;subtext(fundlv,1,2)+" "+subtext(fundlv,3,4)+" "+subtext(
fundlv,5,8).END PROC zeigelvinliste;PROC vertretungenorglvauflisteneinlesen:
infeld(erstesfeldinliste);standardnproc;ilv:=erstelvinliste;ifnr:=
erstesfeldinliste;FOR izeileFROM 1UPTO maxlistenzeileREP IF ilv<=maxlvTHEN
IF standardmaskenfeld(ifnr)<>""THEN listenankreuzung(ilv):=TRUE ELSE
listenankreuzung(ilv):=FALSE FI ;ilvINCR 1FI ;ifnrINCR felderprozeileinliste
PER END PROC vertretungenorglvauflisteneinlesen;PROC
vertretungenorginlvlisteblaettern(BOOL CONST vor):IF vorTHEN IF
erstelvinliste+maxlistenzeile>maxlvTHEN standardmeldung(
meldnrblaetternnichtmoeglich,"")ELSE erstelvinlisteINCR maxlistenzeile;
zeigelvinlisteFI ;return(1)ELSE IF erstelvinliste=1THEN standardmeldung(
meldnrblaetternnichtmoeglich,"")ELSE erstelvinlisteDECR maxlistenzeile;
zeigelvinlisteFI ;return(1)FI END PROC vertretungenorginlvlisteblaettern;
PROC vertretungenorgangekreuztebearbeiten:ilv:=1;WHILE NOT listenankreuzung(
ilv)REP ilvINCR 1UNTIL ilv>maxlvPER ;IF ilv>maxlvTHEN standardmeldung(
meldnrletzterbehandelt,"");enter(2)ELSE standardstartproc(maskebearb);
zeigebsmitvertretungsmoeglichkeiten;standardnprocFI END PROC
vertretungenorgangekreuztebearbeiten;PROC eingangspruefung:IF aktschuljahr=""
THEN aktschuljahr:=schulkenndatum(schuljahr);akthalbjahr:=schulkenndatum(
schulhalbjahr)FI ;stundenplanhalbjahrsetzen(akthalbjahr,aktschuljahr);
stundenplanbasisundstundenplanholen(fstatusstuplan);IF fstatusstuplan<>0AND
fstatusstuplan<>8THEN standardmeldung(meldnrstundenplanfehlt,"");pruefstatus
:=fnrsuchparaphe;LEAVE eingangspruefungFI ;standardpruefe(1,fnrsuchparaphe,0,
0,"",pruefstatus);IF pruefstatus<>0THEN LEAVE eingangspruefungELSE
fundparaphe:=standardmaskenfeld(fnrsuchparaphe);IF gueltigeparaphen=""THEN
holegueltigeparaphenFI ;IF parapheungueltigTHEN standardmeldung(
meldnrungueltigeparaphe,"");pruefstatus:=fnrsuchparaphe;LEAVE
eingangspruefungELSE paraphe:=fundparapheFI ;standardpruefe(6,fnrstartdatum,0
,0,"",pruefstatus);IF pruefstatus<>0THEN LEAVE eingangspruefungELSE
startdatum:=standardmaskenfeld(fnrstartdatum)FI ;INT VAR ug,og,wochentagnr;
standardpruefe(2,fnrstartstunde,0,0,"",pruefstatus);IF pruefstatus<>0THEN
LEAVE eingangspruefungELSE wochentagnr:=tagnummer(startdatum);IF wochentagnr=
6THEN og:=samstagstdELSE og:=stundenprotagFI ;ug:=erstestunde;standardpruefe(
3,fnrstartstunde,ug,og,"",pruefstatus);IF pruefstatus<>0THEN LEAVE
eingangspruefungELSE startstunde:=standardmaskenfeld(fnrstartstunde)FI FI ;
endedatum:=standardmaskenfeld(fnrendedatum);endestunde:=standardmaskenfeld(
fnrendestunde);IF endedatum=""THEN endedatum:=startdatum;IF endestunde=""
THEN endestunde:=startstunde;LEAVE eingangspruefungELSE standardpruefe(2,
fnrendestunde,0,0,"",pruefstatus);IF pruefstatus<>0THEN LEAVE
eingangspruefungELIF wochentagnr=6THEN og:=samstagstdELSE og:=stundenprotag
FI ;ug:=int(startstunde);standardpruefe(3,fnrendestunde,ug,og,"",pruefstatus)
;IF pruefstatus<>0THEN LEAVE eingangspruefungFI FI ;ELSE standardpruefe(6,
fnrendedatum,0,0,"",pruefstatus);IF pruefstatus<>0THEN LEAVE eingangspruefung
FI ;standardpruefe(2,fnrendestunde,0,0,"",pruefstatus);IF pruefstatus<>0THEN
LEAVE eingangspruefungELSE wochentagnr:=tagnummer(endedatum);IF wochentagnr=6
THEN og:=samstagstdELSE og:=stundenprotagFI ;ug:=erstestunde;standardpruefe(3
,fnrendestunde,ug,og,"",pruefstatus);IF pruefstatus<>0THEN LEAVE
eingangspruefungFI ;FI ;dauer:=datum(endedatum)-datum(startdatum);pruefstatus
:=fnrendedatum;IF dauer<0THEN standardmeldung(meldnrzweitesdatumkleiner,"");
LEAVE eingangspruefungELIF dauer=0THEN IF int(endestunde)<int(startstunde)
THEN standardmeldung(meldnrzweitesdatumkleiner,"");LEAVE eingangspruefungFI
ELIF dauer>7THEN standardmeldung(meldnrzulangevertretungsdauer,"");LEAVE
eingangspruefungELIF dauer>6THEN IF int(endestunde)>=int(startstunde)THEN
standardmeldung(meldnrzulangevertretungsdauer,"");LEAVE eingangspruefungFI
FI ;pruefstatus:=0;FI ;FI ;END PROC eingangspruefung;BOOL PROC
parapheungueltig:suchpos(gueltigeparaphen,fundparaphe,laengeparaphe)=0END
PROC parapheungueltig;PROC holegueltigeparaphen:gueltigeparaphen:="";
inittupel(dnrlehrer);statleseschleife(dnrlehrer,"","",fnrlparaphe,fnrlparaphe
,PROC paraphelesen)END PROC holegueltigeparaphen;PROC paraphelesen(BOOL VAR b
):IF dbstatus<>0THEN b:=TRUE ELSE gueltigeparaphenCAT text(wert(fnrlparaphe),
laengeparaphe)FI END PROC paraphelesen;BOOL PROC ungueltigesanrechnungskennz(
TEXT CONST kennz):IF gueltigeanrechnungskennz=""THEN
holegueltigeanrechnungskennzFI ;pos(gueltigeanrechnungskennz,trenner+kennz+
trenner)=0END PROC ungueltigesanrechnungskennz;PROC
holegueltigeanrechnungskennz:gueltigeanrechnungskennz:=trenner;inittupel(
dnrschluessel);statleseschleife(dnrschluessel,sachgebietanrechnungskennz,"",
fnrschlsachgebiet,fnrschlschluessel,PROC anrechnungskennzlesen)END PROC
holegueltigeanrechnungskennz;PROC anrechnungskennzlesen(BOOL VAR b):IF
dbstatus<>0COR wert(fnrschlsachgebiet)<>sachgebietanrechnungskennzTHEN b:=
TRUE ELSE gueltigeanrechnungskennzCAT wert(fnrschlschluessel);
gueltigeanrechnungskennzCAT trennerFI END PROC anrechnungskennzlesen;INT
PROC suchpos(TEXT CONST quelle,suchtext,INT CONST laenge):INT VAR findpos:=
pos(quelle,suchtext);WHILE findpos>0REP IF findposMOD laenge=1THEN LEAVE
suchposWITH findposELSE findpos:=pos(quelle,suchtext,findpos+1);FI PER ;
findposEND PROC suchpos;TEXT PROC jgstzweistellig(INT CONST intjgst):IF
intjgst=0THEN "00"ELIF intjgst>4AND intjgst<10THEN "0"+text(intjgst)ELSE text
(intjgst)FI END PROC jgstzweistellig;INT PROC tagnummer(TEXT CONST
datumsangabe):(datum(datumsangabe)+5)MOD 7END PROC tagnummer;TEXT PROC
namedestags(INT CONST tagesnummer):SELECT tagesnummerOF CASE 0:"So"CASE 1:
"Mo"CASE 2:"Di"CASE 3:"Mi"CASE 4:"Do"CASE 5:"Fr"CASE 6:"Sa"OTHERWISE ""END
SELECT .END PROC namedestags;TEXT PROC stundennummer(INT CONST istd):IF (istd
MOD stundenprotag)=0THEN text(stundenprotag)ELSE text(istdMOD stundenprotag,2
)FI END PROC stundennummer;INT PROC stundezu(TEXT CONST angtag,angstd):(
tagnummer(angtag)-1)*stundenprotag+int(angstd)END PROC stundezu;END PACKET
vertretungenorganisieren
|