app/schulis/2.2.1/src/4.anschr.vertretungen

Raw file
Back to index

PACKET anschrvertretungenDEFINES vertretungeneingang,vertretungenstarten,
vertretungensonderwerte,vertretungendruckdateibauen,vertretungenscanbedingung
,vertretungslistedrucken:LET swnameaufbereitet=550,swdatum=520,swzeit=521,
swstd=521,swart=522,swlv=523,swlangtext=523;LET maske=
"ms vertretungen eingang",fnrparaphe=2,fnrvonzeit=3,fnrbiszeit=4,fnrbsausgabe
=5,fnrdrausgabe=6,niltext="",blank=" ",strich="-----",kreuz="+",klammerauf=
"(",klammerzu=")",maxvertretungsarten=16,sonstigkuerzel="qq",
mnrauswahlnichtsinnvoll=56,mnrbittewarten=69,mnrlistewirderstellt=7,
mnrnichtimbestand=55;LET druckdatei="liste.1";TEXT CONST sonstiges:=
"Sonstiges",dateimitformularkopf:="vordruck1 vertretungen",
dateimitvertretungsdaten:="vordruck2 vertretungen";REAL VAR obergrenze,
untergrenze,aktzeit;INT VAR index:=dnrlehrer,status,zeilenzahl,
zeilenhilfszahl,zusatzzeilen,zaehler;TEXT VAR angegebeneparaphe:="",
aktparaphe,letzteparaphe,datum,hilfstext,bestand:="c02 anrechnung vertret",
vertretungsarten;ROW maxvertretungsartenTEXT VAR vertretungen;BOOL VAR 
bildschirmausgabe,einzelbearbeitung,zeituntergrenze,zeitobergrenze,dateiende,
ersteraufruf;PROC vertretungslistedrucken(BOOL CONST drucken):IF druckenTHEN 
print(druckdatei);FI ;forget(druckdatei,quiet);IF einzelbearbeitungTHEN 
forget(dateimitformularkopf,quiet);forget(dateimitvertretungsdaten,quiet);
enter(2)ELIF dateiendeTHEN forget(dateimitformularkopf,quiet);forget(
dateimitvertretungsdaten,quiet);enter(2)ELSE enter(1)FI ;END PROC 
vertretungslistedrucken;PROC vertretungeneingang:ersteraufruf:=TRUE ;
standardvproc(maske)END PROC vertretungeneingang;PROC vertretungenstarten:
TEXT VAR vonzeit,biszeit;IF NOT ersteraufrufTHEN putwert(fnrvparaphe,
aktparaphe);zusammengesetztesanschreiben(ixvpar,bildschirmausgabe,
einzelbearbeitung,BOOL PROC vertretungensonderwerte,BOOL PROC 
vertretungenscanbedingung,TEXT PROC vertretungendruckdateibauen);ELSE last(
ixvpar);letzteparaphe:=wert(fnrvparaphe);standardpruefe(5,fnrbsausgabe,
fnrdrausgabe,0,"",status);IF status<>0THEN infeld(status);return(1);ELSE 
standardmeldung(mnrbittewarten,niltext);vonzeit:=standardmaskenfeld(
fnrvonzeit);biszeit:=standardmaskenfeld(fnrbiszeit);zeituntergrenze:=vonzeit
<>niltext;zeitobergrenze:=biszeit<>niltext;IF datumspruefungenkorrektTHEN 
angegebeneparaphe:=standardmaskenfeld(fnrparaphe);IF 
angabenindateivertretungenvorhandenTHEN ersteraufruf:=FALSE ;
parametersetzenundstartenELSE standardmeldung(mnrnichtimbestand,niltext);
return(1)FI ;ELSE return(1)FI ;FI ;FI ;.parametersetzenundstarten:dateiende:=
FALSE ;datum:=wert(fnrvdatum);vertretungsartenausbestandholen;
bildschirmausgabe:=standardmaskenfeld(fnrdrausgabe)=niltext;
setzesonderwerteschulkenndaten;vordruckeholen;standardmeldung(
mnrlistewirderstellt,niltext);putwert(fnrvparaphe,aktparaphe);disablestop;
zusammengesetztesanschreiben(ixvpar,bildschirmausgabe,einzelbearbeitung,BOOL 
PROC vertretungensonderwerte,BOOL PROC vertretungenscanbedingung,TEXT PROC 
vertretungendruckdateibauen);IF iserrorTHEN clearerrorFI ;enablestop.
vordruckeholen:forget(dateimitformularkopf,quiet);forget(
dateimitvertretungsdaten,quiet);fetch(dateimitformularkopf,/
"anschreiben server");fetch(dateimitvertretungsdaten,/"anschreiben server");.
datumspruefungenkorrekt:IF zeituntergrenzeTHEN standardpruefe(6,fnrvonzeit,0,
0,"",status);IF status<>0THEN infeld(status);LEAVE datumspruefungenkorrekt
WITH FALSE ELSE datum:=subtext(vonzeit,5,6);datumCAT subtext(vonzeit,3,4);
datumCAT subtext(vonzeit,1,2);untergrenze:=real(datum);FI ;FI ;IF 
zeitobergrenzeTHEN standardpruefe(6,fnrbiszeit,0,0,"",status);IF status<>0
THEN infeld(status);LEAVE datumspruefungenkorrektWITH FALSE ELSE datum:=
subtext(biszeit,5,6);datumCAT subtext(biszeit,3,4);datumCAT subtext(biszeit,1
,2);obergrenze:=real(datum);FI ;FI ;IF zeituntergrenzeAND zeitobergrenzeTHEN 
IF untergrenze>obergrenzeTHEN infeld(fnrvonzeit);standardmeldung(
mnrauswahlnichtsinnvoll,niltext);LEAVE datumspruefungenkorrektWITH FALSE FI ;
FI ;TRUE .vertretungsartenausbestandholen:vertretungsarten:=niltext;inittupel
(dnrschluessel);putwert(fnrschlsachgebiet,bestand);search(dnrschluessel);
WHILE wert(fnrschlsachgebiet)=bestandREP vertretungsartenCAT text(wert(
fnrschlschluessel),2);succ(dnrschluessel);PER ;.
angabenindateivertretungenvorhanden:BOOL VAR ok:=FALSE ;einzelbearbeitung:=
angegebeneparaphe<>niltext;inittupel(dnrvertretungen);IF einzelbearbeitung
THEN putwert(fnrvparaphe,angegebeneparaphe);search(ixvpar,TRUE )ELSE search(
ixvpar,FALSE )FI ;IF dbstatus<>0THEN ok:=FALSE ELSE aktparaphe:=wert(
fnrvparaphe);IF einzelbearbeitungTHEN WHILE dbstatus=0AND angegebeneparaphe=
aktparapheAND obergrenzeokAND NOT untergrenzeokREP succ(ixvpar);aktparaphe:=
wert(fnrvparaphe);PER ;ok:=dbstatus=0AND obergrenzeokAND untergrenzeokAND 
angegebeneparaphe=aktparapheELSE WHILE dbstatus=0AND (NOT obergrenzeokCOR 
NOT untergrenzeok)REP succ(ixvpar);PER ;aktparaphe:=wert(fnrvparaphe);ok:=
dbstatus=0AND obergrenzeokAND untergrenzeokFI ;FI ;okEND PROC 
vertretungenstarten;BOOL PROC obergrenzeok:BOOL VAR b:=TRUE ;IF 
zeitobergrenzeTHEN datum:=wert(fnrvdatum);hilfstext:=subtext(datum,7,8);
hilfstextCAT subtext(datum,4,5);hilfstextCAT subtext(datum,1,2);aktzeit:=real
(hilfstext);b:=aktzeit<=obergrenze;FI ;bEND PROC obergrenzeok;BOOL PROC 
untergrenzeok:BOOL VAR b:=TRUE ;IF zeituntergrenzeTHEN datum:=wert(fnrvdatum)
;hilfstext:=subtext(datum,7,8);hilfstextCAT subtext(datum,4,5);hilfstextCAT 
subtext(datum,1,2);aktzeit:=real(hilfstext);b:=aktzeit>=untergrenze;FI ;bEND 
PROC untergrenzeok;BOOL PROC vertretungenscanbedingung:BOOL VAR b;IF 
einzelbearbeitungTHEN b:=aktparaphe=angegebeneparapheAND dbstatus=0ELSE b:=
dbstatus=0AND NOT dateiendeFI ;bEND PROC vertretungenscanbedingung;BOOL PROC 
vertretungensonderwerte:TEXT VAR hilfsstring1:=niltext,hilfsstring2;INT VAR 
dbstatussave;initialisieresonderwerte;adressat(aktparaphe);dbstatussave:=
dbstatus;inittupel(dnrlehrer);putwert(fnrlparaphe,aktparaphe);search(
dnrlehrer,TRUE );IF wert(fnrlgeschlecht)="m"THEN hilfsstring1:="Herrn "ELSE 
hilfsstring1:="Frau ";FI ;hilfsstring2:=wert(fnrlamtsbeztitel);IF 
hilfsstring2<>niltextTHEN hilfsstring1CAT hilfsstring2+blank;FI ;hilfsstring2
:=wert(fnrlzusatz);IF hilfsstring2<>niltextTHEN hilfsstring1CAT hilfsstring2+
blank;FI ;hilfsstring1CAT wert(fnrlfamname);setzesonderwert(swnameaufbereitet
,hilfsstring1);dbstatus(0);TRUE END PROC vertretungensonderwerte;TEXT PROC 
vertretungendruckdateibauen:LET druckdatei="liste.1",hilfsdatei="hilfsdatei";
TEXT VAR zeile;INT VAR i;BOOL VAR einsatzda:=FALSE ;setzemitseitennummern(
TRUE );druckvorbereiten;zeilenzahl:=0;zusatzzeilen:=0;briefalternative(
dateimitformularkopf,hilfsdatei);hilfsdateiindruckdatei(hilfsdatei);FOR 
zaehlerFROM 1UPTO maxvertretungsartenREP vertretungen(zaehler):=niltextPER ;
vordruck2xmalinhilfsdatei;hilfsdateiindruckdatei(hilfsdatei);IF zeilenzahl+3>
drucklaengeTHEN seitenwechsel;zeilenzahl:=0FI ;zeile:=blank;
druckzeileschreiben(zeile);druckzeileschreiben(zeile);zeile:=
"Summe Stunden    Art";druckzeileschreiben(zeile);zeile:=3*strich+kreuz+7*
strich;druckzeileschreiben(zeile);zeilenzahlINCR 4;setzesonderwert(swdatum,
niltext);imrowgemerktedatenübervordruck2indruckdatei;
drucknachbereitenohneausdrucken;druckdateiEND PROC 
vertretungendruckdateibauen;PROC vordruck2xmalinhilfsdatei:LET hilfsdatei=
"hilfsdatei";INT VAR savedbstatus;savedbstatus:=dbstatus;inittupel(
dnrvertretungen);statleseschleife(ixvpar,"",aktparaphe,fnrvparaphe,
fnrvparaphe,PROC saetzezurparapheinvordruck);dbstatus(savedbstatus);IF NOT 
einzelbearbeitungTHEN search(ixvpar,FALSE );WHILE dbstatus=0AND (NOT 
obergrenzeokCOR NOT untergrenzeokCOR aktparaphe=wert(fnrvparaphe))REP succ(
ixvpar);PER ;dateiende:=letzteparaphe=aktparapheOR dbstatus<>0;aktparaphe:=
wert(fnrvparaphe);FI ;END PROC vordruck2xmalinhilfsdatei;PROC 
saetzezurparapheinvordruck(BOOL VAR b):LET hilfsdatei="hilfsdatei";b:=FALSE ;
IF NOT obergrenzeokCOR wert(fnrvparaphe)<>aktparapheCOR dbstatus=3THEN b:=
TRUE ;ELSE IF untergrenzeokTHEN swvertretungenfuellen;briefalternative(
dateimitvertretungsdaten,hilfsdatei);FI ;FI ;END PROC 
saetzezurparapheinvordruck;PROC swvertretungenfuellen:TEXT VAR zeitaufber,
artvertr,lehrveranstg,lvaufber;INT VAR zeit,std,tag,position;zeit:=intwert(
fnrvtagstd);lehrveranstg:=wert(fnrvveranstaltung);artvertr:=text(wert(
fnrvanrechnung),2);datum:=wert(fnrvdatum);position:=pos(vertretungsarten,
artvertr);IF position=0THEN vertretungen(16)CAT sonstigkuerzelELSE WHILE (
positionMOD 2)=0AND position<>0AND position<32REP position:=pos(
vertretungsarten,artvertr,position+1);PER ;IF position=0OR (positionMOD 2)=0
THEN vertretungen(16)CAT sonstigkuerzelELSE vertretungen(position)CAT 
artvertrFI ;FI ;tag:=(zeit-1)DIV 12;std:=zeitMOD 12;IF tag=0THEN zeitaufber:=
"Mo "ELIF tag=1THEN zeitaufber:="Di "ELIF tag=2THEN zeitaufber:="Mi "ELIF tag
=3THEN zeitaufber:="Do "ELIF tag=4THEN zeitaufber:="Fr "ELIF tag=5THEN 
zeitaufber:="Sa "FI ;zeitaufberCAT text(std,2);lvaufber:=subtext(lehrveranstg
,1,2)+blank;lvaufberCAT subtext(lehrveranstg,3,4)+blank;lvaufberCAT subtext(
lehrveranstg,5,8);setzesonderwert(swdatum,datum);setzesonderwert(swzeit,
zeitaufber);setzesonderwert(swart,artvertr);setzesonderwert(swlv,lvaufber);
END PROC swvertretungenfuellen;PROC 
imrowgemerktedatenübervordruck2indruckdatei:BOOL VAR angabeda:=FALSE ;TEXT 
VAR hilfsdatei:="hilfsdatei",kuerzel,langtext;INT VAR savedbstatus;
savedbstatus:=dbstatus;inittupel(dnrschluessel);putwert(fnrschlsachgebiet,
bestand);zaehler:=1;WHILE zaehler<=maxvertretungsartenREP kuerzel:=text(
vertretungen(zaehler),2);IF kuerzel<>"  "THEN IF kuerzel=sonstigkuerzelTHEN 
kuerzel:="  ";langtext:=sonstigesELSE putwert(fnrschlschluessel,compress(
kuerzel));search(dnrschluessel,TRUE );langtext:=wert(fnrschllangtext);FI ;
setzesonderwert(swstd,text(length(vertretungen(zaehler))DIV 2,2));
setzesonderwert(swart,kuerzel);setzesonderwert(swlangtext,klammerauf+langtext
+klammerzu);briefalternative(dateimitvertretungsdaten,hilfsdatei);angabeda:=
TRUE ;FI ;zaehlerINCR 1;PER ;dbstatus(savedbstatus);IF angabedaTHEN 
hilfsdateiindruckdatei(hilfsdatei)FI ;END PROC 
imrowgemerktedatenübervordruck2indruckdatei;PROC hilfsdateiindruckdatei(TEXT 
CONST hilfsdatei):FILE VAR f;INT VAR i;TEXT VAR zeile;f:=sequentialfile(input
,hilfsdatei);zeilenhilfszahl:=lines(f);IF zeilenzahl+zeilenhilfszahl+
zusatzzeilen>=drucklaengeTHEN seitenwechsel;zeilenzahl:=0;FI ;FOR iFROM 1
UPTO zeilenhilfszahlREP getline(f,zeile);druckzeileschreiben(zeile)PER ;
forget(hilfsdatei,quiet);zeilenzahlINCR zeilenhilfszahlEND PROC 
hilfsdateiindruckdatei;END PACKET anschrvertretungen;