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
|
PACKET vertretungsdatenbearbeitenDEFINES vertretungsdatenbearbeiteneingang,
vertretungsdatenbearbeitenstart,vertretungsdatenentfernenstart,
vertretungsdatenentfernen,vertretungsdatenzeileeinfuegen,
vertretungsdatenspeichern:LET maskeeingang=
"ms vertretungsdaten bearbeiten eingang";LET maskebearb=
"ms vertretungsdaten bearbeiten";LET fnrauswahlparaphe=2,fnrstartparaphe=3,
fnrauswahldatum=4,fnrstartdatum=5,fnrauswahlentfernen=6,fnrentfernendatum=7;
LET feldanzmaskeeingang=7;ROW feldanzmaskeeingangTEXT VAR feldbs1;LET
felderprozeile=6;LET ersteseingabefeld=2;LET erstestabellenfeld=2;LET
meldnrungueltigerschluessel=55,meldnrungueltigeauswahl=56,
meldnrplausiwirdgeprueft=57,meldnrloeschen=61,meldnrnichtloeschen=62,
meldnrloeschfrage=65,meldnrloeschenmitdatum=83,meldnrvertretunggibtsschon=88,
meldnrdatumfehltzurestangaben=129,meldnrungueltigesdatum=157,
meldnrdatenwerdengespeichert=301,meldnrdatenwerdennichtgespeichert=303,
meldnrletztezeilenichteinfuegen=314,meldnrfalschetastezuankreuz=318,
meldnrfalscheausfuellung=319,meldnrungueltigeparaphe=344;LET
sachgebietanrechnungskennz="c02 anrechnung vertret";LET kennzhell="#";LET
erstesdatum="01.01.00",erstestunde=1,samstagstd=6,stundenprotag=12;LET
trenner="�",punkt=".";LET logbucheintrag=
"Anw. 4.6.2 Vertretungen eingegeben oder geändert";INT VAR zugriff;BOOL VAR
eingangsmaskenfehler:=FALSE ;INT VAR pruefstatus:=0,letztecursorfnr:=
fnrauswahlparaphe;INT VAR aktzeile;INT VAR ifnr;TEXT VAR startparaphe,
startdatum,entfernendatum;TEXT VAR nfparaphe,nfdatum,nftagstd;TEXT VAR
gueltigeanrechnungskennz:="",gueltigeparaphen:="";INT VAR izeile,
anzahlgezeigtezeilen,anzahleingegebenezeilen;LET zeilenanzahl=18;ROW
zeilenanzahlSTRUCT (TEXT datum,TEXT tag,TEXT stunde,TEXT paraphe,TEXT art,
TEXT lv,TEXT tagstd)VAR bszeile;BOOL VAR leerenbszeigen;
initfelderdeseingangsbildschirms;initbszeilepuffer;PROC
vertretungsdatenbearbeiteneingang:standardstartproc(maskeeingang);
wertedeseingangsbildschirmsholen;infeld(fnrauswahlparaphe);
standardfelderausgeben;infeld(letztecursorfnr);standardnprocEND PROC
vertretungsdatenbearbeiteneingang;PROC vertretungsdatenbearbeitenstart:
eingangsbehandlung(1);IF eingangsmaskenfehlerTHEN infeld(pruefstatus);return(
1)ELSE wertedeseingangsbildschirmsmerken;zugriffaufvertretungsdatenbestimmen;
erstensatzlesen;standardstartproc(maskebearb);bsfuellen;infeld(
ersteseingabefeld);standardnprocFI .zugriffaufvertretungsdatenbestimmen:IF
standardmaskenfeld(fnrauswahlparaphe)=""THEN zugriff:=dnrvertretungenELSE
zugriff:=ixvparFI .erstensatzlesen:inittupel(dnrvertretungen);IF zugriff=
ixvparTHEN putwert(fnrvparaphe,startparaphe)ELSE putwert(fnrvdatum,startdatum
)FI ;search(zugriff,FALSE );leerenbszeigen:=dbstatus<>ok;IF dbstatus=0THEN
IF zugriff=dnrvertretungenTHEN IF startdatum<>erstesdatumAND startdatum<>wert
(fnrvdatum)THEN pred(zugriff)FI ELIF zugriff=ixvparTHEN IF startparaphe<>""
AND startparaphe<>wert(fnrvparaphe)THEN pred(zugriff)FI FI FI .END PROC
vertretungsdatenbearbeitenstart;PROC bsfuellen:izeile:=0;IF NOT
leerenbszeigenTHEN startebildschirmblock(zugriff,zeilenanzahl-1);
bildschirmblock(PROC satzmerken,BOOL PROC (INT CONST )satzzubehandeln,0);IF
dbstatus=0THEN succ(zugriff);IF dbstatus<>0THEN inittupel(dnrvertretungen);
FI ELSE inittupel(dnrvertretungen);FI ;merkesatzalsnachfolgerELSE nfdatum:=
erstesdatumFI ;evtlleerzeilenhinzufuegen;
werteausbszeileinstandardfeldersetzen;infeld(1);standardfelderausgeben;.
evtlleerzeilenhinzufuegen:anzahlgezeigtezeilen:=izeile;WHILE izeile<
zeilenanzahlREP izeileINCR 1;bszeile(izeile).datum:="";bszeile(izeile).tag:=
" ";bszeile(izeile).stunde:="";bszeile(izeile).paraphe:="";bszeile(izeile).
art:="";bszeile(izeile).lv:="";bszeile(izeile).tagstd:="";PER .
werteausbszeileinstandardfeldersetzen:ifnr:=erstestabellenfeld;FOR izeile
FROM 1UPTO zeilenanzahlREP standardmaskenfeld(bszeile(izeile).datum,ifnr);
standardmaskenfeld(bszeile(izeile).tag,ifnr+1);standardmaskenfeld(bszeile(
izeile).stunde,ifnr+2);standardmaskenfeld(bszeile(izeile).paraphe,ifnr+3);
standardmaskenfeld(bszeile(izeile).art,ifnr+4);standardmaskenfeld(bszeile(
izeile).lv,ifnr+5);ifnrINCR felderprozeilePER .merkesatzalsnachfolger:nfdatum
:=wert(fnrvdatum);nftagstd:=wert(fnrvtagstd);nfparaphe:=wert(fnrvparaphe).
END PROC bsfuellen;BOOL PROC satzzubehandeln(INT CONST dummynr):IF NOT (
izeile<zeilenanzahlCAND dbstatus=ok)THEN LEAVE satzzubehandelnWITH FALSE FI ;
TRUE .END PROC satzzubehandeln;PROC satzmerken:izeileINCR 1;bszeile(izeile).
datum:=ausgabedatum;bszeile(izeile).tag:=namedestags(tagnummer(wert(fnrvdatum
)));bszeile(izeile).stunde:=text(ausgabestd);bszeile(izeile).paraphe:=wert(
fnrvparaphe);bszeile(izeile).art:=wert(fnrvanrechnung);bszeile(izeile).lv:=
wert(fnrvveranstaltung);bszeile(izeile).tagstd:=wert(fnrvtagstd).ausgabedatum
:subtext(wert(fnrvdatum),1,2)+subtext(wert(fnrvdatum),4,5)+subtext(wert(
fnrvdatum),7,8).ausgabestd:INT VAR ausgabezeit:=intwert(fnrvtagstd)MOD
stundenprotag;IF ausgabezeit=0THEN stundenprotagELSE ausgabezeitFI .END PROC
satzmerken;PROC vertretungsdatenentfernenstart:eingangsbehandlung(2);IF
eingangsmaskenfehlerTHEN infeld(pruefstatus);return(1)ELSE
wertedeseingangsbildschirmsmerken;FOR ifnrFROM fnrauswahlparapheUPTO
fnrstartdatumREP feldschutz(ifnr)PER ;feldschutz(fnrentfernendatum);infeld(
fnrauswahlentfernen);standardmeldung(meldnrloeschfrage,"");standardnprocFI
END PROC vertretungsdatenentfernenstart;PROC vertretungsdatenentfernen(BOOL
CONST entfernen):IF entfernenTHEN standardmeldung(meldnrloeschen,"");
entfernendervertretungsdatenvornehmenELSE standardmeldung(meldnrnichtloeschen
,"")FI ;enter(2).entfernendervertretungsdatenvornehmen:TEXT VAR
gelesenesdatum,datuminmeldung:="";INT VAR stichdatum:=datum(entfernendatum);
first(dnrvertretungen);gelesenesdatum:=wert(fnrvdatum);WHILE dbstatus=0CAND
datum(gelesenesdatum)<stichdatumREP delete(dnrvertretungen);IF gelesenesdatum
<>datuminmeldungTHEN datuminmeldung:=gelesenesdatum;standardmeldung(
meldnrloeschenmitdatum,datuminmeldung+kennzhell)FI ;succ(dnrvertretungen);
gelesenesdatum:=wert(fnrvdatum)PER END PROC vertretungsdatenentfernen;PROC
vertretungsdatenzeileeinfuegen(BOOL CONST einfuegen):INT VAR erstefnr;IF
einfuegenTHEN zeileeinfuegenELSE zeileloeschenFI ;return(1).zeileeinfuegen:
aktzeile:=bearbeitungszeilezufeld(infeld);IF aktzeile=zeilenanzahlTHEN
standardmeldung(meldnrletztezeilenichteinfuegen,"");LEAVE zeileeinfuegenFI ;
IF bszeile(zeilenanzahl).datum<>""THEN merkeverdraengtensatzalsnachfolgesatz;
anzahlgezeigtezeilen:=zeilenanzahlFI ;FOR izeileFROM zeilenanzahl-1DOWNTO
aktzeile+1REP zeileiminternenpufferverschieben;
wertederzeileaufdembildschirmverschiebenPER ;izeile:=aktzeile+1;
leerzeileschreiben;werteineingefuegterzeilevermerken;neuezeilenausgeben.
merkeverdraengtensatzalsnachfolgesatz:startdatum:=bszeile(zeilenanzahl).datum
;nfdatum:=subtext(startdatum,1,2)+punkt+subtext(startdatum,3,4)+punkt+subtext
(startdatum,5,6);nfparaphe:=bszeile(zeilenanzahl).paraphe;nftagstd:=bszeile(
zeilenanzahl).tagstd.zeileiminternenpufferverschieben:bszeile(izeile+1).datum
:=bszeile(izeile).datum;bszeile(izeile+1).tag:=bszeile(izeile).tag;bszeile(
izeile+1).stunde:=bszeile(izeile).stunde;bszeile(izeile+1).paraphe:=bszeile(
izeile).paraphe;bszeile(izeile+1).art:=bszeile(izeile).art;bszeile(izeile+1).
lv:=bszeile(izeile).lv;bszeile(izeile+1).tagstd:=bszeile(izeile).tagstd;.
wertederzeileaufdembildschirmverschieben:FOR ifnrFROM erstesfeldderzeileUPTO
letztesfeldderzeileREP standardmaskenfeld(standardmaskenfeld(ifnr),ifnr+
felderprozeile)PER .erstesfeldderzeile:(izeile-1)*felderprozeile+
erstestabellenfeld.letztesfeldderzeile:erstesfeldderzeile+felderprozeile-1.
werteineingefuegterzeilevermerken:bszeile(izeile).datum:="";bszeile(izeile).
tag:=" ";bszeile(izeile).stunde:="";bszeile(izeile).paraphe:="";bszeile(
izeile).art:="";bszeile(izeile).lv:="";bszeile(izeile).tagstd:="";.
zeileloeschen:izeile:=bearbeitungszeilezufeld(infeld);leerzeileschreiben;
neuezeilenausgeben.leerzeileschreiben:erstefnr:=erstesfeldderzeile;
standardmaskenfeld("",erstefnr);standardmaskenfeld(" ",erstefnr+1);FOR ifnr
FROM erstefnr+2UPTO letztesfeldderzeileREP standardmaskenfeld("",ifnr)PER .
neuezeilenausgeben:infeld(erstefnr);standardfelderausgeben;infeld(erstefnr).
END PROC vertretungsdatenzeileeinfuegen;INT PROC bearbeitungszeilezufeld(INT
CONST feldnr):((feldnr-erstestabellenfeld)DIV felderprozeile)+1END PROC
bearbeitungszeilezufeld;PROC vertretungsdatenspeichern(BOOL CONST speichern):
IF speichernTHEN standardmeldung(meldnrplausiwirdgeprueft,"");plausipruefung
ELSE pruefstatus:=0FI ;IF pruefstatus<>0THEN infeld(pruefstatus);return(1)
ELSE datenspeichern(speichern);IF nachfolgesatzvorhandenTHEN
holewertedesnachfolgersatzes;search(dnrvertretungen,TRUE );IF dbstatus<>0
THEN search(dnrvertretungen,FALSE )FI ;izeile:=0;IF satzzubehandeln(izeile)
THEN changeindex;leerenbszeigen:=FALSE ;naechstenbildschirmzeigenELSE enter(2
)FI ELIF letzteeingabezeilegefuelltTHEN leerenbszeigen:=TRUE ;
naechstenbildschirmzeigenELSE enter(2)FI ;FI .nachfolgesatzvorhanden:nfdatum
<>erstesdatum.letzteeingabezeilegefuellt:standardmaskenfeld((zeilenanzahl-1)*
felderprozeile+ersteseingabefeld)<>"".holewertedesnachfolgersatzes:putwert(
fnrvdatum,nfdatum);putwert(fnrvtagstd,nftagstd);putwert(fnrvparaphe,nfparaphe
).naechstenbildschirmzeigen:bsfuellen;infeld(ersteseingabefeld);return(1).
END PROC vertretungsdatenspeichern;PROC datenspeichern(BOOL CONST speichern):
IF speichernTHEN standardmeldung(meldnrdatenwerdengespeichert,"");
datenspeicherungdurchfuehrenELSE standardmeldung(
meldnrdatenwerdennichtgespeichert,"")FI END PROC datenspeichern;PROC
datenspeicherungdurchfuehren:FOR izeileFROM 1UPTO zeilenanzahlREP
holevergleichswerte;IF vertretungseintragloeschenTHEN aenderungszeileanzeigen
;altevertretungloeschenELIF vertretungseintrageinfuegenTHEN
aenderungszeileanzeigen;neuevertretungeinfuegenELIF
vertretungseintragueberschreibenTHEN aenderungszeileanzeigen;
altevertretungupdateFI PER ;logeintrag(logbucheintrag).holevergleichswerte:
INT VAR prueffnr:=datumfnrin(izeile);TEXT VAR pruefdatum:=standardmaskenfeld(
prueffnr);TEXT VAR altesdatum:=bszeile(izeile).datum.
vertretungseintragloeschen:pruefdatum=""CAND altesdatum<>"".
altevertretungloeschen:setzealtesuchwerteindbpuffer;search(dnrvertretungen,
TRUE );IF dbstatus=0THEN delete(dnrvertretungen)FI .
vertretungseintrageinfuegen:pruefdatum<>""CAND altesdatum="".
neuevertretungeinfuegen:setzeneuewerteindbpuffer;insert(dnrvertretungen).
vertretungseintragueberschreiben:NOT (standardmaskenfeld(prueffnr)=bszeile(
izeile).datumCAND standardmaskenfeld(prueffnr+2)=bszeile(izeile).stundeCAND
standardmaskenfeld(prueffnr+3)=bszeile(izeile).parapheCAND standardmaskenfeld
(prueffnr+4)=bszeile(izeile).artCAND standardmaskenfeld(prueffnr+5)=bszeile(
izeile).lv).altevertretungupdate:setzealtesuchwerteindbpuffer;search(
dnrvertretungen,TRUE );setzeneuewerteindbpuffer;update(dnrvertretungen).
setzealtesuchwerteindbpuffer:pruefdatum:=bszeile(izeile).datum;pruefdatum:=
subtext(pruefdatum,1,2)+punkt+subtext(pruefdatum,3,4)+punkt+subtext(
pruefdatum,5,6);putwert(fnrvdatum,pruefdatum);putwert(fnrvtagstd,bszeile(
izeile).tagstd);putwert(fnrvparaphe,bszeile(izeile).paraphe).
setzeneuewerteindbpuffer:pruefdatum:=standardmaskenfeld(prueffnr);pruefdatum
:=subtext(pruefdatum,1,2)+punkt+subtext(pruefdatum,3,4)+punkt+subtext(
pruefdatum,5,6);putwert(fnrvdatum,pruefdatum);putintwert(fnrvtagstd,
wochenstunde);putwert(fnrvparaphe,standardmaskenfeld(prueffnr+3));putwert(
fnrvanrechnung,standardmaskenfeld(prueffnr+4));putwert(fnrvveranstaltung,
standardmaskenfeld(prueffnr+5));.wochenstunde:(tagnummer(pruefdatum)-1)*
stundenprotag+int(standardmaskenfeld(prueffnr+2)).END PROC
datenspeicherungdurchfuehren;PROC aenderungszeileanzeigen:infeld((izeile-1)*
felderprozeile+ersteseingabefeld)END PROC aenderungszeileanzeigen;INT PROC
datumfnrin(INT CONST zeilennr):(zeilennr-1)*felderprozeile+ersteseingabefeld
END PROC datumfnrin;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;PROC eingangsbehandlung(INT CONST art):LET bearbeiten=1,entfernen
=2;reinitparsing;eingangsmaskenfehler:=FALSE ;ankreuzfelderpruefen;IF
mehralseineauswahlangekreuztTHEN standardmeldung(meldnrungueltigeauswahl,"");
pruefstatus:=fnrauswahlparaphe;eingangsmaskenfehler:=TRUE ;LEAVE
eingangsbehandlungFI ;IF entfernenpruefungTHEN IF ankreuz1THEN ankreuzfehler(
fnrauswahlparaphe);LEAVE eingangsbehandlungELIF ankreuz2THEN ankreuzfehler(
fnrauswahldatum);LEAVE eingangsbehandlungFI ELIF bearbeitenpruefungTHEN IF
ankreuz3THEN ankreuzfehler(fnrauswahlentfernen);LEAVE eingangsbehandlungFI
FI ;IF bearbeitenpruefungTHEN IF ankreuz1THEN IF standardmaskenfeld(
fnrstartdatum)<>""THEN eintragfehler(fnrstartdatum);LEAVE eingangsbehandlung
ELIF standardmaskenfeld(fnrentfernendatum)<>""THEN eintragfehler(
fnrentfernendatum);LEAVE eingangsbehandlungFI ;startparaphe:=
standardmaskenfeld(fnrstartparaphe);ELIF ankreuz2THEN IF standardmaskenfeld(
fnrstartparaphe)<>""THEN eintragfehler(fnrstartparaphe);LEAVE
eingangsbehandlungELIF standardmaskenfeld(fnrentfernendatum)<>""THEN
eintragfehler(fnrentfernendatum);LEAVE eingangsbehandlungFI ;IF
standardmaskenfeld(fnrstartdatum)=""THEN startdatum:=erstesdatum;ELSE
standardpruefe(6,fnrstartdatum,0,0,"",pruefstatus);IF pruefstatus<>0THEN
eingangsmaskenfehler:=TRUE ;LEAVE eingangsbehandlungELSE startdatum:=
standardmaskenfeld(fnrstartdatum);startdatum:=subtext(startdatum,1,2)+punkt+
subtext(startdatum,3,4)+punkt+subtext(startdatum,5,6)FI ;FI ;FI ;FI ;IF
entfernenpruefungTHEN IF standardmaskenfeld(fnrstartparaphe)<>""THEN
eintragfehler(fnrstartparaphe);LEAVE eingangsbehandlungELIF
standardmaskenfeld(fnrstartdatum)<>""THEN eintragfehler(fnrstartdatum);LEAVE
eingangsbehandlungFI ;standardpruefe(6,fnrentfernendatum,0,0,"",pruefstatus);
IF pruefstatus<>0THEN eingangsmaskenfehler:=TRUE ELSE entfernendatum:=
standardmaskenfeld(fnrentfernendatum);entfernendatum:=subtext(entfernendatum,
1,2)+punkt+subtext(entfernendatum,3,4)+punkt+subtext(entfernendatum,5,6)FI ;
FI ;.ankreuzfelderpruefen:INT VAR summe:=0;IF ankreuz1THEN summeINCR 1FI ;IF
ankreuz2THEN summeINCR 1FI ;IF ankreuz3THEN summeINCR 1FI .
mehralseineauswahlangekreuzt:summe<>1.ankreuz1:standardmaskenfeld(
fnrauswahlparaphe)<>"".ankreuz2:standardmaskenfeld(fnrauswahldatum)<>"".
ankreuz3:standardmaskenfeld(fnrauswahlentfernen)<>"".bearbeitenpruefung:art=
bearbeiten.entfernenpruefung:art=entfernen.END PROC eingangsbehandlung;PROC
ankreuzfehler(INT CONST fehlerfeld):pruefstatus:=fehlerfeld;
eingangsmaskenfehler:=TRUE ;standardmeldung(meldnrfalschetastezuankreuz,"").
END PROC ankreuzfehler;PROC eintragfehler(INT CONST fehlerfeld):pruefstatus:=
fehlerfeld;eingangsmaskenfehler:=TRUE ;standardmeldung(
meldnrfalscheausfuellung,"").END PROC eintragfehler;PROC plausipruefung:
pruefstatus:=0;vertretungseintraegepruefen;IF eingabefehlerTHEN LEAVE
plausipruefungFI ;datenkonsistenzpruefen;IF eingabefehlerTHEN LEAVE
plausipruefungFI .eingabefehler:pruefstatus<>0.END PROC plausipruefung;PROC
vertretungseintraegepruefen:anzahleingegebenezeilen:=0;IF gueltigeparaphen=""
THEN holegueltigeparaphenFI ;IF gueltigeanrechnungskennz=""THEN
holegueltigeanrechnungskennzFI ;FOR izeileFROM 1UPTO zeilenanzahlREP IF
datumsfehlerTHEN LEAVE vertretungseintraegepruefenFI PER .datumsfehler:INT
VAR prueffnr:=datumfnrin(izeile);TEXT VAR pruefdatum:=standardmaskenfeld(
prueffnr);IF pruefdatumleerTHEN IF eintraginfolgefelderderzeileTHEN
pruefstatus:=prueffnr;standardmeldung(meldnrdatumfehltzurestangaben,"");TRUE
ELSE FALSE FI ELSE standardpruefe(6,prueffnr,0,0,"",pruefstatus);IF
pruefstatus<>0THEN TRUE ELSE pruefdatum:=subtext(pruefdatum,1,2)+punkt+
subtext(pruefdatum,3,4)+punkt+subtext(pruefdatum,5,6);IF tagnummer(pruefdatum
)=0THEN pruefstatus:=prueffnr;standardmeldung(meldnrungueltigesdatum,"");
TRUE ELIF stundeungueltigTHEN TRUE ELIF parapheungueltigTHEN standardmeldung(
meldnrungueltigeparaphe,"");pruefstatus:=prueffnr+3;TRUE ELIF
anrechnungskennzungueltigTHEN standardmeldung(meldnrungueltigerschluessel,"")
;pruefstatus:=prueffnr+4;TRUE ELSE anzahleingegebenezeilenINCR 1;FALSE FI FI
FI .pruefdatumleer:pruefdatum="".eintraginfolgefelderderzeile:
standardmaskenfeld(prueffnr+2)<>""COR standardmaskenfeld(prueffnr+3)<>""COR
standardmaskenfeld(prueffnr+4)<>""COR standardmaskenfeld(prueffnr+5)<>"".
stundeungueltig:INT VAR ug,og,wochentagnr;standardpruefe(2,prueffnr+2,0,0,"",
pruefstatus);IF pruefstatus<>0THEN TRUE ELSE wochentagnr:=tagnummer(
pruefdatum);IF wochentagnr=6THEN og:=samstagstdELSE og:=stundenprotagFI ;ug:=
erstestunde;standardpruefe(3,prueffnr+2,ug,og,"",pruefstatus);pruefstatus<>0
FI .parapheungueltig:pos(gueltigeparaphen,trenner+standardmaskenfeld(prueffnr
+3)+trenner)=0.anrechnungskennzungueltig:pos(gueltigeanrechnungskennz,trenner
+standardmaskenfeld(prueffnr+4)+trenner)=0.END PROC
vertretungseintraegepruefen;PROC datenkonsistenzpruefen:FOR izeileFROM 1UPTO
zeilenanzahlREP IF zeileungueltigTHEN pruefstatus:=prueffnr;standardmeldung(
meldnrvertretunggibtsschon,"");LEAVE datenkonsistenzpruefenFI PER .
zeileungueltig:IF leerzeileTHEN FALSE ELIF
zeileistimschluesselunveraendertgebliebenTHEN FALSE ELSE
ergebnisderpruefungzeileschongespeichertFI .leerzeile:INT VAR prueffnr:=
datumfnrin(izeile);TEXT VAR pruefdatum:=standardmaskenfeld(prueffnr);
pruefdatum="".zeileistimschluesselunveraendertgeblieben:standardmaskenfeld(
prueffnr)=bszeile(izeile).datumCAND standardmaskenfeld(prueffnr+2)=bszeile(
izeile).stundeCAND standardmaskenfeld(prueffnr+3)=bszeile(izeile).paraphe.
ergebnisderpruefungzeileschongespeichert:neuewerteindbpuffersetzen;search(
dnrvertretungen,TRUE );dbstatus=0.neuewerteindbpuffersetzen:pruefdatum:=
subtext(pruefdatum,1,2)+punkt+subtext(pruefdatum,3,4)+punkt+subtext(
pruefdatum,5,6);putwert(fnrvdatum,pruefdatum);putintwert(fnrvtagstd,
wochenstunde);putwert(fnrvparaphe,standardmaskenfeld(prueffnr+3)).
wochenstunde:(tagnummer(pruefdatum)-1)*stundenprotag+int(standardmaskenfeld(
prueffnr+2)).END PROC datenkonsistenzpruefen;PROC holegueltigeparaphen:
gueltigeparaphen:=trenner;inittupel(dnrlehrer);statleseschleife(dnrlehrer,"",
"",fnrlparaphe,fnrlparaphe,PROC paraphelesen)END PROC holegueltigeparaphen;
PROC paraphelesen(BOOL VAR b):IF dbstatus<>0THEN b:=TRUE ELSE
gueltigeparaphenCAT wert(fnrlparaphe);gueltigeparaphenCAT trennerFI END PROC
paraphelesen;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;PROC initfelderdeseingangsbildschirms:INT VAR i;FOR i
FROM 1UPTO feldanzmaskeeingangREP feldbs1(i):=""PER END PROC
initfelderdeseingangsbildschirms;PROC wertedeseingangsbildschirmsmerken:INT
VAR i;letztecursorfnr:=infeld;FOR iFROM 1UPTO feldanzmaskeeingangREP feldbs1(
i):=standardmaskenfeld(i)PER END PROC wertedeseingangsbildschirmsmerken;PROC
wertedeseingangsbildschirmsholen:INT VAR i;FOR iFROM 1UPTO
feldanzmaskeeingangREP standardmaskenfeld(feldbs1(i),i)PER END PROC
wertedeseingangsbildschirmsholen;PROC initbszeilepuffer:FOR izeileFROM 1UPTO
zeilenanzahlREP bszeile(izeile).datum:="";bszeile(izeile).tag:="";bszeile(
izeile).stunde:="";bszeile(izeile).paraphe:="";bszeile(izeile).art:="";
bszeile(izeile).lv:="";bszeile(izeile).tagstd:="";PER END PROC
initbszeilepuffer;END PACKET vertretungsdatenbearbeiten
|