PACKET abgemlistenDEFINES abgemlispezielleteile:LET niltext="",blank=" ",
mittestrich="-",null=0,ueberschriftenzeilen=1,spalte1breite=7,spalte3breite=8
,spalte4breite=8,spalte5breite=7,anzspaltentrenner=4,ausgkopflaenge=3,
ausgfeldlaenge=2,AUSGFELD =ROW ausgfeldlaengeTEXT ,AUSGKOPF =ROW
ausgkopflaengeTEXT ,abgemlieingangsmaske="mu liste einfach eingang",
abgemlianfpos=2,mnrbearbeitetwirdjgst=106,#ixsustatabgdat=260,dnrschueler=2,
fnrsufamnames=3,fnrsurufnames=4,fnrsugebdatums=5,fnrsustatuss=6,fnrsusgrpjgst
=7,fnrsusgrpzugtut=8,fnrsunamenszusatzs=21,fnrsuabgdats=16,fnrsuabggrund=17,
fnrsuabschluss=18,#anfangsj="Anfang Schulhalbjahr",endesj=
"Ende Schulhalbjahr";INT CONST spalte2bildbreite:=bildbreite-
anzspaltentrenner-spalte1breite-spalte3breite-spalte4breite-spalte5breite;
INT VAR spalte2druckbreite,druckzeilenzahl,aktuelleindexnr,bildanf,
eingabestatus,breite;TEXT VAR abgemliueberschrift,bearbeitetwirdjgst,
schuljahr,jahr1,jahr2,schuelername,schuelerrufname,schuelernamenszus,
schuelerjgst,schuelerzug,schuelergebdat,schuelerabdat,schuelerabgrund,
schuelerabqual,jgst,neuejgst,startwert,klasse,neueklasse,anfangsdatum:="",
endedatum:="";TEXT VAR druckstrich;TEXT CONST bildstrich:=bildbreite*
mittestrich;AUSGFELD VAR ausgfeld;AUSGKOPF VAR ausgkopf;BOOL VAR
ersteraufbildschirm,klassegeaendert:=FALSE ;BOOL PROC multistop:BOOL VAR b:=(
date(wert(fnrsuabgdats))>=date(anfangsdatum))CAND (date(wert(fnrsuabgdats))<=
date(endedatum))CAND (wert(fnrsustatuss)="ls");bEND PROC multistop;BOOL PROC
multistopdruck:BOOL VAR b:=multistop;setzebestandende(NOT b);bENDPROC
multistopdruck;PROC abgemlispezielleteile(INT CONST nr):SELECT nrOF CASE 1:
abgemlidialogvorbereitenCASE 2:abgemlieingabenrichtigCASE 3:
abgemlilistenvorbereitenCASE 4:abgemlidruckvorbereitenCASE 5:
abgemliseitedruckenCASE 6:abgemlibildschirmvorbereitenCASE 7:
abgemliseitezeigenENDSELECT .END PROC abgemlispezielleteile;PROC
abgemlidialogvorbereiten:abgemliueberschrift:=text(vergleichsknoten);
setzeanfangswerte(abgemlieingangsmaske,abgemlianfpos)END PROC
abgemlidialogvorbereiten;PROC abgemlieingabenrichtig:LET fnrausgdrucker=2,
fnrausgbild=3;standardpruefe(5,fnrausgdrucker,fnrausgbild,null,niltext,
eingabestatus);IF eingabestatus<>0THEN infeld(eingabestatus);setzeeingabetest
(FALSE )ELSE setzeausgabedrucker(standardmaskenfeld(fnrausgbild)=niltext);
setzeeingabetest(TRUE )FI .END PROC abgemlieingabenrichtig;PROC
abgemlilistenvorbereiten:BOOL VAR b:=FALSE ;LET schluessel="Schuljahr";
aktuellesschuljahrermitteln;aktuelleindexnr:=ixsustatabgdat;startwert:="ls";
inittupel(dnrschueler);initobli(8);parsenooffields(21);setzeidentiwert("");
putwert(fnrsustatuss,startwert);putwert(fnrsuabgdats,anfangsdatum);#
objektlistestarten(aktuelleindexnr,"",3,TRUE ,b);#objektlistestarten(
aktuelleindexnr,"",fnrsuabgdats,TRUE ,b);setzebestandende(NOT multistopOR b).
aktuellesschuljahrermitteln:schuljahr:=schulkenndatum(schluessel);jahr1:=
subtext(schuljahr,1,2);jahr2:=subtext(schuljahr,3,4);anfangsdatum:=
schulkenndatum(anfangsj);endedatum:=schulkenndatum(endesj).END PROC
abgemlilistenvorbereiten;PROC abgemlibildschirmvorbereiten:LET fnrausganf=2;
standardkopfmaskeaktualisieren(abgemliueberschrift);breite:=bildbreite;
initspalten;setzespaltenbreiten(spalte2bildbreite);initausgabekopf(bildstrich
);bildanf:=fnrausganf;INT VAR i;FOR iFROM 1UPTO ausgkopflaengeREPEAT ausgkopf
(i)IN bildanf;bildanfINCR 1END REPEAT ;klasse:=niltext;
setzebildanfangsposition(bildanf).END PROC abgemlibildschirmvorbereiten;PROC
abgemliseitezeigen:ersteraufbildschirm:=TRUE ;setzescanendewert(endedatum);
setzescanstartwert(anfangsdatum);blaettern(PROC (INT CONST )schuelerzeigen,
aktion,TRUE ,TRUE ,BOOL PROC multistop);setzescanendewert("�");
setzescanstartwert("�")END PROC abgemliseitezeigen;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 abgemlidruckvorbereiten:LET
uebteil1="Liste der im Schuljahr ",uebteil2=" abgemeldeten Schüler";TEXT VAR
ueberschrift;jgst:=niltext;klasse:=niltext;druckvorbereiten;
variablenfuerdrucksetzen;ueberschriftvorbereitendruck;initdruckkopf(zentriert
(ueberschrift,druckbreite));breite:=druckbreite;initspalten;
setzespaltenbreiten(spalte2druckbreite);initausgabekopf(druckstrich);
holemeldung;inittupel(dnrschueler);putwert(fnrsustatuss,startwert);putwert(
fnrsuabgdats,anfangsdatum);lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,
INT VAR )scanforward,BOOL PROC multistopdruck).holemeldung:meldungstext(
mnrbearbeitetwirdjgst,bearbeitetwirdjgst).variablenfuerdrucksetzen:
druckstrich:=druckbreite*mittestrich;spalte2druckbreite:=druckbreite-
anzspaltentrenner-spalte1breite-spalte3breite-spalte4breite-spalte5breite;
druckzeilenzahl:=drucklaenge(ueberschriftenzeilen)-ausgkopflaenge.
ueberschriftvorbereitendruck:ueberschrift:=uebteil1+aufbereitetesschuljahr+
uebteil2.aufbereitetesschuljahr:"19"+jahr1+"/"+jahr2.END PROC
abgemlidruckvorbereiten;PROC abgemliseitedrucken:abgemliueberschriftdrucken;
seitedrucken(PROC (INT VAR )schuelerdrucken,druckzeilenzahl,ausgfeldlaenge,
BOOL PROC multistopdruck);seitenwechsel.END PROC abgemliseitedrucken;PROC
abgemliueberschriftdrucken:druckkopfschreiben;INT VAR i;FOR iFROM 1UPTO
ausgkopflaengeREPEAT druckzeileschreiben(ausgkopf(i))END REPEAT .END PROC
abgemliueberschriftdrucken;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 setzespaltenbreiten(INT CONST spalte2breite):
setzespaltenbreite(spalte1breite);setzespaltenbreite(spalte2breite);
setzespaltenbreite(spalte3breite);setzespaltenbreite(spalte4breite);
setzespaltenbreite(spalte5breite);END PROC setzespaltenbreiten;PROC
initausgabekopf(TEXT CONST strich):LET jgst="Jgst.",klasse=" Kl.",name=
"Familienname",rufname=" Rufname",geb="Geburts-",abg="Abgangs-",datum=
"datum",grund="Grund",qual=" Qual.";spaltenweise(jgst);spaltenweise(name);
spaltenweise(geb);spaltenweise(abg);spaltenweise(grund);ausgkopf(1):=zeile;
spaltenweise(klasse);spaltenweise(rufname);spaltenweise(datum);spaltenweise(
datum);spaltenweise(qual);ausgkopf(2):=zeile;ausgkopf(3):=strich;END PROC
initausgabekopf;PROC schuelerholen:schuelername:=wert(fnrsufamnames);
schuelerrufname:=wert(fnrsurufnames);schuelernamenszus:=wert(
fnrsunamenszusatzs);schuelerjgst:=wert(fnrsusgrpjgst);schuelerzug:=wert(
fnrsusgrpzugtut);schuelergebdat:=wert(fnrsugebdatums);schuelerabdat:=wert(
fnrsuabgdats);schuelerabgrund:=wert(fnrsuabggrund);schuelerabqual:=wert(
fnrsuabschluss);neueklasse:=schuelerjgst+schuelerzug;klassegeaendert:=klasse
<>neueklasse;klasse:=neueklasse.END PROC schuelerholen;PROC
schueleraufbereiten:LET minus="-";schreibenameabdaten;schreiberufname.
schreibenameabdaten:spaltenweise(aufbschuelerklasse);spaltenweise(
aufbschuelername);spaltenweise(schuelergebdat);spaltenweise(schuelerabdat);
spaltenweise(blank+aufbschuelerabgrund+blank+aufbschuelerabqual);ausgfeld(1)
:=zeile.schreiberufname:ausgfeld(2):=text(aufbrufname,breite).
aufbschuelerklasse:IF klassegeaendertTHEN schuelerjgst+blank+schuelerzugELSE
spalte1breite*blankFI .aufbschuelername:IF schuelernamenszus=niltextTHEN
schuelernameELSE schuelernamenszus+blank+schuelernameFI .aufbschuelerabqual:
IF schuelerabqual=niltextTHEN minusELSE schuelerabqualFI .aufbschuelerabgrund
:IF schuelerabgrund=niltextTHEN minusELSE schuelerabgrundFI .aufbrufname:(
spalte1breite+3)*blank+schuelerrufname.END PROC schueleraufbereiten;END
PACKET abgemlisten;