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

Raw file
Back to index

PACKET geburtslistenDEFINES gebulispezielleteile:LET niltext="",blank=" ",
mittestrich="-",null=0,komma=",",ueberschriftenzeilen=2,klas="Klasse",name=
"Name, Rufname",gebtag="Geburtstag",spalte1breite=7,spalte3breite=12,
anzspaltentrenner=2,ausgkopflaenge=2,ausgfeldlaenge=1,AUSGFELD =ROW 
ausgfeldlaengeTEXT ,AUSGKOPF =ROW ausgkopflaengeTEXT ,gebulieingangsmaske=
"ms liste gebjahr eingang",gebulianfpos=2,mnrbearbeitetwird=100;INT CONST 
spalte2bildbreite:=bildbreite-anzspaltentrenner-spalte1breite-spalte3breite;
INT VAR spalte2druckbreite,druckzeilenzahl,bildanf,eingabestatus,
aktuelleindexnr;TEXT VAR gebjahreingang,schuelername,schuelerrufname,
schuelernamenszus,schuelergebdat,klasse,alteklasse,druckstrich,bearbeitetwird
,startjahr,startgeschl;TEXT CONST bildstrich:=bildbreite*mittestrich;
AUSGFELD VAR ausgfeld;AUSGKOPF VAR ausgkopf;BOOL VAR weibl,maennl,
ersteraufbildschirm,klassegeaendert:=FALSE ;#DBMASKE VAR sortiertnachgebjahr,
sortiertnachgebjahrgeschl,sortiertnachklassename;#BOOL PROC multistopstatus:
BOOL VAR b:=wert(fnrsustatuss)="ls";setzebestandende(NOT b);bENDPROC 
multistopstatus;BOOL PROC multistopdrucken:BOOL VAR b:=multistopmitdbstatus(
FALSE );setzebestandende(NOT b);bENDPROC multistopdrucken;BOOL PROC 
multistopmitdbstatusdrucken:BOOL VAR b:=multistopmitdbstatus(TRUE );
setzebestandende(NOT b);bENDPROC multistopmitdbstatusdrucken;BOOL PROC 
multistop:multistopmitdbstatus(FALSE )ENDPROC multistop;BOOL PROC 
multistopmitdbstatus:multistopmitdbstatus(TRUE )ENDPROC multistopmitdbstatus;
BOOL PROC multistopmitdbstatus(BOOL CONST mitdbstatus):BOOL VAR b:=FALSE ;IF 
wert(fnrsustatuss)="ls"THEN IF startgeschl<>""THEN IF wert(fnrsugeschlechts)=
startgeschlTHEN b:=(subtext(wert(fnrsugebdatums),7,8)=gebjahreingang)ELSE b:=
FALSE FI ELSE b:=(subtext(wert(fnrsugebdatums),7,8)=gebjahreingang);IF 
mitdbstatusTHEN b:=bCAND (dbstatus=ok)FI FI ;FI ;bEND PROC 
multistopmitdbstatus;PROC gebulispezielleteile(INT CONST nr):SELECT nrOF 
CASE 1:gebulidialogvorbereitenCASE 2:gebulieingabenrichtigCASE 3:
gebulilistenvorbereitenCASE 4:gebulidruckvorbereitenCASE 5:gebuliseitedrucken
CASE 6:gebulibildschirmvorbereitenCASE 7:gebuliseitezeigenENDSELECT .END 
PROC gebulispezielleteile;PROC gebulidialogvorbereiten:setzeanfangswerte(
gebulieingangsmaske,gebulianfpos)END PROC gebulidialogvorbereiten;PROC 
gebulieingabenrichtig:LET fnrgebjahr=2,fnrmaennlich=3,fnrweiblich=4,
fnrausgdrucker=5,fnrausgbild=6;standardpruefe(2,fnrgebjahr,null,null,niltext,
eingabestatus);IF eingabestatus<>0THEN infeld(eingabestatus);setzeeingabetest
(FALSE )ELSE waspruefen;wohinpruefen;IF eingabestatus<>0THEN infeld(
eingabestatus);setzeeingabetest(FALSE )ELSE setzegeburtsjahr;
setzeausgabedrucker(standardmaskenfeld(fnrausgbild)=niltext);setzeeingabetest
(TRUE )FI FI .waspruefen:weibl:=(standardmaskenfeld(fnrmaennlich)=niltext)
AND (standardmaskenfeld(fnrweiblich)<>niltext);maennl:=(standardmaskenfeld(
fnrweiblich)=niltext)AND (standardmaskenfeld(fnrmaennlich)<>niltext).
wohinpruefen:standardpruefe(5,fnrausgdrucker,fnrausgbild,null,niltext,
eingabestatus).setzegeburtsjahr:gebjahreingang:=standardmaskenfeld(fnrgebjahr
);IF int(gebjahreingang)<10THEN gebjahreingang:=text(null)+text(int(
gebjahreingang))FI .END PROC gebulieingabenrichtig;PROC 
gebulilistenvorbereiten:#bestanderstellen(PROC 
bestandgeburtsjahrgaengeerstellen).#BOOL VAR b:=FALSE ;startjahr:="01.01."+
gebjahreingang;setzescanendewert("01.01."+text(int(gebjahreingang)+1));
setzescanstartwert(startjahr);IF weiblTHEN startgeschl:="w";ELIF maennlTHEN 
startgeschl:="m";ELSE startgeschl:="";FI ;IF startgeschl=""THEN 
aktuelleindexnr:=ixsustatgebELSE aktuelleindexnr:=ixsustatgeschlgeb;FI ;
inittupel(dnrschueler);initobli(14);parsenooffields(19);setzeidentiwert("");
putdatumwert(fnrsugebdatums,startjahr);putwert(fnrsugeschlechts,startgeschl);
putwert(fnrsustatuss,"ls");dbstatus(ok);objektlistestarten(aktuelleindexnr,""
,fnrsugebdatums,TRUE ,b);setzebestandende(NOT multistopmitdbstatus)END PROC 
gebulilistenvorbereiten;PROC gebulibildschirmvorbereiten:LET fnrausganf=2,
gebuliueberschriftneu="Schülerliste Geburtsjahrgang 19";INT VAR i;
standardkopfmaskeaktualisieren(gebuliueberschriftneu+gebjahreingang);
initspalten;setzespaltenbreite(spalte1breite);setzespaltenbreite(
spalte2bildbreite);setzespaltenbreite(spalte3breite);initausgabekopf(
bildstrich);bildanf:=fnrausganf;FOR iFROM 1UPTO ausgkopflaengeREPEAT ausgkopf
(i)IN bildanf;bildanfINCR 1END REPEAT ;klasse:=niltext;#
setzenderhilfsgroessenfuersblaettern(min(bildblocklaenge,maxblocklaenge),
bildsatzzahl);#setzebildanfangsposition(bildanf).END PROC 
gebulibildschirmvorbereiten;PROC gebuliseitezeigen:ersteraufbildschirm:=TRUE 
;blaettern(PROC (INT CONST )schuelerzeigen,aktion,TRUE ,TRUE ,BOOL PROC 
multistop).END PROC gebuliseitezeigen;PROC schuelerzeigen(INT CONST x):
schuelerholen1;schuelerholen2;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 
gebulidruckvorbereiten:LET uebteil1="Liste der im Jahr 19",uebteil2=
" geborenen ",uebteil31="weiblichen ",uebteil32="männlichen ",uebteil4=
"Schüler";TEXT VAR ueberschrift;klasse:=niltext;druckvorbereiten;
variablenfuerdrucksetzen;ueberschriftvorbereitendruck;initdruckkopf(
ueberschrift);initspalten;setzespaltenbreite(spalte1breite);
setzespaltenbreite(spalte2druckbreite);setzespaltenbreite(spalte3breite);
initausgabekopf(druckstrich);holemeldungen;#putwert(dateinr(primdatid(
aktuelleindexnr))+1,"");putwert(fnrsugebdatums,"01.01."+gebjahreingang);
dbstatus(ok);#inittupel(dnrschueler);putwert(fnrsustatuss,"ls");
aktuelleindexnr:=ixsustatjgstzug;BOOL VAR b;objektlistestarten(
aktuelleindexnr,"",fnrsusgrpzugtut,TRUE ,b);lesenvorbereitendruck(PROC (INT 
CONST ,BOOL PROC ,INT VAR )scanforward,#BOOL PROC multistopmitdbstatusdrucken
#BOOL PROC multistopstatus).variablenfuerdrucksetzen:druckstrich:=druckbreite
*mittestrich;spalte2druckbreite:=druckbreite-anzspaltentrenner-spalte1breite-
spalte3breite;druckzeilenzahl:=drucklaenge(ueberschriftenzeilen)-
ausgkopflaenge.ueberschriftvorbereitendruck:ueberschrift:=uebteil1+
gebjahreingang+uebteil2;IF weiblTHEN ueberschrift:=ueberschrift+uebteil31
ELSE IF maennlTHEN ueberschrift:=ueberschrift+uebteil32FI ;FI ;ueberschrift:=
ueberschrift+uebteil4.holemeldungen:meldungstext(mnrbearbeitetwird,
bearbeitetwird).END PROC gebulidruckvorbereiten;PROC gebuliseitedrucken:
gebuliueberschriftdrucken;seitedrucken(PROC (INT VAR )schuelerdrucken,
druckzeilenzahl,ausgfeldlaenge,#BOOL PROC multistopdrucken#BOOL PROC 
multistopstatus);seitenwechsel.END PROC gebuliseitedrucken;PROC 
gebuliueberschriftdrucken:INT VAR i;druckkopfschreiben;FOR iFROM 1UPTO 
ausgkopflaengeREPEAT druckzeileschreiben(ausgkopf(i))END REPEAT .END PROC 
gebuliueberschriftdrucken;PROC schuelerdrucken(INT VAR zeilenzaehler):LET 
markiert="#";schuelerholen1;evtleave;schuelerholen2;ggflmeldungklasse;IF 
zeilenzaehler=nullTHEN klassegeaendert:=TRUE FI ;IF klassegeaendertTHEN 
leerzeileindruckdateiFI ;schueleraufbereiten;zeilenzaehlerINCR ausgfeldlaenge
;schuelerindruckdatei.evtleave:IF jahrstimmtnichtCOR geschlechtstimmtnicht
THEN LEAVE schuelerdruckenFI .jahrstimmtnicht:subtext(wert(fnrsugebdatums),7,
8)<>gebjahreingang.geschlechtstimmtnicht:startgeschl<>""CAND wert(
fnrsugeschlechts)<>startgeschl.ggflmeldungklasse:IF klassegeaendertTHEN 
meldungklasseFI .meldungklasse:standardmeldung(bearbeitetwird,klasse+markiert
).leerzeileindruckdatei:ausgfeld(1):=text(blank,druckbreite);
druckzeileschreiben(ausgfeld(1));zeilenzaehlerINCR 1.END PROC schuelerdrucken
;PROC schuelerindruckdatei:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREPEAT 
druckzeileschreiben(ausgfeld(i))END REPEAT .END PROC schuelerindruckdatei;
PROC initausgabekopf(TEXT CONST strich):spaltenweise(klas);spaltenweise(name)
;spaltenweise(gebtag);ausgkopf(1):=zeile;ausgkopf(2):=strich;END PROC 
initausgabekopf;PROC schuelerholen1:schuelergebdat:=wert(fnrsugebdatums);
schuelername:=wert(fnrsufamnames);schuelerrufname:=wert(fnrsurufnames);
schuelernamenszus:=wert(fnrsunamenszusatzs);#alteklasse:=klasse;klasse:=wert(
fnrsusgrpjgst)+blank+wert(fnrsusgrpzugtut);klassegeaendert:=alteklasse<>
klasse.#END PROC schuelerholen1;PROC schuelerholen2:alteklasse:=klasse;klasse
:=wert(fnrsusgrpjgst)+blank+wert(fnrsusgrpzugtut);klassegeaendert:=alteklasse
<>klasse.END PROC schuelerholen2;PROC schueleraufbereiten:
schreibeklassenamegebdat.schreibeklassenamegebdat:IF klassegeaendertTHEN 
spaltenweise(klasse)ELSE spaltenweise(blank)FI ;spaltenweise(
schuelernameaufber);spaltenweise(schuelergebdat);ausgfeld(1):=zeile.
schuelernameaufber:schuelername+komma+blank+schuelerrufname+blank+
schuelernamenszus.END PROC schueleraufbereiten;END PACKET geburtslisten;