app/schulis/2.2.1/src/1.listen.adressen

Raw file
Back to index

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;