summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/2.likw kurskombinationen sek2
blob: 35caa9d2c748200c8a2e91e1047bad3ac7037644 (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
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
PACKET likwkurskombinatilonensek2DEFINES kurskombinationmaskebearbeiten,
kurskombinationggferstellen,kurskombinationzeigen,kurskombinationendrucken:
LET maske="ms kurskombination auszaehlen sek2 eingang",fnr2fuerjgst=2,
fnr3fuerhj=3,fnr4jgstls=4,fnr5jgstneu=5,fnr6kurswahl=6,fnr7bestart=7,
fnr8klausur=8,fnr9bs=9,fnr10dr=10,mnrjgstfalsch=404,mnrjgstfehlt=172,
mnrhjfalsch=405,mnrkeinekwdatenda=406,mnrkeinedbdatenda=407,
mnrbearbeitetwerden=352,mnrlistewirdgedruckt=58,mnrbittewarten=69,
mnrlistewirdaufbereitet=190;INT VAR mnrallgemein;TEXT VAR mnrzusatz;TEXT 
CONST mark:="#";LET niltext="",punkt=".",querstrich="/",blank=" ",
blankklammer=" )",doppelpunkt=":",null=0,neuangemeldete="N",allederjgst="",
ohneneuang="O";BOOL VAR bildschirmausgabe,kurswahlen,lsundneue,nurneue,nurls,
bestimmtekursart;TEXT VAR dbsj,dbhj,dbjgst,fuerkwsj,fuerhj,fuerjgst,jgstls,
jgstneu,hilfsstring,kursart,klausur,kennung,fachart,lvart,fachkennung1,
fachkennung2,fachart1,fachart2,kursart1,kursart2;LET maxkurse=200,maxspalten=
13;TEXT CONST ueberschrift3:="-------:"+13*"----+";TEXT VAR ueberschrift1,
ueberschrift2,zeile;LET ausgfeldlaenge=1,AUSGFELD =ROW ausgfeldlaengeTEXT ,
AUSGKOPF =ROW ausgkopflaengeTEXT ,AUSGKOPFDRUCK =ROW ausgkopflaengeTEXT ;
AUSGKOPFDRUCK VAR ausgkopfdruck;LET ausgkopflaenge=2,ueberschriftenzeilen=2;
TEXT CONST kopfueb1teil1:="Wahlergebnis für Jgst. ",kopfueb1teil2:=
" im Schuljahr ",kopfueb1teil3:="    (Art/Klausur: ",kopfueb2teil1:=
"Schüler der jetzigen Jgst. ",kopfueb2teil2:=" und der ",kopfueb2teil3:=
"Neuangemeldeten zur Jgst. ";TEXT VAR textueb1:="",textueb2:="";INT VAR 
status,dbstatusmerker,zaehler,x,y,z,anzangebote,anztabellen,anzspaltenschluss
,anfang,ende,zeilenzaehler,druckzeilenzahl;LET datenraum="datenraum";LET 
ZEILE =STRUCT (TEXT angebot,ROW maxkurseINT anzahl);BOUND ROW maxkurseZEILE 
VAR zeilespalte;ROW maxspaltenINT VAR summen;PROC 
kurskombinationmaskebearbeiten:standardvproc(maske);END PROC 
kurskombinationmaskebearbeiten;PROC kurskombinationggferstellen:lsundneue:=
FALSE ;nurls:=FALSE ;nurneue:=FALSE ;standardmeldung(mnrbittewarten,niltext);
standardpruefe(5,fnr9bs,fnr10dr,null,niltext,status);IF status<>0THEN infeld(
status);return(1)ELSE fuerjgst:=standardmaskenfeld(fnr2fuerjgst);fuerhj:=
standardmaskenfeld(fnr3fuerhj);jgstls:=standardmaskenfeld(fnr4jgstls);jgstneu
:=standardmaskenfeld(fnr5jgstneu);IF NOT eingabenzujgstundhjkorrektTHEN 
standardmeldung(mnrallgemein,niltext);return(1);ELSE kursart:=
standardmaskenfeld(fnr7bestart);klausur:=standardmaskenfeld(fnr8klausur);
bestimmtekursart:=kursart<>niltext;kurswahlen:=standardmaskenfeld(
fnr6kurswahl)<>niltext;bildschirmausgabe:=standardmaskenfeld(fnr10dr)=niltext
;IF NOT datenraumfürgewaehltessjdaTHEN standardmeldung(mnrkeinekwdatenda,
niltext);return(1);ELSE IF angebotelvsoderfaecherimrowTHEN 
druckdateifuellenundausgebenELSE standardmeldung(mnrkeinedbdatenda,mnrzusatz+
mark);return(1)FI ;FI ;FI ;FI ;.eingabenzujgstundhjkorrekt:dbhj:=
schulkenndatum("Schulhalbjahr");dbsj:=schulkenndatum("Schuljahr");INT VAR 
jgst;standardpruefe(2,fnr2fuerjgst,null,null,niltext,status);IF status<>0
THEN mnrallgemein:=mnrjgstfalsch;infeld(fnr2fuerjgst);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE FI ;jgst:=int(fuerjgst);IF jgst<11COR 
jgst>13THEN mnrallgemein:=mnrjgstfalsch;infeld(fnr2fuerjgst);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE FI ;IF fuerhj<>"1"AND fuerhj<>"2"THEN 
mnrallgemein:=mnrhjfalsch;infeld(fnr3fuerhj);LEAVE eingabenzujgstundhjkorrekt
WITH FALSE FI ;IF jgstls=niltextAND jgstneu=niltextTHEN mnrallgemein:=
mnrjgstfehlt;infeld(fnr4jgstls);LEAVE eingabenzujgstundhjkorrektWITH FALSE 
FI ;jgst:=int(jgstls);IF jgstls<>niltextTHEN standardpruefe(2,fnr4jgstls,null
,null,niltext,status);IF status<>0COR (jgst<10COR jgst>13)THEN mnrallgemein:=
mnrjgstfalsch;infeld(fnr4jgstls);LEAVE eingabenzujgstundhjkorrektWITH FALSE 
FI ;FI ;jgst:=int(jgstneu);IF jgstneu<>niltextTHEN standardpruefe(2,
fnr5jgstneu,null,null,niltext,status);IF status<>0COR (jgst<11COR jgst>13)
THEN mnrallgemein:=mnrhjfalsch;infeld(fnr5jgstneu);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE FI ;FI ;IF jgstls<>niltextAND jgstneu<>
niltextTHEN IF int(jgstls)+1=int(jgstneu)AND jgstneu<=fuerjgstTHEN lsundneue
:=TRUE ELSE mnrallgemein:=mnrjgstfalsch;infeld(fnr4jgstls);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE FI ;ELIF jgstls=niltextTHEN IF jgstneu>
fuerjgstTHEN mnrallgemein:=mnrjgstfalsch;infeld(fnr4jgstls);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE ELSE nurneue:=TRUE FI ;ELSE IF jgstls>
fuerjgstTHEN mnrallgemein:=mnrjgstfalsch;infeld(fnr2fuerjgst);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE ELIF (jgstls="10"AND dbhj="1")COR (
jgstls=fuerjgstAND fuerhj<dbhj)THEN mnrallgemein:=mnrhjfalsch;infeld(
fnr3fuerhj);LEAVE eingabenzujgstundhjkorrektWITH FALSE ELSE nurls:=TRUE ;FI ;
FI ;mnrallgemein:=1;TRUE .datenraumfürgewaehltessjda:BOOL VAR ok:=FALSE ;INT 
VAR fehler;IF nurneueTHEN jgstls:=text(int(jgstneu)-1);kurswahlinitialisieren
(jgstls,fuerjgst,fuerhj,neuangemeldete,fuerkwsj);kurswahlbasisholen(fehler);
ok:=fehler=0;ELIF lsundneueTHEN kurswahlinitialisieren(jgstls,fuerjgst,fuerhj
,allederjgst,fuerkwsj);kurswahlbasisholen(fehler);ok:=fehler=0;ELSE 
kurswahlinitialisieren(jgstls,fuerjgst,fuerhj,ohneneuang,fuerkwsj);
kurswahlbasisholen(fehler);ok:=fehler=0;FI ;okEND PROC 
kurskombinationggferstellen;PROC kurskombinationendrucken(BOOL CONST 
nachbsausgabe):IF nachbsausgabeTHEN rename("Kurskombinationen auszaehlen",
"liste.1");FILE VAR f:=sequentialfile(output,"liste.1");output(f);
drucknachbereiten;return(2);ELSE drucknachbereiten;return(1);FI ;
standardmeldung(mnrlistewirdgedruckt,niltext);forget(datenraum,quiet);forget(
"liste.1",quiet);END PROC kurskombinationendrucken;PROC kurskombinationzeigen
:IF exists("liste.1")THEN rename("liste.1","Kurskombinationen auszaehlen")FI 
;zeigedatei("Kurskombinationen auszaehlen","a");forget(datenraum,quiet);END 
PROC kurskombinationzeigen;BOOL PROC angebotelvsoderfaecherimrow:BOOL VAR 
angeboteda;forget("datenraum",quiet);forget("Kurskombinationen auszaehlen",
quiet);zeilespalte:=new(datenraum);IF (nurlsAND fuerhj=dbhjAND fuerkwsj=dbsj)
THEN dbjgst:=jgstlsELSE IF nurlsCOR lsundneueTHEN IF dbhj="2"THEN dbjgst:=
text(int(jgstls)+1)ELSE dbjgst:=jgstlsFI ;ELSE IF dbhj="2"THEN dbjgst:=
jgstneuELSE dbjgst:=text(int(jgstneu)-1)FI ;FI ;geplanteshjundsjberechnen(
dbhj,dbsj);FI ;anzangebote:=0;zeilespalte(1).angebot:=niltext;IF kurswahlen
THEN mnrzusatz:="Datei Lehrveranstaltungen";inittupel(dnrlehrveranstaltungen)
;putwert(fnrlvjgst,dbjgst);statleseschleife(dnrlehrveranstaltungen,dbsj,dbhj,
fnrlvsj,fnrlvhj,PROC angebotlvmerken);ELSE mnrzusatz:="Datei Fächerangebot";
inittupel(dnrfaecherangebot);putwert(fnrfangjgst,dbjgst);statleseschleife(
dnrfaecherangebot,dbsj,dbhj,fnrfangsj,fnrfanghj,PROC angebotfangmerken);FI ;
angeboteda:=anzangebote>0;angebotedaEND PROC angebotelvsoderfaecherimrow;
PROC angebotlvmerken(BOOL VAR ende):IF status<>0COR wert(fnrlvjgst)<>dbjgst
THEN ende:=TRUE ;ELSE lvart:=wert(fnrlvart);IF (NOT bestimmtekursart)COR 
lvart=kursartTHEN anzangeboteINCR 1;zeilespalte(anzangebote).angebot:=text(
wert(fnrlvfachkennung),6)+lvart;FI ;FI ;END PROC angebotlvmerken;PROC 
angebotfangmerken(BOOL VAR ende):IF status<>0COR wert(fnrfangjgst)<>dbjgst
THEN ende:=TRUE ;ELSE fachart:=wert(fnrfangart);IF (NOT bestimmtekursart)COR 
fachart=kursartTHEN anzangeboteINCR 1;zeilespalte(anzangebote).angebot:=text(
wert(fnrfangfach),2)+fachart;FI ;FI ;END PROC angebotfangmerken;PROC 
druckdateifuellenundausgeben:zeilenzaehler:=0;standardmeldung(
mnrlistewirdaufbereitet,niltext);wahldatenauskwdatenrauminrowablegen;
anztabellen:=anzangeboteDIV maxspalten;anzspaltenschluss:=anzangeboteMOD 
maxspalten;ueberschriftenimdruckkopfbauen;variablenfuerdrucksetzen;
druckvorbereiten;initdruckkopf(textueb1,textueb2);FOR zFROM 1UPTO anztabellen
REP ende:=z*maxspalten;anfang:=ende-(maxspalten-1);
tabellevonbisspalteausgeben(maxspalten);IF z<anztabellenTHEN seitenwechselFI 
;PER ;IF anzspaltenschluss<>0THEN IF anztabellen<>0THEN anfang:=ende+1;
seitenwechselELSE anfang:=1FI ;ende:=anzangebote;tabellevonbisspalteausgeben(
anzspaltenschluss);FI ;IF bildschirmausgabeTHEN kurskombinationzeigenELSE 
kurskombinationendrucken(FALSE )FI ;.variablenfuerdrucksetzen:druckzeilenzahl
:=drucklaenge(ueberschriftenzeilen)-ausgkopflaenge.
ueberschriftenimdruckkopfbauen:textueb1:=kopfueb1teil1;textueb1CAT fuerjgst;
textueb1CAT punkt;textueb1CAT fuerhj;textueb1CAT kopfueb1teil2;textueb1CAT 
subtext(fuerkwsj,1,2)+querstrich;textueb1CAT subtext(fuerkwsj,3,4);IF 
bestimmtekursartOR klausur<>niltextTHEN textueb1CAT kopfueb1teil3;textueb1
CAT kursart+querstrich;textueb1CAT klausur+blankklammer;FI ;IF NOT (fuerhj=
dbhjAND fuerjgst=jgstls)THEN geplanteshjundsjberechnen(dbhj,dbsj);FI ;IF 
nurneueTHEN textueb2:=kopfueb2teil3;textueb2CAT jgstneu;ELSE textueb2:=
kopfueb2teil1;textueb2CAT jgstls;IF lsundneueTHEN textueb2CAT kopfueb2teil2;
textueb2CAT kopfueb2teil3;textueb2CAT jgstneu;FI ;FI ;END PROC 
druckdateifuellenundausgeben;PROC wahldatenauskwdatenrauminrowablegen:FOR x
FROM 1UPTO anzangeboteREP y:=1;IF kurswahlenTHEN WHILE y<=xREP 
kombiationenlvsmerken(x,y);yINCR 1;PER ;ELSE WHILE y<=xREP 
kombinationenfaechermerken(x,y);yINCR 1;PER ;FI ;PER ;END PROC 
wahldatenauskwdatenrauminrowablegen;PROC kombiationenlvsmerken(INT CONST zeil
,spal):fachkennung1:=zeilespalte(zeil).angebot;fachkennung2:=zeilespalte(spal
).angebot;IF NOT bestimmtekursartTHEN kursart1:=subtext(fachkennung1,7,7);
kursart2:=subtext(fachkennung2,7,7);ELSE kursart1:=kursart;kursart2:=kursart
FI ;dbstatusmerker:=dbstatus;zeilespalte(zeil).anzahl(spal):=
anzahlschuelermitwahl(subtext(fachkennung1,1,2),subtext(fachkennung1,3,6),
kursart1,klausur,subtext(fachkennung2,1,2),subtext(fachkennung2,3,6),kursart2
,klausur);dbstatus(dbstatusmerker);END PROC kombiationenlvsmerken;PROC 
kombinationenfaechermerken(INT CONST zeil,spal):fachart1:=zeilespalte(zeil).
angebot;fachart2:=zeilespalte(spal).angebot;IF bestimmtekursartTHEN kursart1
:=kursart;kursart2:=kursart;ELSE kursart1:=subtext(fachart1,3,3);kursart2:=
subtext(fachart2,3,3);FI ;kennung:=niltext;dbstatusmerker:=dbstatus;
zeilespalte(zeil).anzahl(spal):=anzahlschuelermitwahl(subtext(fachart1,1,2),
kennung,kursart1,klausur,subtext(fachart2,1,2),kennung,kursart2,klausur);
dbstatus(dbstatusmerker);END PROC kombinationenfaechermerken;PROC 
tabellevonbisspalteausgeben(INT CONST spaltenzahl):INT VAR s,kombinationen;
FOR sFROM 1UPTO maxspaltenREP summen(s):=0PER ;zeilenzaehler:=0;ueberschrift1
:="       :";ueberschrift2:="       :";FOR zaehlerFROM anfangUPTO endeREP 
ueberschrift1CAT text(zeilespalte(zaehler).angebot,2)+"  :";IF NOT kurswahlen
THEN ueberschrift2CAT subtext(zeilespalte(zaehler).angebot,3,3)+"   :";ELSE 
ueberschrift2CAT subtext(zeilespalte(zaehler).angebot,3,6)+":";FI ;PER ;
druckkopfschreiben;setzemitseitennummern(TRUE );druckzeileschreiben(
ueberschrift1);druckzeileschreiben(ueberschrift2);druckzeileschreiben(
ueberschrift3);zeilenzaehlerINCR 12;FOR zaehlerFROM 1UPTO anzangeboteREP s:=1
;hilfsstring:=zeilespalte(zaehler).angebot;zeile:=text(hilfsstring,2)+blank;
IF kurswahlenTHEN zeileCAT subtext(hilfsstring,3,6)+doppelpunkt;ELSE zeile
CAT subtext(hilfsstring,3,3)+3*blank+doppelpunktFI ;FOR xFROM anfangUPTO ende
REP IF x<zaehlerTHEN kombinationen:=zeilespalte(zaehler).anzahl(x);zeileCAT 
text(kombinationen,3)+blank+doppelpunkt;summen(s)INCR kombinationen;ELIF x=
zaehlerTHEN zeileCAT "  * :"ELSE kombinationen:=zeilespalte(x).anzahl(zaehler
);zeileCAT text(kombinationen,3)+" :";summen(s)INCR kombinationen;FI ;sINCR 1
;PER ;zeilenzaehlerINCR 1;IF drucklaenge-1=zeilenzaehlerTHEN seitenwechsel;
druckzeileschreiben(ueberschrift1);druckzeileschreiben(ueberschrift2);
druckzeileschreiben(ueberschrift3);zeilenzaehler:=4;FI ;druckzeileschreiben(
zeile);PER ;druckzeileschreiben(ueberschrift3);zeile:="Summe  :";FOR sFROM 1
UPTO spaltenzahlREP zeileCAT text(summen(s),3)+blank+doppelpunkt;PER ;
zeilenzaehlerINCR 2;druckzeileschreiben(zeile);END PROC 
tabellevonbisspalteausgeben;END PACKET likwkurskombinatilonensek2