summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listen.wiederholer
blob: e0541d2063c62bdf735f6b3e10431f1d177e7058 (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
PACKET versetzlistenDEFINES verslispezielleteile:LET schluesselwiederholer=
"w";INT CONST mnrbearbeitetwirdjgst:=106,nurimzweitenhj:=193;TEXT VAR 
bearbeitetwirdjgst:="",aktuellesschuljahr:="",endewertjgst:="",startwertjgst
:="";LET niltext="",nildatum="01.01.00",blank=" ",mittestrich="-",null=0,
komma=",",ueberschriftenzeilen=2,spalte1breitesek1=5,spalte3breitesek1=32,
spalte1breitesek2=8,spalte3breitesek2=25,anzspaltentrenner=2,spaltentrenner=
":",ausgkopflaenge=3,ausgfeldlaenge=1,AUSGFELD =ROW ausgfeldlaengeTEXT ,
AUSGKOPF =ROW ausgkopflaengeTEXT ,verslieingangsmaske=
"ms liste versetz nachpr eingang",verslianfpos=2;INT CONST 
spalte2bildbreitesek1:=bildbreite-anzspaltentrenner-spalte1breitesek1-
spalte3breitesek1,spalte2bildbreitesek2:=bildbreite-anzspaltentrenner-
spalte1breitesek2-spalte3breitesek2;INT VAR spalte2druckbreite,
druckzeilenzahl,bildanf,eingabestatus,breite;TEXT VAR versliueberschrift,
jahr1,jahr2,schuelername,schuelerrufname,schuelernamenszus,schuelerjgst,
schuelerzug,schuelerabdat,ortsteil,erstesprache,religionsunt,kuodermu,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 
verslispezielleteile(INT CONST nr):SELECT nrOF CASE 1:verslidialogvorbereiten
CASE 2:verslieingabenrichtigCASE 3:verslilistenvorbereitenCASE 4:
verslidruckvorbereitenCASE 5:versliseitedruckenCASE 6:
verslibildschirmvorbereitenCASE 7:versliseitezeigenENDSELECT .END PROC 
verslispezielleteile;PROC verslidialogvorbereiten:versliueberschrift:=text(
vergleichsknoten);setzeanfangswerte(verslieingangsmaske,verslianfpos);
reinitparsingEND PROC verslidialogvorbereiten;PROC verslieingabenrichtig: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<>0THEN infeld(eingabestatus);
setzeeingabetest(FALSE )ELSE waspruefenFI .waspruefen:sek1:=FALSE ;sek2:=
FALSE ;jgst:="";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 verslieingabenrichtig;PROC 
verslilistenvorbereiten:BOOL VAR b;LET schluessel="Schuljahr";
aktuellesschuljahrermitteln;startwertjgstbestimmen;inittupel(
dnrhalbjahresdaten);initobli(16);setzeidentiwert("");startwertesetzen;
objektlistestarten(ixhjdversjhjjgstkenn,"",fnrhjdjgst,TRUE ,b);
setzebestandende(NOT multistopniverCOR b).aktuellesschuljahrermitteln:
aktuellesschuljahr:=schulkenndatum(schluessel);jahr1:=subtext(
aktuellesschuljahr,1,2);jahr2:=subtext(aktuellesschuljahr,3,4).
startwertjgstbestimmen:endewertjgst:=endeberechnung;startwertjgst:=
anfangsberechnung;.anfangsberechnung:IF sek1THEN "05"ELIF sek2THEN "11"ELSE 
jgstFI .endeberechnung:IF sek1THEN "11"ELIF sek2THEN "14"ELSE text(int(jgst)+
1)FI .startwertesetzen:putwert(fnrhjdversetzung,schluesselwiederholer);
putwert(fnrhjdjgst,startwertjgst);putwert(fnrhjdsj,aktuellesschuljahr);
putintwert(fnrhjdhj,2).END PROC verslilistenvorbereiten;BOOL PROC 
multistopniver:BOOL VAR b;b:=wiederholerundrichtigesdatumCAND int(wert(
fnrhjdjgst))>=int(startwertjgst)CAND int(wert(fnrhjdjgst))<#=#int(
endewertjgst);b.wiederholerundrichtigesdatum:wert(fnrhjdversetzung)=
schluesselwiederholerCAND wert(fnrhjdsj)=aktuellesschuljahrCAND wert(fnrhjdhj
)="2".ENDPROC multistopniver;BOOL PROC multistopniversim:BOOL VAR b:=
multistopniver;setzebestandende(NOT b);bENDPROC multistopniversim;PROC 
verslibildschirmvorbereiten:LET fnrausganf=2;standardkopfmaskeaktualisieren(
versliueberschrift);breite:=bildbreite;initspalten;setzespaltentrenner(
spaltentrenner);IF elementsek1THEN setzespaltenbreitensek1(
spalte2bildbreitesek1);initausgabekopfsek1(bildstrich)ELSE 
setzespaltenbreitensek2(spalte2bildbreitesek2);initausgabekopfsek2(bildstrich
)FI ;bildanf:=fnrausganf;INT VAR i;FOR iFROM 1UPTO ausgkopflaengeREPEAT 
ausgkopf(i)IN bildanf;bildanfINCR 1END REPEAT ;klasse:=niltext;
setzebildanfangsposition(bildanf).END PROC verslibildschirmvorbereiten;PROC 
versliseitezeigen:setzescanstartwert(startwertjgst);setzescanendewert(
endewertjgstpluseinsbeigleichheit);blaettern(PROC (INT CONST )schuelerzeigen,
aktion,TRUE ,TRUE ,BOOL PROC multistopniver);setzescanstartwert("");
setzescanendewert("�").endewertjgstpluseinsbeigleichheit:IF startwertjgst=
endewertjgstTHEN text(int(endewertjgst)+1)ELSE endewertjgstFI .END PROC 
versliseitezeigen;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 verslidruckvorbereiten:LET uebteil11=
"Liste der nicht versetzten 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);IF elementsek1THEN setzespaltenbreitensek1(spalte2druckbreite
);initausgabekopfsek1(druckstrich)ELSE setzespaltenbreitensek2(
spalte2druckbreite);initausgabekopfsek2(druckstrich)FI ;holemeldungen;
setzewerte;lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,INT VAR )
scanforward,BOOL PROC multistopniversim).holemeldungen:meldungstext(
mnrbearbeitetwirdjgst,bearbeitetwirdjgst).setzewerte:inittupel(
dnrhalbjahresdaten);putwert(fnrhjdversetzung,schluesselwiederholer);putwert(
fnrhjdjgst,startwertjgst);putwert(fnrhjdsj,aktuellesschuljahr);putintwert(
fnrhjdhj,2).ueberschriftvorbereitendruck:ueberschrift1:=uebteil11;IF sek1
THEN 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;IF elementsek1
THEN spalte2druckbreite:=spalte2druckbreite-spalte1breitesek1-
spalte3breitesek1ELSE spalte2druckbreite:=spalte2druckbreite-
spalte1breitesek2-spalte3breitesek2FI ;druckzeilenzahl:=drucklaenge(
ueberschriftenzeilen)-ausgkopflaenge.END PROC verslidruckvorbereiten;PROC 
versliseitedrucken:versliueberschriftdrucken;seitedrucken(PROC (INT VAR )
schuelerdrucken,druckzeilenzahl,ausgfeldlaenge,BOOL PROC multistopniversim);
seitenwechsel.END PROC versliseitedrucken;PROC versliueberschriftdrucken:
druckkopfschreiben;INT VAR i;FOR iFROM 1UPTO ausgkopflaengeREPEAT 
druckzeileschreiben(ausgkopf(i))END REPEAT .END PROC 
versliueberschriftdrucken;PROC schuelerdrucken(INT VAR zeilenzaehler):LET 
markiert="#";schuelerholen;IF zeilenzaehler=nullTHEN klassegeaendert:=TRUE 
FI ;ggflmeldungjgst;schueleraufbereiten;zeilenzaehlerINCR ausgfeldlaenge;
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 
ausgfeldlaengeREPEAT druckzeileschreiben(ausgfeld(i))END REPEAT .END PROC 
schuelerindruckdatei;PROC setzespaltenbreitensek1(INT CONST spalte2breitesek1
):setzespaltenbreite(spalte1breitesek1);setzespaltenbreite(spalte2breitesek1)
;setzespaltenbreite(spalte3breitesek1);END PROC setzespaltenbreitensek1;PROC 
setzespaltenbreitensek2(INT CONST spalte2breitesek2):setzespaltenbreite(
spalte1breitesek2);setzespaltenbreite(spalte2breitesek2);setzespaltenbreite(
spalte3breitesek2);END PROC setzespaltenbreitensek2;PROC initausgabekopfsek1(
TEXT CONST strich):LET jgst="Jgst.",zug="  Zug",name="Name",rest1=
"Orts-:Rel.: L : KU :  Klasse",rest2="teil :unt.: F : MU :Wunsch:neu";
spaltenweise(jgst);spaltenweise(blank);spaltenweise(rest1);ausgkopf(1):=zeile
;spaltenweise(zug);spaltenweise(name);spaltenweise(rest2);ausgkopf(2):=zeile;
ausgkopf(3):=strich;END PROC initausgabekopfsek1;PROC initausgabekopfsek2(
TEXT CONST strich):LET jgst="Jgst.",tutor="   Tutor",name="Name",rest1=
"Abmeldung";spaltenweise(jgst);spaltenweise(blank);spaltenweise(blank);
ausgkopf(1):=zeile;spaltenweise(tutor);spaltenweise(name);spaltenweise(rest1)
;ausgkopf(2):=zeile;ausgkopf(3):=strich;END PROC initausgabekopfsek2;PROC 
schuelerholen:sucheschueler;schuelername:=wert(fnrsufamnames);schuelerrufname
:=wert(fnrsurufnames);schuelernamenszus:=wert(fnrsunamenszusatzs);
schuelerjgst:=wert(fnrhjdjgst);schuelerzug:=wert(fnrhjdkennung);schuelerabdat
:=wert(fnrsuabgdats);IF elementsek1THEN ortsteil:=wert(fnrsuortsteils);
erstesprache:=wert(fnrdd1fremdfach);religionsunt:=wert(fnrddreliunter);
kuodermu:=wert(fnrddkunstmusik)FI ;neueklasse:=schuelerjgst+schuelerzug;
klassegeaendert:=klasse<>neueklasse;klasse:=neueklasse.sucheschueler:
uebernehmewerte;search(dnrschueler,TRUE );IF dbstatus=okTHEN readtid(
dnrdiffdaten,zugriff(fnrsutiddiffdaten))ELSE inittupel(dnrdiffdaten)FI .
uebernehmewerte:putwert(fnrsufamnames,wert(fnrhjdfamnames));putwert(
fnrsurufnames,wert(fnrhjdrufnames));putwert(fnrsugebdatums,wert(fnrhjdgebdats
)).END PROC schuelerholen;PROC schueleraufbereiten:LET abgemsek1="abgem.",
abgemsek2="abgemeldet";schreibeklassenamerest.schreibeklassenamerest:
spaltenweise(aufbschuelerklasse);spaltenweise(aufbschuelername);spaltenweise(
aufbrest);ausgfeld(1):=zeile.aufbschuelerklasse:IF klassegeaendertTHEN 
schuelerjgst+blank+schuelerzugELSE blankFI .aufbschuelername:IF 
schuelernamenszus=niltextTHEN schuelername+komma+blank+schuelerrufnameELSE 
schuelernamenszus+blank+schuelername+komma+blank+schuelerrufnameFI .aufbrest:
IF elementsek1THEN ganzerrestsek1ELSE abmeldungsek2FI .ganzerrestsek1:blank+
text(ortsteil,3)+blank+spaltentrenner+blank+text(religionsunt,2)+blank+
spaltentrenner+blank+text(erstesprache,1)+blank+spaltentrenner+blank+text(
kuodermu,2)+blank+spaltentrenner+abmeldungsek1.abmeldungsek1:IF (
schuelerabdat=niltext)OR (schuelerabdat=nildatum)THEN text(blank,6)+
spaltentrennerELSE abgemsek1+spaltentrenner+blank+mittestrichFI .
abmeldungsek2:IF (schuelerabdat=niltext)OR (schuelerabdat=nildatum)THEN blank
ELSE abgemsek2FI .END PROC schueleraufbereiten;BOOL PROC elementsek1:sek1COR 
int(startwertjgst)<11ENDPROC elementsek1;END PACKET versetzlisten;