summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.vertretungsdaten bearbeiten
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis/2.2.1/src/4.vertretungsdaten bearbeiten')
-rw-r--r--app/schulis/2.2.1/src/4.vertretungsdaten bearbeiten279
1 files changed, 279 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/4.vertretungsdaten bearbeiten b/app/schulis/2.2.1/src/4.vertretungsdaten bearbeiten
new file mode 100644
index 0000000..7034ab6
--- /dev/null
+++ b/app/schulis/2.2.1/src/4.vertretungsdaten bearbeiten
@@ -0,0 +1,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
+