summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.stundenplan nach lv erfassen
blob: 376fbac9cae93a07837ca58f2cbf8902496f94a5 (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
PACKET stundenplannachlverfassenDEFINES stundenplannachlvspeichern,
stundenplannachlvreorganisiertverlassen,stundenplannachlvkopieren,
stundenplannachlvzeigen:LET stdplmaske="ms stdplan nach lv bearb",
feldeingjgst=2,feldeingfach=3,feldeingkenn=4,feldeingakthj=5,laengelv=8,
lvmitleeremraum="x",leererraum="    ",leererlehrer="    ",schuljahr=
"Schuljahr",halbjahr="Schulhalbjahr",kennungwstd="W",kennungraum="R",
kennungparaphe="P",kennunglv="L",kennungzulzeit="ZZ",ausgabeparam="#",
maxstunden=66,meldungplausi=57,meldungfeldfuellen=52,meldungfalschejgst=305,
meldungzuvielewstd=369,meldungjgstergaenzen=304,meldungfalschesfach=310,
meldungkeinestartlv=68,meldungspeichern=50,meldungwarten=69,
meldungdatenaufbereitet=357,meldungkeinesugruppen=334,meldungzuvielesugruppen
=356,meldunglehrerbesetzt=361,meldungraumbesetzt=370,meldungsugrupbesetzt=362
,meldungzeitgesperrt=363,meldungkeinelv=326,meldungaenderungsfehler=364,
meldunguvfehler=403,meldungserverfehler=376,meldungbasisinkon=378,
meldunganderewahl=318,meldungfalscherraum=359,meldungzuvielelv=358;ROW 
maxstundenTEXT VAR lvausstdpl;ROW maxstundenTEXT VAR lvvombs;TEXT VAR schhj,
schj,aktfachkenn,aktlv,eintraglv,lveintrag,raumeintrag,pareintrag,hjsjanhang
:="";INT VAR i,fstat,hjkennalt:=-1,aktjgst,uvokfeld:=2,wstdderlv,hjkennneu:=0
;BOOL VAR spok:=TRUE ,uvok:=TRUE ,aenderungsfehler:=FALSE ;PROC 
stundenplannachlvkopieren:INT VAR aktfeld:=infeld;TEXT VAR feldinhalt:="";IF 
aktfeld=67THEN fehlermeldunganwunzulELSE kopierenFI ;return(1).kopieren:
feldinhalt:=standardmaskenfeld(aktfeld);standardmaskenfeld(feldinhalt,aktfeld
+1);standardfelderausgeben;infeld(aktfeld).fehlermeldunganwunzul:
standardmeldung(meldunganderewahl,"").END PROC stundenplannachlvkopieren;
PROC stundenplannachlvreorganisiertverlassen:
stundenplanreorganisierenundsichern(fstat);IF fstat<>0THEN return(1);
meldungausgeben(fstat)ELSE enter(2)FI END PROC 
stundenplannachlvreorganisiertverlassen;PROC stundenplannachlvzeigen:INT VAR 
jgst:=0;TEXT VAR jg:="",fach:="",kennung:="";standardmeldung(meldungwarten,
" ");jg:=standardmaskenfeld(feldeingjgst);fach:=standardmaskenfeld(
feldeingfach);kennung:=standardmaskenfeld(feldeingkenn);pruefeeingabe;
maskeundinitialisierung;holstartlv;stundenplannachlvausgeben.pruefeeingabe:
IF jg<>""THEN jgst:=int(jg);IF lastconversionokTHEN pruefjgstELSE 
fehlermeldungfalschejgstFI ;FI ;prueffach;pruefkennung.pruefjgst:IF jgst<>0
THEN IF jgst<5COR jgst>13THEN fehlermeldungfalschejgstFI FI .
fehlermeldungfalschejgst:standardmeldung(meldungfalschejgst,"");infeld(
feldeingjgst);return(1);LEAVE stundenplannachlvzeigen.prueffach:IF fach<>""
THEN IF jg=""THEN standardmeldung(meldungjgstergaenzen,"");infeld(
feldeingjgst);return(1);LEAVE stundenplannachlvzeigenELSE fach:=compress(fach
);inittupel(dnrfaecher);putwert(fnrffach,fach);search(dnrfaecher,TRUE );IF 
dbstatus<>okTHEN fehlermeldungfalschesfachFI FI FI .fehlermeldungfalschesfach
:standardmeldung(meldungfalschesfach,"");infeld(feldeingfach);return(1);
LEAVE stundenplannachlvzeigen.pruefkennung:IF kennung<>""THEN IF jg=""THEN 
standardmeldung(meldungfeldfuellen,"");infeld(feldeingjgst);return(1);LEAVE 
stundenplannachlvzeigenFI ;IF fach=""THEN standardmeldung(meldungfeldfuellen,
"");infeld(feldeingfach);return(1);LEAVE stundenplannachlvzeigenFI ;FI .
maskeundinitialisierung:aktlv:="";aktjgst:=0;aktfachkenn:="";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);holestdplanFI .akthj:standardmaskenfeld(feldeingakthj).
holestdplan:standardmeldung(meldungdatenaufbereitet,"");
stundenplanbasisundstundenplanholen(fstat);IF fstat<>0CAND fstat<>8THEN 
stundenplanbasisundstundenplanerstellen(fstat);IF fstat<>0THEN return(1);
meldungausgeben(fstat);LEAVE stundenplannachlvzeigenELSE 
stundenplanbasissichern(fstat);stundenplansichern(fstat);IF fstat<>0THEN 
return(1);meldungausgeben(fstat);LEAVE stundenplannachlvzeigenFI FI ELIF 
fstat=8THEN meldungausgeben(fstat)FI .holstartlv:fach:=text(fach+" ",2);
inittupel(dnrlehrveranstaltungen);putwert(fnrlvsj,schj);putwert(fnrlvhj,schhj
);putintwert(fnrlvjgst,jgst);putwert(fnrlvfachkennung,fach+kennung);search(
dnrlehrveranstaltungen,FALSE );IF dbstatus>2THEN fehlermeldungkeinestartlv
ELSE aktjgst:=intwert(fnrlvjgst);aktfachkenn:=wert(fnrlvfachkennung);aktlv:=
text(jgstaufbereiten(aktjgst)+aktfachkenn,laengelv)FI .
fehlermeldungkeinestartlv:standardmeldung(meldungkeinestartlv,"");infeld(
feldeingjgst);return(1);LEAVE stundenplannachlvzeigen.END PROC 
stundenplannachlvzeigen;PROC stundenplannachlvausgeben:standardstartproc(
stdplmaske);fuellemaske;IF NOT uvokTHEN infeld(uvokfeld);standardmeldung(
meldunguvfehler," ")FI ;standardnproc.END PROC stundenplannachlvausgeben;
PROC fuellemaske:standardkopfmaskeaktualisieren("Stundenplan "+hjsjanhang+
" für Lehrveranstaltung "+aktlv+"");uvok:=TRUE ;raumeintrag:="";lveintrag:=
"";pareintrag:="";wstdderlv:=int(datenzurlv(kennungwstd,aktlv));FOR iFROM 1
UPTO maxstundenREP planeintraglesen(i,kennunglv,aktlv,lveintrag,raumeintrag,
pareintrag);IF raumeintrag<>""THEN IF raumeintrag=leererraumTHEN raumeintrag
:=lvmitleeremraumELSE raumeintrag:=compress(raumeintrag)FI ;lvausstdpl(i):=
raumeintrag;standardmaskenfeld(raumeintrag,i+1);IF pareintrag=leererlehrer
THEN IF uvokTHEN uvok:=FALSE ;uvokfeld:=i+1;eintraglv:=lveintragFI FI ELSE 
lvausstdpl(i):="";standardmaskenfeld("",i+1);FI PER ;infeld(1);
standardfelderausgeben;infeld(2).END PROC fuellemaske;PROC meldungausgeben(
INT VAR fstat):IF fstat=2THEN standardmeldung(meldungserverfehler,"");ELIF 
fstat=4THEN standardmeldung(meldungkeinesugruppen,"");ELIF fstat=5THEN 
standardmeldung(meldungzuvielesugruppen,"")ELIF fstat=6THEN standardmeldung(
meldungkeinelv,"")ELIF fstat=7THEN standardmeldung(meldungzuvielelv,"")ELIF 
fstat=9THEN standardmeldung(meldungbasisinkon,"");ELSE LEAVE meldungausgeben
FI END PROC meldungausgeben;PROC stundenplannachlvspeichern(BOOL CONST 
speichern):TEXT VAR raumeintrag,t:="",lv:="";INT VAR bisherigejgst:=0,anzwstd
;IF speichernTHEN aenderungenvornehmen;FI ;naechstersatz;return(1).
naechstersatz:succ(dnrlehrveranstaltungen);IF dbstatus>2COR wert(fnrlvsj)<>
schjCOR wert(fnrlvhj)<>schhjTHEN stundenplannachlvreorganisiertverlassen;
LEAVE stundenplannachlvspeichernELIF intwert(fnrlvjgst)<>bisherigejgstTHEN 
stundenplanreorganisierenundsichern(fstat);bisherigejgst:=intwert(fnrlvjgst)
FI ;aktjgst:=intwert(fnrlvjgst);aktfachkenn:=wert(fnrlvfachkennung);aktlv:=
text(jgstaufbereiten(aktjgst)+aktfachkenn,laengelv);fuellemaske;IF NOT uvok
THEN infeld(uvokfeld);standardmeldung(meldunguvfehler,eintraglv+ausgabeparam)
FI .aenderungenvornehmen:standardmeldung(meldungplausi," ");plausipruefung;
standardmeldung(meldungspeichern," ");aenderungsfehler:=FALSE ;speicherung;
IF aenderungsfehlerTHEN standardmeldung(meldungaenderungsfehler,"");return(1)
;LEAVE stundenplannachlvspeichernELSE stundenplansichern(fstat)FI ;IF fstat<>
0THEN meldungausgeben(fstat);return(1);LEAVE stundenplannachlvspeichernFI .
plausipruefung:anzwstd:=0;FOR iFROM 1UPTO maxstundenREP infeld(i+1);
raumeintrag:=standardmaskenfeld(i+1);IF raumeintrag<>""THEN pruefezeit;IF 
raumeintrag<>lvmitleeremraumTHEN prueferaum;lvvombs(i):=raumeintragELSE 
lvvombs(i):=leererraumFI ;schnittraeume;schnittlehrer;schnittsugruppen;
wstdzahlok;anzwstdINCR 1;ELSE lvvombs(i):=""FI ;PER .pruefezeit:IF NOT 
bezeichnungzulaessig(kennungzulzeit,text(i))THEN standardmeldung(
meldungzeitgesperrt,tagstunde(i,TRUE )+" Std."+ausgabeparam);return(1);LEAVE 
stundenplannachlvspeichernFI .prueferaum:IF NOT bezeichnungzulaessig(
kennungraum,raumeintrag)THEN standardmeldung(meldungfalscherraum,"");return(1
);LEAVE stundenplannachlvspeichernFI .schnittraeume:IF raumunterrichtTHEN 
standardmeldung(meldungraumbesetzt,"");return(1);LEAVE 
stundenplannachlvspeichernFI .raumunterricht:lv:=geplantelvfuer(i,kennungraum
,raumeintrag);lv<>aktlvCAND lv<>"".schnittlehrer:t:=datenzurlv(kennungparaphe
,aktlv);IF t<>leererlehrerTHEN IF lehrerunterrichtTHEN standardmeldung(
meldunglehrerbesetzt,t+ausgabeparam);return(1);LEAVE 
stundenplannachlvspeichernFI FI .lehrerunterricht:lv:=geplantelvfuer(i,
kennungparaphe,t);lv<>aktlvCAND lv<>"".schnittsugruppen:IF 
sugruppenichtunterrichtsfreiTHEN standardmeldung(meldungsugrupbesetzt,lv+
ausgabeparam);return(1);LEAVE stundenplannachlvspeichernFI .
sugruppenichtunterrichtsfrei:schuelergruppenschnittbeizeit(i,kennunglv,aktlv,
"",lv,t).wstdzahlok:IF anzwstd=wstdderlvTHEN standardmeldung(
meldungzuvielewstd,"");return(1);LEAVE stundenplannachlvspeichernFI .
speicherung:FOR iFROM 1UPTO maxstundenREP IF lvausstdpl(i)<>""COR lvvombs(i)
<>""THEN infeld(i+1);IF loeschenTHEN planeintragentfernenELSE 
planeintragschreibenFI ;FI ;PER .loeschen:lvausstdpl(i)<>""CAND lvvombs(i)=""
.planeintragentfernen:planeintragloeschen(i,aktlv,spok);IF NOT spokTHEN 
aenderungsfehler:=TRUE FI .planeintragschreiben:IF lvausstdpl(i)<>""THEN 
planeintragloeschen(i,aktlv,spok);IF spokTHEN planeintragvornehmen(i,aktlv,
lvvombs(i),spok);FI ;ELSE planeintragvornehmen(i,aktlv,lvvombs(i),spok);FI ;
IF NOT spokTHEN aenderungsfehler:=TRUE FI .END PROC 
stundenplannachlvspeichern;TEXT PROC jgstaufbereiten(INT CONST jgst):TEXT 
VAR lv:="0";lvCAT text(jgst);subtext(lv,length(lv)-1)END PROC jgstaufbereiten
;END PACKET stundenplannachlverfassen;