summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/2.likw schuelerwahl sek2
blob: 7b395a3f5469499fea346d89dc390c824b730332 (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
167
168
169
170
171
172
173
PACKET likwschuelerwahlsek2DEFINES kurswahlauszaehlenspezielleteile:LET 
AUSGFELD =ROW ausgfeldlaengeTEXT ,AUSGKOPF =ROW ausgkopflaengeTEXT ,
AUSGKOPFDRUCK =ROW ausgkopflaengeTEXT ;AUSGFELD VAR ausgfeld;AUSGKOPF VAR 
ausgkopf;AUSGKOPFDRUCK VAR ausgkopfdruck;#K onstantenzurM askenbearbeitung#
LET maskeschuelerwahl="ms schuelerwahl auszaehlen sek2 eingang",fnr2fuerjgst=
2,fnr3fuerhj=3,fnr4jgstls=4,fnr5jgstneu=5,fnr6kurswahl=6,fnr7bs=7,fnr8dr=8,
ausgfeldlaenge=1,anzahlobjekteprobildschirm=13,ueberschriftenzeilen=2,#
imstand.D ruckkopf#ausgkopflaenge=2,spaltentrenner=" :",spaltenbreite1=7,
spaltenbreite2=6,spaltenbreite3bis13=3,bsanfpos=2,klausurbestand=
"c02 abitur klausur";TEXT CONST kopfueb1teil1:="Wahlergebnis für Jgst. ",
kopfueb1teil2:=" im Schuljahr ",kopfueb2teil1:="Schüler der jetzigen Jgst. ",
kopfueb2teil2:=" und der ",kopfueb2teil3:="Neuangemeldeten zur Jgst. ",
unterstreichung:="--------+-------+"+11*"----+",tabueb1:="Angebot  gewählt ";
TEXT VAR tabueb2,kwsek2auszaehlenueb:="Wahlergebnis auszählen",klausurkuerzel
,textueb1:="",textueb2:="";INT VAR bildanfang,druckzeilenzahl,status,
dbstatusmerker,aktuellerindex,feldnr;LET mnrjgstfalsch=404,mnrjgstfehlt=172,
mnrhjfalsch=405,mnrkeinekwdatenda=406,mnrkeinekuerzelda=408,
mnrbearbeitetwerden=352,mnrbittewarten=69;INT VAR mnrallgemein;LET niltext=""
,punkt=".",querstrich="/",blank=" ",vierblank="    ",null=0,maxkuerzel=11,
zwoelf=12;ROW zwoelfINT VAR gesamtundeinzelsummen;INT VAR anzkuerzel,x;LET 
neuangemeldete="N",allederjgst="",ohneneuang="O";BOOL VAR bildschirmausgabe,
kurswahlen,nurls,lsundneue,nurneue;TEXT VAR dbsj,dbhj,dbjgst,fuerkwsj,
fuerjgst:="",fuerhj:="",jgstls:="",jgstneu:="",fach,art,kennung,klkuerzel;
BOOL PROC multistop:IF kurswahlenTHEN dbstatus=0AND dbjgst=wert(fnrlvjgst)
AND dbsj=wert(fnrlvsj)AND dbhj=wert(fnrlvhj)ELSE dbstatus=0AND dbjgst=wert(
fnrfangjgst)AND dbsj=wert(fnrfangsj)AND dbhj=wert(fnrfanghj)FI END PROC 
multistop;BOOL PROC multistopsim:BOOL VAR b;setzebestandende(FALSE );b:=
multistop;IF NOT multistopTHEN setzebestandende(TRUE )FI ;bEND PROC 
multistopsim;PROC kurswahlauszaehlenspezielleteile(INT CONST nr):SELECT nrOF 
CASE 1:kwsek2auszaehlendialogvorbereitenCASE 2:
kwsek2auszaehleneingabenrichtigCASE 3:kwsek2auszaehlenlistenvorbereitenCASE 4
:kwsek2auszaehlendruckvorbereitenCASE 5:kwsek2auszaehlenseitedruckenCASE 6:
kwsek2auszaehlenbildschirmvorbereitenCASE 7:kwsek2auszaehlenseitezeigen
ENDSELECT .END PROC kurswahlauszaehlenspezielleteile;PROC 
kwsek2auszaehlendialogvorbereiten:kwsek2auszaehlenueb:=text(vergleichsknoten)
;setzeanfangswerte(maskeschuelerwahl,bsanfpos)END PROC 
kwsek2auszaehlendialogvorbereiten;PROC kwsek2auszaehleneingabenrichtig:nurls
:=FALSE ;lsundneue:=FALSE ;nurneue:=FALSE ;standardmeldung(mnrbittewarten,
niltext);standardpruefe(5,fnr7bs,fnr8dr,null,niltext,status);IF status<>0
THEN infeld(status);setzeeingabetest(FALSE )ELSE fuerjgst:=standardmaskenfeld
(fnr2fuerjgst);fuerhj:=standardmaskenfeld(fnr3fuerhj);jgstls:=
standardmaskenfeld(fnr4jgstls);jgstneu:=standardmaskenfeld(fnr5jgstneu);IF 
NOT eingabenzujgstundhjkorrektTHEN standardmeldung(mnrallgemein,niltext);
setzeeingabetest(FALSE )ELSE kurswahlen:=standardmaskenfeld(fnr6kurswahl)<>
niltext;bildschirmausgabe:=standardmaskenfeld(fnr8dr)=niltext;IF NOT (
datenraumfürgewaehltessjda)THEN standardmeldung(mnrkeinekwdatenda,niltext);
setzeeingabetest(FALSE )ELSE IF keineklausurkuerzelvorhandenTHEN 
standardmeldung(mnrkeinekuerzelda,niltext);setzeeingabetest(FALSE )ELSE 
setzeeingabetest(TRUE );setzeausgabedrucker(NOT bildschirmausgabe)FI ;FI ;FI 
;FI ;.keineklausurkuerzelvorhanden:BOOL VAR nix:=TRUE ;klausurkuerzel:=
niltext;inittupel(dnrschluessel);putwert(fnrschlsachgebiet,klausurbestand);
search(dnrschluessel,FALSE );anzkuerzel:=0;IF dbstatus<>0COR wert(
fnrschlsachgebiet)<>klausurbestandTHEN LEAVE keineklausurkuerzelvorhanden
WITH nixELSE FOR xFROM 1UPTO maxkuerzelREP IF wert(fnrschlsachgebiet)=
klausurbestandTHEN klausurkuerzelCAT wert(fnrschlschluessel);anzkuerzelINCR 1
;succ(dnrschluessel)FI ;PER ;FI ;nix:=anzkuerzel=0;nix.
eingabenzujgstundhjkorrekt:dbhj:=schulkenndatum("Schulhalbjahr");dbsj:=
schulkenndatum("Schuljahr");INT VAR jgst;standardpruefe(2,fnr2fuerjgst,null,
null,niltext,status);IF status<>0THEN 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 
eingabenzujgstundhjkorrektWITH FALSE FI ;IF jgstls=niltextAND jgstneu=niltext
THEN mnrallgemein:=mnrjgstfehlt;infeld(fnr4jgstls);LEAVE 
eingabenzujgstundhjkorrektWITH FALSE FI ;jgst:=int(jgstls);IF jgstls<>niltext
THEN 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 
kwsek2auszaehleneingabenrichtig;PROC kwsek2auszaehlenlistenvorbereiten:BOOL 
VAR b;initspalten;setzespaltentrenner(spaltentrenner);textueb1:=kopfueb1teil1
;textueb1CAT fuerjgst;textueb1CAT punkt;textueb1CAT fuerhj;textueb1CAT 
kopfueb1teil2;textueb1CAT subtext(fuerkwsj,1,2)+querstrich;textueb1CAT 
subtext(fuerkwsj,3,4);IF kurswahlenTHEN tabueb2:="Kurs     gesamt";ELSE 
tabueb2:="Fach     gesamt";FI ;FOR xFROM 1UPTO anzkuerzelREP tabueb2CAT 
vierblank;tabueb2CAT subtext(klausurkuerzel,x,x);PER ;IF (nurlsAND fuerhj=
dbhjAND fuerjgst=jgstls)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 ;IF nurneueTHEN textueb2:=
kopfueb2teil3;textueb2CAT jgstneu;ELSE textueb2:=kopfueb2teil1;textueb2CAT 
jgstls;IF lsundneueTHEN textueb2CAT kopfueb2teil2;textueb2CAT kopfueb2teil3;
textueb2CAT jgstneu;FI ;FI ;IF kurswahlenTHEN aktuellerindex:=
dnrlehrveranstaltungen;inittupel(aktuellerindex);feldnr:=fnrlvfachkennung;
putwert(fnrlvsj,dbsj);putwert(fnrlvhj,dbhj);putwert(fnrlvjgst,dbjgst);
setzescanendewert("�");ELSE aktuellerindex:=dnrfaecherangebot;inittupel(
aktuellerindex);feldnr:=fnrfanglfdnr;putwert(fnrfangsj,dbsj);putwert(
fnrfanghj,dbhj);putwert(fnrfangjgst,dbjgst);setzescanendewert("255");FI ;
setzeidentiwert("");initobli(anzahlobjekteprobildschirm);objektlistestarten(
aktuellerindex,dbsj,feldnr,TRUE ,b);setzebestandende(NOT multistopCOR b);END 
PROC kwsek2auszaehlenlistenvorbereiten;PROC 
kwsek2auszaehlenbildschirmvorbereiten:LET fnrausganf=2;
standardkopfmaskeaktualisieren(kwsek2auszaehlenueb);bildanfang:=fnrausganf;
setzebildanfangsposition(bildanfang);initspalten;setzespaltenbreite(
bildbreite);spaltenweise(textueb1);ausgfeld(1):=zeile;ausgfeld(1)IN 
ausgabepos;erhoeheausgabeposumeins;spaltenweise(textueb2);ausgfeld(1):=zeile;
ausgfeld(1)IN ausgabepos;erhoeheausgabeposumeins;erhoeheausgabeposumeins;
spaltenweise(tabueb1);ausgfeld(1):=zeile;ausgfeld(1)IN ausgabepos;
erhoeheausgabeposumeins;spaltenweise(tabueb2);ausgfeld(1):=zeile;ausgfeld(1)
IN ausgabepos;erhoeheausgabeposumeins;spaltenweise(unterstreichung);ausgfeld(
1):=zeile;ausgfeld(1)IN ausgabepos;erhoeheausgabeposumeins;
setzebildanfangsposition(8);initspalten;spaltendefinierenEND PROC 
kwsek2auszaehlenbildschirmvorbereiten;PROC kwsek2auszaehlenseitezeigen:
blaettern(PROC (INT CONST )kwwahldatensek2zeigen,aktion,TRUE ,TRUE ,BOOL 
PROC multistop)END PROC kwsek2auszaehlenseitezeigen;PROC 
kwwahldatensek2zeigen(INT CONST x):kwwahldatensek2holen;
kwwahldatensek2aufbereiten;kwwahldatensek2aufbildschirm;END PROC 
kwwahldatensek2zeigen;PROC kwwahldatensek2aufbildschirm:INT VAR i;FOR iFROM 1
UPTO ausgfeldlaengeREP ausgfeld(i):=zeile;ausgfeld(i)IN ausgabepos;
erhoeheausgabeposumeins;PER ;END PROC kwwahldatensek2aufbildschirm;PROC 
kwsek2auszaehlendruckvorbereiten:setzebestandende(FALSE );druckvorbereiten;
variablenfuerdrucksetzen;IF kurswahlenTHEN inittupel(dnrlehrveranstaltungen);
putwert(fnrlvsj,dbsj);putwert(fnrlvhj,dbhj);putwert(fnrlvjgst,dbjgst);
setzescanendewert("�");ELSE inittupel(dnrfaecherangebot);putwert(fnrfangsj,
dbsj);putwert(fnrfanghj,dbhj);putwert(fnrfangjgst,dbjgst);setzescanendewert(
"255");FI ;initdruckkopf(textueb1,textueb2);initausgabekopfdruck;
lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL 
PROC multistopsim);.variablenfuerdrucksetzen:druckzeilenzahl:=drucklaenge(
ueberschriftenzeilen)-ausgkopflaenge.END PROC 
kwsek2auszaehlendruckvorbereiten;PROC initausgabekopfdruck:ausgkopfdruck(1):=
tabueb1;ausgkopfdruck(2):=tabueb2;END PROC initausgabekopfdruck;PROC 
kwsek2auszaehlenseitedrucken:kwwahldatensek2ueberschriftdrucken;initspalten;
spaltendefinieren;seitedrucken(PROC (INT VAR )kwwahldatensek2drucken,
druckzeilenzahl,ausgfeldlaenge,BOOL PROC multistopsim);seitenwechsel.END 
PROC kwsek2auszaehlenseitedrucken;PROC kwwahldatensek2ueberschriftdrucken:
INT VAR i;druckkopfschreiben;FOR iFROM 1UPTO ausgkopflaengeREP 
druckzeileschreiben(ausgkopfdruck(i))PER ;druckzeileschreiben(unterstreichung
);END PROC kwwahldatensek2ueberschriftdrucken;PROC kwwahldatensek2drucken(
INT VAR zeilenzaehler):LET markiert="#";kwwahldatensek2holen;standardmeldung(
mnrbearbeitetwerden,fach+markiert);kwwahldatensek2aufbereiten;ausgfeld(1):=
zeile;zeilenzaehlerINCR ausgfeldlaenge;kwwahldatensek2indruckdatei;END PROC 
kwwahldatensek2drucken;PROC kwwahldatensek2indruckdatei:INT VAR i;FOR iFROM 1
UPTO ausgfeldlaengeREP druckzeileschreiben(ausgfeld(1))PER END PROC 
kwwahldatensek2indruckdatei;PROC spaltendefinieren:INT VAR x;initspalten;
setzespaltentrenner(spaltentrenner);setzespaltenbreite(spaltenbreite1);
setzespaltenbreite(spaltenbreite2);FOR xFROM 1UPTO maxkuerzelREP 
setzespaltenbreite(spaltenbreite3bis13)PER ;END PROC spaltendefinieren;PROC 
kwwahldatensek2holen:TEXT VAR hilfstext;dbstatusmerker:=dbstatus;IF 
kurswahlenTHEN hilfstext:=wert(fnrlvfachkennung);fach:=subtext(hilfstext,1,2)
;kennung:=subtext(hilfstext,3,6);gesamtundeinzelsummen(1):=
anzahlschuelermitwahl(fach,kennung,niltext,niltext);FOR xFROM 2UPTO 
anzkuerzel+1REP klkuerzel:=subtext(klausurkuerzel,x-1,x-1);
gesamtundeinzelsummen(x):=anzahlschuelermitwahl(fach,kennung,niltext,
klkuerzel);PER ;ELSE fach:=text(wert(fnrfangfach),2);art:=wert(fnrfangart);
gesamtundeinzelsummen(1):=anzahlschuelermitwahl(fach,niltext,art,niltext);
FOR xFROM 2UPTO anzkuerzel+1REP klkuerzel:=subtext(klausurkuerzel,x-1,x-1);
gesamtundeinzelsummen(x):=anzahlschuelermitwahl(fach,niltext,art,klkuerzel);
PER ;FI ;dbstatus(dbstatusmerker);END PROC kwwahldatensek2holen;PROC 
kwwahldatensek2aufbereiten:INT VAR x;IF kurswahlenTHEN spaltenweise(fach+
blank+kennung);ELSE spaltenweise(fach+blank+art);FI ;FOR xFROM 1UPTO 
anzkuerzel+1REP spaltenweise(text(gesamtundeinzelsummen(x),3));PER ;FOR x
FROM 1UPTO maxkuerzel-anzkuerzelREP spaltenweise(niltext)PER ;END PROC 
kwwahldatensek2aufbereiten;END PACKET likwschuelerwahlsek2;