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;
|