PACKET listensteuerungDEFINES eingangsmaskezeigenundparameterlesen, listedruckenoderzeigenggflweitereaktionlesen,weitereaktionlesen, aufbildschirmblaettern,druckbearbeitung,setzeanfangswerte,setzeausgabedrucker ,ausgabedrucker,setzeeingabetest,setzebildanfangsposition,ausgabepos, erhoeheausgabeposumeins,seitenzaehler,erhoeheseitenzaehlerumeins,aktion, bildbreite,bildlaenge:LET namebildausgabemaske="mu liste bildausgabe", datenexistierennicht=59,warteaufforderung=69,listewirdgedruckt=58, zurnachprozedur=1,niltext="",blank=" ";INT VAR bildanfangsposition, aktuelleposition,zeiger,richtung,seite;TEXT VAR nameauswahlmaske;BOOL VAR eingabenrichtig,ausgdrucker;TEXT CONST leerzeilebild:=bildbreite*blank;PROC eingangsmaskezeigenundparameterlesen(PROC (INT CONST )spezielleteile): enablestop;dialogvorbereiten;dialogstarten.dialogvorbereiten:spezielleteile(1 );standardstartproc(nameauswahlmaske).dialogstarten:infeld(aktuelleposition); standardnproc.END PROC eingangsmaskezeigenundparameterlesen;PROC listedruckenoderzeigenggflweitereaktionlesen(PROC (INT CONST )spezielleteile) :eingabenueberpruefen;IF eingabenrichtigTHEN werteauswahlausundgibausELSE wiederholeauswahlFI .eingabenueberpruefen:spezielleteile(2). werteauswahlausundgibaus:meldewarten;vorbereitungenliste;IF bestandendeTHEN meldekeinbestand;zurueckzumdialogELIF ausgdruckerTHEN druckbearbeitung( zurnachprozedur,PROC spezielleteile)ELSE bildschirmvorbereitenundersteseitezeigen(PROC spezielleteile)FI . vorbereitungenliste:spezielleteile(3).meldewarten:standardmeldung( warteaufforderung,niltext).meldekeinbestand:standardmeldung( datenexistierennicht,niltext).wiederholeauswahl:zurueckzumdialog. zurueckzumdialog:return(1).END PROC listedruckenoderzeigenggflweitereaktionlesen;PROC druckbearbeitung(INT CONST ruecksprung,PROC (INT CONST )spezielleteile):IF NOT (ruecksprung= zurnachprozedur)THEN setzeausgabedrucker(TRUE )FI ;seite:=1; ausgebenaufdrucker(PROC spezielleteile);zurueckzumdialog.zurueckzumdialog:IF ruecksprung=zurnachprozedurTHEN return(ruecksprung)ELSE enter(ruecksprung)FI .END PROC druckbearbeitung;PROC ausgebenaufdrucker(PROC (INT CONST ) spezielleteile):setzemitseitennummern(TRUE );druckvorbereiten;druckeeineseite ;WHILE NOT bestandendeREP nimmnaechsteseite;druckeeineseitePER ; meldelistewirdgedruckt;drucknachbereiten.druckvorbereiten:spezielleteile(4). druckeeineseite:spezielleteile(5).nimmnaechsteseite:seiteINCR 1. meldelistewirdgedruckt:standardmeldung(listewirdgedruckt,niltext).END PROC ausgebenaufdrucker;PROC bildschirmvorbereitenundersteseitezeigen(PROC (INT CONST )spezielleteile):standardstartproc(namebildausgabemaske);spezielleteile (6);richtung:=#1;#3;seitezeigen(PROC spezielleteile);dialogstarten. dialogstarten:weitereaktionlesen.END PROC bildschirmvorbereitenundersteseitezeigen;PROC weitereaktionlesen:maskendialog .maskendialog:aktuelleposition:=21;infeld(aktuelleposition);standardnproc. END PROC weitereaktionlesen;PROC aufbildschirmblaettern(INT CONST was,PROC ( INT CONST )spezielleteile):richtung:=was;standardkopfmaskeaktualisieren; seitezeigen(PROC spezielleteile);zurueckzumdialog.zurueckzumdialog:return(1). END PROC aufbildschirmblaettern;PROC setzeanfangswerte(TEXT CONST eingangsmaske,INT CONST anfpos):nameauswahlmaske:=eingangsmaske; aktuelleposition:=anfpos;END PROC setzeanfangswerte;PROC seitezeigen(PROC ( INT CONST )spezielleteile):LET fnrausgende=20;aktuelleposition:= bildanfangsposition;spezielleteile(7);ggfrestbildloeschen.ggfrestbildloeschen :IF neuesbildangefangenTHEN restbildloeschenFI .neuesbildangefangen: aktuelleposition>bildanfangsposition.restbildloeschen:FOR zeigerFROM aktuellepositionUPTO fnrausgendeREP leerzeilebildIN zeigerPER .END PROC seitezeigen;PROC setzeausgabedrucker(BOOL CONST b):ausgdrucker:=bEND PROC setzeausgabedrucker;BOOL PROC ausgabedrucker:ausgdruckerEND PROC ausgabedrucker;PROC setzeeingabetest(BOOL CONST b):eingabenrichtig:=bEND PROC setzeeingabetest;PROC setzebildanfangsposition(INT CONST anfangsposition ):bildanfangsposition:=anfangspositionEND PROC setzebildanfangsposition;INT PROC ausgabepos:aktuellepositionEND PROC ausgabepos;PROC erhoeheausgabeposumeins:aktuellepositionINCR 1END PROC erhoeheausgabeposumeins;INT PROC seitenzaehler:seiteEND PROC seitenzaehler; PROC erhoeheseitenzaehlerumeins:seiteINCR 1END PROC erhoeheseitenzaehlerumeins;INT PROC aktion:richtungEND PROC aktion;LET bildzeilenbreite=78,bildseitenlaenge=23,bildkopflaenge=4;INT CONST bildbreite :=bildzeilenbreite,bildlaenge:=bildseitenlaenge-bildkopflaenge;END PACKET listensteuerung;