summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.anschr.vertretungen
blob: d806e14578cf47763348b64bbae2b1548ce3ae64 (plain)
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
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;