summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listen.klassen
blob: 7b4d39bd9dec945c7131a8dc8576ee8e87b079cb (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
PACKET klassenlistenDEFINES klalispezielleteile:LET niltext="",blank=" ",
mittestrich="-",null=0,komma=",",stern="*",ueb1teil1="Klassenliste",ueb1teil2
=" für Klasse ",ueb1teil3="Klassenlehrer: ",ueb2teil1="Tutorenkursliste",
ueb2teil21=" für Jahrgangsstufe ",ueb2teil22=" für den Kurs ",ueb2teil3=
"Tutor: ",ueb3="n der Jahrgangsstufe ",ueberschriftenzeilen=2,
spalte1druckbreite=3,spalte2bildbreite=7,anzspaltentrenner=1,ausgkopflaenge=2
,ausgfeldlaenge=1,AUSGFELDDRUCK =ROW ausgfeldlaengeTEXT ,AUSGFELDBILD =ROW 
ausgfeldlaengeTEXT ,AUSGKOPFDRUCK =ROW ausgkopflaengeTEXT ,AUSGKOPFBILD =ROW 
ausgkopflaengeTEXT ,klalieingangsmaske="ms liste klassen eingang",klalianfpos
=2,nr="Nr.",name="Name, Rufname",sternvolljaehrig=
" ( * entspricht volljährig )",klasse="Klasse",altervolljaehrig=18,
mnrbearbeitetwird=100,mnrlistewirdgedruckt=58,mnrauswahlnichtsinnvoll=56;INT 
CONST spalte1bildbreite:=bildbreite-anzspaltentrenner-spalte2bildbreite;INT 
VAR spalte2druckbreite,druckzeilenzahlmax,druckzeilenzahl,bildanf,zaehler,
vergldatum,aktuelleindexnr,eingabestatus;TEXT VAR klaliueberschrift,
schuelername,schuelerrufname,schuelernamenszus,schuelergebdat,
schuelernameaufber,zaehleraufber,ueberschrift1,ueberschrift2,lehrer,jahrgang,
zug,startjgst,startzug,bearbeitetwird,listewirdgedruckt,auswahlnichtsinnvoll;
TEXT VAR druckstrich;TEXT CONST bildstrich:=bildbreite*mittestrich;
AUSGFELDDRUCK VAR ausgfelddruck;AUSGFELDBILD VAR ausgfeldbild;AUSGKOPFDRUCK 
VAR ausgkopfdruck;AUSGKOPFBILD VAR ausgkopfbild;BOOL VAR einjahrgang,alle,
voll,neueklasse;BOOL PROC multistop:BOOL VAR b;IF startjgst<>""THEN IF 
einjahrgangTHEN b:=wert(fnrsusgrpjgst)=startjgst;ELSE b:=wert(fnrsusgrpjgst)=
startjgstAND wert(fnrsusgrpzugtut)=startzug;FI ELSE b:=wert(fnrsustatuss)=
"ls";FI ;bEND PROC multistop;BOOL PROC multistopsim:BOOL VAR b:=multistop;
setzebestandende(NOT b);bENDPROC multistopsim;PROC klalispezielleteile(INT 
CONST nr):SELECT nrOF CASE 1:klalidialogvorbereitenCASE 2:
klalieingabenrichtigCASE 3:klalilistenvorbereitenCASE 4:klalidruckvorbereiten
CASE 5:klaliseitedruckenCASE 6:klalibildschirmvorbereitenCASE 7:
klaliseitezeigenENDSELECT .END PROC klalispezielleteile;PROC 
klalidialogvorbereiten:klaliueberschrift:=text(vergleichsknoten);
setzeanfangswerte(klalieingangsmaske,klalianfpos).END PROC 
klalidialogvorbereiten;PROC klalieingabenrichtig:LET fnrjgst=2,fnrzug=3,
fnrvoll=4,fnrausgdrucker=5,fnrausgbild=6;alle:=FALSE ;einjahrgang:=FALSE ;
voll:=FALSE ;standardpruefe(5,fnrausgdrucker,fnrausgbild,null,niltext,
eingabestatus);IF eingabestatus<>0THEN infeld(eingabestatus);setzeeingabetest
(FALSE )ELSE zug:=standardmaskenfeld(fnrzug);jahrgang:=standardmaskenfeld(
fnrjgst);IF standardmaskenfeld(fnrjgst)=niltextTHEN IF zug=niltextTHEN alle:=
TRUE ;voll:=(standardmaskenfeld(fnrvoll)<>niltext);setzeausgabedrucker(
standardmaskenfeld(fnrausgbild)=niltext);setzeeingabetest(TRUE )ELSE 
meldefehler;infeld(fnrzug);setzeeingabetest(FALSE )FI ELSE standardpruefe(3,
fnrjgst,5,13,niltext,eingabestatus);IF eingabestatus<>0THEN infeld(
eingabestatus);setzeeingabetest(FALSE )ELSE jahrgang:=zweistellig(
standardmaskenfeld(fnrjgst));einjahrgang:=(zug=niltext);voll:=(
standardmaskenfeld(fnrvoll)<>niltext);setzeausgabedrucker(standardmaskenfeld(
fnrausgbild)=niltext);setzeeingabetest(TRUE )FI FI FI .meldefehler:
meldungstext(mnrauswahlnichtsinnvoll,auswahlnichtsinnvoll);standardmeldung(
auswahlnichtsinnvoll,niltext).END PROC klalieingabenrichtig;PROC 
klalilistenvorbereiten:BOOL VAR b:=FALSE ;startjgst:=jahrgang;startzug:=zug;
neueklasse:=FALSE ;aktuelleindexnr:=ixsustatjgstzug;inittupel(dnrschueler);
initobli(17);parsenooffields(19);setzeidentiwert("");putwert(fnrsustatuss,
"ls");putwert(fnrsusgrpjgst,startjgst);putwert(fnrsusgrpzugtut,startzug);
vergldatum:=vergleichsdatum(altervolljaehrig);#objektlistestarten(
aktuelleindexnr,"",fnrsustatuss,TRUE ,b);#objektlistestarten(aktuelleindexnr,
"",staticfield,TRUE ,b);setzebestandende(NOT multistopCOR b).staticfield:IF 
startjgst=niltextTHEN fnrsusgrpjgstELSE IF startzug=niltextTHEN 
fnrsusgrpzugtutELSE dnrschueler+1FI FI .END PROC klalilistenvorbereiten;PROC 
klalibildschirmvorbereiten:LET fnrausganf=2;ueberschriftvorbereitenbild;
standardkopfmaskeaktualisieren(ueberschrift1);initspalten;initausgabekopfbild
;bildanf:=fnrausganf;INT VAR i;FOR iFROM 1UPTO ausgkopflaengeREPEAT 
ausgkopfbild(i)IN bildanf;bildanfINCR 1END REPEAT ;setzebildanfangsposition(
bildanf).END PROC klalibildschirmvorbereiten;PROC ueberschriftvorbereitenbild
:LET aufein="",aufaus=" ";IF alleTHEN ueberschrift1:=klaliueberschriftELSE 
IF einjahrgangTHEN IF int(jahrgang)<11THEN ueberschrift1:=ueb1teil1ELSE 
ueberschrift1:=ueb2teil1FI ;ueberschrift1:=ueberschrift1+ueb3+aufein+jahrgang
+aufausELSE IF int(jahrgang)<11THEN ueberschrift1:=ueb1teil1+ueb1teil2ELSE 
ueberschrift1:=ueb2teil1+ueb2teil22FI ;ueberschrift1:=ueberschrift1+aufein+
jahrgang+blank+wert(fnrsusgrpzugtut)+aufausFI FI ;END PROC 
ueberschriftvorbereitenbild;PROC initausgabekopfbild:IF einjahrgangOR alle
THEN hilfsfeldervorbelegen;ausgkopfbild(1):=zeileELSE ausgkopfbild(1):=text(
name,bildbreite)FI ;ausgkopfbild(2):=bildstrich.hilfsfeldervorbelegen:
setzespaltenbreite(spalte1bildbreite);setzespaltenbreite(spalte2bildbreite);
IF vollTHEN spaltenweise(name+sternvolljaehrig)ELSE spaltenweise(name)FI ;
spaltenweise(klasse).END PROC initausgabekopfbild;PROC klaliseitezeigen:
blaettern(PROC (INT CONST )schuelerdatenzeigen,aktion,TRUE ,TRUE ,BOOL PROC 
multistop)END PROC klaliseitezeigen;PROC schuelerdatenzeigen(INT CONST x):
schuelerdatenholen;schuelerdatenaufbereitenbild;schuelerdatenaufbildschirm.
END PROC schuelerdatenzeigen;PROC schuelerdatenaufbereitenbild:
schuelernameaufbereiten;IF alleOR einjahrgangTHEN schreibenamerufnameklasse
ELSE schreibenamerufnameFI .schreibenamerufnameklasse:spaltenweise(
schuelernameaufber);spaltenweise(jahrgang+blank+wert(fnrsusgrpzugtut));
ausgfeldbild(1):=zeile.schreibenamerufname:ausgfeldbild(1):=text(
schuelernameaufber,bildbreite).END PROC schuelerdatenaufbereitenbild;PROC 
schuelerdatenaufbildschirm:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREPEAT 
ausgfeldbild(i)IN ausgabepos;erhoeheausgabeposumeinsEND REPEAT .END PROC 
schuelerdatenaufbildschirm;PROC klalidruckvorbereiten:zaehler:=null;
neueklasse:=TRUE ;druckvorbereiten;variablenfuerdrucksetzen;druckzeilenzahl:=
druckzeilenzahlmax;IF vollTHEN druckzeilenzahl:=druckzeilenzahl-2FI ;
holemeldung;inittupel(dnrschueler);putwert(fnrsusgrpjgst,startjgst);putwert(
fnrsusgrpzugtut,startzug);putwert(fnrsustatuss,"ls");lesenvorbereitendruck(
PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL PROC multistopsim);
ueberschriftvorbereitendruck;initdruckkopf(ueberschrift1,ueberschrift2);
initspalten;initausgabekopfdruck.variablenfuerdrucksetzen:druckstrich:=
druckbreite*mittestrich;spalte2druckbreite:=druckbreite-anzspaltentrenner-
spalte1druckbreite;druckzeilenzahlmax:=drucklaenge(ueberschriftenzeilen)-
ausgkopflaenge.holemeldung:meldungstext(mnrbearbeitetwird,bearbeitetwird).
END PROC klalidruckvorbereiten;PROC ueberschriftvorbereitendruck:IF int(
jahrgang)<11THEN ueberschrift1:=ueb1teil1+ueb1teil2+wert(fnrsusgrpjgst)+blank
+wert(fnrsusgrpzugtut);ueberschrift2:=ueb1teil3ELSE ueberschrift1:=ueb2teil1+
ueb2teil21+jahrgang;ueberschrift2:=ueb2teil3FI ;klassenlehrer(lehrer,jahrgang
,wert(fnrsusgrpzugtut));ueberschrift2:=ueberschrift2+lehrer;END PROC 
ueberschriftvorbereitendruck;PROC klassenlehrer(TEXT VAR lehrer,TEXT CONST 
jahrgang,TEXT CONST zug):putwert(fnrsgrpsj,schulkenndatum("Schuljahr"));
putwert(fnrsgrphj,schulkenndatum("Schulhalbjahr"));putwert(fnrsgrpjgst,
jahrgang);putwert(fnrsgrpkennung,zug);search(dnraktschuelergruppen,TRUE );IF 
dbstatus=okTHEN putwert(fnrlparaphe,wert(fnrsgrplehrer));search(dnrlehrer,
TRUE );IF dbstatus=okTHEN lehrer:=wert(fnrlfamname)ELSE lehrer:=""FI ;ELSE 
lehrer:=""FI END PROC klassenlehrer;PROC initausgabekopfdruck:
hilfsfeldervorbelegen;ausgkopfdruck(1):=zeile;ausgkopfdruck(2):=druckstrich.
hilfsfeldervorbelegen:setzespaltenbreite(spalte1druckbreite);
setzespaltenbreite(spalte2druckbreite);spaltenweise(nr);spaltenweise(name).
END PROC initausgabekopfdruck;PROC klaliseitedrucken:LET kommentar=
"* Schüler ist am Tag der Listenerstellung volljährig";
klaliueberschriftdrucken;seitedrucken(PROC (INT VAR )schuelerdatendrucken,
druckzeilenzahl,ausgfeldlaenge,PROC bestandendesimulierenbeiklassenwechsel,
BOOL PROC multistopsim);ggflkommentarzeile;IF neueklasseTHEN 
simuliertesendezuruecknehmen;neuelistevorbereitenELSE seitenwechselFI .
ggflkommentarzeile:IF vollTHEN kommentarzeiledruckenFI .kommentarzeiledrucken
:ausgfelddruck(1):=text(niltext,druckbreite);druckzeileschreiben(
ausgfelddruck(1));ausgfelddruck(1):=text(kommentar,druckbreite);
druckzeileschreiben(ausgfelddruck(1)).simuliertesendezuruecknehmen:
setzebestandende(FALSE ).neuelistevorbereiten:meldelistewirdgedruckt;
drucknachbereiten;druckvorbereiten;zaehler:=null;schuelerdatenholen;
ueberschriftvorbereitendruck;initdruckkopf(ueberschrift1,ueberschrift2).
meldelistewirdgedruckt:meldungstext(mnrlistewirdgedruckt,listewirdgedruckt);
standardmeldung(listewirdgedruckt,niltext).END PROC klaliseitedrucken;PROC 
klaliueberschriftdrucken:druckkopfschreiben;INT VAR i;FOR iFROM 1UPTO 
ausgkopflaengeREPEAT druckzeileschreiben(ausgkopfdruck(i))END REPEAT .END 
PROC klaliueberschriftdrucken;PROC schuelerdatendrucken(INT VAR zeilenzaehler
):LET markiert="#";schuelerdatenholen;ggflmeldungklasse;zaehlerINCR 1;
schuelerdatenaufbereitendruck;zeilenzaehlerINCR ausgfeldlaenge;
schuelerdatenindruckdatei.ggflmeldungklasse:IF zaehler=nullTHEN 
standardmeldung(bearbeitetwird,jahrgang+blank+zug+markiert)FI .END PROC 
schuelerdatendrucken;PROC schuelerdatenaufbereitendruck:zaehleraufbereiten;
schuelernameaufbereiten;schreibenrnamerufname.zaehleraufbereiten:IF zaehler<
10THEN zaehleraufber:=blankELSE zaehleraufber:=niltextFI ;zaehleraufber:=
zaehleraufber+text(zaehler).schreibenrnamerufname:spaltenweise(zaehleraufber)
;spaltenweise(schuelernameaufber);ausgfelddruck(1):=zeile;END PROC 
schuelerdatenaufbereitendruck;PROC schuelerdatenindruckdatei:
druckzeileschreiben(ausgfelddruck(1)).END PROC schuelerdatenindruckdatei;
PROC bestandendesimulierenbeiklassenwechsel:IF bestandendeTHEN neueklasse:=
FALSE ELSE nochklassezubearbeiten;IF neueklasseTHEN setzebestandende(TRUE )
FI ;FI .nochklassezubearbeiten:neueklasse:=zug<>wert(fnrsusgrpzugtut);IF alle
THEN neueklasse:=neueklasseOR (int(jahrgang)<>int(wert(fnrsusgrpjgst)))FI .
END PROC bestandendesimulierenbeiklassenwechsel;PROC schuelernameaufbereiten:
schuelernameaufber:=niltext;IF schuelernamenszus<>niltextTHEN 
schuelernameaufber:=schuelernamenszus+blankFI ;schuelernameaufber:=
schuelernameaufber+schuelername+komma+blank+schuelerrufname;IF vollCAND (
schuelergebdat<>niltext)CAND volljaehrig(datum(schuelergebdat))THEN 
schuelernameaufber:=schuelernameaufber+blank+sternFI ;END PROC 
schuelernameaufbereiten;BOOL PROC volljaehrig(INT CONST geburtstag):
geburtstag<=vergldatumEND PROC volljaehrig;PROC schuelerdatenholen:
schuelername:=wert(fnrsufamnames);schuelerrufname:=wert(fnrsurufnames);
schuelernamenszus:=wert(fnrsunamenszusatzs);schuelergebdat:=wert(
fnrsugebdatums);jahrgang:=wert(fnrsusgrpjgst);zug:=wert(fnrsusgrpzugtut).END 
PROC schuelerdatenholen;END PACKET klassenlisten;