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