summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/4.stundenplan akt halbj uebernehmen
blob: 0d29a4620975647aef1220761fad9cb47ead0d53 (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
PACKET stundenplanakthalbjuebernehmenDEFINES stundenplanuebernehmenpruefen,
stundenplanuebernehmen:LET feldjgst1=2,feldjgst2=3,maxanzfehler=500,laengelv=
8,schuljahr="Schuljahr",halbjahr="Schulhalbjahr",schulname="Schulname",
schulort="Schulort",kennungraum="R",kennungparaphe="P",kennunglv="L",allejgst
="00050607080910111213",leererraum="    ",ausgabeparam="#",erstestd=1,
letztestd=66,dateiname="Protokoll zur Stundenplan-Übernahme",zwdatei=
"Zwischenspeicherung",lvungueltig="Lehrveranstaltung nicht geplant",
raumungueltig1="Raumbezeichnung ",raumungueltig2=" ungültig",ohneraum=
" (Übernahme ohne Raum)",schnittschueler="Zeitüberschneidung Schüler durch ",
schnittlehrer="Zeitüberschneidung Lehrer durch",schnittraum=
"Zeitüberschneidung Raum ",leerzeile=" ",ueberschrift1=
"Stundenplan für Jgst. ",ueberschrift2=" übernehmen von ",ueberschrift3=
" nach ",meldungwirklichuebern=300,meldungfalschejgst=305,meldungabbruch=400,
meldungbearbwird=352,meldungplausi=57,meldungwarten=69,meldungkeinesugruppen=
334,meldungzuvielesugruppen=356,meldungkeinelv=326,meldungserverfehler=376,
meldungbasisinkon=378,meldungjgst13=402,meldungzuvielelv=358;TEXT VAR aktsj,
akthj,geplsj,geplhj,jgst1,jgst2,allelvderzeit,alleraeumederzeit,eintrag,
aktzubearbjgst,geplzubearbjgst;INT VAR i,j,fstat,jg1,jg2,jgstpos,anzbearbjgst
,zz:=0;BOOL VAR geplstundenplanneu:=FALSE ,jgstumzusetzen:=FALSE ,
erstereintrag:=TRUE ;FILE VAR datei,z;PROC stundenplanreorganisiertverlassen:
stundenplanreorganisierenundsichern(fstat);IF fstat<>0THEN return(2);
meldungausgeben(fstat)FI END PROC stundenplanreorganisiertverlassen;PROC 
stundenplanuebernehmenpruefen:standardmeldung(meldungwarten," ");
holestartdaten;jgst1:=standardmaskenfeld(feldjgst1);jgst2:=standardmaskenfeld
(feldjgst2);pruefeingaben;gibmeldunguebernahmeaus;standardnproc.
holestartdaten:aktsj:=schulkenndatum(schuljahr);akthj:=schulkenndatum(
halbjahr);geplsj:=aktsj;geplhj:=akthj;geplanteshjundsjberechnen(geplhj,geplsj
).pruefeingaben:standardmeldung(meldungplausi,"");IF jgstrichtig(jgst1,jg1,1)
THEN IF NOT jgstrichtig(jgst2,jg2,2)THEN infeld(feldjgst2);
fehlermeldungfalschejgstFI ELSE infeld(feldjgst1);fehlermeldungfalschejgstFI 
;IF jgst1=jgst2THEN aktzubearbjgst:=jgst1;ELSE aktzubearbjgst:=subtext(
allejgst,pos(allejgst,jgst1),pos(allejgst,jgst2)+1)FI ;anzbearbjgst:=length(
aktzubearbjgst)DIV 2;IF geplhj="2"THEN geplzubearbjgst:=aktzubearbjgstELIF 
jgst1="13"THEN infeld(feldjgst1);fehlermeldungfalscherwertELIF jgst2="13"
THEN infeld(feldjgst2);fehlermeldungfalscherwertELSE jgstumzusetzen:=TRUE ;
berechnegeplzubearbjgstFI .fehlermeldungfalschejgst:standardmeldung(
meldungfalschejgst,"");return(1);LEAVE stundenplanuebernehmenpruefen.
fehlermeldungfalscherwert:standardmeldung(meldungjgst13,"");return(1);LEAVE 
stundenplanuebernehmenpruefen.gibmeldunguebernahmeaus:standardmeldung(
meldungwirklichuebern,"").END PROC stundenplanuebernehmenpruefen;PROC 
berechnegeplzubearbjgst:TEXT VAR jg;jgstpos:=1;geplzubearbjgst:="";FOR iFROM 
1UPTO anzbearbjgstREP jg:=subtext(aktzubearbjgst,jgstpos,jgstpos+1);IF jg=
"00"THEN geplzubearbjgstCAT "00"ELSE geplzubearbjgstCAT jgstaufber(text(int(
jg)+1))FI ;jgstposINCR 2PER END PROC berechnegeplzubearbjgst;BOOL PROC 
jgstrichtig(TEXT VAR jgst,INT VAR jg,INT CONST pruefung):IF jgst<>""THEN jg:=
int(jgst);IF jg=0CAND lastconversionokTHEN jgst:="00";TRUE ELIF 
lastconversionokTHEN IF jg>4CAND jg<14THEN jgst:=jgstaufber(jgst);TRUE ELSE 
FALSE FI ELSE FALSE FI ELIF pruefung=1THEN jgst:="05";jg:=5;TRUE ELIF 
pruefung=2THEN jgst:=jgst1;jg:=jg1;TRUE ELSE FALSE FI .END PROC jgstrichtig;
PROC stundenplanuebernehmen(BOOL CONST uebernahme):TEXT VAR ueberschrift:="";
IF uebernahmeTHEN standardmeldung(meldungbearbwird,"Stundenplan "+akthj+". "+
text(aktsj,2)+"/"+subtext(aktsj,3)+ausgabeparam);stundenplanhalbjahrsetzen(
akthj,aktsj);stundenplanbasisundstundenplanholen(fstat);IF fstat<>0CAND fstat
<>8THEN meldungausgeben(fstat);return(2);LEAVE stundenplanuebernehmenFI ;
forget(dateiname,quiet);datei:=sequentialfile(output,dateiname);ueberschrift
:=ueberschrift1+jgst1;IF jgst1<>jgst2THEN ueberschriftCAT " bis "+jgst2FI ;
ueberschriftCAT ueberschrift2;ueberschriftCAT akthj+". ";ueberschriftCAT text
(aktsj,2)+"/";ueberschriftCAT subtext(aktsj,3);ueberschriftCAT ueberschrift3;
ueberschriftCAT geplhj+". ";ueberschriftCAT text(geplsj,2)+"/";ueberschrift
CAT subtext(geplsj,3);putline(datei,schulkenndatum(schulname));putline(datei,
text(schulkenndatum(schulort),65)+date);putline(datei,leerzeile);putline(
datei,ueberschrift);putline(datei,length(ueberschrift)*"-");holalleeintraege;
fstat:=0;loeschealleeintraege;IF fstat<>0CAND fstat<>8THEN meldungausgeben(
fstat);return(2);LEAVE stundenplanuebernehmenFI ;uebertragalleeintraege;
stundenplanreorganisiertverlassen;IF zz>maxanzfehlerTHEN standardmeldung(
meldungabbruch,text(zz)+ausgabeparam)ELIF zz=0THEN 
eintragkeineuebernahmefehlerFI ;IF fstat=0THEN zeigedatei(dateiname,"vr");FI 
ELSE return(2)FI .eintragkeineuebernahmefehler:putline(datei,leerzeile);
putline(datei,"Bei der Übernahme traten keine Fehler auf!").END PROC 
stundenplanuebernehmen;PROC loeschealleeintraege:INT VAR jgstpos:=1;
geplstundenplanneu:=FALSE ;stundenplanhalbjahrsetzen(geplhj,geplsj);
standardmeldung(meldungbearbwird,"Stundenplan "+geplhj+". "+text(geplsj,2)+
"/"+subtext(geplsj,3)+ausgabeparam);stundenplanbasisundstundenplanholen(fstat
);IF fstat<>0CAND fstat<>8THEN stundenplanbasisundstundenplanerstellen(fstat)
;IF fstat<>0THEN LEAVE loeschealleeintraegeELSE geplstundenplanneu:=TRUE ;
stundenplanbasissichern(fstat);stundenplansichern(fstat);IF fstat<>0THEN 
meldungausgeben(fstat);return(2);LEAVE loeschealleeintraegeFI FI FI ;IF 
geplstundenplanneuTHEN LEAVE loeschealleeintraegeFI ;FOR iFROM erstestdUPTO 
letztestdREP standardmeldung(meldungbearbwird,tagstunde(i,FALSE )+
" (Einträge löschen)"+ausgabeparam);allelvderzeit:=datenderzeit(i,kennunglv);
jgstpos:=1;FOR jFROM 1UPTO anzbearbjgstREP loeschelv(subtext(geplzubearbjgst,
jgstpos,jgstpos+1));jgstposINCR 2PER PER .END PROC loeschealleeintraege;PROC 
loeschelv(TEXT CONST jgst):INT VAR suchab:=1,aktpos;BOOL VAR spok:=TRUE ;
WHILE pos(allelvderzeit,jgst,suchab)>0REP aktpos:=pos(allelvderzeit,jgst,
suchab);IF aktposMOD laengelv=1THEN planeintragloeschen(i,subtext(
allelvderzeit,aktpos,aktpos+7),spok)FI ;suchab:=aktpos+7PER .END PROC 
loeschelv;PROC holalleeintraege:forget(zwdatei,quiet);z:=sequentialfile(
output,zwdatei);FOR iFROM erstestdUPTO letztestdREP standardmeldung(
meldungbearbwird,tagstunde(i,FALSE )+" (Einträge holen)"+ausgabeparam);
allelvderzeit:=datenderzeit(i,kennunglv);alleraeumederzeit:=datenderzeit(i,
kennungraum);jgstpos:=1;eintrag:="";FOR jFROM 1UPTO anzbearbjgstREP holelv(
subtext(aktzubearbjgst,jgstpos,jgstpos+1));jgstposINCR 2PER ;putline(z,
eintrag)PER .END PROC holalleeintraege;PROC holelv(TEXT CONST jgst):INT VAR 
suchab:=1,aktpos,ii;TEXT VAR lveintrag;WHILE pos(allelvderzeit,jgst,suchab)>0
REP aktpos:=pos(allelvderzeit,jgst,suchab);IF aktposMOD laengelv=1THEN ii:=(
aktpos+1)DIV 2;IF jgstumzusetzenTHEN lveintrag:=lv;IF text(lveintrag,2)<>"00"
THEN eintragCAT jgstaufber(text(int(text(lveintrag,2))+1));eintragCAT subtext
(lveintrag,3);ELSE eintragCAT lvFI ;eintragCAT raumELSE eintragCAT lv+raumFI 
FI ;suchab:=aktpos+7PER .lv:subtext(allelvderzeit,aktpos,aktpos+7).raum:
subtext(alleraeumederzeit,ii,ii+3).END PROC holelv;PROC 
uebertragalleeintraege:zz:=0;modify(z);toline(z,1);col(z,1);FOR iFROM 
erstestdUPTO letztestdREP standardmeldung(meldungbearbwird,tagstunde(i,FALSE 
)+" (Einträge übernehmen)"+ausgabeparam);readrecord(z,eintrag);IF eintrag<>""
THEN erstereintrag:=TRUE ;schreibeintraegeFI ;down(z);IF zz>maxanzfehlerTHEN 
putline(datei,leerzeile);putline(datei,
"Abbruch, da bei der Übernahme zuviele Fehler auftraten!");LEAVE 
uebertragalleeintraegeFI PER END PROC uebertragalleeintraege;PROC 
schreibeintraege:TEXT VAR lv,raum,t1,t2;INT VAR lvpos:=1;BOOL VAR ohnefehler;
WHILE lvpos<length(eintrag)REP ohnefehler:=TRUE ;lv:=subtext(eintrag,lvpos,
lvpos+7);raum:=subtext(eintrag,lvpos+8,lvpos+11);pruefungundeintrag;lvpos
INCR 12PER .pruefungundeintrag:prueflv;pruefschnittschueler;
pruefschnittlehrer;pruefraumundschnitt;IF ohnefehlerTHEN planeintragvornehmen
(i,lv,raum,ohnefehler)FI .prueflv:IF NOT bezeichnungzulaessig(kennunglv,lv)
THEN IF erstereintragTHEN putline(datei,leerzeile);erstereintrag:=FALSE FI ;
putline(datei,jgfake(lv)+": "+tagstunde(i,TRUE )+". : "+lvungueltig);zzINCR 1
;LEAVE pruefungundeintragFI .pruefschnittschueler:IF schuelerunterrichtTHEN 
IF erstereintragTHEN putline(datei,leerzeile);erstereintrag:=FALSE FI ;
putline(datei,jgfake(lv)+": "+tagstunde(i,TRUE )+". : "+schnittschueler+
jgfake(t1));zzINCR 1;ohnefehler:=FALSE FI .schuelerunterricht:
schuelergruppenschnittbeizeit(i,kennunglv,lv,"",t1,t2).pruefschnittlehrer:t1
:=datenzurlv(kennungparaphe,lv);IF lehrerunterrichtTHEN IF erstereintragTHEN 
putline(datei,leerzeile);erstereintrag:=FALSE FI ;putline(datei,jgfake(lv)+
": "+tagstunde(i,TRUE )+". : "+schnittlehrer+jgfake(t2));zzINCR 1;ohnefehler
:=FALSE FI .lehrerunterricht:t2:=geplantelvfuer(i,kennungparaphe,t1);t2<>lv
CAND t2<>"".pruefraumundschnitt:IF raum<>leererraumTHEN IF NOT 
bezeichnungzulaessig(kennungraum,raum)THEN IF erstereintragTHEN putline(datei
,leerzeile);erstereintrag:=FALSE FI ;putline(datei,jgfake(lv)+": "+tagstunde(
i,TRUE )+". : "+raumungueltig1+raum+raumungueltig2+ohneraum);zzINCR 1;raum:=
leererraumELIF raumunterrichtTHEN IF erstereintragTHEN putline(datei,
leerzeile);erstereintrag:=FALSE FI ;putline(datei,jgfake(lv)+": "+tagstunde(i
,TRUE )+". : "+schnittraum+raum+ohneraum);zzINCR 1;raum:=leererraumFI FI .
raumunterricht:t1:=geplantelvfuer(i,kennungraum,raum);t1<>lvCAND t1<>"".END 
PROC schreibeintraege;TEXT PROC jgfake(TEXT CONST lv):text(lv,2)+" "+subtext(
lv,3,4)+" "+subtext(lv,5)END PROC jgfake;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 meldungausgebenFI END PROC 
meldungausgeben;END PACKET stundenplanakthalbjuebernehmen;