PACKET gesamtlisteDEFINES geslispezielleteile:#LET dnrschueler=2, ixsustatfamrufgeb=254,stattnachfolgendemI ndexixsustat=252,fnrsufamnames=3, fnrsurufnames=4,fnrsustatuss=6,fnrsunamenszusatzs=21,fnrsugebdatums=5, fnrsuabgdats=16,fnrsusgrpjgst=7,fnrsusgrpzugtut=8;#LET niltext="",nildatum= "01.01.00",blank=" ",mittestrich="-",null=0,komma=",",kleina="a",stern="*", ueberschriftenzeilen=1,altervolljaehrig=18,spalte2breite=10,spalte3breite=9, anzspaltentrenner=2,spaltentrenner=":",ausgkopflaengebild=2, ausgkopflaengedruck=6,ausgfeldlaenge=1,AUSGKOPFBILD =ROW ausgkopflaengebild TEXT ,AUSGKOPFDRUCK =ROW ausgkopflaengedruckTEXT ,AUSGFELD =ROW ausgfeldlaengeTEXT ,geslieingangsmaske="mu liste einfach eingang",geslianfpos =2,nname="Name, Rufname",gebdat=" Geb.Dat.",klasse="Jgst./Kl.";INT CONST spalte1bildbreite:=bildbreite-anzspaltentrenner-spalte2breite-spalte3breite; INT VAR spalte1druckbreite,druckzeilenzahl,bildanf,vergldatum,eingabestatus; TEXT VAR gesliueberschrift,schuelername,schuelerrufname,schuelernamenszus, schuelergebdat,schuelerabdat,schuelernameaufber,gebdataufber,klasseaufber, jahrgang,zug,anfbuchstabe,neueranfbuchstabe;TEXT VAR druckstrich;TEXT CONST bildstrich:=bildbreite*mittestrich;AUSGFELD VAR ausgfeld;AUSGKOPFDRUCK VAR ausgkopfdruck;AUSGKOPFBILD VAR ausgkopfbild;PROC geslispezielleteile(INT CONST nr):SELECT nrOF CASE 1:geslidialogvorbereitenCASE 2: geslieingabenrichtigCASE 3:geslilistenvorbereitenCASE 4:geslidruckvorbereiten CASE 5:gesliseitedruckenCASE 6:geslibildschirmvorbereitenCASE 7: gesliseitezeigenENDSELECT .END PROC geslispezielleteile;PROC geslidialogvorbereiten:gesliueberschrift:=text(vergleichsknoten); setzeanfangswerte(geslieingangsmaske,geslianfpos).END PROC geslidialogvorbereiten;PROC geslieingabenrichtig: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 geslieingabenrichtig;PROC geslilistenvorbereiten:BOOL VAR b;setzespaltentrenner(spaltentrenner); vergldatum:=vergleichsdatum(altervolljaehrig);inittupel(dnrschueler);initobli (17);parsenooffields(21);setzeidentiwert("");putwert(fnrsustatuss,"ls"); objektlistestarten(ixsustatfamrufgeb,"",fnrsufamnames,TRUE ,b); setzebestandende(NOT multistopCOR b)END PROC geslilistenvorbereiten;BOOL PROC multistop:wert(fnrsustatuss)="ls"ENDPROC multistop;BOOL PROC multistopdruck:BOOL VAR b:=multistop;setzebestandende(NOT b);bENDPROC multistopdruck;PROC geslibildschirmvorbereiten:LET fnrausganf=2; standardkopfmaskeaktualisieren(gesliueberschrift);initspalten; setzespaltenbreite(spalte1bildbreite);setzespaltenbreite(spalte2breite); setzespaltenbreite(spalte3breite);initausgabekopfbild;bildanf:=fnrausganf; INT VAR i;FOR iFROM 1UPTO ausgkopflaengebildREPEAT ausgkopfbild(i)IN bildanf; bildanfINCR 1END REPEAT ;setzebildanfangsposition(bildanf).END PROC geslibildschirmvorbereiten;PROC initausgabekopfbild:spaltenweise(nname); spaltenweise(gebdat);spaltenweise(klasse);ausgkopfbild(1):=zeile;ausgkopfbild (2):=bildstrich;END PROC initausgabekopfbild;PROC gesliseitezeigen:blaettern( PROC (INT CONST )schuelerzeigen,aktion,TRUE ,TRUE ,BOOL PROC multistop)END PROC gesliseitezeigen;BOOL PROC dummystop:#dbstatus<>ok#TRUE ENDPROC dummystop;PROC schuelerzeigen(INT CONST x):schuelerholen;schueleraufbereiten; schueleraufbildschirm;END PROC schuelerzeigen;PROC schueleraufbildschirm:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREPEAT ausgfeld(i)IN ausgabepos; erhoeheausgabeposumeinsEND REPEAT .END PROC schueleraufbildschirm;PROC geslidruckvorbereiten:anfbuchstabe:=niltext;druckvorbereiten; variablenfuerdrucksetzen;inittupel(dnrschueler);putwert(fnrsustatuss,"ls"); lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL PROC multistopdruck);initdruckkopf(zentriert(gesliueberschrift,druckbreite)); initspalten;setzespaltenbreite(spalte1druckbreite);setzespaltenbreite( spalte2breite);setzespaltenbreite(spalte3breite);initausgabekopfdruck. variablenfuerdrucksetzen:druckstrich:=druckbreite*mittestrich; spalte1druckbreite:=druckbreite-anzspaltentrenner-spalte2breite-spalte3breite ;druckzeilenzahl:=drucklaenge(ueberschriftenzeilen)-ausgkopflaengedruck.END PROC geslidruckvorbereiten;PROC initausgabekopfdruck:LET kommentar1= "Die abgemeldeten Schüler sind mit einem a vor Jgst./",kommentar2= "Kl. markiert,",kommentar3="die volljährigen Schüler mit einem * vor dem ", kommentar4="Geburtsdatum.";ausgkopfdruck(1):=text(kommentar1+kommentar2, druckbreite);ausgkopfdruck(2):=text(kommentar3+kommentar4,druckbreite); ausgkopfdruck(3):=text(niltext,druckbreite);ausgkopfdruck(4):=text(niltext, druckbreite);spaltenweise(nname);spaltenweise(gebdat);spaltenweise(klasse); ausgkopfdruck(5):=zeile;ausgkopfdruck(6):=druckstrich;END PROC initausgabekopfdruck;PROC gesliseitedrucken:gesliueberschriftdrucken; seitedrucken(PROC (INT VAR )schuelerdrucken,druckzeilenzahl,ausgfeldlaenge, BOOL PROC multistopdruck);seitenwechsel.END PROC gesliseitedrucken;PROC gesliueberschriftdrucken:druckkopfschreiben;INT VAR i;FOR iFROM 1UPTO ausgkopflaengedruckREPEAT druckzeileschreiben(ausgkopfdruck[i])END REPEAT . END PROC gesliueberschriftdrucken;PROC schuelerdrucken(INT VAR zeilenzaehler) :LET bearbeitetwerden=102,markiert="#";schuelerholen;ggflmeldunganfbuchstabe; schueleraufbereiten;zeilenzaehlerINCR ausgfeldlaenge;schuelerindruckdatei. ggflmeldunganfbuchstabe:IF anfbuchstabegeaendertTHEN meldunganfbuchstabeFI . anfbuchstabegeaendert:neueranfbuchstabe:=schuelernameSUB 1;anfbuchstabe<> neueranfbuchstabe.meldunganfbuchstabe:standardmeldung(bearbeitetwerden, neueranfbuchstabe+markiert);anfbuchstabe:=neueranfbuchstabe.END PROC schuelerdrucken;PROC schuelerindruckdatei:druckzeileschreiben(ausgfeld(1)). END PROC schuelerindruckdatei;#PROC schuelerbestanderstellen(TEXT VAR aktbest ,DBMASKE VAR nameklassegebdat):setzemaske(nameklassegebdat, "t c12 familienname/"+"t c12 rufname/"+"t c12 namenszusaetze(1)/"+ "i c12 geburtsdatum/"+"i c12 abgangsdatum/"+"t c12 aktuelle schuelergruppe"); aktbest:=bestand.END PROC schuelerbestanderstellen;#PROC schueleraufbereiten: schuelervorbereiten;schreibenamegebdatklasse.schreibenamegebdatklasse: ausgfeld(1):=zeile.END PROC schueleraufbereiten;PROC schuelervorbereiten: schuelernamevorbereiten;gebdatvorbereiten;klassevorbereiten;zeilefuellen. schuelernamevorbereiten:schuelernameaufber:=niltext;IF schuelernamenszus<> niltextTHEN schuelernameaufber:=schuelernamenszus+blankFI ;schuelernameaufber :=schuelernameaufber+schuelername+komma+blank+schuelerrufname. gebdatvorbereiten:IF (schuelergebdat<>niltext)THEN IF volljaehrig(datum( schuelergebdat))THEN gebdataufber:=sternELSE gebdataufber:=blankFI ; gebdataufber:=gebdataufber+blank+schuelergebdatELSE gebdataufber:=niltextFI . klassevorbereiten:IF (schuelerabdat<>nildatum)THEN klasseaufber:=kleinaELSE klasseaufber:=blankFI ;klasseaufber:=klasseaufber+blank+jahrgang+blank+zug. zeilefuellen:spaltenweise(schuelernameaufber);spaltenweise(gebdataufber); spaltenweise(klasseaufber).END PROC schuelervorbereiten;BOOL PROC volljaehrig (INT CONST geburtstag):geburtstag<=vergldatumEND PROC volljaehrig;PROC schuelerholen:schuelername:=wert(fnrsufamnames);schuelerrufname:=wert( fnrsurufnames);schuelernamenszus:=wert(fnrsunamenszusatzs);schuelergebdat:= wert(fnrsugebdatums);schuelerabdat:=wert(fnrsuabgdats);jahrgang:=wert( fnrsusgrpjgst);zug:=wert(fnrsusgrpzugtut);END PROC schuelerholen;END PACKET gesamtliste;