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;
|