summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.stand der stundenplanung analysieren
blob: c505d27de242e7407166adc152c97c72e3eb80fb (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
PACKET standderstundenplanunganalysierenDEFINES 
stundenplanstandanalyseausfuehren:LET feldakthj=2,dateiname="Fehlerprotokoll"
,schulname="Schulname",schulort="Schulort",schuljahr="Schuljahr",halbjahr=
"Schulhalbjahr",kennunglv="L",kennungkopplg="K",ausgpar="#",anzkopfzeilen=10,
laengelv=8,laengekopplg=8,laengefachkenn=6,leererraum="    ",leerzeile=" ",
ueberschrift1="Fehlerprotokoll zum Stand der Stundenplanung",unterstrich1=
"-----------------------------------------------------",ausgkopp="          "
,ausgkopplv="                                   ",ueberschrift2=
"Kopplung  Lehrveranst.  Wstd.      Anmerkung",ueberschrift3=
"                        soll/ist",unterstrich2=
"---------+------------+-----------+--------------------------------------",
keinefehler="Keine Fehler aufgetreten (alle Kopplungen korrekt verplant)!",
zuvielverpl=" Std. zuviel verplant",raumfehlt="Raum fehlt für ",zuverplanen=
" Std. noch zu verplanen",keinekopplg="Kopplung nicht erhalten (",
meldungserverfehler=376,meldungkeinstdplan=366,meldungkeinesugruppen=334,
meldungzuvielesugruppen=356,meldungkeinelv=326,meldungzuvielelv=358,
meldungbasisinkon=378,meldungwarten=69,meldungstdplauswvorber=384,
meldungkeinehjdaten=382,meldungbearbeitetwird=352;FILE VAR datei;TEXT VAR 
aktkopplg:="",aktlv:="",sj,hj,ausgzeile,ausgpostfix;BOOL VAR 
kopplungausgegeben:=FALSE ,lvausgegeben:=FALSE ;INT VAR maxwstd:=0,verplstden
:=0,aktwstd:=0,anzverplstden:=0,fstat:=0,anzleereraumzuw:=0,jgstderlv;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 ;return(1)END PROC meldungausgeben;PROC stundenplanstandanalyseausfuehren:
standardmeldung(meldungwarten,"");bestimmehalbjahr;bereiteprotokollvor;
setzepufferwerte;holeunduntersuchekopplungen;IF lines(datei)=anzkopfzeilen
THEN putline(datei,keinefehler)FI ;zeigedatei(dateiname,"vr").
bereiteprotokollvor:forget(dateiname,quiet);datei:=sequentialfile(output,
dateiname);putline(datei,schulkenndatum(schulname));putline(datei,text(
schulkenndatum(schulort),65)+date);putline(datei,leerzeile);putline(datei,
ueberschrift1+" "+hj+". "+text(sj,2)+"/"+subtext(sj,3));putline(datei,
unterstrich1);putline(datei,leerzeile);putline(datei,ueberschrift2);putline(
datei,ueberschrift3);putline(datei,unterstrich2);putline(datei,leerzeile).
bestimmehalbjahr:sj:=schulkenndatum(schuljahr);hj:=schulkenndatum(halbjahr);
IF standardmaskenfeld(feldakthj)=""THEN geplanteshjundsjberechnen(hj,sj);FI .
setzepufferwerte:inittupel(dnrlehrveranstaltungen).
holeunduntersuchekopplungen:IF keinehjdatenTHEN fehlermeldungkeinelvFI ;
standardmeldung(meldungstdplauswvorber,"");stundenplanhalbjahrsetzen(hj,sj);
stundenplanbasisundstundenplanholen(fstat);IF fstat=0COR fstat=8THEN 
statleseschleife(ixlvsjhjkopp,sj,hj,fnrlvsj,fnrlvhj,PROC 
kopplungenuntersuchen)ELSE meldungausgeben(fstat);LEAVE 
stundenplanstandanalyseausfuehren;FI .keinehjdaten:records(
dnrlehrveranstaltungen)=0.0.fehlermeldungkeinelv:standardmeldung(
meldungkeinehjdaten,"");return(1).END PROC stundenplanstandanalyseausfuehren;
PROC kopplungenuntersuchen(BOOL VAR b):IF wert(fnrlvsj)<>sjCOR wert(fnrlvhj)
<>hjCOR dbstatus<>0THEN b:=TRUE ELSE IF aktkopplg<>wert(fnrlvkopplung)THEN 
IF nichterstersatzCAND mehrerelvTHEN ueberpruefeinhaltungderkopplungFI ;
aktkopplg:=wert(fnrlvkopplung);standardmeldung(meldungbearbeitetwird,
aktkopplg+ausgpar);maxwstd:=0;IF kopplungausgegebenTHEN putline(datei,
leerzeile)FI ;kopplungausgegeben:=FALSE ;FI ;lvausgegeben:=FALSE ;jgstderlv:=
intwert(fnrlvjgst);IF jgstderlv=0THEN aktlv:="00"+text(wert(fnrlvfachkennung)
,laengefachkenn)ELSE aktlv:=jgstaufber(wert(fnrlvjgst))+text(wert(
fnrlvfachkennung),laengefachkenn)FI ;aktwstd:=intwert(fnrlvwochenstd);IF 
maxwstd<aktwstdTHEN maxwstd:=aktwstdFI ;ueberpruefanzstdenundleereraumangabe;
FI .nichterstersatz:aktkopplg<>"".mehrerelv:length(allelvmit(kennungkopplg,
aktkopplg))>laengelv.ueberpruefanzstdenundleereraumangabe:anzleereraumzuw:=0;
verplstden:=anzahlverplstden(kennunglv,aktlv);IF verplstden<aktwstdTHEN 
fehlerzuwenigstdenELIF verplstden>aktwstdTHEN fehlerzuvielstdenFI ;IF 
anzleereraumzuw>0THEN ausgzeile:="";ausgpostfix:=raumfehlt+text(
anzleereraumzuw)+" Std.";IF kopplungausgegebenTHEN IF lvausgegebenTHEN 
ausgzeileCAT ausgkopplv;lvausgegeben:=TRUE ELSE ausgzeileCAT ausgkopp;
ausgzeileCAT aktlv;ausgzeileCAT text(aktwstd,8);ausgzeileCAT text(verplstden,
5);ausgzeileCAT "    ";FI ;ELSE ausgzeileCAT text(aktkopplg,laengekopplg+2);
ausgzeileCAT aktlv;ausgzeileCAT text(aktwstd,8);ausgzeileCAT text(verplstden,
5);ausgzeileCAT "    ";kopplungausgegeben:=TRUE ;lvausgegeben:=TRUE FI ;
ausgzeileCAT ausgpostfix;putline(datei,ausgzeile)FI .fehlerzuwenigstden:
ausgzeile:="";ausgpostfix:=aktlv;ausgpostfixCAT text(aktwstd,8);ausgpostfix
CAT text(verplstden,5);ausgpostfixCAT "    ";ausgpostfixCAT text(aktwstd-
verplstden);ausgpostfixCAT zuverplanen;IF kopplungausgegebenTHEN ausgzeile:=
ausgkopp;ELSE ausgzeile:=text(aktkopplg,laengekopplg+2);kopplungausgegeben:=
TRUE FI ;ausgzeileCAT ausgpostfix;putline(datei,ausgzeile);lvausgegeben:=
TRUE .fehlerzuvielstden:ausgzeile:="";ausgpostfix:=aktlv;ausgpostfixCAT text(
aktwstd,8);ausgpostfixCAT text(verplstden,5);ausgpostfixCAT "    ";
ausgpostfixCAT text(verplstden-aktwstd);ausgpostfixCAT zuvielverpl;IF 
kopplungausgegebenTHEN ausgzeile:=ausgkopp;ELSE ausgzeile:=text(aktkopplg,
laengekopplg+2);kopplungausgegeben:=TRUE FI ;ausgzeileCAT ausgpostfix;putline
(datei,ausgzeile);lvausgegeben:=TRUE .ueberpruefeinhaltungderkopplung:
anzverplstden:=anzahlverplstden(kennungkopplg,aktkopplg);IF anzverplstden>
maxwstdTHEN ausgpostfix:=keinekopplg;ausgpostfixCAT text(anzverplstden);
ausgpostfixCAT " Wstd.)";IF kopplungausgegebenTHEN IF lvausgegebenTHEN 
ausgzeile:=ausgkopplv;ELSE ausgzeile:=ausgkopp;ausgzeileCAT aktlv;ausgzeile
CAT text(aktwstd,8);ausgzeileCAT text(verplstden,5);ausgzeileCAT "    ";
lvausgegeben:=TRUE FI ;ELSE ausgzeile:=text(aktkopplg,laengekopplg+2);
ausgzeileCAT aktlv;ausgzeileCAT text(aktwstd,8);ausgzeileCAT text(verplstden,
5);kopplungausgegeben:=TRUE FI ;ausgzeileCAT ausgpostfix;putline(datei,
ausgzeile)FI .END PROC kopplungenuntersuchen;INT PROC anzahlverplstden(TEXT 
CONST kennung,kennungstext):TEXT VAR stundenplan:=allezeitenvon(kennung,
kennungstext),plv,praum,ppar;INT VAR einspos:=1,anzeinsen:=0;WHILE einspos<>0
REP einspos:=pos(stundenplan,"1",einspos);IF einspos<>0THEN anzeinsenINCR 1;
IF kennung=kennunglvTHEN ueberpruefleererraumFI ;einsposINCR 1FI PER ;
anzeinsen.ueberpruefleererraum:planeintraglesen(einspos,kennunglv,
kennungstext,plv,praum,ppar);IF praum=leererraumTHEN anzleereraumzuwINCR 1FI 
.END PROC anzahlverplstden;END PACKET standderstundenplanunganalysieren;