summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/1.listen.adressen
blob: 0a45d7bac30542ac8bccba2858827974d150ecec (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
PACKET adressenlistenDEFINES adrlispezielleteile:LET niltext="",blank=" ",
mittestrich="-",null=0,komma=",",altervolljaehrig=18,uebteil21="Jgst. ",
uebteil22="Klasse ",uebteil23="Tutorenkurs ",uebteil24="alphabetisch",
ueberschriftenzeilen=2,#bestand1="c12 schueler",bestand2=
"c11 akt schuelergruppen",praefix1="c12 jgst",praefix2="c12 sg",#
ausgfeldlaenge=9,AUSGFELD =ROW ausgfeldlaengeTEXT ,adrlieingangsmaske=
"ms liste adressen eingang",adrlianfpos=2,#dnrschueler=2,fnrsufamnames=3,
fnrsurufnames=4,fnrsustatuss=6,fnrsunamenszusatzs=21,fnrsugebnames=22,
fnrsugebdatums=5,fnrsusgrpjgst=7,fnrsusgrpzugtut=8,fnrsuwohntbei=23,
fnrsustrnrs=24,fnrsuplzorts=25,fnrsutelnrs=26,fnrsufamnamee=28,fnrsuvornamee=
29,fnrsunamenszusatzs=30,fnrsustrnre=31,fnrsuplzorte=32,fnrsutelnre=33,
ixsustatjgstzug=255,ixsustatjgst=261,ixstatfamrufgeb=254,stattnachfolgendemI 
ndexixsustat=252,#mnrbearbeitetwerden=102,mnrbearbeitetwird=100,
mnrauswahlnichtsinnvoll=56,mnrlistewirdgedruckt=58;INT VAR aktuelleindexnr,
druckzeilenzahl,bildanf,vergldatum,ausgfeldzeile,eingabestatus,zaehler;TEXT 
VAR adrliueberschrift,ueberschrift1,ueberschrift2,anfbuchstabe,
neueranfbuchstabe,startjahr,startzug,bearbeitetwerden,bearbeitetwird,
schuelername,schuelervorname,schuelernamenszusatz,schuelergebname,gebdat,
jahrgangsstufe,zug,adressename,adressestrasse,adresseort,adressetelnr,
erzbername,erzbervorname,erzbernamenszusatz,erzberstrasse,erzberort,
erzbertelnr;AUSGFELD VAR ausgfeld;ausgfeld(ausgfeldlaenge):=niltext;TEXT VAR 
druckstrich;BOOL VAR einjahrgang,alle,sortalpha,neueklasse;BOOL PROC 
multistop:BOOL VAR b:=FALSE ;IF wert(fnrsustatuss)="ls"THEN IF startjahr<>
niltextTHEN IF startzug=niltextTHEN b:=(wert(fnrsusgrpjgst)=startjahr)ELSE b
:=(wert(fnrsusgrpzugtut)=startzugAND wert(fnrsusgrpjgst)=startjahr)FI ELSE b
:=dbstatus=okFI ;FI ;bEND PROC multistop;BOOL PROC multistopsim:BOOL VAR b:=
multistop;setzebestandende(NOT b);bENDPROC multistopsim;PROC 
adrlispezielleteile(INT CONST nr):SELECT nrOF CASE 1:adrlidialogvorbereiten
CASE 2:adrlieingabenrichtigCASE 3:adrlilistenvorbereitenCASE 4:
adrlidruckvorbereitenCASE 5:adrliseitedruckenCASE 6:
adrlibildschirmvorbereitenCASE 7:adrliseitezeigenENDSELECT .END PROC 
adrlispezielleteile;PROC adrlidialogvorbereiten:adrliueberschrift:=text(
vergleichsknoten);setzeanfangswerte(adrlieingangsmaske,adrlianfpos).END PROC 
adrlidialogvorbereiten;PROC adrlieingabenrichtig:LET fnrjgst=2,fnrzug=3,
fnralphasort=4,fnrklassensort=5,fnrausgdrucker=6,fnrausgbild=7;alle:=FALSE ;
einjahrgang:=FALSE ;sortalpha:=FALSE ;wohinausgabepruefen;IF 
falschausgefuelltTHEN infeld(eingabestatus);setzeeingabetest(FALSE )ELSE 
jahrgangsstufe:=standardmaskenfeld(fnrjgst);zug:=standardmaskenfeld(fnrzug);
wasausgabepruefenFI .wohinausgabepruefen:standardpruefe(5,fnrausgdrucker,
fnrausgbild,null,niltext,eingabestatus).wasausgabepruefen:IF jahrgangsstufe=
niltextTHEN IF zug=niltextTHEN wieausgabepruefen;IF falschausgefuelltTHEN 
infeld(eingabestatus);setzeeingabetest(FALSE )ELSE alle:=TRUE ;
wertesetzenfuerweiterebearbeitungFI ELSE meldefehler;infeld(fnrzug);
setzeeingabetest(FALSE )FI ELSE standardpruefe(3,fnrjgst,5,13,niltext,
eingabestatus);IF falschausgefuelltTHEN infeld(eingabestatus);
setzeeingabetest(FALSE )ELSE jahrgangsstufe:=zweistellig(jahrgangsstufe);
einjahrgang:=(zug=niltext);IF einjahrgangTHEN wieausgabepruefen;IF 
falschausgefuelltTHEN infeld(eingabestatus);setzeeingabetest(FALSE )ELSE 
wertesetzenfuerweiterebearbeitungFI ELSE wertesetzenfuerweiterebearbeitung;
sortalpha:=TRUE FI ;FI ;FI .wieausgabepruefen:standardpruefe(5,fnralphasort,
fnrklassensort,null,niltext,eingabestatus).wertesetzenfuerweiterebearbeitung:
sortalpha:=standardmaskenfeld(fnrklassensort)=niltext;setzeausgabedrucker(
standardmaskenfeld(fnrausgbild)=niltext);setzeeingabetest(TRUE ).
falschausgefuellt:eingabestatus<>0.meldefehler:standardmeldung(
mnrauswahlnichtsinnvoll,niltext).END PROC adrlieingabenrichtig;PROC 
adrlilistenvorbereiten:BOOL VAR b:=FALSE ;INT VAR staticfield:=dnrschueler+1;
vergldatum:=vergleichsdatum(altervolljaehrig);startjahr:=jahrgangsstufe;
startzug:=zug;IF sortalphaTHEN IF startjahr<>niltextTHEN IF startzug<>niltext
THEN aktuelleindexnr:=ixsustatjgstzugELSE aktuelleindexnr:=ixsustatjgstFI ;
ELSE staticfield:=fnrsustatuss;#?????#aktuelleindexnr:=ixsustatfamrufgeb#
aktuelleindexnr:=ixsustat#FI ;ELSE IF startjahr=""THEN staticfield:=
fnrsusgrpjgstELSE staticfield:=fnrsusgrpzugtutFI ;aktuelleindexnr:=
ixsustatjgstzugFI ;inittupel(dnrschueler);initobli(2);parsenooffields(34);
setzeidentiwert("");putwert(fnrsusgrpjgst,startjahr);putwert(fnrsusgrpzugtut,
startzug);putwert(fnrsustatuss,"ls");#objektlistestarten(aktuelleindexnr,"",
fnrsustatuss,TRUE ,b);#objektlistestarten(aktuelleindexnr,"",staticfield,
TRUE ,b);setzebestandende(NOT multistopCOR b)END PROC adrlilistenvorbereiten;
PROC adrlibildschirmvorbereiten:LET fnrausganf=2;ueberschriftvorbereitenbild;
standardkopfmaskeaktualisieren(ueberschrift1);bildanf:=fnrausganf;#
setzenderhilfsgroessenfuersblaettern(min(maxblocklaenge,bildblocklaenge),
bildsatzzahl);#setzebildanfangsposition(bildanf).END PROC 
adrlibildschirmvorbereiten;PROC ueberschriftvorbereitenbild:LET aufein="",
aufaus=" ";ueberschrift1:=adrliueberschrift;IF NOT alleTHEN ueberschrift1:=
ueberschrift1+komma+blank;IF einjahrgangTHEN ueberschrift1:=ueberschrift1+
uebteil21+aufein+jahrgangsstufe+aufausELSE IF int(jahrgangsstufe)<11THEN 
ueberschrift1:=ueberschrift1+uebteil22ELSE ueberschrift1:=ueberschrift1+
uebteil23FI ;ueberschrift1:=ueberschrift1+aufein+jahrgangsstufe+blank+zug+
aufausFI FI ;END PROC ueberschriftvorbereitenbild;PROC adrliseitezeigen:
blaettern(PROC (INT CONST )adressdatenzeigen,aktion,TRUE ,aktuelleindexnr<>
dnrschueler,BOOL PROC multistop)END PROC adrliseitezeigen;PROC 
adressdatenzeigen(INT CONST x):TEXT CONST leerzeile:=text(blank,bildbreite);
INT VAR i;adressdatenholen;adressdatenaufbereiten(bildbreite);
ggfleerzeilenfuellen;adressdatenaufbildschirm.ggfleerzeilenfuellen:
ausgfeldzeileINCR 1;FOR iFROM ausgfeldzeileUPTO ausgfeldlaenge-1REP ausgfeld(
i):=leerzeilePER .END PROC adressdatenzeigen;PROC adressdatenaufbildschirm:
INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREPEAT ausgfeld(i)IN ausgabepos;
erhoeheausgabeposumeinsEND REPEAT .END PROC adressdatenaufbildschirm;PROC 
adrlidruckvorbereiten:IF (alleOR einjahrgang)AND NOT sortalphaTHEN zaehler:=
null;neueklasse:=TRUE ELSE anfbuchstabe:=niltextFI ;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);ueberschriftvorbereitendruck;
initdruckkopf(zentriert(ueberschrift1,druckbreite),zentriert(ueberschrift2,
druckbreite)).variablenfuerdrucksetzen:druckzeilenzahl:=drucklaenge(
ueberschriftenzeilen);druckstrich:=druckbreite*mittestrich.holemeldungen:
meldungstext(mnrbearbeitetwird,bearbeitetwird);meldungstext(
mnrbearbeitetwerden,bearbeitetwerden).END PROC adrlidruckvorbereiten;PROC 
ueberschriftvorbereitendruck:jahrgangsstufe:=wert(fnrsusgrpjgst);zug:=wert(
fnrsusgrpzugtut);ueberschrift1:=compress(adrliueberschrift);#dr28.03.88#IF 
alleTHEN IF sortalphaTHEN ueberschrift2:=uebteil24ELSE klassenueberschriftFI 
ELSE IF einjahrgangTHEN IF sortalphaTHEN ueberschrift2:=uebteil21+
jahrgangsstufe+komma+blank+uebteil24ELSE klassenueberschriftFI ELSE 
klassenueberschriftFI FI .klassenueberschrift:IF int(jahrgangsstufe)<11THEN 
ueberschrift2:=uebteil22ELSE ueberschrift2:=uebteil23FI ;ueberschrift2:=
ueberschrift2+jahrgangsstufe+blank+zug.END PROC ueberschriftvorbereitendruck;
PROC adrliseitedrucken:adrliueberschriftdrucken;IF (alleOR einjahrgang)AND 
NOT sortalphaTHEN seitedrucken(PROC (INT VAR )adressdatendrucken,
druckzeilenzahl,ausgfeldlaenge,PROC bestandendesimulierenbeiklassenwechsel,
BOOL PROC multistopsim);IF neueklasseTHEN simuliertesendezuruecknehmen;
neuelistevorbereitenELSE seitenwechselFI ELSE seitedrucken(PROC (INT VAR )
adressdatendrucken,druckzeilenzahl,ausgfeldlaenge,BOOL PROC multistopsim);
seitenwechselFI .simuliertesendezuruecknehmen:setzebestandende(FALSE ).
neuelistevorbereiten:meldelistewirdgedruckt;drucknachbereiten;
druckvorbereiten;zaehler:=null;ueberschriftvorbereitendruck;initdruckkopf(
zentriert(ueberschrift1,druckbreite),zentriert(ueberschrift2,druckbreite)).
meldelistewirdgedruckt:standardmeldung(mnrlistewirdgedruckt,"").END PROC 
adrliseitedrucken;PROC adrliueberschriftdrucken:druckkopfschreiben.END PROC 
adrliueberschriftdrucken;PROC adressdatendrucken(INT VAR zeilenzaehler):LET 
markiert="#";adressdatenholen;ggfmeldung;zaehlerINCR 1;adressdatenaufbereiten
(druckbreite);zeilenzaehlerINCR ausgfeldzeile;adressdatenindruckdatei.
ggfmeldung:IF (alleOR einjahrgang)AND NOT sortalphaTHEN ggfmeldungklasseELSE 
ggfmeldunganfbuchstabeEND IF .ggfmeldungklasse:IF zaehler=nullTHEN 
standardmeldung(bearbeitetwird,jahrgangsstufe+blank+zug+markiert)FI .
ggfmeldunganfbuchstabe:IF anfangsbuchstabegeaendertTHEN meldunganfbuchstabe
END IF .anfangsbuchstabegeaendert:neueranfbuchstabe:=schuelernameSUB 1;
anfbuchstabe<>neueranfbuchstabe.meldunganfbuchstabe:standardmeldung(
bearbeitetwerden,neueranfbuchstabe+markiert);anfbuchstabe:=neueranfbuchstabe.
END PROC adressdatendrucken;PROC adressdatenindruckdatei:INT VAR i;FOR iFROM 
1UPTO ausgfeldzeileREP druckzeileschreiben(ausgfeld(i))PER .END PROC 
adressdatenindruckdatei;PROC bestandendesimulierenbeiklassenwechsel:IF 
bestandendeTHEN neueklasse:=FALSE ELSE nochklassezubearbeiten;IF neueklasse
THEN setzebestandende(TRUE )FI ;FI .nochklassezubearbeiten:neueklasse:=zug<>
wert(fnrsusgrpzugtut);IF alleTHEN neueklasse:=neueklasseOR (int(
jahrgangsstufe)<>int(wert(fnrsusgrpjgst)))FI .END PROC 
bestandendesimulierenbeiklassenwechsel;PROC adressdatenholen:schuelername:=
wert(fnrsufamnames);schuelervorname:=wert(fnrsurufnames);schuelernamenszusatz
:=wert(fnrsunamenszusatzs);schuelergebname:=wert(fnrsugebnames);gebdat:=wert(
fnrsugebdatums);jahrgangsstufe:=wert(fnrsusgrpjgst);zug:=wert(fnrsusgrpzugtut
);adressename:=wert(fnrsuwohntbei);adressestrasse:=wert(fnrsustrnrs);
adresseort:=wert(fnrsuplzorts);adressetelnr:=wert(fnrsutelnrs);erzbername:=
wert(fnrsufamnamee);erzbervorname:=wert(fnrsuvornamee);erzbernamenszusatz:=
wert(fnrsunamenszusatze);erzberstrasse:=wert(fnrsustrnre);erzberort:=wert(
fnrsuplzorte);erzbertelnr:=wert(fnrsutelnre)END PROC adressdatenholen;PROC 
adressdatenaufbereiten(INT CONST breite):LET prebreite=19,klassetelnrbreite=
21,deutsch="D",namevornametrenner=", ",gebnamepre=", geb. ",gebdatpre=
"         Geb.Dat.: ",vollj="(Vollj.)",klassepre="Klasse: ",adressepre=
"         Adresse : ",preleer="                   ",adressnamepre="bei ",
telnrpre="Tel.: ",erzberpre="         Erz.Ber.: ";INT CONST breiteohnepre:=
breite-prebreite,ortgebdatbreite:=breiteohnepre-klassetelnrbreite;
schreibenamenszeile;schreibegebdatundggfklasse;schreibeschueleradresse;
schreibeggferzberadresse.schreibenamenszeile:ausgfeld(1):=text(
zusammengesetztername,breite).zusammengesetztername:subtext(schuelername+
namevornametrenner+schuelervorname+blank+schuelernamenszusatz+gebname,1,
breite).gebname:IF schuelergebname=niltextTHEN niltextELSE gebnamepre+
schuelergebnameEND IF .schreibegebdatundggfklasse:ausgfeld(2):=gebdatpre+
gebdatundggfklasse.gebdatundggfklasse:IF alleOR einjahrgangTHEN text(gebdat+
ggfvollj,ortgebdatbreite)+text(klassepre+klasse,klassetelnrbreite)ELSE text(
gebdat+ggfvollj,breiteohnepre)FI .klasse:jahrgangsstufe+blank+zug.ggfvollj:
IF volljaehrig(datum(gebdat))THEN volljELSE niltextEND IF .
schreibeschueleradresse:IF adressename=niltextTHEN ausgfeld(3):=text(
adressepre+adressestrasse,breite);ausgfeldzeile:=4ELSE ausgfeld(3):=text(
adressepre+adressnamepre+adressename,breite);ausgfeld(4):=text(preleer+
adressestrasse,breite);ausgfeldzeile:=5FI ;ausgfeld(ausgfeldzeile):=preleer+
ortundggftelefon.ortundggftelefon:IF adressetelnr=niltextTHEN text(
adresseggflandundort,breiteohnepre)ELSE text(adresseggflandundort,
ortgebdatbreite)+text(telnrpre+adressetelnr,klassetelnrbreite)FI .
adresseggflandundort:adresseort.schreibeggferzberadresse:IF erzbername=
niltextTHEN schreibeleerzeileELSE schreibeerzberadresseFI .
schreibeerzberadresse:schreibeerzbername;schreibeggferzberstrort.
schreibeerzbername:ausgfeldzeileINCR 1;ausgfeld(ausgfeldzeile):=text(
erzberpre+ggferzbernamenszusatz+erzbername+namevornametrenner+erzbervorname,
breite).ggferzbernamenszusatz:IF erzbernamenszusatz<>niltextTHEN 
erzbernamenszusatz+blankELSE niltextFI .schreibeggferzberstrort:IF (
erzberstrasse=niltext)AND (erzberort=niltext)THEN schreibeleerzeileELSE 
schreibeerzberstrasse;schreibeerzberortundggftelnrFI .schreibeerzberstrasse:
ausgfeldzeileINCR 1;ausgfeld(ausgfeldzeile):=text(preleer+erzberstrasse,
breite).schreibeerzberortundggftelnr:ausgfeldzeileINCR 1;ausgfeld(
ausgfeldzeile):=preleer+erzberortundggftelefon.erzberortundggftelefon:IF 
erzbertelnr=niltextTHEN text(erzberggflandundort,breiteohnepre)ELSE text(
erzberggflandundort,ortgebdatbreite)+text(telnrpre+erzbertelnr,
klassetelnrbreite)FI .erzberggflandundort:erzberort.schreibeleerzeile:
ausgfeldzeileINCR 1;ausgfeld(ausgfeldzeile):=text(blank,breite).END PROC 
adressdatenaufbereiten;BOOL PROC volljaehrig(INT CONST geburtstag):geburtstag
<=vergldatumEND PROC volljaehrig;END PACKET adressenlisten;