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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
PACKET likwwahlundkursdatensek2DEFINES wahlundkursdatenmaskebearbeiten,
wahlundkursdatenggfstarten,wahlundkursdatennaechsteliste,
wahlundkursdatenabschluss,wahlundkursdatenggfbestandueberankreuzliste,
wahlundkursdatenblaettern,wahldatenlistenseiteaktualisieren:LET objektmaske=
"mu objektliste",eingangsmaske="ms wahl und kursdaten sek2 eingang",
fnr2jgstls=2,fnr3jgstneu=3,fnr4famname=4,fnr5rufname=5,fnr6gebdat=6,fnr7bs=7,
fnr8dr=8,mnrauswahlnichtsinnvoll=56,mnrlistewirdgedruckt=58,
mnrdatenexistierennicht=59,mnrbittewarten=69,mnrdruckausgabefuerwirdgedruckt=
125,mnrschuelernichtimentsprbestand=126,mnralledruckausgabenerstellt=128,
mnrangabenpraezisieren=129,mnrungueltigesdatum=157,mnrjgstfehlt=172,
mnrjgstoderschueler=318,mnrjgstfalsch=404,mnrkeinekwdatenda=406,
mnrkeinedatendain=407,mnrjgstoderbestschueler=422,trenner="�",neuang="N",
mitneuang="",ohneneuang="O";INT VAR mnrallgemein,egmaskefeldnr,status,erster,
letzter,aktschueler,zaehler,pos1,pos2;TEXT VAR fach,mnrzusatz,ueb2,hilfstext;
LET null=0,platzhalter="mehr- fach ",niltext="",punkt=".",blank=" ",dopp=":"
,doppblank=": ",blanksdopp=" :";LET maxanzfaecher=100,maxanzschulhj=10;ROW
maxanzfaecherROW maxanzschulhjTEXT VAR faecherschulhj;INT VAR ixfaecher,
ixschulhj,anzfaecher;TEXT VAR uebsj,uebjgst,faecherstring,faecher,kennungen,
klausuren,punkte,kursarten,zeile1,zeile2;BOOL VAR ankreuzliste,
bildschirmausgabe,lsundneue,nurneue,nurls,bestschueler,faecherstringok;TEXT
VAR sj,hj,kwsj,jgstls,jgstneu,famname,rufname,gebdat;FILE VAR ausgabedatei;
TEXT CONST ueb1:="Wahl- und Kursdaten von";LET fnrerstesankreuzfeld=2,
felderprolisteneintrag=2,listeneintraegeproseite=18;LET
meldungblaetternnichtmöglich=72;LET dummyschueler="",sunamenstrenner=", ",
sulaengeohnedatum=60,maxankreuzungen=1000,ankreuzung="x",keineankreuzung="",
kennungnursuname="N",boolvektordatei="Boolvektor";BOOL VAR bearbeitungingang
:=FALSE ;BOUND ROW maxankreuzungenBOOL VAR boolvektor;INT VAR aktuellezeile;
PROC wahlundkursdatenmaskebearbeiten:standardvproc(eingangsmaske);
ankreuzliste:=FALSE ;END PROC wahlundkursdatenmaskebearbeiten;PROC
wahlundkursdatenggfbestandueberankreuzliste:IF plausisallgemokAND
plausisspezankreuzokAND kurswahldatenraumdaTHEN ankreuzliste:=TRUE ;
aktuellezeile:=erster;initboolvektor;standardstartproc(objektmaske);
listezeigenabzeile(aktuellezeile);wahldatenlistenseiteaktualisieren;ELSE
standardmeldung(mnrallgemein,niltext);return(1);FI ;.plausisspezankreuzok:
BOOL VAR ok:=FALSE ;IF bestschuelerTHEN mnrallgemein:=mnrjgstoderbestschueler
;infeld(fnr4famname);ELSE ok:=TRUE FI ;ok.initboolvektor:boolvektor:=new(
boolvektordatei);FOR zaehlerFROM ersterUPTO letzterREP boolvektor(zaehler):=
FALSE PER ;END PROC wahlundkursdatenggfbestandueberankreuzliste;PROC
wahlundkursdatenggfstarten:bearbeitungingang:=FALSE ;IF ankreuzlisteTHEN
ersterDECR 1;naechsterindex(erster);startenELSE IF NOT plausisallgemokCOR
NOT plausisspezokTHEN standardmeldung(mnrallgemein,niltext);return(1);ELSE
startenFI ;FI ;.plausisspezok:IF bestschuelerTHEN IF NOT bestschuelerkorrekt
THEN standardmeldung(mnrangabenpraezisieren,niltext);infeld(egmaskefeldnr);
LEAVE plausisspezokWITH FALSE ELSE erster:=1;letzter:=1;FI ;ELSE IF lsundneue
THEN IF int(jgstls)<>int(jgstneu)-1THEN mnrallgemein:=mnrjgstfalsch;infeld(
fnr2jgstls);LEAVE plausisspezokWITH FALSE FI ;FI ;IF NOT kurswahldatenraumda
THEN infeld(fnr2jgstls);LEAVE plausisspezokWITH FALSE FI ;FI ;TRUE .
bestschuelerkorrekt:IF rufname=niltextTHEN IF gebdat=niltextTHEN IF
famnameeindeutigTHEN rufname:=wert(fnrsurufnames);gebdat:=wert(fnrsugebdatums
);LEAVE bestschuelerkorrektWITH TRUE ELSE LEAVE bestschuelerkorrektWITH
FALSE ;FI ;ELSE egmaskefeldnr:=fnr5rufname;mnrallgemein:=
mnrangabenpraezisieren;LEAVE bestschuelerkorrektWITH FALSE ;FI ;ELSE IF
gebdat<>niltextTHEN hilfstext:=subtext(gebdat,1,2);hilfstextCAT punkt;
hilfstextCAT subtext(gebdat,3,4);hilfstextCAT punkt;hilfstextCAT subtext(
gebdat,5,6);gebdat:=hilfstext;IF kompletterschluesselokTHEN LEAVE
bestschuelerkorrektWITH TRUE ELSE LEAVE bestschuelerkorrektWITH FALSE FI ;
ELSE IF famnameundrufnameeindeutigTHEN gebdat:=wert(fnrsugebdatums);LEAVE
bestschuelerkorrektWITH TRUE ELSE LEAVE bestschuelerkorrektWITH FALSE ;FI ;
FI ;FI ;TRUE END PROC wahlundkursdatenggfstarten;BOOL PROC famnameeindeutig:
inittupel(dnrschueler);putwert(fnrsufamnames,famname);putwert(fnrsurufnames,
rufname);putwert(fnrsugebdatums,gebdat);putwert(fnrsustatuss,"ls");search(
dnrschueler,FALSE );IF wert(fnrsufamnames)<>famnameTHEN egmaskefeldnr:=
fnr4famname;mnrallgemein:=mnrdatenexistierennicht;LEAVE famnameeindeutigWITH
FALSE ;ELSE succ(dnrschueler);IF wert(fnrsufamnames)=famnameTHEN
egmaskefeldnr:=fnr5rufname;mnrallgemein:=mnrangabenpraezisieren;LEAVE
famnameeindeutigWITH FALSE ;ELSE pred(dnrschueler)FI ;FI ;TRUE END PROC
famnameeindeutig;BOOL PROC famnameundrufnameeindeutig:inittupel(dnrschueler);
putwert(fnrsufamnames,famname);putwert(fnrsurufnames,rufname);putwert(
fnrsugebdatums,gebdat);putwert(fnrsustatuss,"ls");search(dnrschueler,FALSE );
IF wert(fnrsufamnames)<>famnameCOR wert(fnrsurufnames)<>rufnameTHEN
egmaskefeldnr:=fnr4famname;mnrallgemein:=mnrdatenexistierennicht;LEAVE
famnameundrufnameeindeutigWITH FALSE ELSE succ(dnrschueler);IF wert(
fnrsufamnames)=famnameAND wert(fnrsurufnames)=rufnameTHEN egmaskefeldnr:=
fnr6gebdat;mnrallgemein:=mnrangabenpraezisieren;LEAVE
famnameundrufnameeindeutigWITH FALSE ELSE pred(dnrschueler)FI ;FI ;TRUE END
PROC famnameundrufnameeindeutig;BOOL PROC kompletterschluesselok:BOOL VAR
insek2:=TRUE ;standardpruefe(6,fnr6gebdat,null,null,niltext,status);IF status
<>0THEN egmaskefeldnr:=fnr6gebdat;mnrallgemein:=mnrungueltigesdatum;LEAVE
kompletterschluesselokWITH FALSE ;FI ;hilfstext:=subtext(gebdat,1,2);
hilfstextCAT punkt;hilfstextCAT subtext(gebdat,3,4);hilfstextCAT punkt;
hilfstextCAT subtext(gebdat,5,6);gebdat:=hilfstext;inittupel(dnrschueler);
putwert(fnrsufamnames,famname);putwert(fnrsurufnames,rufname);putwert(
fnrsugebdatums,gebdat);putwert(fnrsustatuss,"ls");search(dnrschueler,TRUE );
IF dbstatus<>0COR intwert(fnrsusgrpjgst)<11THEN egmaskefeldnr:=fnr4famname;
mnrallgemein:=mnrschuelernichtimentsprbestand;insek2:=FALSE FI ;insek2END
PROC kompletterschluesselok;PROC starten:aktschueler:=erster;IF
bildschirmausgabeTHEN listeaufbereiten;bearbeitungingang:=TRUE ;rename(
"liste.1","Wahl- und Kursdaten");zeigedatei("Wahl- und Kursdaten","vr");ELSE
IF ankreuzlisteTHEN WHILE aktschueler<>0REP
listeaufbereitendruckenundloeschenodermeldung;naechsterindex(aktschueler);
PER ;ankreuzliste:=FALSE ;bearbeitungingang:=FALSE ;forget(boolvektordatei,
quiet);standardstartproc(eingangsmaske);egmaskenfelderleerenzurueckundmeldung
(2);ELSE FOR aktschuelerFROM ersterUPTO letzterREP
listeaufbereitendruckenundloeschenodermeldung;PER ;
egmaskenfelderleerenzurueckundmeldung(1);FI ;FI ;END PROC starten;PROC
listeaufbereitendruckenundloeschenodermeldung:IF NOT schuelervorhandenTHEN
meldungELSE listemitdatenzumschueleraufbereiten;standardmeldung(
mnrdruckausgabefuerwirdgedruckt,famname+"#");listedrucken;listeloeschen;FI ;
END PROC listeaufbereitendruckenundloeschenodermeldung;PROC
wahlundkursdatennaechsteliste(BOOL CONST drucken):IF druckenTHEN listedrucken
FI ;listeloeschen;IF ankreuzlisteTHEN naechsterindex(aktschueler);IF
aktschueler=0THEN forget(boolvektordatei,quiet);ankreuzliste:=FALSE ;
standardstartproc(eingangsmaske);egmaskenfelderleerenzurueckundmeldung(3);
ELSE listeaufbereiten;rename("liste.1","Wahl- und Kursdaten");return(1)FI ;
ELSE IF aktschueler=letzterTHEN egmaskenfelderleerenzurueckundmeldung(2);
ELSE aktschuelerINCR 1;listeaufbereiten;rename("liste.1",
"Wahl- und Kursdaten");return(1);FI ;FI ;END PROC
wahlundkursdatennaechsteliste;PROC listeaufbereiten:IF NOT schuelervorhanden
THEN listeleeraufbereitenELSE listemitdatenzumschueleraufbereiten;FI ;END
PROC listeaufbereiten;PROC meldung:mnrzusatz:="Halbjahresdaten";
standardmeldung(mnrkeinedatendain,mnrzusatz+"#");END PROC meldung;PROC
schuelerdatenauskwdatenraumholen(INT CONST index):hilfstext:=
wahldatenzumindex(index,kennungnursuname);pos1:=pos(hilfstext,trenner);pos2:=
pos(hilfstext,trenner,pos1+1);famname:=subtext(hilfstext,1,pos1-1);rufname:=
subtext(hilfstext,pos1+1,pos2-1);gebdat:=subtext(hilfstext,pos2+1,length(
hilfstext));END PROC schuelerdatenauskwdatenraumholen;PROC
listeleeraufbereiten:dateioeffnenunddruckkopfschreiben;putline(ausgabedatei,
"Keine Halbjahres-Daten vorhanden für: "+rufname+blank+famname)END PROC
listeleeraufbereiten;PROC dateioeffnenunddruckkopfschreiben:ausgabedatei:=
sequentialfile(output,"liste.1");druckvorbereiten;ueb2:=famname;ueb2CAT blank
;ueb2CAT rufname;ueb2CAT ", geboren am ";ueb2CAT gebdat;initdruckkopf(ueb1,
ueb2);druckkopfschreiben;END PROC dateioeffnenunddruckkopfschreiben;PROC
rowinitialisieren:FOR ixfaecherFROM 1UPTO maxanzfaecherREP FOR ixschulhjFROM
1UPTO maxanzschulhjREP faecherschulhj(ixfaecher)(ixschulhj):=niltextPER ;PER
;END PROC rowinitialisieren;PROC listemitdatenzumschueleraufbereiten:
faecherstringok:=FALSE ;rowinitialisieren;dateioeffnenunddruckkopfschreiben;
uebsj:=5*blank+doppblank;uebjgst:="Fach "+doppblank;ixfaecher:=1;ixschulhj:=0
;faecherstring:=wert(fnrhjdfach);WHILE dbstatus=0AND wert(fnrhjdfamnames)=
famnameAND wert(fnrhjdrufnames)=rufnameAND wert(fnrhjdgebdats)=gebdatREP
shjueberschriftenmerken;IF compress(faecherstring)=niltextTHEN succ(
dnrhalbjahresdaten);faecherstring:=wert(fnrhjdfach);ELSE
faecherstringaufbereitenundweiterewertelesen;IF faecherstring=faecherTHEN
FOR zaehlerFROM 1UPTO anzfaecherREP datenproshjprofachmerken(zaehler);PER ;
ELSE pos1:=1;zaehler:=1;WHILE pos1<length(faecher)REP fach:=subtext(faecher,
pos1,pos1+1);pos2:=pos(faecherstring,fach);WHILE pos2<>0AND pos2MOD 2=0REP
pos2:=pos(faecherstring,fach,pos2+1);PER ;IF pos2=0THEN anzfaecherINCR 1;
ixfaecher:=anzfaecher;faecherstringCAT fach;ELSE ixfaecher:=(pos2+1)DIV 2FI ;
datenproshjprofachmerken(ixfaecher);pos1INCR 2;PER ;FI ;succ(
dnrhalbjahresdaten);FI ;PER ;ausgabederrowmatrixindatei;.
shjueberschriftenmerken:ixschulhjINCR 1;hilfstext:=wert(fnrhjdsj);uebsjCAT
subtext(hilfstext,1,2);uebsjCAT "/";uebsjCAT subtext(hilfstext,3,4);uebsjCAT
doppblank;hilfstext:=text(wert(fnrhjdjgst),2);hilfstextCAT punkt;hilfstext
CAT wert(fnrhjdhj);uebjgstCAT hilfstext;uebjgstCAT blank+doppblank;.
faecherstringaufbereitenundweiterewertelesen:IF NOT faecherstringokTHEN
zaehler:=1;pos1:=1;WHILE zaehler<length(faecherstring)REP pos1:=pos(
faecherstring,subtext(faecherstring,zaehler,zaehler+1),zaehler+2);WHILE pos1
<>0AND pos1MOD 2=0REP pos1:=pos(faecherstring,subtext(faecherstring,zaehler,
zaehler+1),pos1+1)PER ;IF pos1=0THEN zaehlerINCR 2;ELSE IF pos1MOD 2=1THEN
change(faecherstring,pos1,pos1+1,niltext);FI ;FI ;PER ;anzfaecher:=length(
faecherstring)DIV 2;faecherstringok:=TRUE ;FI ;faecher:=wert(fnrhjdfach);
kennungen:=wert(fnrhjdlerngrpkenn);klausuren:=wert(fnrhjdklausurteiln);
kursarten:=wert(fnrhjdkursart);punkte:=wert(fnrhjdnotepunkte);IF punkte=
niltextTHEN punkte:=length(faecher)*blankFI ;.ausgabederrowmatrixindatei:
zeile1:=uebsj;druckzeileschreiben(zeile1);zeile1:=uebjgst;druckzeileschreiben
(zeile1);zeile1:="-----+"+(10*"------+");druckzeileschreiben(zeile1);INT VAR
i;i:=1;FOR pos1FROM 1UPTO anzfaecherREP zeile1:=subtext(faecherstring,i,i+1);
zeile1CAT blanksdopp;zeile2:=2*blank+blanksdopp;FOR zaehlerFROM 1UPTO
ixschulhjREP IF faecherschulhj(pos1)(zaehler)=niltextTHEN zeile1CAT 3*blank+
blanksdopp;zeile2CAT 3*blank+blanksdopp;ELSE zeile1CAT subtext(faecherschulhj
(pos1)(zaehler),1,6);zeile1CAT dopp;zeile2CAT subtext(faecherschulhj(pos1)(
zaehler),7,12);zeile2CAT dopp;FI ;PER ;iINCR 2;druckzeileschreiben(zeile1);
druckzeileschreiben(zeile2);PER ;END PROC listemitdatenzumschueleraufbereiten
;PROC datenproshjprofachmerken(INT CONST rowindex):IF faecherschulhj(rowindex
)(ixschulhj)<>niltextTHEN faecherschulhj(rowindex)(ixschulhj):=platzhalter
ELSE faecherschulhj(rowindex)(ixschulhj):=subtext(kennungen,1,4)+blank+
subtext(klausuren,1,1)+subtext(punkte,1,2)+blank+blank+subtext(kursarten,1,2)
;FI ;kennungen:=subtext(kennungen,5,length(kennungen));klausuren:=subtext(
klausuren,2,length(klausuren));punkte:=subtext(punkte,3,length(punkte));
kursarten:=subtext(kursarten,3,length(kursarten));END PROC
datenproshjprofachmerken;PROC egmaskenfelderleerenzurueckundmeldung(INT
CONST stufe):FOR zaehlerFROM 2UPTO 8REP standardmaskenfeld(niltext,zaehler);
PER ;return(stufe);standardmeldung(mnralledruckausgabenerstellt,niltext);END
PROC egmaskenfelderleerenzurueckundmeldung;PROC listedrucken:IF exists(
"Wahl- und Kursdaten")THEN print("Wahl- und Kursdaten")ELSE print("liste.1");
FI ;END PROC listedrucken;PROC listeloeschen:forget("Wahl- und Kursdaten",
quiet);forget("liste.1",quiet)END PROC listeloeschen;PROC
wahlundkursdatenblaettern(INT CONST richtung):SELECT richtungOF CASE 1:
andenanfangCASE 2:eineseitevorCASE 3:eineseitezurueckCASE 4:andasende
ENDSELECT ;return(1).andenanfang:aktuellezeile:=erster;listezeigenabzeile(
aktuellezeile);.andasende:aktuellezeile:=max(1,letzter-
listeneintraegeproseite+1);listezeigenabzeile(aktuellezeile);.eineseitevor:
IF aktuellezeile+listeneintraegeproseite>letzterTHEN standardmeldung(
meldungblaetternnichtmöglich,"")ELSE aktuellezeileINCR
listeneintraegeproseite;listezeigenabzeile(aktuellezeile)FI ;.
eineseitezurueck:IF aktuellezeile=ersterTHEN standardmeldung(
meldungblaetternnichtmöglich,"")ELSE aktuellezeileDECR
listeneintraegeproseite;aktuellezeile:=max(aktuellezeile,erster);
listezeigenabzeile(aktuellezeile)FI ;END PROC wahlundkursdatenblaettern;PROC
wahldatenlistenseiteaktualisieren:INT VAR i,fnr;standardnproc;fnr:=
fnrerstesankreuzfeld;FOR iFROM aktuellezeileUPTO min(aktuellezeile+
listeneintraegeproseite,letzter)REP boolvektor(i):=standardmaskenfeld(fnr)<>
niltext;fnrINCR felderprolisteneintragPER END PROC
wahldatenlistenseiteaktualisieren;PROC listezeigenabzeile(INT CONST zeile):
INT VAR i,j1,j2,fnr;TEXT VAR t,t1;fnr:=fnrerstesankreuzfeld;FOR iFROM zeile
UPTO zeile+listeneintraegeproseiteREP IF i<=letzterTHEN t:=wahldatenzumindex(
i,kennungnursuname);feldfrei(fnr);IF boolvektor(i)THEN standardmaskenfeld(
ankreuzung,fnr);ELSE standardmaskenfeld(keineankreuzung,fnr);FI ;
bereiteschuelerzeileauf;standardmaskenfeld(t1,fnr+1);ELSE standardmaskenfeld(
niltext,fnr);feldschutz(fnr);standardmaskenfeld(dummyschueler,fnr+1)FI ;fnr
INCR felderprolisteneintrag;PER ;infeld(fnrerstesankreuzfeld);
standardfelderausgeben;.bereiteschuelerzeileauf:j1:=pos(t,trenner);j2:=pos(t,
trenner,j1+1);t1:=text(t,j1-1);t1CAT sunamenstrenner;t1CAT subtext(t,j1+1,j2-
1);t1:=text(t1,sulaengeohnedatum);t1CAT " ";t1CAT subtext(t,j2+1).END PROC
listezeigenabzeile;PROC naechsterindex(INT VAR index):indexINCR 1;WHILE index
<=letzterCAND NOT boolvektor(index)REP indexINCR 1PER ;IF index>letzterTHEN
index:=0FI END PROC naechsterindex;PROC wahlundkursdatenabschluss:INT VAR
ruecksprungweite:=1;IF ankreuzlisteTHEN forget(boolvektordatei,quiet);
ankreuzliste:=FALSE ;ruecksprungweiteINCR 1FI ;IF bearbeitungingangTHEN
bearbeitungingang:=FALSE ;ruecksprungweiteINCR 1FI ;listeloeschen;enter(
ruecksprungweite);END PROC wahlundkursdatenabschluss;BOOL PROC
plausisallgemok:standardmeldung(mnrbittewarten,niltext);ankreuzliste:=FALSE ;
bestschueler:=FALSE ;lsundneue:=FALSE ;nurneue:=FALSE ;nurls:=FALSE ;
standardpruefe(5,fnr7bs,fnr8dr,null,niltext,status);IF status<>0THEN infeld(
fnr7bs);mnrallgemein:=mnrauswahlnichtsinnvoll;LEAVE plausisallgemokWITH
FALSE FI ;bildschirmausgabe:=standardmaskenfeld(fnr8dr)=niltext;jgstls:=
standardmaskenfeld(fnr2jgstls);jgstneu:=standardmaskenfeld(fnr3jgstneu);
famname:=standardmaskenfeld(fnr4famname);rufname:=standardmaskenfeld(
fnr5rufname);gebdat:=standardmaskenfeld(fnr6gebdat);IF famname<>niltextCOR
rufname<>niltextCOR gebdat<>niltextTHEN bestschueler:=TRUE ;IF jgstls<>
niltextCOR jgstneu<>niltextTHEN infeld(fnr4famname);mnrallgemein:=
mnrjgstoderbestschueler;LEAVE plausisallgemokWITH FALSE FI ;ELSE IF jgstls=
niltextAND jgstneu=niltextTHEN infeld(fnr2jgstls);mnrallgemein:=mnrjgstfehlt;
LEAVE plausisallgemokWITH FALSE ;FI ;IF jgstls<>niltextTHEN standardpruefe(2,
fnr2jgstls,null,null,niltext,status);IF status<>0COR (int(jgstls)<10COR int(
jgstls)>13)THEN mnrallgemein:=mnrjgstfalsch;infeld(fnr2jgstls);LEAVE
plausisallgemokWITH FALSE ;FI ;FI ;IF jgstneu<>niltextTHEN standardpruefe(2,
fnr3jgstneu,null,null,niltext,status);IF status<>0COR (int(jgstneu)<11COR int
(jgstneu)>13)THEN mnrallgemein:=mnrjgstfalsch;infeld(fnr3jgstneu);LEAVE
plausisallgemokWITH FALSE ;FI ;FI ;IF jgstls=niltextTHEN nurneue:=TRUE ELIF
jgstneu=niltextTHEN nurls:=TRUE ELSE lsundneue:=TRUE FI ;FI ;TRUE END PROC
plausisallgemok;BOOL PROC schuelervorhanden:IF NOT bestschuelerTHEN
schuelerdatenauskwdatenraumholen(aktschueler);FI ;inittupel(
dnrhalbjahresdaten);putwert(fnrhjdfamnames,famname);putwert(fnrhjdrufnames,
rufname);putwert(fnrhjdgebdats,gebdat);putwert(fnrhjdsj,niltext);putwert(
fnrhjdhj,niltext);search(dnrhalbjahresdaten,FALSE );dbstatus=0AND wert(
fnrhjdfamnames)=famnameAND wert(fnrhjdrufnames)=rufnameAND wert(fnrhjdgebdats
)=gebdatEND PROC schuelervorhanden;BOOL PROC kurswahldatenraumda:INT VAR
fehler;sj:=schulkenndatum("Schuljahr");hj:=schulkenndatum("Schulhalbjahr");
IF nurlsTHEN kurswahlinitialisieren(jgstls,jgstls,hj,ohneneuang,kwsj);ELIF
nurneueTHEN jgstls:=text(int(jgstneu)-1);kurswahlinitialisieren(jgstls,jgstls
,hj,neuang,kwsj);ELSE kurswahlinitialisieren(jgstls,jgstls,hj,mitneuang,kwsj)
FI ;kurswahlbasisholen(fehler);IF fehler<>0THEN mnrallgemein:=
mnrkeinekwdatenda;infeld(fnr2jgstls);ELSE erster:=ersterschueler;letzter:=
letzterschuelerFI ;fehler=0END PROC kurswahldatenraumda;END PACKET
likwwahlundkursdatensek2
|