summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listen.nachpruefung
blob: 02470606c0d118a56d76c0f8d70976c28a552626 (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
PACKET nachprueflistenDEFINES nachprlispezielleteile:LET 
mnrbearbeitetwirdjgst=106,nurimzweitenhj=193,schluesselnachpruefler="n";TEXT 
VAR aktuellesschuljahr,endewertjgst,startwertjgst,bearbeitetwirdjgst;LET 
niltext="",blank=" ",mittestrich="-",null=0,ueberschriftenzeilen=2,
spalte1breite=7,spalte3breite=40,anzspaltentrenner=2,spaltentrenner=":",
ausgkopflaenge=3,ausgfeldlaenge=4,AUSGFELD =ROW ausgfeldlaengeTEXT ,AUSGKOPF 
=ROW ausgkopflaengeTEXT ,nachprlieingangsmaske=
"ms liste versetz nachpr eingang",nachprlianfpos=2;INT CONST 
spalte2bildbreite:=bildbreite-anzspaltentrenner-spalte1breite-spalte3breite;
INT VAR spalte2druckbreite,druckzeilenzahl,bildanf,eingabestatus,breite,
ausgfeldlaengereal;TEXT VAR nachprliueberschrift,schuljahr,jahr1,jahr2,
schuelername,schuelerrufname,schuelernamenszus,schuelerjgst,schuelerzug,fach1
,fach2,fach3,paraphe1,paraphe2,paraphe3,jgst,neuejgst,klasse,neueklasse;TEXT 
VAR druckstrich;TEXT CONST bildstrich:=bildbreite*mittestrich;AUSGFELD VAR 
ausgfeld;AUSGKOPF VAR ausgkopf;BOOL VAR sek1,sek2,ersteraufbildschirm,
klassegeaendert:=FALSE ;PROC nachprlispezielleteile(INT CONST nr):SELECT nr
OF CASE 1:nachprlidialogvorbereitenCASE 2:nachprlieingabenrichtigCASE 3:
nachprlilistenvorbereitenCASE 4:nachprlidruckvorbereitenCASE 5:
nachprliseitedruckenCASE 6:nachprlibildschirmvorbereitenCASE 7:
nachprliseitezeigenENDSELECT .END PROC nachprlispezielleteile;PROC 
nachprlidialogvorbereiten:nachprliueberschrift:=text(vergleichsknoten);
setzeanfangswerte(nachprlieingangsmaske,nachprlianfpos)END PROC 
nachprlidialogvorbereiten;PROC nachprlieingabenrichtig:LET fnrsek1=2,fnrsek2=
3,fnrjgst=4,fnrausgdrucker=5,fnrausgbild=6,auswahlnichtsinnvoll=56;IF int(
schulkenndatum("Schulhalbjahr"))=1THEN standardmeldung(nurimzweitenhj,"2.#");
setzeeingabetest(FALSE )ELSE wohinpruefenFI .wohinpruefen:standardpruefe(5,
fnrausgdrucker,fnrausgbild,null,niltext,eingabestatus);IF eingabestatus<>0
THEN infeld(eingabestatus);setzeeingabetest(FALSE )ELSE waspruefenFI .
waspruefen:sek1:=FALSE ;sek2:=FALSE ;fach1:="";fach2:="";fach3:="";
reinitparsing;IF standardmaskenfeld(fnrjgst)=niltextTHEN standardpruefe(5,
fnrsek1,fnrsek2,null,niltext,eingabestatus);IF eingabestatus<>0THEN infeld(
eingabestatus);setzeeingabetest(FALSE )ELSE sek1:=standardmaskenfeld(fnrsek2)
=niltext;sek2:=NOT sek1;setzeausgabedrucker(standardmaskenfeld(fnrausgbild)=
niltext);setzeeingabetest(TRUE )FI ;ELSE IF (standardmaskenfeld(fnrsek1)=
niltext)AND (standardmaskenfeld(fnrsek2)=niltext)THEN standardpruefe(3,
fnrjgst,5,13,niltext,eingabestatus);IF eingabestatus<>0THEN infeld(
eingabestatus);setzeeingabetest(FALSE )ELSE jgst:=zweistellig(
standardmaskenfeld(fnrjgst));setzeausgabedrucker(standardmaskenfeld(
fnrausgbild)=niltext);setzeeingabetest(TRUE )FI ;ELSE meldefehler;infeld(
fnrsek1);setzeeingabetest(FALSE )FI ;FI .meldefehler:standardmeldung(
auswahlnichtsinnvoll,niltext).END PROC nachprlieingabenrichtig;PROC 
nachprlilistenvorbereiten:BOOL VAR b;LET schluessel="Schuljahr";
startwertjgstbestimmen;aktuellesschuljahrermitteln;inittupel(
dnrhalbjahresdaten);initobli(4);setzeidentiwert("");startwertesetzen;
objektlistestarten(ixhjdversjhjjgstkenn,"",fnrhjdjgst,TRUE ,b);
setzebestandende(NOT multistopnachprueflerCOR b).startwertjgstbestimmen:
aktuellesschuljahr:=schulkenndatum("Schuljahr");endewertjgst:=endeberechnung;
startwertjgst:=anfangsberechnung;.anfangsberechnung:IF sek1THEN "05"ELIF sek2
THEN "11"ELSE jgstFI .endeberechnung:IF sek1THEN "11"ELIF sek2THEN "14"ELSE 
text(int(jgst)+1)FI .startwertesetzen:putwert(fnrhjdversetzung,
schluesselnachpruefler);putwert(fnrhjdjgst,startwertjgst);putwert(fnrhjdsj,
aktuellesschuljahr);putintwert(fnrhjdhj,2).aktuellesschuljahrermitteln:
schuljahr:=schulkenndatum(schluessel);jahr1:=subtext(schuljahr,1,2);jahr2:=
subtext(schuljahr,3,4).END PROC nachprlilistenvorbereiten;PROC 
nachprlibildschirmvorbereiten:LET fnrausganf=2;standardkopfmaskeaktualisieren
(nachprliueberschrift);breite:=bildbreite;initspalten;setzespaltentrenner(
spaltentrenner);setzespaltenbreiten(spalte2bildbreite);initausgabekopf(
bildstrich);bildanf:=fnrausganf;INT VAR i;FOR iFROM 1UPTO ausgkopflaenge
REPEAT ausgkopf(i)IN bildanf;bildanfINCR 1END REPEAT ;klasse:=niltext;
setzebildanfangsposition(bildanf).END PROC nachprlibildschirmvorbereiten;
PROC nachprliseitezeigen:setzescanstartwert(startwertjgst);setzescanendewert(
endewertjgst);blaettern(PROC (INT CONST )schuelerzeigen,aktion,TRUE ,TRUE ,
BOOL PROC multistopnachpruefler);setzescanstartwert("");setzescanendewert("�"
).#endewertjgstpluseinsbeigleichheit:IF startwertjgst=endewertjgstTHEN text(
int(endewertjgst)+1)ELSE endewertjgstFI .#END PROC nachprliseitezeigen;PROC 
schuelerzeigen(INT CONST x):schuelerholen;IF ersteraufbildschirmTHEN 
klassegeaendert:=TRUE ;ersteraufbildschirm:=FALSE FI ;schueleraufbereiten;
schueleraufbildschirm.END PROC schuelerzeigen;PROC schueleraufbildschirm:INT 
VAR i;FOR iFROM 1UPTO ausgfeldlaengeREPEAT ausgfeld(i)IN ausgabepos;
erhoeheausgabeposumeinsEND REPEAT .END PROC schueleraufbildschirm;PROC 
nachprlidruckvorbereiten:LET uebteil11=
"Liste der zur Nachprüfung berechtigten Schüler, ",uebteil12="Sek.I",
uebteil13="Sek.II",uebteil14="Jgst. ",uebteil2="Schuljahr: ";TEXT VAR 
ueberschrift1,ueberschrift2;ueberschriftvorbereitendruck;jgst:=niltext;klasse
:=niltext;druckvorbereiten;variablenfuerdrucksetzen;initdruckkopf(
ueberschrift1,ueberschrift2);breite:=druckbreite;initspalten;
setzespaltentrenner(spaltentrenner);setzespaltenbreiten(spalte2druckbreite);
initausgabekopf(druckstrich);holemeldungen;setzewerte;lesenvorbereitendruck(
PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL PROC 
multistopnachprueflersim).holemeldungen:meldungstext(mnrbearbeitetwirdjgst,
bearbeitetwirdjgst).setzewerte:inittupel(dnrhalbjahresdaten);putwert(
fnrhjdversetzung,schluesselnachpruefler);putwert(fnrhjdjgst,startwertjgst);
putwert(fnrhjdsj,aktuellesschuljahr);putintwert(fnrhjdhj,2).
ueberschriftvorbereitendruck:ueberschrift1:=uebteil11;IF sek1THEN 
ueberschrift1:=ueberschrift1+uebteil12ELSE IF sek2THEN ueberschrift1:=
ueberschrift1+uebteil13ELSE ueberschrift1:=ueberschrift1+uebteil14+jgstFI ;
FI ;ueberschrift2:=uebteil2+aufbereitetesschuljahr.aufbereitetesschuljahr:
"19"+jahr1+"/"+jahr2.variablenfuerdrucksetzen:druckstrich:=druckbreite*
mittestrich;spalte2druckbreite:=druckbreite-anzspaltentrenner-spalte1breite-
spalte3breite;druckzeilenzahl:=drucklaenge(ueberschriftenzeilen)-
ausgkopflaenge.END PROC nachprlidruckvorbereiten;PROC nachprliseitedrucken:
nachprliueberschriftdrucken;seitedrucken(PROC (INT VAR )schuelerdrucken,
druckzeilenzahl,ausgfeldlaenge,BOOL PROC multistopnachprueflersim);
seitenwechsel.END PROC nachprliseitedrucken;PROC nachprliueberschriftdrucken:
druckkopfschreiben;INT VAR i;FOR iFROM 1UPTO ausgkopflaengeREPEAT 
druckzeileschreiben(ausgkopf(i))END REPEAT .END PROC 
nachprliueberschriftdrucken;PROC schuelerdrucken(INT VAR zeilenzaehler):LET 
markiert="#";schuelerholen;IF zeilenzaehler=nullTHEN klassegeaendert:=TRUE 
FI ;ggflmeldungjgst;schueleraufbereiten;zeilenzaehlerINCR ausgfeldlaengereal;
schuelerindruckdatei.ggflmeldungjgst:IF jgstgeaendertTHEN zwischenmeldungFI .
jgstgeaendert:neuejgst:=schuelerjgst;jgst<>neuejgst.zwischenmeldung:
standardmeldung(bearbeitetwirdjgst,neuejgst+markiert);jgst:=neuejgst;END 
PROC schuelerdrucken;PROC schuelerindruckdatei:INT VAR i;FOR iFROM 1UPTO 
ausgfeldlaengerealREPEAT druckzeileschreiben(ausgfeld(i))END REPEAT .END 
PROC schuelerindruckdatei;PROC setzespaltenbreiten(INT CONST spalte2breite):
setzespaltenbreite(spalte1breite);setzespaltenbreite(spalte2breite);
setzespaltenbreite(spalte3breite);END PROC setzespaltenbreiten;PROC 
initausgabekopf(TEXT CONST strich):LET jgst="Jgst.",zugtut="Zug/Tut",name=
"Familienname",rufname="  Rufname",rest1=
"Meldg. :Prüfer        :Datum  :    :    ",rest2=
"  :Fach:Fach:Vors:Beis:   Zeit:Raum:Note";spaltenweise(jgst);spaltenweise(
name);spaltenweise(rest1);ausgkopf(1):=zeile;spaltenweise(zugtut);
spaltenweise(rufname);spaltenweise(rest2);ausgkopf(2):=zeile;ausgkopf(3):=
strich;END PROC initausgabekopf;PROC schuelerholen:schuelername:=wert(
fnrhjdfamnames);schuelerrufname:=wert(fnrhjdrufnames);#schuelernamenszus:=
wert(fnrhjdzusatz);#schuelernamenszus:="";schuelerjgst:=wert(fnrhjdjgst);
schuelerzug:=wert(fnrhjdkennung);fach1:=wert(fnrhjdnachfach1);fach2:=wert(
fnrhjdnachfach2);fach3:=wert(fnrhjdnachfach3);fachlehrersuchen(fach1,paraphe1
);fachlehrersuchen(fach2,paraphe2);fachlehrersuchen(fach3,paraphe3);
neueklasse:=schuelerjgst+schuelerzug;klassegeaendert:=klasse<>neueklasse;
klasse:=neueklasse.END PROC schuelerholen;PROC fachlehrersuchen(TEXT CONST 
fach,TEXT VAR paraphe):putwert(fnrlvhj,wert(fnrhjdhj));putwert(fnrlvsj,wert(
fnrhjdsj));putwert(fnrlvjgst,wert(fnrhjdjgst));#putwert(fnrlvzug,wert(
fnrhjdkennung));#putwert(fnrlvfachkennung,fach+wert(fnrhjdkennung));search(
dnrlehrveranstaltungen,TRUE );IF dbstatus=okTHEN paraphe:=wert(fnrlvparaphe)
ELSE paraphe:=""FI END PROC fachlehrersuchen;PROC schueleraufbereiten:LET 
zwizeile="  :    :    :    :    :       :    :";INT VAR posausgfeld;
posausgfeld:=null;schreibeklassenamefach1;schreiberufnamefach2;IF 
ausgabedruckerTHEN schreibeggffach3ELSE schreibefach3FI ;
schreibezwischenzeile.schreibeklassenamefach1:spaltenweise(aufbschuelerklasse
);spaltenweise(aufbschuelername);spaltenweise(aufbfach1);posausgfeldINCR 1;
ausgfeld(posausgfeld):=zeile;posausgfeldINCR 1.schreiberufnamefach2:
spaltenweise(blank);spaltenweise(aufbrufname);spaltenweise(aufbfach2);
ausgfeld(posausgfeld):=zeile;posausgfeldINCR 1.schreibeggffach3:IF fach3<>
niltextTHEN schreibefach3FI ;ausgfeldlaengereal:=posausgfeld.schreibefach3:
spaltenweise(blank);spaltenweise(blank);spaltenweise(aufbfach3);ausgfeld(
posausgfeld):=zeile;posausgfeldINCR 1.schreibezwischenzeile:spaltenweise(
blank);spaltenweise(blank);spaltenweise(zwizeile);ausgfeld(posausgfeld):=
zeile.aufbschuelerklasse:IF klassegeaendertTHEN schuelerjgst+blank+
schuelerzugELSE blankFI .aufbschuelername:IF schuelernamenszus=niltextTHEN 
schuelernameELSE schuelernamenszus+blank+schuelernameFI .aufbfach1:aufbfach(
fach1,paraphe1).aufbrufname:2*blank+schuelerrufname.aufbfach2:aufbfach(fach2,
paraphe2).aufbfach3:aufbfach(fach3,paraphe3).END PROC schueleraufbereiten;
TEXT PROC aufbfach(TEXT CONST fach,paraphe):LET vorfach="__: ",nachfach=
":____:____:_______:____:____";vorfach+fach+(3-length(fach))*blank+
spaltentrenner+paraphe+(4-length(paraphe))*blank+nachfach.END PROC aufbfach;
BOOL PROC elementsek1:sek1COR int(startwertjgst)<11ENDPROC elementsek1;BOOL 
PROC multistopnachpruefler:BOOL VAR b;b:=nachprueflerundrichtigesdatumCAND 
int(wert(fnrhjdjgst))>=int(startwertjgst)CAND int(wert(fnrhjdjgst))<#=#int(
endewertjgst);b.nachprueflerundrichtigesdatum:wert(fnrhjdversetzung)=
schluesselnachprueflerCAND wert(fnrhjdsj)=aktuellesschuljahrCAND wert(
fnrhjdhj)="2".ENDPROC multistopnachpruefler;BOOL PROC 
multistopnachprueflersim:BOOL VAR b:=multistopnachpruefler;setzebestandende(
NOT b);bENDPROC multistopnachprueflersim;END PACKET nachprueflisten;