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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
PACKET aufsichtenerstellenDEFINES aufsichtsplandatenbearbeiten,
aufsichtsplandatenspeichern,aufsichtsplanlehrerlistezeigen:LET feldeingtag=2,
feldeingnr=3,feldeingakthj=4,feldbearbtag=2,feldbearbnr=3,feldbearbname=4,
feldbearbort1=5,feldbearbpar1=6,letztesbearbfeld=38,leerereintrag=" ",
bestandorte="c02 aufsichtsorte",trenner="�",schuljahr="Schuljahr",halbjahr=
"Schulhalbjahr",ausgparam="#",bearbmaske="ms aufsichtsplan erstellen bearb",
kennungparaphe="P",kennunglv="L",kennungraum="R",laengetagbeschr=17,
laengeparaphe=4,laengeaufsort=4,laengeraumminus=3,maxanzorte=17,
meldungserverfehler=376,meldungbearbwird=352,meldungkeinstdplan=366,
meldungkeinesugruppen=334,meldungzuvielesugruppen=356,meldungkeinelv=326,
meldungzuvielelv=358,meldungbasisinkon=378,meldunglisteerstellen=7,
meldungfalschertag=385,meldungfalschepar=142,meldungwarten=69,
meldungzuvieleorte=398,meldungkeinelehrer=337,meldungkeineorte=399,
meldungkeinedaten=59,meldungschonaufs=401,meldungspeichern=50,
meldungfalscherwert=54,meldungnichtsp=63,meldungspfehler=364,meldungplausi=57
;ROW maxanzorteTEXT VAR datenausplan;TEXT VAR alletage:=
"�01�1� 1�MO�mo�Mo�02�2� 2�DI�di�Di�"+"03�3� 3�MI�mi�Mi�04�4� 4�DO�do�Do�"+
"05�5� 5�FR�fr�Fr�06�6� 6�SA�sa�Sa��";TEXT VAR tag:="",nr:="",komprpar:="",
lehrerliste:="",orteliste:="",aufslehrerliste:="",schhj,schj,hjsjanhang:="",
eintragtag,eintragnr,eintragname;INT VAR i,j,fstat,stdvor,stdnach,rowindex:=1
,anzaufsorte:=0,hjkennalt:=-1,hjkennneu:=0,anzaufs:=0;BOOL VAR
aenderungsfehler:=FALSE ,stundenplannichtda:=TRUE ,zuvieleorte:=FALSE ;
WINDOW VAR w:=startwindow(27,23,77,1);TEXT VAR liste,aktpar,lvvor,lvnach,
raumvor,raumnach,paraphenvorstd:="",paraphennachstd:="",lvvorstd:="",
lvnachstd:="",raeumevorstd:="",raeumenachstd:="";PROC
aufsichtsplandatenbearbeiten:standardmeldung(meldungwarten," ");
pruefeingabedaten;holedaten;aufsichtsplandatenzeigen.pruefeingabedaten:
prueftag;pruefnr.prueftag:tag:=standardmaskenfeld(feldeingtag);i:=pos(
alletage,trenner+tag+trenner);IF i=0THEN return(1);infeld(feldeingtag);
standardmeldung(meldungfalschertag,"");LEAVE aufsichtsplandatenbearbeiten
ELSE IF tag=""THEN tag:="1"ELSE tag:=text(iDIV laengetagbeschr+1)FI FI .
pruefnr:nr:=standardmaskenfeld(feldeingnr);IF nr=""THEN nr:="01"ELSE i:=int(
nr);IF i<1COR i>15THEN return(1);infeld(feldeingnr);standardmeldung(
meldungfalscherwert,"");LEAVE aufsichtsplandatenbearbeitenELSE nr:="0"+text(i
);nr:=subtext(nr,length(nr)-1);FI ;FI .holedaten:IF akthj<>""THEN hjkennneu:=
0ELSE hjkennneu:=1FI ;IF hjkennneu<>hjkennaltTHEN hjkennalt:=hjkennneu;schj:=
schulkenndatum(schuljahr);schhj:=schulkenndatum(halbjahr);IF hjkennneu=1THEN
geplanteshjundsjberechnen(schhj,schj)FI ;stundenplanhalbjahrsetzen(schhj,schj
);hjsjanhang:=schhj+". "+text(schj,2)+"/"+subtext(schj,3);FI ;IF records(
dnraufsichtszeiten)=0.0THEN fehlermeldungkeineaufszeitenFI ;IF orteliste=""
THEN holeorteFI ;holestartzeit;holeparaphenzurstartzeit.akthj:
standardmaskenfeld(feldeingakthj).fehlermeldungkeineaufszeiten:return(1);
infeld(feldeingnr);standardmeldung(meldungkeinedaten,"");LEAVE
aufsichtsplandatenbearbeiten.holeorte:IF records(dnrschluessel)=0.0THEN
fehlermeldungkeineorteELSE zuvieleorte:=FALSE ;inittupel(dnrschluessel);
statleseschleife(dnrschluessel,bestandorte,"",dnrschluessel+1,dnrschluessel+2
,PROC erstelleorteliste);IF orteliste=""THEN fehlermeldungkeineorteELIF
anzaufsorte>maxanzorteTHEN orteliste:=text(orteliste,maxanzorte*laengeaufsort
);anzaufsorte:=maxanzorte;zuvieleorte:=TRUE FI FI .fehlermeldungkeineorte:
return(1);infeld(feldeingtag);standardmeldung(meldungkeineorte,"");LEAVE
aufsichtsplandatenbearbeiten.holestartzeit:inittupel(dnraufsichtszeiten);
putwert(fnrazsj,schj);putwert(fnrazhj,schhj);putwert(fnrazaufsichtszeit,tag+
nr);search(dnraufsichtszeiten,TRUE );IF dbstatus<>0THEN
fehlermeldungkeineaufszeitenELSE eintragtag:=tagesangabe(tag);eintragnr:=text
(int(nr),2);eintragname:=wert(fnrazbezeichnung);stdvor:=intwert(
fnraztagstdvor);stdnach:=intwert(fnraztagstdnach)FI .holeparaphenzurstartzeit
:IF records(dnraufsichtsplan)=0.0THEN LEAVE holeparaphenzurstartzeitELSE
inittupel(dnraufsichtsplan);aufslehrerliste:="";putwert(fnrapaufsichtszeit,
tag+nr);statleseschleife(dnraufsichtsplan,schj,schhj,fnrapsj,fnraphj,PROC
parderaufsicht)FI .END PROC aufsichtsplandatenbearbeiten;PROC
aufsichtsplandatenzeigen:standardstartproc(bearbmaske);
standardkopfmaskeaktualisieren("Aufsichtsplan erstellen für "+hjsjanhang);
fuellemaske;standardnprocEND PROC aufsichtsplandatenzeigen;PROC fuellemaske:
INT VAR aktpos,aktfeld;TEXT VAR ort,paraphe;infeld(1);standardmaskenfeld(
eintragtag,feldbearbtag);standardmaskenfeld(eintragnr,feldbearbnr);
standardmaskenfeld(eintragname,feldbearbname);gibaufsorteaus;
standardfelderausgeben;infeld(feldbearbpar1);liste:="";aenderungsfehler:=
FALSE ;IF zuvieleorteTHEN standardmeldung(meldungzuvieleorte,"");zuvieleorte
:=FALSE FI .gibaufsorteaus:aktpos:=1;rowindex:=1;aktfeld:=feldbearbort1;
WHILE aktpos<length(orteliste)REP ort:=subtext(orteliste,aktpos,aktpos+
laengeaufsort-1);paraphe:=holeaufsicht(ort);datenausplan(rowindex):=paraphe;
standardmaskenfeld(ort,aktfeld);standardmaskenfeld(paraphe,aktfeld+1);
rowindexINCR 1;aktposINCR laengeaufsort;aktfeldINCR 2PER ;FOR iFROM aktfeld
UPTO letztesbearbfeldREP standardmaskenfeld(leerereintrag,i);IF iMOD 2=0THEN
feldschutz(i)FI PER .END PROC fuellemaske;TEXT PROC holeaufsicht(TEXT CONST
ort):INT VAR aktpos;aktpos:=pos(aufslehrerliste,trenner+trenner+ort+trenner);
IF aktpos>0THEN subtext(aufslehrerliste,aktpos+7,pos(aufslehrerliste,trenner,
aktpos+7)-1)ELSE ""FI END PROC holeaufsicht;PROC aufsichtsplandatenspeichern(
BOOL CONST speichern):TEXT VAR zeit,eintragort,eintragpar,weiterereintragpar;
INT VAR aktfeld:=5,feld;aenderungsfehler:=FALSE ;IF speichernTHEN
aenderungenspeichernELSE standardmeldung(meldungnichtsp,"")FI ;IF
aenderungsfehlerTHEN fehlermeldungspfehlerFI ;naechstezeit.
aenderungenspeichern:standardmeldung(meldungplausi,"");aenderungsfehler:=
FALSE ;aktfeld:=5;FOR iFROM 1UPTO anzaufsorteREP eintragpar:=
standardmaskenfeld(aktfeld+1);IF eintragpar<>""THEN IF NOT
bezeichnungzulaessig("P",eintragpar)THEN fehlermeldungfalscheparapheELIF
eintragpar<>datenausplan(i)THEN pruefanderebseintraegeFI FI ;aktfeldINCR 2
PER ;standardmeldung(meldungspeichern,"");aktfeld:=5;FOR iFROM 1UPTO
anzaufsorteREP eintragort:=standardmaskenfeld(aktfeld);eintragpar:=
standardmaskenfeld(aktfeld+1);IF datenausplan(i)<>eintragparTHEN
speicheraenderungenFI ;aktfeldINCR 2PER .pruefanderebseintraege:feld:=6;FOR j
FROM 1UPTO anzaufsorteREP IF feld<>aktfeld+1THEN weiterereintragpar:=
standardmaskenfeld(feld);IF eintragpar=weiterereintragparTHEN
fehlermeldungparaphedoppeltFI ;FI ;feldINCR 2PER .fehlermeldungparaphedoppelt
:standardmeldung(meldungschonaufs,eintragpar+ausgparam+standardmaskenfeld(
feld-1)+ausgparam);infeld(aktfeld+1);return(1);LEAVE
aufsichtsplandatenspeichern.fehlermeldungfalscheparaphe:standardmeldung(
meldungfalschepar,eintragpar+ausgparam);infeld(aktfeld+1);return(1);LEAVE
aufsichtsplandatenspeichern.fehlermeldungspfehler:standardmeldung(
meldungspfehler,"");infeld(feldbearbpar1);return(1);LEAVE
aufsichtsplandatenspeichern.speicheraenderungen:IF datenausplan(i)=""CAND
eintragpar<>""THEN insertsatzELIF datenausplan(i)<>""CAND eintragpar=""THEN
deletesatzELSE updatesatzFI .insertsatz:inittupel(dnraufsichtsplan);putwert(
fnrapsj,schj);putwert(fnraphj,schhj);putwert(fnrapaufsichtszeit,tag+nr);
putwert(fnrapaufsichtsort,compress(eintragort));putwert(fnrapparaphe,
eintragpar);insert(dnraufsichtsplan);IF dbstatus<>okTHEN aenderungsfehler:=
TRUE FI .updatesatz:inittupel(dnraufsichtsplan);putwert(fnrapsj,schj);putwert
(fnraphj,schhj);putwert(fnrapaufsichtszeit,tag+nr);putwert(fnrapaufsichtsort,
compress(eintragort));putwert(fnrapparaphe,datenausplan(i));search(
dnraufsichtsplan,TRUE );IF dbstatus=okTHEN putwert(fnrapparaphe,eintragpar);
update(dnraufsichtsplan);IF dbstatus<>okTHEN aenderungsfehler:=TRUE FI ELSE
aenderungsfehler:=TRUE FI .deletesatz:inittupel(dnraufsichtsplan);putwert(
fnrapsj,schj);putwert(fnraphj,schhj);putwert(fnrapaufsichtszeit,tag+nr);
putwert(fnrapaufsichtsort,compress(eintragort));putwert(fnrapparaphe,
datenausplan(i));search(dnraufsichtsplan,TRUE );IF dbstatus=okTHEN delete(
dnraufsichtsplan);IF dbstatus<>okTHEN aenderungsfehler:=TRUE FI ELSE
aenderungsfehler:=TRUE FI .naechstezeit:succ(dnraufsichtszeiten);IF wert(
fnrazsj)<>schjCOR wert(fnrazhj)<>schhjCOR dbstatus<>0THEN verlasseanwendung
ELSE zeit:=wert(fnrazaufsichtszeit);tag:=text(zeit,1);nr:=subtext(zeit,2);
eintragtag:=tagesangabe(tag);eintragnr:=text(int(nr),2);eintragname:=wert(
fnrazbezeichnung);stdvor:=intwert(fnraztagstdvor);stdnach:=intwert(
fnraztagstdnach);inittupel(dnraufsichtsplan);aufslehrerliste:="";putwert(
fnrapaufsichtszeit,zeit);statleseschleife(dnraufsichtsplan,schj,schhj,fnrapsj
,fnraphj,PROC parderaufsicht);fuellemaske;return(1)FI .verlasseanwendung:
enter(2).END PROC aufsichtsplandatenspeichern;PROC
aufsichtsplanlehrerlistezeigen:INT VAR parpos,anfpos,aktfeld:=infeld;
standardmeldung(meldunglisteerstellen,"");IF liste=""THEN IF lehrerliste=""
THEN holelehrerFI ;IF stundenplannichtdaTHEN
stundenplanbasisundstundenplanholen(fstat);IF fstat<>0CAND fstat<>8THEN
meldungausgeben(fstat);return(1);LEAVE aufsichtsplanlehrerlistezeigenELSE
stundenplannichtda:=FALSE FI ;FI ;IF stdvor<>0THEN paraphenvorstd:=
datenderzeit(stdvor,kennungparaphe);lvvorstd:=datenderzeit(stdvor,kennunglv);
raeumevorstd:=datenderzeit(stdvor,kennungraum)ELSE paraphenvorstd:="";
lvvorstd:="";raeumevorstd:="";FI ;IF stdnach<>0THEN paraphennachstd:=
datenderzeit(stdnach,kennungparaphe);lvnachstd:=datenderzeit(stdnach,
kennunglv);raeumenachstd:=datenderzeit(stdnach,kennungraum)ELSE
paraphennachstd:="";lvnachstd:="";raeumenachstd:=""FI ;fuelleliste;FI ;IF
menuedraussenTHEN reorganizescreenFI ;infeld(1);standardfelderausgeben;open(w
);auskunfterteilung(liste,w,FALSE );reorganizescreen;setlasteditvalues;infeld
(aktfeld);return(1).fuelleliste:listeCAT "Aufsicht möglich durch:";listeCAT
auskunftstextende;listeCAT "Paraphe Anz. Unterr. vorher Unterr. nachher";
listeCAT auskunftstextende;FOR iFROM 1UPTO length(lehrerliste)DIV
laengeparapheREP lvvor:="";lvnach:="";raumvor:="";raumnach:="";aktpar:=
subtext(lehrerliste,(i-1)*laengeparaphe+1,i*laengeparaphe);parpos:=suchpos(
paraphenvorstd,aktpar,laengeparaphe);IF parpos>0THEN anfpos:=(parpos-1)*2;
lvvor:=subtext(lvvorstd,anfpos+1,anfpos+8);raumvor:=subtext(raeumevorstd,
parpos,parpos+laengeraumminus)FI ;parpos:=suchpos(paraphennachstd,aktpar,
laengeparaphe);IF parpos>0THEN anfpos:=(parpos-1)*2;lvnach:=subtext(lvnachstd
,anfpos+1,anfpos+8);raumnach:=subtext(raeumenachstd,parpos,parpos+
laengeraumminus)FI ;IF lvvor<>""COR lvnach<>""THEN schreiblisteneintragFI ;
PER ;listeCAT "*";listeCAT auskunftstextende.holelehrer:IF records(dnrlehrer)
=0.0THEN fehlermeldungkeinelehrerELSE inittupel(dnrlehrer);statleseschleife(
dnrlehrer,"","",fnrlparaphe,fnrlfamname,PROC erstellelehrerliste)FI .
fehlermeldungkeinelehrer:return(1);infeld(feldeingtag);standardmeldung(
meldungkeinelehrer,"");LEAVE aufsichtsplanlehrerlistezeigen.END PROC
aufsichtsplanlehrerlistezeigen;PROC schreiblisteneintrag:standardmeldung(
meldungbearbwird,aktpar+ausgparam);listeCAT text(aktpar,8);komprpar:=compress
(aktpar);listeCAT text(aufsichtenderparaphe,2);IF lvvor=""THEN listeCAT
" ";ELSE listeCAT " ";listeCAT text(lvvor,2);listeCAT " ";
listeCAT subtext(lvvor,3,4);listeCAT " ";listeCAT subtext(lvvor,5);listeCAT
"/";listeCAT raumvorFI ;IF lvnach=""THEN listeCAT " ";ELSE
listeCAT " ";listeCAT text(lvnach,2);listeCAT " ";listeCAT subtext(lvnach,3,4
);listeCAT " ";listeCAT subtext(lvnach,5);listeCAT "/";listeCAT raumnachFI ;
listeCAT auskunftstextende.END PROC schreiblisteneintrag;INT PROC
aufsichtenderparaphe:inittupel(dnraufsichtsplan);anzaufs:=0;statleseschleife(
ixappar,komprpar,"",fnrapparaphe,fnrapsj,PROC anzaufsichtenzaehlen);anzaufs
END PROC aufsichtenderparaphe;PROC anzaufsichtenzaehlen(BOOL VAR b):IF
dbstatus<>okCOR wert(fnrapparaphe)>komprparTHEN dbstatus(1);b:=TRUE ELIF wert
(fnrapsj)=schjCAND wert(fnraphj)=schhjTHEN anzaufsINCR 1FI END PROC
anzaufsichtenzaehlen;INT PROC suchpos(TEXT CONST quelle,muster,INT CONST
musterlaenge):INT VAR suchab:=1,aktpos;IF quelle<>""THEN WHILE pos(quelle,
muster,suchab)>0REP aktpos:=pos(quelle,muster,suchab);IF aktposMOD
musterlaenge=1THEN LEAVE suchposWITH aktposELSE suchab:=aktpos+1FI ;PER ;FI ;
0END PROC suchpos;PROC erstellelehrerliste(BOOL VAR b):IF dbstatus<>0THEN b:=
TRUE ELSE lehrerlisteCAT text(wert(fnrlparaphe),laengeparaphe)FI END PROC
erstellelehrerliste;PROC erstelleorteliste(BOOL VAR b):IF wert(dnrschluessel+
1)>bestandorteCOR dbstatus<>0THEN b:=TRUE ELSE ortelisteCAT text(wert(
dnrschluessel+2),laengeaufsort);anzaufsorteINCR 1FI END PROC
erstelleorteliste;PROC parderaufsicht(BOOL VAR b):IF wert(fnrapsj)<>schjCOR
wert(fnraphj)<>schhjCOR wert(fnrapaufsichtszeit)<>tag+nrCOR dbstatus<>0THEN
dbstatus(1);b:=TRUE ELSE aufslehrerlisteCAT trenner;aufslehrerlisteCAT
trenner;aufslehrerlisteCAT text(wert(fnrapaufsichtsort),laengeaufsort);
aufslehrerlisteCAT trenner;aufslehrerlisteCAT wert(fnrapparaphe);
aufslehrerlisteCAT trennerFI END PROC parderaufsicht;TEXT PROC tagesangabe(
TEXT CONST tag):IF tag="1"THEN "Mo"ELIF tag="2"THEN "Di"ELIF tag="3"THEN "Mi"
ELIF tag="4"THEN "Do"ELIF tag="5"THEN "Fr"ELSE "Sa"FI END PROC tagesangabe;
PROC meldungausgeben(INT VAR fstat):IF fstat=2THEN standardmeldung(
meldungserverfehler,"");ELIF fstat=3THEN standardmeldung(meldungkeinstdplan,
"");ELIF fstat=4THEN standardmeldung(meldungkeinesugruppen,"");ELIF fstat=5
THEN standardmeldung(meldungzuvielesugruppen,"")ELIF fstat=6THEN
standardmeldung(meldungkeinelv,"")ELIF fstat=7THEN standardmeldung(
meldungzuvielelv,"")ELIF fstat=9THEN standardmeldung(meldungbasisinkon,"");
FI END PROC meldungausgeben;END PACKET aufsichtenerstellen
|