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

Raw file
Back to index

PACKET klassenlistenDEFINES klalispezielleteile:LET niltext="",blank=" ",
mittestrich="-",null=0,komma=",",stern="*",ueb1teil1="Klassenliste",ueb1teil2
=" für Klasse ",ueb1teil3="Klassenlehrer: ",ueb2teil1="Tutorenkursliste",
ueb2teil21=" für Jahrgangsstufe ",ueb2teil22=" für den Kurs ",ueb2teil3=
"Tutor: ",ueb3="n der Jahrgangsstufe ",ueberschriftenzeilen=2,
spalte1druckbreite=3,spalte2bildbreite=7,anzspaltentrenner=1,ausgkopflaenge=2
,ausgfeldlaenge=1,AUSGFELDDRUCK =ROW ausgfeldlaengeTEXT ,AUSGFELDBILD =ROW 
ausgfeldlaengeTEXT ,AUSGKOPFDRUCK =ROW ausgkopflaengeTEXT ,AUSGKOPFBILD =ROW 
ausgkopflaengeTEXT ,klalieingangsmaske="ms liste klassen eingang",klalianfpos
=2,nr="Nr.",name="Name, Rufname",sternvolljaehrig=
" ( * entspricht volljährig )",klasse="Klasse",altervolljaehrig=18,
mnrbearbeitetwird=100,mnrlistewirdgedruckt=58,mnrauswahlnichtsinnvoll=56;INT 
CONST spalte1bildbreite:=bildbreite-anzspaltentrenner-spalte2bildbreite;INT 
VAR spalte2druckbreite,druckzeilenzahlmax,druckzeilenzahl,bildanf,zaehler,
vergldatum,aktuelleindexnr,eingabestatus;TEXT VAR klaliueberschrift,
schuelername,schuelerrufname,schuelernamenszus,schuelergebdat,
schuelernameaufber,zaehleraufber,ueberschrift1,ueberschrift2,lehrer,jahrgang,
zug,startjgst,startzug,bearbeitetwird,listewirdgedruckt,auswahlnichtsinnvoll;
TEXT VAR druckstrich;TEXT CONST bildstrich:=bildbreite*mittestrich;
AUSGFELDDRUCK VAR ausgfelddruck;AUSGFELDBILD VAR ausgfeldbild;AUSGKOPFDRUCK 
VAR ausgkopfdruck;AUSGKOPFBILD VAR ausgkopfbild;BOOL VAR einjahrgang,alle,
voll,neueklasse;BOOL PROC multistop:BOOL VAR b;IF startjgst<>""THEN IF 
einjahrgangTHEN b:=wert(fnrsusgrpjgst)=startjgst;ELSE b:=wert(fnrsusgrpjgst)=
startjgstAND wert(fnrsusgrpzugtut)=startzug;FI ELSE b:=wert(fnrsustatuss)=
"ls";FI ;bEND PROC multistop;BOOL PROC multistopsim:BOOL VAR b:=multistop;
setzebestandende(NOT b);bENDPROC multistopsim;PROC klalispezielleteile(INT 
CONST nr):SELECT nrOF CASE 1:klalidialogvorbereitenCASE 2:
klalieingabenrichtigCASE 3:klalilistenvorbereitenCASE 4:klalidruckvorbereiten
CASE 5:klaliseitedruckenCASE 6:klalibildschirmvorbereitenCASE 7:
klaliseitezeigenENDSELECT .END PROC klalispezielleteile;PROC 
klalidialogvorbereiten:klaliueberschrift:=text(vergleichsknoten);
setzeanfangswerte(klalieingangsmaske,klalianfpos).END PROC 
klalidialogvorbereiten;PROC klalieingabenrichtig:LET fnrjgst=2,fnrzug=3,
fnrvoll=4,fnrausgdrucker=5,fnrausgbild=6;alle:=FALSE ;einjahrgang:=FALSE ;
voll:=FALSE ;standardpruefe(5,fnrausgdrucker,fnrausgbild,null,niltext,
eingabestatus);IF eingabestatus<>0THEN infeld(eingabestatus);setzeeingabetest
(FALSE )ELSE zug:=standardmaskenfeld(fnrzug);jahrgang:=standardmaskenfeld(
fnrjgst);IF standardmaskenfeld(fnrjgst)=niltextTHEN IF zug=niltextTHEN alle:=
TRUE ;voll:=(standardmaskenfeld(fnrvoll)<>niltext);setzeausgabedrucker(
standardmaskenfeld(fnrausgbild)=niltext);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);voll:=(
standardmaskenfeld(fnrvoll)<>niltext);setzeausgabedrucker(standardmaskenfeld(
fnrausgbild)=niltext);setzeeingabetest(TRUE )FI FI FI .meldefehler:
meldungstext(mnrauswahlnichtsinnvoll,auswahlnichtsinnvoll);standardmeldung(
auswahlnichtsinnvoll,niltext).END PROC klalieingabenrichtig;PROC 
klalilistenvorbereiten:BOOL VAR b:=FALSE ;startjgst:=jahrgang;startzug:=zug;
neueklasse:=FALSE ;aktuelleindexnr:=ixsustatjgstzug;inittupel(dnrschueler);
initobli(17);parsenooffields(19);setzeidentiwert("");putwert(fnrsustatuss,
"ls");putwert(fnrsusgrpjgst,startjgst);putwert(fnrsusgrpzugtut,startzug);
vergldatum:=vergleichsdatum(altervolljaehrig);#objektlistestarten(
aktuelleindexnr,"",fnrsustatuss,TRUE ,b);#objektlistestarten(aktuelleindexnr,
"",staticfield,TRUE ,b);setzebestandende(NOT multistopCOR b).staticfield:IF 
startjgst=niltextTHEN fnrsusgrpjgstELSE IF startzug=niltextTHEN 
fnrsusgrpzugtutELSE dnrschueler+1FI FI .END PROC klalilistenvorbereiten;PROC 
klalibildschirmvorbereiten:LET fnrausganf=2;ueberschriftvorbereitenbild;
standardkopfmaskeaktualisieren(ueberschrift1);initspalten;initausgabekopfbild
;bildanf:=fnrausganf;INT VAR i;FOR iFROM 1UPTO ausgkopflaengeREPEAT 
ausgkopfbild(i)IN bildanf;bildanfINCR 1END REPEAT ;setzebildanfangsposition(
bildanf).END PROC klalibildschirmvorbereiten;PROC ueberschriftvorbereitenbild
:LET aufein="",aufaus=" ";IF alleTHEN ueberschrift1:=klaliueberschriftELSE 
IF einjahrgangTHEN IF int(jahrgang)<11THEN ueberschrift1:=ueb1teil1ELSE 
ueberschrift1:=ueb2teil1FI ;ueberschrift1:=ueberschrift1+ueb3+aufein+jahrgang
+aufausELSE IF int(jahrgang)<11THEN ueberschrift1:=ueb1teil1+ueb1teil2ELSE 
ueberschrift1:=ueb2teil1+ueb2teil22FI ;ueberschrift1:=ueberschrift1+aufein+
jahrgang+blank+wert(fnrsusgrpzugtut)+aufausFI FI ;END PROC 
ueberschriftvorbereitenbild;PROC initausgabekopfbild:IF einjahrgangOR alle
THEN hilfsfeldervorbelegen;ausgkopfbild(1):=zeileELSE ausgkopfbild(1):=text(
name,bildbreite)FI ;ausgkopfbild(2):=bildstrich.hilfsfeldervorbelegen:
setzespaltenbreite(spalte1bildbreite);setzespaltenbreite(spalte2bildbreite);
IF vollTHEN spaltenweise(name+sternvolljaehrig)ELSE spaltenweise(name)FI ;
spaltenweise(klasse).END PROC initausgabekopfbild;PROC klaliseitezeigen:
blaettern(PROC (INT CONST )schuelerdatenzeigen,aktion,TRUE ,TRUE ,BOOL PROC 
multistop)END PROC klaliseitezeigen;PROC schuelerdatenzeigen(INT CONST x):
schuelerdatenholen;schuelerdatenaufbereitenbild;schuelerdatenaufbildschirm.
END PROC schuelerdatenzeigen;PROC schuelerdatenaufbereitenbild:
schuelernameaufbereiten;IF alleOR einjahrgangTHEN schreibenamerufnameklasse
ELSE schreibenamerufnameFI .schreibenamerufnameklasse:spaltenweise(
schuelernameaufber);spaltenweise(jahrgang+blank+wert(fnrsusgrpzugtut));
ausgfeldbild(1):=zeile.schreibenamerufname:ausgfeldbild(1):=text(
schuelernameaufber,bildbreite).END PROC schuelerdatenaufbereitenbild;PROC 
schuelerdatenaufbildschirm:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREPEAT 
ausgfeldbild(i)IN ausgabepos;erhoeheausgabeposumeinsEND REPEAT .END PROC 
schuelerdatenaufbildschirm;PROC klalidruckvorbereiten:zaehler:=null;
neueklasse:=TRUE ;druckvorbereiten;variablenfuerdrucksetzen;druckzeilenzahl:=
druckzeilenzahlmax;IF vollTHEN druckzeilenzahl:=druckzeilenzahl-2FI ;
holemeldung;inittupel(dnrschueler);putwert(fnrsusgrpjgst,startjgst);putwert(
fnrsusgrpzugtut,startzug);putwert(fnrsustatuss,"ls");lesenvorbereitendruck(
PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL PROC multistopsim);
ueberschriftvorbereitendruck;initdruckkopf(ueberschrift1,ueberschrift2);
initspalten;initausgabekopfdruck.variablenfuerdrucksetzen:druckstrich:=
druckbreite*mittestrich;spalte2druckbreite:=druckbreite-anzspaltentrenner-
spalte1druckbreite;druckzeilenzahlmax:=drucklaenge(ueberschriftenzeilen)-
ausgkopflaenge.holemeldung:meldungstext(mnrbearbeitetwird,bearbeitetwird).
END PROC klalidruckvorbereiten;PROC ueberschriftvorbereitendruck:IF int(
jahrgang)<11THEN ueberschrift1:=ueb1teil1+ueb1teil2+wert(fnrsusgrpjgst)+blank
+wert(fnrsusgrpzugtut);ueberschrift2:=ueb1teil3ELSE ueberschrift1:=ueb2teil1+
ueb2teil21+jahrgang;ueberschrift2:=ueb2teil3FI ;klassenlehrer(lehrer,jahrgang
,wert(fnrsusgrpzugtut));ueberschrift2:=ueberschrift2+lehrer;END PROC 
ueberschriftvorbereitendruck;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 initausgabekopfdruck:
hilfsfeldervorbelegen;ausgkopfdruck(1):=zeile;ausgkopfdruck(2):=druckstrich.
hilfsfeldervorbelegen:setzespaltenbreite(spalte1druckbreite);
setzespaltenbreite(spalte2druckbreite);spaltenweise(nr);spaltenweise(name).
END PROC initausgabekopfdruck;PROC klaliseitedrucken:LET kommentar=
"* Schüler ist am Tag der Listenerstellung volljährig";
klaliueberschriftdrucken;seitedrucken(PROC (INT VAR )schuelerdatendrucken,
druckzeilenzahl,ausgfeldlaenge,PROC bestandendesimulierenbeiklassenwechsel,
BOOL PROC multistopsim);ggflkommentarzeile;IF neueklasseTHEN 
simuliertesendezuruecknehmen;neuelistevorbereitenELSE seitenwechselFI .
ggflkommentarzeile:IF vollTHEN kommentarzeiledruckenFI .kommentarzeiledrucken
:ausgfelddruck(1):=text(niltext,druckbreite);druckzeileschreiben(
ausgfelddruck(1));ausgfelddruck(1):=text(kommentar,druckbreite);
druckzeileschreiben(ausgfelddruck(1)).simuliertesendezuruecknehmen:
setzebestandende(FALSE ).neuelistevorbereiten:meldelistewirdgedruckt;
drucknachbereiten;druckvorbereiten;zaehler:=null;schuelerdatenholen;
ueberschriftvorbereitendruck;initdruckkopf(ueberschrift1,ueberschrift2).
meldelistewirdgedruckt:meldungstext(mnrlistewirdgedruckt,listewirdgedruckt);
standardmeldung(listewirdgedruckt,niltext).END PROC klaliseitedrucken;PROC 
klaliueberschriftdrucken:druckkopfschreiben;INT VAR i;FOR iFROM 1UPTO 
ausgkopflaengeREPEAT druckzeileschreiben(ausgkopfdruck(i))END REPEAT .END 
PROC klaliueberschriftdrucken;PROC schuelerdatendrucken(INT VAR zeilenzaehler
):LET markiert="#";schuelerdatenholen;ggflmeldungklasse;zaehlerINCR 1;
schuelerdatenaufbereitendruck;zeilenzaehlerINCR ausgfeldlaenge;
schuelerdatenindruckdatei.ggflmeldungklasse:IF zaehler=nullTHEN 
standardmeldung(bearbeitetwird,jahrgang+blank+zug+markiert)FI .END PROC 
schuelerdatendrucken;PROC schuelerdatenaufbereitendruck:zaehleraufbereiten;
schuelernameaufbereiten;schreibenrnamerufname.zaehleraufbereiten:IF zaehler<
10THEN zaehleraufber:=blankELSE zaehleraufber:=niltextFI ;zaehleraufber:=
zaehleraufber+text(zaehler).schreibenrnamerufname:spaltenweise(zaehleraufber)
;spaltenweise(schuelernameaufber);ausgfelddruck(1):=zeile;END PROC 
schuelerdatenaufbereitendruck;PROC schuelerdatenindruckdatei:
druckzeileschreiben(ausgfelddruck(1)).END PROC schuelerdatenindruckdatei;
PROC bestandendesimulierenbeiklassenwechsel:IF bestandendeTHEN neueklasse:=
FALSE ELSE nochklassezubearbeiten;IF neueklasseTHEN setzebestandende(TRUE )
FI ;FI .nochklassezubearbeiten:neueklasse:=zug<>wert(fnrsusgrpzugtut);IF alle
THEN neueklasse:=neueklasseOR (int(jahrgang)<>int(wert(fnrsusgrpjgst)))FI .
END PROC bestandendesimulierenbeiklassenwechsel;PROC schuelernameaufbereiten:
schuelernameaufber:=niltext;IF schuelernamenszus<>niltextTHEN 
schuelernameaufber:=schuelernamenszus+blankFI ;schuelernameaufber:=
schuelernameaufber+schuelername+komma+blank+schuelerrufname;IF vollCAND (
schuelergebdat<>niltext)CAND volljaehrig(datum(schuelergebdat))THEN 
schuelernameaufber:=schuelernameaufber+blank+sternFI ;END PROC 
schuelernameaufbereiten;BOOL PROC volljaehrig(INT CONST geburtstag):
geburtstag<=vergldatumEND PROC volljaehrig;PROC schuelerdatenholen:
schuelername:=wert(fnrsufamnames);schuelerrufname:=wert(fnrsurufnames);
schuelernamenszus:=wert(fnrsunamenszusatzs);schuelergebdat:=wert(
fnrsugebdatums);jahrgang:=wert(fnrsusgrpjgst);zug:=wert(fnrsusgrpzugtut).END 
PROC schuelerdatenholen;END PACKET klassenlisten;