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