app/schulis/2.2.1/src/0.listenweise grundfunktionen

Raw file
Back to index

PACKET listenweisegrundfunktionenDEFINES holevergleichssg,istzulaessigesg,
sgeinerjgst,initgruppenwechsel,gruppenwechsel,eingangsbehandlunglistenweise,
startebildschirmblock,bildschirmblock:LET blank=" ",niltext="";LET maxgw=10;
LET bestandtrenner="/";LET schuljahrkey="Schuljahr",schulhalbjahrkey=
"Schulhalbjahr",halbjahr1="1",halbjahr2="2";BOOL VAR nichtzuende,starten,sek2
;INT VAR bestand;INT VAR schuelerzahl;ROW maxgwTEXT VAR gw;TEXT VAR 
aktuelleschuelergruppen;TEXT VAR vergljgst,letztejgst;TEXT VAR schuljahr,
schulhalbjahr;PROC holevergleichssg(TEXT CONST jgst,BOOL CONST aktuell):
schuljahr:=schulkenndatum(schuljahrkey);schulhalbjahr:=schulkenndatum(
schulhalbjahrkey);aktuelleschuelergruppen:=niltext;vergljgst:=jgst;inittupel(
dnraktschuelergruppen);setzerichtigeschulkenndaten;IF jgst<>niltextTHEN 
statleseschleife(dnraktschuelergruppen,jgst,niltext,fnrsgrpjgst,
fnrsgrpkennung,PROC pruefesg)ELSE sek2:=FALSE ;letztejgst:=niltext;
statleseschleife(dnraktschuelergruppen,jgst,niltext,fnrsgrpjgst,
fnrsgrpkennung,PROC allesg)FI ;.setzerichtigeschulkenndaten:IF NOT aktuell
THEN IF schulhalbjahr=halbjahr1THEN schulhalbjahr:=halbjahr2ELSE schuljahr:=
subtext(schuljahr,3,4);schuljahrCAT text(int(schuljahr)+1);schulhalbjahr:=
halbjahr1FI ;FI ;putwert(fnrsgrpsj,schuljahr);putwert(fnrsgrphj,schulhalbjahr
);.END PROC holevergleichssg;BOOL PROC istzulaessigesg(TEXT CONST sg):pos(
aktuelleschuelergruppen,sg)>0END PROC istzulaessigesg;TEXT PROC sgeinerjgst:
aktuelleschuelergruppenEND PROC sgeinerjgst;PROC pruefesg(BOOL VAR schluss):
TEXT CONST sg:=jgstaufber(wert(fnrsgrpjgst))+wert(fnrsgrpkennung);IF dbstatus
=0CAND subtext(sg,1,2)=vergljgstTHEN neueaktuelleschuelergruppe(sg)ELSE 
schluss:=TRUE FI .END PROC pruefesg;PROC allesg(BOOL VAR schluss):IF dbstatus
<>0OR wert(fnrsgrpsj)<>schuljahrOR wert(fnrsgrphj)<>schulhalbjahrTHEN schluss
:=TRUE ELSE TEXT CONST sg:=jgstaufber(wert(fnrsgrpjgst))+wert(fnrsgrpkennung)
;neueaktuelleschuelergruppe(sg)FI END PROC allesg;PROC 
neueaktuelleschuelergruppe(TEXT CONST sg):IF aktuelleschuelergruppen=niltext
THEN anhaengenELSE trennen;anhaengenFI .anhaengen:aktuelleschuelergruppenCAT 
sg;.trennen:aktuelleschuelergruppenCAT bestandtrenner.END PROC 
neueaktuelleschuelergruppe;PROC initgruppenwechsel:INT VAR i;FOR iFROM 1UPTO 
maxgwREP gw(i):=niltextPER .END PROC initgruppenwechsel;PROC gruppenwechsel(
TEXT CONST gwneu,INT CONST gwalt,INT CONST laenge,incr,INT VAR aktuellesfeld)
:IF gruppenwechselliegtvorTHEN gruppenwechselzeigenELSE leeresfeldFI ;
weiterzaehlen.gruppenwechselliegtvor:(schuelerzahl=1)COR (gw(gwalt)<>gwneu).
gruppenwechselzeigen:standardmaskenfeld(text(gwneu,laenge),aktuellesfeld);gw(
gwalt):=gwneu.leeresfeld:standardmaskenfeld(laenge*blank,aktuellesfeld).
weiterzaehlen:aktuellesfeldINCR incr.END PROC gruppenwechsel;PROC 
eingangsbehandlunglistenweise:standardvproc(maske(vergleichsknoten))END PROC 
eingangsbehandlunglistenweise;PROC startebildschirmblock(INT CONST best,sz):
nichtzuende:=TRUE ;bestand:=best;starten:=TRUE ;schuelerzahl:=sz.END PROC 
startebildschirmblock;PROC bildschirmblock(PROC schuelerzeigen,BOOL PROC (
INT CONST )pruefungspeziell,INT CONST was):INT VAR lv,anzahl;IF startenTHEN 
erstenzeigen;neuerblock;erhoehezaehlerELSE neuerblockFI .erstenzeigen:
schuelerzeigen;changeindex.erhoehezaehler:schuelerzahlINCR 1.neuerblock:
anzahl:=schuelerzahl;starten:=FALSE ;IF nichtzuendeTHEN multisucc(bestand,
anzahl);FOR lvFROM 1UPTO anzahlREP schuelerlesen;nichtzuende:=
pruefungspeziell(was);IF nichtzuendeTHEN schuelerzeigenELSE LEAVE neuerblock
FI PER ;nichtzuende:=anzahl=schuelerzahlFI ;.schuelerlesen:stackentry(lv).
END PROC bildschirmblock;END PACKET listenweisegrundfunktionen;