PACKET schuelergruppenlistenDEFINES schuelergruplispezielleteile:LET AUSGFELD =ROW ausgfeldlaengeTEXT ,AUSGKOPF =ROW ausgkopflaengeTEXT , AUSGKOPFDRUCK =ROW ausgkopflaengeTEXT ;AUSGFELD VAR ausgfeld;AUSGKOPF VAR ausgkopf;AUSGKOPFDRUCK VAR ausgkopfdruck;LET schuelergruppeneingangsmaske= "ms liste schuelergruppen",ausgfeldlaenge=1,anzahlderobjekteprobildschirm=17, ueberschriftenzeilen=2,ausgkopflaenge=2,spaltentrenner=" ", schuelergruppenanfpos=2,jgstspalte1breite=14,zugspalte2breite=9, lehrerspalte3breite=15,stellvspalte4breite=15,strich="/",niltext="",blank=" " ,null=0,mnrauswahlnichtsinnvoll=56;LET textsj="Schuljahr",texthj= "Schulhalbjahr";TEXT VAR schuelergruppenueberschrift:="",schuljahr,halbjahr, jahrgangsstufe,altejahrgangsstufe:="",bearbeitungsschuljahr, bearbeitungshalbjahr,zugtutor,klassenlehrer,stellvertreter, auswahlnichtsinnvoll;TEXT CONST leerzeile:=bildbreite*blank,textueberschrift :=("Jahrgangsstufe"+blank+"Zug/Tutor"+blank+"Klassenleiter"+3*blank+ "Stellvertreter");INT VAR eingabestatus,bildanfang,spalte2druckbreite, druckzeilenzahl;INT CONST aktuelleindexnr:=dnraktschuelergruppen;BOOL VAR aktuelleshjgewaehlt;BOOL PROC multistop:BOOL VAR b;IF dbstatus=okTHEN b:=( bearbeitungshalbjahr=wert(fnrsgrphj)AND bearbeitungsschuljahr=wert(fnrsgrpsj) )ELSE b:=FALSE FI ;bEND PROC multistop;BOOL PROC multistopsim: setzebestandende(FALSE );BOOL VAR b:=multistop;setzebestandende(NOT b);bEND PROC multistopsim;PROC schuelergruplispezielleteile(INT CONST nr):SELECT nr OF CASE 1:schuelergruppendialogvorbereitenCASE 2: schuelergruppeneingabenrichtigCASE 3:schuelergruppenlistenvorbereitenCASE 4: schuelergruppendruckvorbereitenCASE 5:schuelergruppenseitedruckenCASE 6: schuelergruppenbildschirmvorbereitenCASE 7:schuelergruppenseitezeigen ENDSELECT .END PROC schuelergruplispezielleteile;PROC schuelergruppendialogvorbereiten:schuelergruppenueberschrift:=text( vergleichsknoten);setzeanfangswerte(schuelergruppeneingangsmaske, schuelergruppenanfpos)END PROC schuelergruppendialogvorbereiten;PROC schuelergruppeneingabenrichtig:LET fnrausggeplanteshj=2,fnrausgaktuelleshj=3, fnrausgdrucker=4,fnrausgbild=5;standardpruefe(5,fnrausgdrucker,fnrausgbild, null,niltext,eingabestatus);IF eingabestatus=0THEN standardpruefe(5, fnrausggeplanteshj,fnrausgaktuelleshj,null,niltext,eingabestatus);IF eingabestatus=0THEN gewaehlteshalbjahrmerken;setzeeingabetest(TRUE ); setzeausgabedrucker(standardmaskenfeld(fnrausgbild)=niltext)ELSE meldefehler; setzeeingabetest(FALSE )FI ;ELSE meldefehler;setzeeingabetest(FALSE )FI . meldefehler:meldungstext(mnrauswahlnichtsinnvoll,auswahlnichtsinnvoll); standardmeldung(auswahlnichtsinnvoll,niltext).gewaehlteshalbjahrmerken: aktuelleshjgewaehlt:=standardmaskenfeld(fnrausgaktuelleshj)<>niltext.END PROC schuelergruppeneingabenrichtig;PROC schuelergruppenlistenvorbereiten: BOOL VAR b;initspalten;setzespaltentrenner(spaltentrenner); bearbeitungsschuljahr:=schulkenndatum(textsj);bearbeitungshalbjahr:= schulkenndatum(texthj);IF NOT (aktuelleshjgewaehlt)THEN geplanteshjundsjberechnen(bearbeitungshalbjahr,bearbeitungsschuljahr)FI ; inittupel(dnraktschuelergruppen);setzeidentiwert("");initobli( anzahlderobjekteprobildschirm);parsenooffields(6);putwert(fnrsgrpsj, bearbeitungsschuljahr);putwert(fnrsgrphj,bearbeitungshalbjahr); setzescanendewert("255");objektlistestarten(aktuelleindexnr, bearbeitungsschuljahr,fnrsgrpjgst,TRUE ,b);setzebestandende(NOT multistopCOR b);END PROC schuelergruppenlistenvorbereiten;PROC schuelergruppenbildschirmvorbereiten:LET fnrausganf=2; standardkopfmaskeaktualisieren(schuelergruppenueberschrift);bildanfang:= fnrausganf;setzebildanfangsposition(bildanfang);INT VAR i;setzespaltenbreite( bildbreite);spaltenweise(textueberschrift);ausgfeld(1):=zeile;ausgfeld(1)IN ausgabepos;erhoeheausgabeposumeins;spaltenweise(leerzeile);ausgfeld(1):=zeile ;ausgfeld(1)IN ausgabepos;erhoeheausgabeposumeins;setzebildanfangsposition(4) ;initspalten;setzespaltentrenner(spaltentrenner);setzespaltenbreite( jgstspalte1breite);setzespaltenbreite(zugspalte2breite);setzespaltenbreite( lehrerspalte3breite);setzespaltenbreite(stellvspalte4breite);END PROC schuelergruppenbildschirmvorbereiten;PROC schuelergruppenseitezeigen: blaettern(PROC (INT CONST )schuelergruppendatenzeigen,aktion,TRUE ,TRUE , BOOL PROC multistop)END PROC schuelergruppenseitezeigen;PROC schuelergruppendatenzeigen(INT CONST x):schuelergruppendatenholen; schuelergruppendatenaufbereitenbild;schuelergruppendatenaufbildschirm;END PROC schuelergruppendatenzeigen;PROC schuelergruppendatenholen:schuljahr:= wert(fnrsgrpsj);halbjahr:=wert(fnrsgrphj);jahrgangsstufe:=wert(fnrsgrpjgst); zugtutor:=wert(fnrsgrpkennung);klassenlehrer:=wert(fnrsgrplehrer); stellvertreter:=wert(fnrsgrpstellvlehrer);END PROC schuelergruppendatenholen; PROC schuelergruppendatenaufbereitenbild:IF length(jahrgangsstufe)=1THEN spaltenweise(13*blank+jahrgangsstufe);ELSE spaltenweise(12*blank+ jahrgangsstufe);FI ;spaltenweise(zugtutor);spaltenweise(klassenlehrer); spaltenweise(stellvertreter);END PROC schuelergruppendatenaufbereitenbild; PROC schuelergruppendatenaufbildschirm:INT VAR i;FOR iFROM 1UPTO ausgfeldlaengeREP ausgfeld(i):=zeile;ausgfeld(i)IN ausgabepos; erhoeheausgabeposumeins;PER ;END PROC schuelergruppendatenaufbildschirm;PROC schuelergruppendruckvorbereiten:setzebestandende(FALSE );druckvorbereiten; variablenfuerdrucksetzen;TEXT VAR schjaufbereitet:=text(bearbeitungsschuljahr ,2)+strich+text(bearbeitungsschuljahr,2,3),halbjaufbereitet:= bearbeitungshalbjahr+". Halbjahr";schuelergruppenueberschrift:= "Liste der Schülergruppen im Schuljahr "+schjaufbereitet+blank+ halbjaufbereitet;initdruckkopf(zentriert(schuelergruppenueberschrift, druckbreite),zentriert(length(schuelergruppenueberschrift)*"-",druckbreite)); initspalten;setzespaltenbreite(jgstspalte1breite);setzespaltenbreite( zugspalte2breite);setzespaltenbreite(lehrerspalte3breite);setzespaltenbreite( stellvspalte4breite);inittupel(dnraktschuelergruppen);initausgabekopfdruck; putwert(fnrsgrpsj,bearbeitungsschuljahr);putwert(fnrsgrphj, bearbeitungshalbjahr);lesenvorbereitendruck(PROC (INT CONST ,BOOL PROC ,INT VAR )scanforward,BOOL PROC multistopsim);.variablenfuerdrucksetzen: druckzeilenzahl:=drucklaenge(ueberschriftenzeilen)-ausgkopflaenge.END PROC schuelergruppendruckvorbereiten;PROC initausgabekopfdruck:ausgkopfdruck(1):= textueberschrift;ausgkopfdruck(2):=leerzeileEND PROC initausgabekopfdruck; PROC schuelergruppenseitedrucken:schuelergruppenueberschriftdrucken; seitedrucken(PROC (INT VAR )schuelergruppendrucken,druckzeilenzahl, ausgfeldlaenge,BOOL PROC multistopsim);seitenwechsel.END PROC schuelergruppenseitedrucken;PROC schuelergruppenueberschriftdrucken:INT VAR i ;druckkopfschreiben;FOR iFROM 1UPTO ausgkopflaengeREP druckzeileschreiben( ausgkopfdruck(i))PER END PROC schuelergruppenueberschriftdrucken;PROC schuelergruppendrucken(INT VAR zeilenzaehler):schuelergruppendatenholen;IF altejahrgangsstufe<>jahrgangsstufeTHEN spaltenweise(" ");spaltenweise(" "); spaltenweise(" ");spaltenweise(" ");ausgfeld(1):=zeile;zeilenzaehlerINCR ausgfeldlaenge;schuelergruppenindruckdateiFI ;schuelergruppenaufbereitendruck ;zeilenzaehlerINCR ausgfeldlaenge;schuelergruppenindruckdatei.END PROC schuelergruppendrucken;PROC schuelergruppenaufbereitendruck: setzespaltentrenner(spaltentrenner);schuelergruppendatenaufbereitenbild; ausgfeld(1):=zeile;altejahrgangsstufe:=jahrgangsstufe;END PROC schuelergruppenaufbereitendruck;PROC schuelergruppenindruckdatei:INT VAR i; FOR iFROM 1UPTO ausgfeldlaengeREP druckzeileschreiben(ausgfeld(1))PER END PROC schuelergruppenindruckdatei;END PACKET schuelergruppenlisten