summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listen.klassenbuch
blob: e0c23863eeed2ac67543331613a9c9c6aa57bdac (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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
PACKET klassenbuchlistenDEFINES klabulispezielleteile:LET nildatumdb=
"01.01.00",niltext="",blank=" ",mittestrich="-",null=0,slspalte3breite=16,
slanzspaltentrenner=2,ausgkopflaenge=3,ausgfeldlaenge=3,maxanzproseite=50,
AUSGFELD =ROW ausgfeldlaengeTEXT ,AUSGKOPF =ROW ausgkopflaengeTEXT ,SPEICHER 
=ROW maxanzproseiteTEXT ,klabulieingangsmaske="ms liste klabuch eingang",
klabulianfpos=2,#dnrschueler=2,fnrsufamnames=3,fnrsurufnames=4,fnrsugebdatums
=5,fnrsustatuss=6,fnrsusgrpjgst=7,fnrsusgrpzugtut=8,fnrsugeschlechts=12,
fnrsunamenszusatzs=21,fnrsustrnrs=24,fnrsuplzorts=25,dbiplz=--,fnrsutelnrs=26
,fnrsutidiffdaten=52,dnrdiffdaten=53,fnrddreliunter=67,fnrddreliunteranmeld=
69,fnrddreliunterabmeld=68,fnrddkunstmusik=70,fnrddfach091a=71,fnrddfach091b=
72,fnrddfach092a=73,fnrddfach092b=74,fnrddfach101a=75,fnrddfach101b=76,
fnrddfach102a=77,fnrddfach102b=78,fnrhjdfamnames=89,fnrhjdrufnames=90,
fnrhjdgebdats=91,fnrhjdhj=93,fnrhjdjgst=94,fnrhjdfach=113,fnrhjdkursart=114,
dnrfaecher=141,fnrffach=142,fnrffachbez=143,ixhjdfamrufgebjgsthj=276,
ixsustatjgstzug=255,#mnrlistewirdgedruckt=58,mnrbearbeitetwird=100,
mnrauswahlnichtsinnvoll=56;INT VAR slspalte1breite,slspalte2breite,
druckzeilenzahlgrund,druckzeilenzahl,druckzeilenzahlrest,zaehler,anzzaehler,
indexspeicher,eingabestatus,aktuelleindexnr;TEXT VAR vordruck,
vordruckueberarbsl,vordruckueberarbsr,klabuliueberschrift,
auswahlnichtsinnvoll,listewirdgedruckt,bearbeitetwird,startjahr,startzug,
schuelername,schuelerrufname,schuelernamenszus,jahrgang,zug,schuelerstrasse,
schuelerort,schuelertelefon,schuelergebdat,schuelergeschlecht,schuelerreliunt
,schuelersprachen,schuelermusfach,schuelerwpffach,schuelerkursfachbez,
schuelerkursartbez,zaehleraufber,lehrer,puffer1,puffer2,druckstrich;AUSGFELD 
VAR ausgfeld;AUSGKOPF VAR slausgkopf,srausgkopf;SPEICHER VAR speicher;FILE 
VAR f,g;BOOL VAR einjahrgang,alle,elementsek1,neueklasse:=FALSE ;BOOL PROC 
multistopsim:BOOL VAR b:=FALSE ;IF wert(fnrsustatuss)="ls"THEN IF startjahr<>
""THEN b:=wert(fnrsusgrpjgst)=startjahr;IF bCAND startzug<>""THEN b:=wert(
fnrsusgrpzugtut)=startzugFI ELSE #b:=dbstatus=ok;#b:=wert(fnrsustatuss)="ls"
FI ;FI ;setzebestandende(NOT b);bEND PROC multistopsim;PROC 
klabulispezielleteile(INT CONST nr):SELECT nrOF CASE 1:
klabulidialogvorbereiten;CASE 2:klabulieingabenrichtig;CASE 3:
klabulilistenvorbereiten;CASE 4:klabulidruckvorbereiten;CASE 5:
klabuliseitedrucken;ENDSELECT .END PROC klabulispezielleteile;PROC 
klabulidialogvorbereiten:klabuliueberschrift:=text(vergleichsknoten);
setzeanfangswerte(klabulieingangsmaske,klabulianfpos).END PROC 
klabulidialogvorbereiten;PROC klabulieingabenrichtig:LET fnrjgst=2,fnrzug=3;
alle:=FALSE ;einjahrgang:=FALSE ;reinitparsing;zug:=standardmaskenfeld(fnrzug
);jahrgang:=standardmaskenfeld(fnrjgst);IF standardmaskenfeld(fnrjgst)=
niltextTHEN IF zug=niltextTHEN alle:=TRUE ;setzeausgabedrucker(TRUE );
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)
;setzeausgabedrucker(TRUE );setzeeingabetest(TRUE )FI FI .meldefehler:
meldungstext(mnrauswahlnichtsinnvoll,auswahlnichtsinnvoll);standardmeldung(
auswahlnichtsinnvoll,niltext).END PROC klabulieingabenrichtig;PROC 
klabulilistenvorbereiten:BOOL VAR b;startjahr:=jahrgang;startzug:=zug;
aktuelleindexnr:=ixsustatjgstzug;inittupel(dnrschueler);initobli(9);
setzeidentiwert("");putwert(fnrsusgrpjgst,startjahr);putwert(fnrsusgrpzugtut,
startzug);putwert(fnrsustatuss,"ls");#objektlistestarten(aktuelleindexnr,"",
fnrsusgrpjgst,TRUE ,b);#objektlistestarten(aktuelleindexnr,"",fnrsustatuss,
TRUE ,b);setzebestandende(NOT multistopsim)END PROC klabulilistenvorbereiten;
PROC klabulidruckvorbereiten:LET vordr="vordruck klassenbuchliste",manager=
"anschreiben server";setzemitseitennummern(FALSE );zaehler:=null;neueklasse:=
TRUE ;druckvorbereiten;variablenfuerdrucksetzen;holemeldungen;inittupel(
dnrschueler);putwert(fnrsusgrpjgst,startjahr);putwert(fnrsusgrpzugtut,
startzug);putwert(fnrsustatuss,"ls");lesenvorbereitendruck(PROC (INT CONST ,
BOOL PROC ,INT VAR )scanforward,BOOL PROC multistopsim);
vordruckvommanagerholen;ueberschriftenvorbereiten;initspalten;
ausgabekoepfevorbereiten;ausgfeld(3):=druckstrich.holemeldungen:meldungstext(
mnrbearbeitetwird,bearbeitetwird).variablenfuerdrucksetzen:druckstrich:=
druckbreite*mittestrich;slspalte2breite:=(druckbreite-slanzspaltentrenner-
slspalte3breite)DIV 2;slspalte1breite:=druckbreite-slanzspaltentrenner-
slspalte2breite-slspalte3breite;druckzeilenzahlgrund:=drucklaenge-
ausgkopflaenge.vordruckvommanagerholen:vordruck:=vordr;forget(vordruck,quiet)
;fetch(vordruck,/manager).END PROC klabulidruckvorbereiten;PROC 
ueberschriftenvorbereiten:LET swischuledatum=511,swiuebzeile=512,
vordrueberarbsl="vordruck ueberarbeitet sl",vordrueberarbsr=
"vordruck ueberarbeitet sr",beginnsek2=11,uebteil1sek1="Klasse: ",
uebteil1sek2="Tutorenkurs: ",ueb1teil2sek1="   Klassenlehrer: ",ueb1teil2sek2
="   Tutor: ",ueb2teil2="Schuljahr ";jahrgangundzugholen;elementsek1bestimmen
;#puffer1:=wert();#setzesonderwerteschulkenndaten;#putwert(,puffer1);#
vordruckfuellenfuerueberschrift1;vordruckfuellenfuerueberschrift2;
verbleibendedruckzeilenzahlbestimmen.jahrgangundzugholen:jahrgang:=wert(
fnrsusgrpjgst);zug:=wert(fnrsusgrpzugtut).elementsek1bestimmen:elementsek1:=
FALSE ;IF int(jahrgang)<beginnsek2THEN elementsek1:=TRUE FI .
vordruckfuellenfuerueberschrift1:setzesonderwert(swischuledatum,
aufbereiteteschuledatum);setzesonderwert(swiuebzeile,aufbereiteteklasselehrer
);vordruckueberarbsl:=vordrueberarbsl;forget(vordruckueberarbsl,quiet);
briefalternative(vordruck,vordruckueberarbsl);f:=sequentialfile(input,
vordruckueberarbsl).vordruckfuellenfuerueberschrift2:setzesonderwert(
swischuledatum,aufbereiteteschuledatum);setzesonderwert(swiuebzeile,
aufbereiteteklasseschuljahr);vordruckueberarbsr:=vordrueberarbsr;forget(
vordruckueberarbsr,quiet);briefalternative(vordruck,vordruckueberarbsr);g:=
sequentialfile(input,vordruckueberarbsr).aufbereiteteschuledatum:puffer1:=
sonderwert(501);puffer2:=sonderwert(502);puffer2+(druckbreite-length(puffer2)
-length(puffer1))*blank+puffer1.aufbereiteteklasselehrer:klassenlehrer(lehrer
,jahrgang,zug);puffer2:=jahrgang+blank+zug;IF int(jahrgang)<11THEN 
uebteil1sek1+puffer2+ueb1teil2sek1+lehrerELSE uebteil1sek2+puffer2+
ueb1teil2sek2+lehrerFI .aufbereiteteklasseschuljahr:puffer1:=ueb2teil2+
sonderwert(505);puffer2:=jahrgang+blank+zug;IF int(jahrgang)<11THEN puffer2:=
uebteil1sek1+puffer2ELSE puffer2:=uebteil1sek2+puffer2FI ;puffer2+(
druckbreite-length(puffer2)-length(puffer1))*blank+puffer1.
verbleibendedruckzeilenzahlbestimmen:druckzeilenzahl:=druckzeilenzahlgrund-
max(lines(f),lines(g));druckzeilenzahl:=min((maxanzproseiteDIV (
ausgfeldlaenge-1))*ausgfeldlaenge,druckzeilenzahl).END PROC 
ueberschriftenvorbereiten;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 ausgabekoepfevorbereiten:LET name=
"    Familienname",strasse="Straße Hausnummer",telefon="Telefonnummer",
nrrufname="Nr.   Rufname Namenszusatz",ort="Plz Ort";ausgabekopfslvorbelegen;
ausgabekopfsrvorbelegen.ausgabekopfslvorbelegen:hilfsfeldervorbelegen;
spaltenweise(name);spaltenweise(strasse);spaltenweise(telefon);slausgkopf(1)
:=zeile;spaltenweise(nrrufname);spaltenweise(ort);spaltenweise(blank);
slausgkopf(2):=zeile;slausgkopf(3):=druckstrich.hilfsfeldervorbelegen:
setzespaltenbreite(slspalte1breite);setzespaltenbreite(slspalte2breite);
setzespaltenbreite(slspalte3breite).END PROC ausgabekoepfevorbereiten;PROC 
ausgabekopfsrvorbelegen:LET srkopft1="    Geburts-  J/M  ",srkopft2=
"Nr.   datum        ",srkopf1t1="Unterr.   Sprachen  musisches  Wahlpflicht-"
,srkopf1t2="Religion            Fach       fächer",srkopf2t1="Fächer",
srkopf2t2="Kurskennungen";IF elementsek1THEN srausgkopf(1):=srkopft1+
srkopf1t1;srausgkopf(2):=srkopft2+srkopf1t2ELSE srausgkopf(1):=srkopft1+
srkopf2t1;srausgkopf(2):=srkopft2+srkopf2t2FI ;srausgkopf(3):=druckstrich.
END PROC ausgabekopfsrvorbelegen;PROC klabuliseitedrucken:
speicherrechteseiteloeschen;klabulislueberschriftdrucken;anzzaehler:=null;
seitedrucken(PROC (INT VAR )schuelerdatendrucken,druckzeilenzahl,
ausgfeldlaenge,PROC bestandendesimulierenbeiklassenwechsel,BOOL PROC 
multistopsim);IF neueklasseTHEN simuliertesendezuruecknehmen;
neuelistevorbereitenELSE IF NOT bestandendeTHEN rechteseitedrucken;
seitenwechselFI FI .speicherrechteseiteloeschen:FOR indexspeicherFROM 1UPTO 
maxanzproseiteREP speicher(indexspeicher):=niltextPER ;indexspeicher:=null.
simuliertesendezuruecknehmen:setzebestandende(FALSE ).neuelistevorbereiten:
leereschuelereintragen;rechteseitedrucken;meldelistewirdgedruckt;
drucknachbereiten;druckvorbereiten;zaehler:=null;ueberschriftenvorbereiten.
meldelistewirdgedruckt:meldungstext(mnrlistewirdgedruckt,listewirdgedruckt);
standardmeldung(listewirdgedruckt,niltext).END PROC klabuliseitedrucken;PROC 
klabulislueberschriftdrucken:INT VAR i;input(f);WHILE NOT eof(f)REP getline(f
,ausgfeld(1));druckzeileschreiben(ausgfeld(1));PER ;druckzeileschreiben(
druckstrich);FOR iFROM 1UPTO ausgkopflaengeREPEAT druckzeileschreiben(
slausgkopf(i))END REPEAT ;druckzeilenzahlrest:=druckzeilenzahl.END PROC 
klabulislueberschriftdrucken;PROC bestandendesimulierenbeiklassenwechsel:IF 
bestandendeTHEN leereschuelereintragen;rechteseitedrucken;neueklasse:=FALSE 
ELSE nochklassezubearbeiten;IF neueklasseTHEN setzebestandende(TRUE )FI ;FI .
nochklassezubearbeiten:IF alleTHEN neueklasse:=int(jahrgang)<>int(wert(
fnrsusgrpjgst));IF neueklasseTHEN ausgabekopfsrvorbelegenFI ;neueklasse:=
neueklasseOR (zug<>wert(fnrsusgrpzugtut));ELSE neueklasse:=zug<>wert(
fnrsusgrpzugtut)FI .END PROC bestandendesimulierenbeiklassenwechsel;PROC 
schuelerdatendrucken(INT VAR zeilenzaehler):LET markiert="#";
schuelerdatenholen;ggflmeldungklasse;zaehlerINCR 1;anzzaehlerINCR 1;
schuelerdatenaufbereiten;zeilenzaehlerINCR ausgfeldlaenge;
schuelerdatenindruckdatei.ggflmeldungklasse:IF zaehler=nullTHEN 
standardmeldung(bearbeitetwird,jahrgang+blank+zug+markiert)FI .END PROC 
schuelerdatendrucken;PROC schuelerdatenholen:LET weiblich="w",maennlich="m",
junge="J",maedchen="M",anzsprachen=4,prosprache=3;INT VAR i,j;schuelername:=
wert(fnrsufamnames);schuelerrufname:=2*blank+wert(fnrsurufnames);
schuelernamenszus:=wert(fnrsunamenszusatzs);jahrgang:=wert(fnrsusgrpjgst);zug
:=wert(fnrsusgrpzugtut);schuelerstrasse:=wert(fnrsustrnrs);schuelerort:=wert(
fnrsuplzorts);schuelertelefon:=wert(fnrsutelnrs);schuelergebdat:=wert(
fnrsugebdatums);IF wert(fnrsugeschlechts)=weiblichTHEN schuelergeschlecht:=
maedchenELIF wert(fnrsugeschlechts)=maennlichTHEN schuelergeschlecht:=junge
ELSE schuelergeschlecht:=blankFI ;IF elementsek1THEN 
diffdatenholenundaufbereitenELSE schuelerkursfachbez:=niltext;
schuelerkursartbez:=niltext;kursdatenholenundaufbereitenFI .
diffdatenholenundaufbereiten:INT VAR difstatus:=0;inittupel(dnrdiffdaten);IF 
wert(fnrsutiddiffdaten)<>""THEN disablestop;readtid(dnrdiffdaten,wert(
fnrsutiddiffdaten));IF iserrorTHEN clearerror;difstatus:=1FI ;enablestopFI ;
IF difstatus=0THEN schuelersprachen:=niltext;sprachenaufbereiten;
schuelerreliunt:=wert(fnrddreliunter);schuelermusfach:=wert(fnrddkunstmusik);
schuelerwpffach:=niltext;IF jahrgang="09"THEN wpf9aufbereitenELIF jahrgang=
"10"THEN wpf10aufbereitenFI FI .sprachenaufbereiten:FOR iFROM 0UPTO 
anzsprachen-1REP j:=(3*i)+55;puffer1:=wert(j);schuelersprachen:=
schuelersprachen+puffer1+(prosprache-length(puffer1))*blankPER .
wpf9aufbereiten:puffer1:=wert(fnrddfach091a);schuelerwpffach:=puffer1+(5-
length(puffer1))*blank;puffer1:=wert(fnrddfach091b);schuelerwpffach:=
schuelerwpffach+puffer1+(5-length(puffer1))*blank;puffer1:=wert(fnrddfach092a
);schuelerwpffach:=schuelerwpffach+puffer1+(5-length(puffer1))*blank;puffer1
:=wert(fnrddfach092b);schuelerwpffach:=schuelerwpffach+puffer1+(5-length(
puffer1))*blank.wpf10aufbereiten:puffer1:=wert(fnrddfach101a);schuelerwpffach
:=puffer1+(5-length(puffer1))*blank;puffer1:=wert(fnrddfach101b);
schuelerwpffach:=schuelerwpffach+puffer1+(5-length(puffer1))*blank;puffer1:=
wert(fnrddfach102a);schuelerwpffach:=schuelerwpffach+puffer1+(5-length(
puffer1))*blank;puffer1:=wert(fnrddfach102b);schuelerwpffach:=schuelerwpffach
+puffer1+(5-length(puffer1))*blank.kursdatenholenundaufbereiten:putwert(
fnrhjdfamnames,schuelername);putwert(fnrhjdrufnames,compress(schuelerrufname)
);putwert(fnrhjdgebdats,schuelergebdat);putwert(fnrhjdjgst,jahrgang);putwert(
fnrhjdhj,schulkenndatum("Schulhalbjahr"));search(ixhjdfamrufgebjgsthj,TRUE );
pause(5);IF dbstatus=okTHEN kursartzuweisenFI .#dr31.03.88kursartzuweisen:
TEXT VAR suchbegriff:="";FOR iFROM 1UPTO (length(wert(fnrhjdfach))DIV 2)REP 
puffer1:=wert(fnrhjdkursart)SUB i;schuelerkursartbez:=schuelerkursartbez+
puffer1+(2-length(puffer1))*blank;suchbegriff:=subtext(wert(fnrhjdfach),(2*i)
-1,2*i);suchbegriff:=compress(suchbegriff);putwert(fnrffach,suchbegriff);
search(dnrfaecher,TRUE );IF dbstatus=okTHEN puffer1:=wert(fnrffachbez);
schuelerkursfachbez:=schuelerkursfachbez+puffer1+(3-length(puffer1))*blank;
FI ;PER .#kursartzuweisen:TEXT VAR suchbegriff:="";FOR iFROM 1UPTO (length(
wert(fnrhjdfach))DIV 2)REP suchbegriff:=subtext(wert(fnrhjdfach),(2*i)-1,2*i)
;suchbegriff:=compress(suchbegriff);putwert(fnrffach,suchbegriff);search(
dnrfaecher,TRUE );IF dbstatus=okTHEN puffer1:=wert(fnrffach);
schuelerkursfachbez:=schuelerkursfachbez+text(puffer1,3);puffer1:=wert(
fnrhjdkursart)SUB i;schuelerkursartbez:=schuelerkursartbez+text(puffer1,3);
ELSE schuelerkursfachbez:=schuelerkursfachbez+(3*blank);schuelerkursartbez:=
schuelerkursartbez+(3*blank);FI ;PER .END PROC schuelerdatenholen;PROC 
schuelerdatenaufbereiten:zaehleraufbereiten;schreibenrnamestrassetelnr;
schreiberufnameort;datenfuerrechteseitespeichern.schreibenrnamestrassetelnr:
spaltenweise(zaehleraufber+2*blank+schuelername);spaltenweise(schuelerstrasse
);spaltenweise(schuelertelefon);ausgfeld(1):=zeile.schreiberufnameort:
spaltenweise(4*blank+schuelerrufname+blank+schuelernamenszus);spaltenweise(
schuelerort);spaltenweise(blank);ausgfeld(2):=zeile.
datenfuerrechteseitespeichern:indexspeicherINCR 1;speicher(indexspeicher):=
zaehleraufber+2*blank+aufbgebdat+3*blank+schuelergeschlecht;IF elementsek1
THEN speicher(indexspeicher):=speicher(indexspeicher)+6*blank+aufbreliunt+5*
blank+schuelersprachen+4*blank+aufbmusfach+6*blank+schuelerwpffach;
indexspeicherINCR 1ELSE speicher(indexspeicher):=speicher(indexspeicher)+3*
blank+schuelerkursfachbez;indexspeicherINCR 1;speicher(indexspeicher):=19*
blank+schuelerkursartbezFI .aufbgebdat:IF schuelergebdat=niltextTHEN 8*blank
ELSE schuelergebdatFI .aufbreliunt:IF schuelerreliunt=niltextOR (reliabmeld
AND NOT relianmeld)THEN 2*blankELSE schuelerreliuntFI .reliabmeld:wert(
fnrddabmeldedatreli)<>nildatumdb.relianmeld:wert(fnrddanmeldedatreli)<>
nildatumdb.aufbmusfach:IF schuelermusfach=niltextTHEN 2*blankELSE 
schuelermusfachFI .END PROC schuelerdatenaufbereiten;PROC 
schuelerdatenindruckdatei:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREP 
druckzeileschreiben(ausgfeld(i))PER ;druckzeilenzahlrestDECR ausgfeldlaenge.
END PROC schuelerdatenindruckdatei;PROC leereschuelereintragen:INT VAR 
leereschuelermoeglich,i;indexspeicherINCR 1;moeglicheschuelereintragen.
moeglicheschuelereintragen:leereschuelermoeglich:=druckzeilenzahlrestDIV 
ausgfeldlaenge;FOR iFROM 1UPTO leereschuelermoeglichREP zaehlerINCR 1;
zaehleraufbereiten;ausgfeld(1):=text(zaehleraufber,druckbreite);ausgfeld(2):=
text(blank,druckbreite);schuelerdatenindruckdatei;
leerenschuelerfuerrechteseitespeichernPER .
leerenschuelerfuerrechteseitespeichern:anzzaehlerINCR 1;speicher(
indexspeicher):=text(zaehleraufber,druckbreite);indexspeicherINCR 2.END PROC 
leereschuelereintragen;PROC rechteseitedrucken:INT VAR i,j;seitenwechsel;
klabulisrueberschriftdrucken;FOR iFROM 1UPTO anzzaehlerREP j:=2*i;ausgfeld(1)
:=speicher(j-1);ausgfeld(2):=speicher(j);schuelerdatenindruckdateiPER .END 
PROC rechteseitedrucken;PROC klabulisrueberschriftdrucken:INT VAR i;input(g);
WHILE NOT eof(g)REP getline(g,ausgfeld(1));druckzeileschreiben(ausgfeld(1));
PER ;druckzeileschreiben(druckstrich);FOR iFROM 1UPTO ausgkopflaengeREPEAT 
druckzeileschreiben(srausgkopf(i))END REPEAT .END PROC 
klabulisrueberschriftdrucken;PROC zaehleraufbereiten:LET zaehlerzweistellig=
10;IF zaehler<zaehlerzweistelligTHEN zaehleraufber:=blankELSE zaehleraufber:=
niltextFI ;zaehleraufber:=zaehleraufber+text(zaehler).END PROC 
zaehleraufbereiten;END PACKET klassenbuchlisten;