summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/6.ida.definieren
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2019-02-04 13:09:03 +0100
committerLars-Dominik Braun <lars@6xq.net>2019-02-04 13:09:03 +0100
commit04e68443040c7abad84d66477e98f93bed701760 (patch)
tree2b6202afae659e773bf6916157d23e83edfa44e3 /app/schulis/2.2.1/src/6.ida.definieren
downloadeumel-src-04e68443040c7abad84d66477e98f93bed701760.tar.gz
eumel-src-04e68443040c7abad84d66477e98f93bed701760.tar.bz2
eumel-src-04e68443040c7abad84d66477e98f93bed701760.zip
Initial import
Diffstat (limited to 'app/schulis/2.2.1/src/6.ida.definieren')
-rw-r--r--app/schulis/2.2.1/src/6.ida.definieren516
1 files changed, 516 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/6.ida.definieren b/app/schulis/2.2.1/src/6.ida.definieren
new file mode 100644
index 0000000..696409b
--- /dev/null
+++ b/app/schulis/2.2.1/src/6.ida.definieren
@@ -0,0 +1,516 @@
+PACKET ispidadefinierenDEFINES druckausgabeeingangaufbauenundeinlesen,
+druckausgabeeingangeinlesen,druckausgabeaufbauenundeinlesen,
+druckausgabeeinlesen,druckausgabeausgebenundbearbeiten,druckausgabespeichern,
+druckausgabeneueinfuegen,druckausgabeloeschenvorbereiten,
+druckausgabeloeschfrage,druckausgabeloeschen,
+druckausgabelisteaufbauenundeinlesen,druckausgabelisteeinlesen,
+ausgesuchtedruckausgabeausgebenundbearbeiten,ausgesuchtedruckausgabeeinlesen,
+ausgesuchtedruckausgabeloeschenvorbereiten,ausgesuchtedruckausgabeloeschfrage
+,listederdruckausgabenzeigen,listederdruckausgabeneinlesen,
+indruckausgabenblaettern,inselektionenzurdruckausgabeblaettern,
+inregelzurdruckausgabeblaettern,zurueckzurbearbeitung,formularausdrucken,
+setzenummerderdruckausgabe,nochmeldungauszugeben,pruefungida,:LET filenamezug
+="Hilfsdatei.Zugriff",filenamesel="Hilfsdatei.Selektion",#filenamedruck=
+"Hilfsdatei.Druck",#filenameform="FORMTEXT.",filenamedata="FORMDATA.";LET
+maskenzusatz=" für Druckausgabe ";LET nameundtyp=1,objektklassen=2,#
+datenvorrat=3,#zugriffsregeln=4,selektion=5,druckformular=6,druckvariablen=7,
+druckwerte=8,druckdefinition=9;LET ntnummer=2,ntname=3;LET oleitobjekt=2;LET
+zobjklasse=2,zregelnr=3,zobjklname=4,znummer=5,zersterzugriff=6,
+zerstervergleich=7;LET sersteselektion=2,serstervergleich=3;LET dvnummer=2,
+dvdefinition=3,dvlaenge=4,dvrechtsbuendig=5;LET dwschriftart=2,
+dwlinkerrandoben=3,dwlinkerrandlinks=4,dwzeilenproseite=5,dwzeichenprozeile=6
+;LET minanfang=1.0,maxanfang=10.0;LET ankreuzzeichen="x",anzahltrenner="<?>",
+namentrenner="<#>",zeilennrtrenner="<!>",vergleichtrenner="</>",vartrenner=
+"%",trenner=". ",leitobjektschueler="Schüler",leitobjektlehrer="Lehrer",#
+gueltigerstatus="nw",#niltext="",semikolon=";"#oblitrenner="$"#;LET
+leitobjekt=1,vorwaerts=1#rueckwaerts=2#;LET tl=3,maxzugriffe=16,
+maxselektionen=17,maxobjektklassen=10;LET fnrerstesausgabefeld=2,
+anzmaskeneing=2,anzmaskenbearb=9,anzmaskentitel=9;LET meldunglistenerstellung
+=7,meldungalternative=56,meldungplausipruefung=57,meldungloeschfrage=65,
+meldungkeineliste=68,meldungkeinblaettern=72,meldungformdrucken=219,
+meldungfalscheeingabe=204,meldungdgibtesschon=205,meldungdgibtesnicht=206,
+meldungfalschenummer=207,meldungfalschesobjekt=208,meldungsammelndruckdef=209
+,meldungdruckendruckdef=210,meldungrgibtesschon=211,meldungrgibtesnicht=212,
+meldungvgibtesschon=213,meldungvgibtesnicht=214,meldungkeinleitobjekt=215,
+meldungfalscheregel=217,meldungfalschevariable=218,meldungkeinefonttabelle=
+250,meldungkeineobjektklasse=251;BOOL VAR loeschenderdruckausgabe:=FALSE ,
+neuedruckausgabe:=FALSE ,neuedruckvariable:=FALSE ,neuezugriffsregel:=FALSE ,
+druckenderdefinition:=FALSE ,druckvariablegibtesbereits:=FALSE ,
+zugriffsregelgibtesbereits:=FALSE ;BOOL VAR drvrechtsbuendig,drvdruckvar;
+FILE VAR f;INT VAR fnrletztesausgabefeld:=100,fehlseite:=0,fehlzeile:=0,
+fehlmeld:=0;INT VAR startpos,datenseite,merkzeile,anzahlderdateizeilen,
+leseanfangindatei,fnummer,zeilennr,nrdruckausgabe,anzfelder,dnr,zuwas;INT
+VAR regelnr,regnr,objklasse;INT VAR zrregel,zrobjekt,zrindex,zranzahl;INT
+VAR drvlaenge;ROW anzmaskenbearbINT VAR letztesmaskenfeld:=ROW anzmaskenbearb
+INT :(3,11,100,52,35,100,5,6,100);ROW anzmaskeneingTEXT VAR eingangsmaske:=
+ROW anzmaskeneingTEXT :("mdr name und typ der druckausgabe",
+"mdr objektklasse waehlen eingang");ROW anzmaskenbearbTEXT VAR bearbmaske:=
+ROW anzmaskenbearbTEXT :("mdr name und typ der druckausgabe",
+"mdr objektklasse waehlen bearb","","mdr zugriffsregeln bearb",
+"mdr selektionsbedingung bearb","","mdr variablen definieren bearb",
+"mdr werte fuer druckausgabe festlegen bearb",
+"mdr objektklasse waehlen eingang");ROW anzmaskentitelTEXT VAR
+maskentiteleingang:=ROW anzmaskentitelTEXT :("Name und Nummer definieren",
+"Objektklassen wählen","Datenvorrat festlegen","Zugriffsregeln bearbeiten",
+"Selektionsbedingungen angeben","Druckformular editieren",
+"Druckvariablen definieren","Werte für Druckaufbereitung",
+"Definition ausdrucken");ROW 100TEXT VAR erfassungsfeld;TAG VAR maske;BOOL
+VAR gespeichert:=FALSE ;TEXT VAR sfeldname,svergleichswert;TEXT VAR
+filenameformtp:="DUMMY";TEXT VAR meldungstext:="",nummerderdruckausgabe:="",
+pattern,zeile,programmname;PROC druckausgabeeingangaufbauenundeinlesen(INT
+CONST was):systemdboff;drvdruckvar:=ruecksprung;loeschenderdruckausgabe:=
+FALSE ;setzedruckausgabelistenauswahl(FALSE );
+setzelistederdruckausgabengezeigt(FALSE );fehlseite:=1;fehlzeile:=1;fehlmeld
+:=0;init(erfassungsfeld);startpos:=fnrerstesausgabefeld;zuwas:=was;
+programmname:=maskentiteleingang[zuwas];eingangsmaskeinitialisieren;
+felderausgebenundeinlesen;.eingangsmaskeinitialisieren:IF zuwas=1THEN
+initmaske(maske,eingangsmaske[1])ELSE initmaske(maske,eingangsmaske[2])FI ;
+nummerderdruckausgabe:=niltext;setzeaktuellemaske(maske).
+felderausgebenundeinlesen:IF zuwas=1THEN standardstartproc(eingangsmaske[1])
+ELSE standardstartproc(eingangsmaske[2])FI ;fnrletztesausgabefeld:=
+letztesmaskenfeld[zuwas];feldschutzfestlegen(fnrerstesausgabefeld+1);
+loeschfeldverdecken;eventuellmeldungausgeben;get(maske,erfassungsfeld,
+startpos);nummerderdruckausgabe:=erfassungsfeld[fnrerstesausgabefeld];
+standardmaskenfeld(nummerderdruckausgabe,fnrerstesausgabefeld).END PROC
+druckausgabeeingangaufbauenundeinlesen;PROC druckausgabeeingangeinlesen(INT
+CONST was):putget(maske,nummerderdruckausgabe,fnrerstesausgabefeld);END PROC
+druckausgabeeingangeinlesen;PROC druckausgabeaufbauenundeinlesen(INT CONST
+was):IF ruecksprungTHEN bearbeitungsbildschirmausgeben(PROC
+erneuteeingabeerforderlich)ELSE eingangsbildschirmueberpruefen(PROC
+erneuteeingabeerforderlich)FI END PROC druckausgabeaufbauenundeinlesen;PROC
+druckausgabeeinlesen(INT CONST was):IF was=druckformularTHEN editiere(
+filenameformtp,FALSE )ELSE get(maske,erfassungsfeld,startpos);
+standardfelderfuellen;FI END PROC druckausgabeeinlesen;PROC
+druckausgabeausgebenundbearbeiten(INT CONST was):zuwas:=was;loeschemeldung(
+aktuellemaske);loeschenderdruckausgabe:=FALSE ;neuedruckausgabe:=FALSE ;
+SELECT wasOF CASE zugriffsregeln:neuezugriffsregel:=FALSE ;
+zugriffsregelueberpruefenCASE druckvariablen:neuedruckvariable:=FALSE ;
+druckvariableueberpruefenCASE druckdefinition:eingangsbildschirmueberpruefen(
+PROC druckdefinitiondrucken)OTHERWISE :zurueck;eingangsbildschirmueberpruefen
+(PROC maskenwertezeigenundbearbeiten)END SELECT ;.END PROC
+druckausgabeausgebenundbearbeiten;PROC druckausgabespeichern(BOOL CONST
+speichern,INT CONST was):IF speichernTHEN angabenabspeichern(was);gespeichert
+:=TRUE ELSE gespeichert:=FALSE ;meldungstext:=("Die Angaben "+
+meldungseinschub+" wurden nicht gespeichert ");hilfsfilesloeschen;IF NOT
+druckausgabelistenauswahl#dr01.08.88#THEN forget(getformtextname,quiet);
+forget(filenameformtp,quiet)FI ;eventuellmeldungbeilistenabarbeitungFI ;
+stopbeifalschemnamen(TRUE )END PROC druckausgabespeichern;PROC
+druckausgabeneueinfuegen(INT CONST was):loeschemeldung(aktuellemaske);
+loeschenderdruckausgabe:=FALSE ;SELECT wasOF CASE nameundtyp:neuedruckausgabe
+:=TRUE ;eingangsbildschirmueberpruefen(PROC maskenwertezeigenundbearbeiten)
+CASE zugriffsregeln:neuezugriffsregel:=TRUE ;zugriffsregelueberpruefenCASE
+druckvariablen:neuedruckvariable:=TRUE ;druckvariableueberpruefenOTHERWISE :
+rueckschrittevorproc(2)END SELECT END PROC druckausgabeneueinfuegen;PROC
+druckausgabeloeschenvorbereiten(INT CONST was):loeschemeldung(aktuellemaske);
+loeschenderdruckausgabe:=TRUE ;SELECT wasOF CASE nameundtyp:neuedruckausgabe
+:=FALSE ;eingangsbildschirmueberpruefen(PROC maskenwertezeigenundbearbeiten)
+CASE zugriffsregeln:neuezugriffsregel:=FALSE ;zugriffsregelueberpruefenCASE
+druckvariablen:neuedruckvariable:=FALSE ;druckvariableueberpruefenOTHERWISE :
+rueckschrittevorproc(2)END SELECT ;END PROC druckausgabeloeschenvorbereiten;
+PROC druckausgabeloeschfrage:TEXT VAR xy;meldeauffaellig(aktuellemaske,
+meldungloeschfrage);startpos:=letztesmaskenfeld[zuwas]+1;get(maske,xy,
+startpos).END PROC druckausgabeloeschfrage;PROC druckausgabeloeschen(BOOL
+CONST loeschen,INT CONST was):IF loeschenTHEN meldungstext:=("Die Angaben "+
+meldungseinschub+" wurden gelöscht ");angabenloeschen(was);ELSE meldungstext
+:=("Die Angaben "+meldungseinschub+" wurden nicht gelöscht ");
+hilfsfilesloeschen;FI ;loeschenderdruckausgabe:=FALSE ;
+eventuellmeldungbeilistenabarbeitung;END PROC druckausgabeloeschen;PROC
+druckausgabelisteaufbauenundeinlesen(INT CONST was):
+setzedruckausgabelistenauswahl(FALSE );SELECT wasOF CASE nameundtyp:
+druckausgabenlistezeigenCASE zugriffsregeln:listederregelnzeigenCASE
+druckvariablen:listederdruckvariablenzeigenEND SELECT ;IF (was=nameundtypAND
+listederdruckausgabengezeigt)OR ((was=zugriffsregelnOR was=druckvariablen)
+AND druckausgabelistenauswahl)THEN druckausgabelisteeinlesen(was);FI .
+listederregelnzeigen:loeschemeldung(aktuellemaske);IF erlaubteregeleingabeOR
+regelleerTHEN regellistezeigenELSE meldeauffaellig(aktuellemaske,
+meldungfalscheregel);return(1);LEAVE druckausgabelisteaufbauenundeinlesenFI .
+regelleer:erfassungsfeld[zobjklasse]=niltextAND erfassungsfeld[zregelnr]=
+niltext.listederdruckvariablenzeigen:loeschemeldung(aktuellemaske);IF
+erlaubtevariableneingabeOR druckvariableleerTHEN variablenlistezeigenELSE
+meldeauffaellig(aktuellemaske,meldungfalschevariable);return(1);LEAVE
+druckausgabelisteaufbauenundeinlesenFI .druckvariableleer:erfassungsfeld[
+dvnummer]=niltext.END PROC druckausgabelisteaufbauenundeinlesen;PROC
+druckausgabelisteeinlesen(INT CONST was):infeld(fnrerstesausgabefeld);
+standardnproc;maskenwertesichern;END PROC druckausgabelisteeinlesen;PROC
+ausgesuchtedruckausgabeausgebenundbearbeiten(INT CONST was):
+behandlungderausgesuchten(PROC (INT CONST )druckausgabeausgebenundbearbeiten,
+erfassungsfeld,was);END PROC ausgesuchtedruckausgabeausgebenundbearbeiten;
+PROC ausgesuchtedruckausgabeeinlesen(INT CONST welche):druckausgabeeinlesen(
+welche)END PROC ausgesuchtedruckausgabeeinlesen;PROC
+ausgesuchtedruckausgabeloeschenvorbereiten(INT CONST was):
+behandlungderausgesuchten(PROC (INT CONST )druckausgabeloeschenvorbereiten,
+erfassungsfeld,was);END PROC ausgesuchtedruckausgabeloeschenvorbereiten;PROC
+ausgesuchtedruckausgabeloeschfrage:druckausgabeloeschfrageEND PROC
+ausgesuchtedruckausgabeloeschfrage;PROC listederdruckausgabenzeigen:BOOL VAR
+listeexistiertnicht:=FALSE ;loeschemeldung(aktuellemaske);
+nummerderdruckausgabe:=erfassungsfeld[fnrerstesausgabefeld];
+standardmaskenfeld(nummerderdruckausgabe,fnrerstesausgabefeld);IF
+nummerinrichtigengrenzen(nummerderdruckausgabe)OR nummerderdruckausgabe=
+niltextTHEN #putkeypart(niltext);putdatapart(niltext);##vorläufig14.03.88#
+pruefenobdruckausgabenexistierenELSE meldeauffaellig(aktuellemaske,
+meldungfalschenummer);rueckschrittenachproc(1)FI .
+pruefenobdruckausgabenexistieren:meldeauffaellig(aktuellemaske,
+meldunglistenerstellung);putwert(fnridanummer,nummerderdruckausgabe);
+objektlistestarten(dnrida,standardmaskenfeld(fnrerstesausgabefeld),
+fnridanummer,TRUE ,listeexistiertnicht);IF listeexistiertnichtTHEN
+meldeauffaellig(aktuellemaske,meldungkeineliste);rueckschrittenachproc(1)
+ELSE druckausgabelisteaufbauenundeinlesen(nameundtyp)FI .END PROC
+listederdruckausgabenzeigen;PROC listederdruckausgabeneinlesen:
+druckausgabelisteeinlesen(nameundtyp)END PROC listederdruckausgabeneinlesen;
+PROC indruckausgabenblaettern(INT CONST wie,worin):inlisteblaettern(wie);IF
+ruecksprungTHEN meldeauffaellig(aktuellemaske,meldungkeinblaettern);FI ;
+return(1)END PROC indruckausgabenblaettern;PROC
+inselektionenzurdruckausgabeblaettern(INT CONST wie):loeschemeldung(
+aktuellemaske);selektionenindateieintragen(leseanfangindatei,erfassungsfeld);
+datenseiteraufoderrunter(wie);IF maxselektionen*(datenseite-1)>=
+anzahlderdateizeilenOR datenseite=0THEN meldeauffaellig(aktuellemaske,
+meldungkeinblaettern);datenseiterunteroderrauf(wie)ELSE
+selektionenzeigenvorbereiten(datenseite);FI ;put(maske,erfassungsfeld,
+letztesmaskenfeld[zuwas]);startpos:=serstervergleich;rueckschrittenachproc(1)
+;END PROC inselektionenzurdruckausgabeblaettern;PROC
+inregelzurdruckausgabeblaettern(INT CONST wie):loeschemeldung(aktuellemaske);
+zugriffsregelnindateieintragen(leseanfangindatei,erfassungsfeld);
+datenseiteraufoderrunter(wie);IF maxzugriffe*(datenseite-1)>=
+anzahlderdateizeilenOR datenseite=0THEN meldeauffaellig(aktuellemaske,
+meldungkeinblaettern);datenseiterunteroderrauf(wie)ELSE
+zugriffezeigenvorbereiten(datenseite)FI ;put(maske,erfassungsfeld,
+letztesmaskenfeld[zuwas]);startpos:=zerstervergleich;rueckschrittenachproc(1)
+END PROC inregelzurdruckausgabeblaettern;INT PROC nochmeldungauszugeben:IF
+meldungstext=niltextTHEN 0ELSE meldungstext:=niltext;IF gespeichertTHEN 191
+ELSE 195FI FI END PROC nochmeldungauszugeben;PROC setzenummerderdruckausgabe(
+TEXT CONST nr):nummerderdruckausgabe:=nrEND PROC setzenummerderdruckausgabe;
+BOOL PROC pruefungida:FALSE END PROC pruefungida;PROC zurueckzurbearbeitung(
+INT CONST anzahl):zurueck;setzedruckausgabelistenauswahl(FALSE );init(
+erfassungsfeld);enter(anzahl)END PROC zurueckzurbearbeitung;PROC
+formularausdrucken:standardmeldung(meldungformdrucken,niltext);changeinfile(
+filenameformtp,"#","\#");print(filenameformtp);changeinfile(filenameformtp,"\#"
+,"#");rueckschrittenachproc(1)END PROC formularausdrucken;PROC
+druckvariableueberpruefen:IF erlaubtevariableneingabeTHEN
+standardkopfmaskeaktualisieren(programmname);IF druckausgabelistenauswahl
+THEN initmaske(maske,bearbmaske[zuwas]);setzeaktuellemaske(maske);show(
+aktuellemaske);loeschfeldverdecken;FI ;IF existenzdervariablennotwendigTHEN
+fehlerbehandlung;rueckschrittenachproc(1)ELSE maskenwertezeigenundbearbeiten;
+FI ELSE meldeauffaellig(aktuellemaske,meldungfalschevariable);startpos:=
+fnrerstesausgabefeld;rueckschrittenachproc(1)FI .
+existenzdervariablennotwendig:(neuedruckvariableAND
+druckvariableexistiertschon)OR (NOT neuedruckvariableAND NOT
+druckvariableexistiertschon).druckvariableexistiertschon:getsteuercode(int(
+erfassungsfeld[dvnummer]),erfassungsfeld[dvdefinition],drvlaenge,
+drvrechtsbuendig,drvdruckvar);druckvariablegibtesbereits:=erfassungsfeld[
+dvdefinition]<>niltext;erfassungsfeld[dvdefinition]<>niltext.fehlerbehandlung
+:IF neuedruckvariableAND druckvariableexistiertschonTHEN meldeauffaellig(
+aktuellemaske,meldungvgibtesschon)ELSE meldeauffaellig(aktuellemaske,
+meldungvgibtesnicht)FI .END PROC druckvariableueberpruefen;PROC
+eingangsbildschirmueberpruefen(PROC wasweiter):BOOL VAR
+druckausgabegibtesschon:=druckausgabeexistiertbereits;IF eingangsbildschirmok
+THEN IF listederdruckausgabengezeigtTHEN nummerderdruckausgabesetzen(
+nummerderdruckausgabe);druckausgabegibtesschon:=druckausgabeexistiertbereits
+FI ;getform(int(nummerderdruckausgabe));openformular(int(
+nummerderdruckausgabe));init(erfassungsfeld);angegebenedruckausgabebearbeiten
+ELSE fehlerbehandlung1;rueckschrittenachproc(1)FI .eingangsbildschirmok:IF
+listederdruckausgabengezeigtTHEN nureinedruckausgabeangekreuztELSE
+nummerinrichtigengrenzen(nummerderdruckausgabe)FI .fehlerbehandlung1:IF
+listederdruckausgabengezeigtTHEN meldeauffaellig(aktuellemaske,
+meldungalternative)ELSE meldeauffaellig(aktuellemaske,meldungfalschenummer)
+FI .angegebenedruckausgabebearbeiten:IF existenzderdruckausgabenoetigTHEN IF
+zuwas=druckdefinitionTHEN #wasweiterersetztdr16.12.87#
+bearbeitungsbildschirmausgeben(PROC wasweiter);ELIF zuwas=selektionAND
+getobjektklasse(leitobjekt)=niltextTHEN meldeauffaellig(aktuellemaske,
+meldungkeinleitobjekt);rueckschrittenachproc(1)ELSE saveupdateposition(dnrida
+);bearbeitungsbildschirmausgeben(PROC wasweiter);FI ELSE fehlerbehandlung2;
+rueckschrittenachproc(1)FI .existenzderdruckausgabenoetig:(
+druckausgabegibtesschonAND NOT neuedruckausgabe)OR (NOT
+druckausgabegibtesschonAND neuedruckausgabe).fehlerbehandlung2:IF NOT
+druckausgabegibtesschonAND NOT neuedruckausgabeTHEN meldeauffaellig(
+aktuellemaske,meldungdgibtesnicht);forget(filenameform+text(getactivformular)
+,quiet);forget(filenamedata+text(getactivformular),quiet)ELIF
+druckausgabegibtesschonAND neuedruckausgabeTHEN meldeauffaellig(aktuellemaske
+,meldungdgibtesschon)FI ;.END PROC eingangsbildschirmueberpruefen;BOOL PROC
+druckausgabeexistiertbereits:#putkeypart(niltext);putdatapart(niltext);##
+vorläufig14.03.88#inittupel(dnrida);putwert(fnridanummer,
+nummerderdruckausgabe);search(dnrida,TRUE );dbstatus=okEND PROC
+druckausgabeexistiertbereits;PROC bearbeitungsbildschirmausgeben(PROC
+wasweiter):programmname:=maskentiteleingang[zuwas]+maskenzusatz+
+nummerderdruckausgabe;standardkopfmaskeaktualisieren(programmname);
+bearbeitungsmaskeausgeben;eventuellmeldungausgeben;wasweiter.
+bearbeitungsmaskeausgeben:initmaske(maske,bearbmaske[zuwas]);
+setzeaktuellemaske(maske);fnrletztesausgabefeld:=letztesmaskenfeld[zuwas];
+show(aktuellemaske);loeschfeldverdecken;getform(int(nummerderdruckausgabe));
+openformular(int(nummerderdruckausgabe)).END PROC
+bearbeitungsbildschirmausgeben;PROC zugriffsregelueberpruefen:IF
+erlaubteregeleingabeTHEN standardkopfmaskeaktualisieren(programmname);IF
+druckausgabelistenauswahlTHEN initmaske(maske,bearbmaske[zuwas]);
+setzeaktuellemaske(maske);show(aktuellemaske);loeschfeldverdeckenFI ;IF
+existenzderregelnotwendigTHEN fehlerbehandlung;rueckschrittenachproc(1)ELSE
+maskenwertezeigenundbearbeiten;FI ELSE #dr02.05.88#IF falscheregelTHEN
+meldeauffaellig(aktuellemaske,meldungfalscheregel)ELIF
+esexistiertkeineobjektklasseTHEN meldeauffaellig(aktuellemaske,
+meldungkeineobjektklasse)FI ;startpos:=fnrerstesausgabefeld;
+rueckschrittenachproc(1)FI .existenzderregelnotwendig:(neuezugriffsregelAND
+zugriffsregelexistiertschon)OR (NOT neuezugriffsregelAND NOT
+zugriffsregelexistiertschon).zugriffsregelexistiertschon:objklasse:=int(
+erfassungsfeld[zobjklasse]);regnr:=int(erfassungsfeld[zregelnr]);regelnr:=
+getregelnummer(objklasse,regnr);zugriffsregelgibtesbereits:=regelnr>0;regelnr
+>0.fehlerbehandlung:IF neuezugriffsregelAND zugriffsregelexistiertschonTHEN
+meldeauffaellig(aktuellemaske,meldungrgibtesschon)ELSE meldeauffaellig(
+aktuellemaske,meldungrgibtesnicht)FI .falscheregel:erfassungsfeld[zobjklasse]
+=niltextCOR erfassungsfeld[zregelnr]=niltext.esexistiertkeineobjektklasse:
+erfassungsfeld[zobjklasse]<>niltext#dr02.05.88#CAND int(erfassungsfeld[
+zobjklasse])<=10CAND getobjektklasse(int(erfassungsfeld[zobjklasse]))=niltext
+.END PROC zugriffsregelueberpruefen;PROC erneuteeingabeerforderlich:
+allefeldersperren(FALSE );feldschutzfuerbearbeitungfestlegen(zuwas);startpos
+:=fnrerstesausgabefeld;put(maske,erfassungsfeld,letztesmaskenfeld[zuwas]);
+druckausgabeeinlesen(zuwas)END PROC erneuteeingabeerforderlich;PROC
+angabenabspeichern(INT CONST was):INT VAR lvf;TEXT VAR txt;fehlseite:=1;
+fehlzeile:=1;fehlmeld:=0;SELECT wasOF CASE nameundtyp:nameundtypspeichern
+CASE objektklassen:objektklassenspeichernCASE zugriffsregeln:
+zugriffsregelspeichernCASE selektion:selektionspeichernCASE druckformular:
+druckformularspeichernCASE druckvariablen:druckvariablespeichernCASE
+druckwerte:druckwertespeichernEND SELECT ;meldungstext:=("Die Angaben "+
+meldungseinschub+" wurden gespeichert ");eventuellmeldungbeilistenabarbeitung
+#dr01.08.88#.nameundtypspeichern:meldeauffaellig(aktuellemaske,
+meldungplausipruefung);IF nameundtypok(erfassungsfeld,fnummer)THEN
+putformularinfo(erfassungsfeld[ntname],int(erfassungsfeld[ntnummer]),FALSE );
+nameundtypindbeintragen;sichernundhilfsfilesloeschenELSE
+meldefehlernameundtyp;startpos:=fnummer;rueckschrittenachproc(1);LEAVE
+angabenabspeichernFI .nameundtypindbeintragen:putwert(fnridanummer,
+erfassungsfeld[ntnummer]);putwert(fnridaname,erfassungsfeld[ntname]);IF
+neuedruckausgabeTHEN insert(dnrida)ELSE restoreupdateposition(dnrida);update(
+dnrida)FI .objektklassenspeichern:meldeauffaellig(aktuellemaske,
+meldungplausipruefung);IF objektklassenzugelassenTHEN FOR lvfFROM 1UPTO
+maxobjektklassenREP putobjektklasse(lvf,erfassungsfeld[lvf+1])PER ;
+sichernundhilfsfilesloeschenELSE meldeauffaellig(aktuellemaske,
+meldungfalschesobjekt);startpos:=lvf+1;rueckschrittenachproc(1);LEAVE
+angabenabspeichernFI .objektklassenzugelassen:IF
+leitobjektklasseleeroderungueltigTHEN lvf:=1;LEAVE objektklassenzugelassen
+WITH FALSE FI ;stopbeifalschemnamen(FALSE );FOR lvfFROM 1UPTO
+maxobjektklassenREP IF erfassungsfeld[lvf+1]<>niltextTHEN IF
+objektklassekeindateinameTHEN LEAVE objektklassenzugelassenWITH FALSE FI FI
+PER ;stopbeifalschemnamen(TRUE );TRUE .leitobjektklasseleeroderungueltig:
+erfassungsfeld[oleitobjekt]=niltextCOR (pos(leitobjektschueler,erfassungsfeld
+[oleitobjekt])=0AND pos(leitobjektlehrer,erfassungsfeld[oleitobjekt])=0).
+objektklassekeindateiname:dateinr(erfassungsfeld[lvf+1])=0.
+zugriffsregelspeichern:zugriffsregelnindateieintragen(leseanfangindatei,
+erfassungsfeld);meldeauffaellig(aktuellemaske,meldungplausipruefung);IF
+zugriffsregelnok(fehlseite,fehlzeile,fehlmeld)THEN zugriffsregelnabspeichern;
+sichernundhilfsfilesloeschenELSE stopbeifalschemnamen(TRUE );datenseite:=
+fehlseite;zugriffezeigenvorbereiten(datenseite);put(maske,erfassungsfeld,
+letztesmaskenfeld[zuwas]);meldeauffaellig(aktuellemaske,fehlmeld);startpos:=
+fehlzeile+((fehlzeile+2)*2);rueckschrittenachproc(1);LEAVE angabenabspeichern
+FI .zugriffsregelnabspeichern:wertesetzenbeineuerzugriffsregel;
+erstenvergleichsuchenundindexsetzen;zugriffsregelundvergleichswertespeichern.
+wertesetzenbeineuerzugriffsregel:IF neuezugriffsregelTHEN regelnr:=
+getanzahlregeln+1;zrobjekt:=objklasse;zrregel:=regnr;ELSE FI .
+erstenvergleichsuchenundindexsetzen:pattern:=vergleichtrenner;toline(f,1);
+readrecord(f,zeile);IF pos(zeile,pattern)=0THEN down(f,pattern);readrecord(f,
+zeile);FI ;zrindex:=int(subtext(zeile,1,pos(zeile,anzahltrenner)-1)).
+zugriffsregelundvergleichswertespeichern:putzugriffsregel(regelnr,zrobjekt,
+zrregel,zrindex,0);WHILE pos(zeile,vergleichtrenner)>0REP putvergleichswert(
+regelnr,subtext(zeile,pos(zeile,vergleichtrenner)+tl));toline(f,lineno(f)+1);
+readrecord(f,zeile);PER .selektionspeichern:selektionenindateieintragen(
+leseanfangindatei,erfassungsfeld);meldeauffaellig(aktuellemaske,
+meldungplausipruefung);IF selektionswerteok(dnr,fehlseite,fehlzeile,fehlmeld)
+THEN selektionenabspeichern;sichernundhilfsfilesloeschenELSE datenseite:=
+fehlseite;selektionenzeigenvorbereiten(datenseite);put(maske,erfassungsfeld,
+letztesmaskenfeld[zuwas]);meldeauffaellig(aktuellemaske,fehlmeld);startpos:=(
+fehlzeile*2)+1;rueckschrittenachproc(1);LEAVE angabenabspeichernFI .
+selektionenabspeichern:putanzahlselfelder(0);FOR lvfFROM 1UPTO anzattr(dnr)
+REP toline(f,lvf);readrecord(f,zeile);sfeldname:=subtext(zeile,1,pos(zeile,
+zeilennrtrenner)-1);svergleichswert:=subtext(zeile,pos(zeile,vergleichtrenner
+)+tl);putselektion(sfeldname,svergleichswert)PER .druckformularspeichern:
+standardmeldung(meldungplausipruefung,niltext);forget(getformtextname,quiet);
+copy(filenameformtp,getformtextname);IF fehlerinformularTHEN formfehlermelden
+;rueckschrittenachproc(1);LEAVE angabenabspeichernELSE forget(filenameformtp,
+quiet);sichernundhilfsfilesloeschenFI .druckvariablespeichern:meldeauffaellig
+(aktuellemaske,meldungplausipruefung);IF fehlerindruckvariable(erfassungsfeld
+[dvdefinition])THEN rueckschrittenachproc(1);LEAVE angabenabspeichernELSE
+drvdruckvar:=ausdruckwardruckvariable;putsteuercode(int(erfassungsfeld[
+dvnummer]),erfassungsfeld[dvdefinition],int(erfassungsfeld[dvlaenge]),
+erfassungsfeld[dvrechtsbuendig]<>niltext,drvdruckvar);
+sichernundhilfsfilesloeschenFI .druckwertespeichern:meldeauffaellig(
+aktuellemaske,meldungplausipruefung);IF druckwerteokTHEN startpos:=
+fnrerstesausgabefeld;putdruckaufbereitung(erfassungsfeld[dwschriftart],real(
+erfassungsfeld[dwlinkerrandlinks]),real(erfassungsfeld[dwlinkerrandoben]),int
+(erfassungsfeld[dwzeilenproseite]),real(erfassungsfeld[dwzeichenprozeile]));
+sichernundhilfsfilesloeschenELSE IF lvf=0THEN meldeauffaellig(aktuellemaske,
+meldungfalscheeingabe);ELSE meldeauffaellig(aktuellemaske,
+meldungkeinefonttabelle);FI ;rueckschrittenachproc(1);LEAVE
+angabenabspeichernFI .druckwerteok:lvf:=0;fonttabelleeingestelltCAND
+fontexistiertauchCAND linkerrandrichtigCAND rechterrandrichtig.
+linkerrandrichtig:startpos:=dwlinkerrandlinks;real(erfassungsfeld[
+dwlinkerrandlinks])>=minanfangCAND real(erfassungsfeld[dwlinkerrandlinks])<=
+maxanfang.rechterrandrichtig:startpos:=dwlinkerrandoben;real(erfassungsfeld[
+dwlinkerrandoben])>=minanfangCAND real(erfassungsfeld[dwlinkerrandoben])<=
+maxanfang.fonttabelleeingestellt:startpos:=dwschriftart;disablestop;txt:=font
+(1);IF iserrorTHEN clearerror;lvf:=1FI ;enablestop;lvf=0.fontexistiertauch:
+startpos:=dwschriftart;font(erfassungsfeld[dwschriftart])>0.END PROC
+angabenabspeichern;PROC maskenwertezeigenundbearbeiten:IF
+loeschenderdruckausgabeTHEN allefeldersperren(TRUE );
+maskenwerteholenundausgeben(zuwas);druckausgabeloeschfrageELSE
+allefeldersperren(FALSE );maskenwerteholenundausgeben(zuwas);
+druckausgabeeinlesen(zuwas)FI ;END PROC maskenwertezeigenundbearbeiten;PROC
+maskenwerteholenundausgeben(INT CONST wozu):LET maxanzobjektklassen=10;INT
+VAR feld,nrindex,lvf,lvi;TEXT VAR z,datname;datenseite:=1;SELECT wozuOF CASE
+nameundtyp:nameundtypzeigenCASE objektklassen:objektklassenzeigenCASE
+zugriffsregeln:zugriffsregelzeigenCASE selektion:selektionzeigenCASE
+druckformular:druckformularzeigenCASE druckvariablen:druckvariablezeigenCASE
+druckwerte:druckwertezeigenEND SELECT ;IF wozu<>druckformularTHEN put(maske,
+erfassungsfeld,letztesmaskenfeld[zuwas]);FI .nameundtypzeigen:BOOL VAR
+ausgabelistenweise;erfassungsfeld[ntnummer]:=nummerderdruckausgabe;IF NOT
+neuedruckausgabeTHEN ausgabelistenweise:=FALSE ;getformularinfo(
+erfassungsfeld[ntname],nrdruckausgabe,ausgabelistenweise);FI ;IF
+neuedruckausgabeTHEN protect(maske,fnrerstesausgabefeld,TRUE )FI ;startpos:=
+fnrerstesausgabefeld+1;.objektklassenzeigen:FOR lvfFROM 1UPTO
+maxanzobjektklassenREP erfassungsfeld[lvf+1]:=getobjektklasse(lvf)PER ;.
+zugriffsregelzeigen:objektklasseholen;moeglichezugriffezeigen;
+anzahlderdateizeilen:=lines(f);IF zugriffsregelgibtesbereitsTHEN
+gespeichertezugriffezeigen;FI ;zugriffezeigenvorbereiten(datenseite);startpos
+:=zerstervergleich.moeglichezugriffezeigen:primaerzugriffholen;IF firstindex>
+0THEN sekundaerzugriffeholen;FI ;.primaerzugriffholen:forget(filenamezug,
+quiet);f:=sequentialfile(modify,filenamezug);datname:=erfassungsfeld[
+zobjklname];dnr:=dateinr(datname);anzfelder:=anzkey(dnr);zeilennr:=1;nrindex
+:=0;FOR lvfFROM 1UPTO anzfelderREP feld:=dnr+lvf;zeileindateischreiben;PER ;.
+sekundaerzugriffeholen:FOR lviFROM firstindexUPTO firstfree-1REP IF dateinr(
+primdatid(lvi))=dnrTHEN anzahlderfelderbestimmen;nrindexINCR 1;FOR lvfFROM 1
+UPTO anzfelderREP feld:=dnr+int(subtext(z,1,pos(z,semikolon)-1));z:=subtext(z
+,pos(z,semikolon)+1);zeileindateischreiben;PER ;FI ;PER ;.
+anzahlderfelderbestimmen:z:=zugriff(lvi);INT VAR posi;anzfelder:=0;posi:=pos(
+z,semikolon);WHILE posi>0REP anzfelderINCR 1;posi:=pos(z,semikolon,posi+1)
+PER ;.zeileindateischreiben:zeilezusammensetzen;toline(f,zeilennr);
+insertrecord(f);writerecord(f,zeile);zeilennrINCR 1;.zeilezusammensetzen:IF
+lvf=1THEN zeile:=text(nrindex)+anzahltrenner;zeileCAT text(anzfelder);zeile
+CAT namentrenner;ELSE zeile:=namentrennerFI ;zeileCAT name(feld);zeileCAT
+zeilennrtrenner;zeileCAT text(zeilennr);.gespeichertezugriffezeigen:
+gespeichertezugriffeholen;gespeichertezugriffeindateieintragen.
+gespeichertezugriffeholen:IF druckenderdefinitionTHEN regelnr:=
+benoetigteregelFI ;getzugriffsregel(regelnr,zrobjekt,zrregel,zrindex,zranzahl
+);.gespeichertezugriffeindateieintragen:pattern:=text(zrindex)+anzahltrenner;
+toline(f,1);readrecord(f,zeile);IF pos(zeile,pattern)>0THEN zugriffeeintragen
+ELSE down(f,pattern);IF patternfoundTHEN zugriffeeintragenFI FI .
+zugriffeeintragen:zeilennr:=lineno(f);FOR lvfFROM 1UPTO zranzahlREP toline(f,
+zeilennr);readrecord(f,zeile);zeileCAT vergleichtrenner;zeileCAT
+getvergleichswert(regelnr,lvf);writerecord(f,zeile);zeilennrINCR 1;PER .
+selektionzeigen:forget(filenamesel,quiet);f:=sequentialfile(modify,
+filenamesel);dnr:=dateinr(getobjektklasse(leitobjekt));
+feldnamenindateischreiben;anzahlderdateizeilen:=lines(f);
+gespeicherteselektionenindateischreiben;selektionenzeigenvorbereiten(
+datenseite);startpos:=serstervergleich.feldnamenindateischreiben:FOR lvfFROM
+1UPTO anzattr(dnr)REP toline(f,lvf);insertrecord(f);zeile:=name(dnr+lvf)+
+zeilennrtrenner+text(lvf)+vergleichtrenner;writerecord(f,zeile);PER .
+gespeicherteselektionenindateischreiben:IF getanzahlselfelder<>0THEN FOR lvf
+FROM 1UPTO getanzahlselfelderREP toline(f,lvf);readrecord(f,zeile);
+getselektion(lvf,sfeldname,svergleichswert);zeileCAT svergleichswert;
+writerecord(f,zeile);PER FI .druckformularzeigen:filenameformtp:=wert(
+fnridanummer)+trenner+wert(fnridaname);forget(filenameformtp,quiet);IF exists
+(getformtextname)THEN copy(getformtextname,filenameformtp)FI ;startpos:=
+fnrerstesausgabefeld.druckvariablezeigen:IF druckvariablegibtesbereitsTHEN
+protect(maske,dvnummer,TRUE );IF drvlaenge=0THEN erfassungsfeld[dvlaenge]:=
+niltextELSE erfassungsfeld[dvlaenge]:=text(drvlaenge)FI ;IF drvrechtsbuendig
+THEN erfassungsfeld[dvrechtsbuendig]:=ankreuzzeichenELSE erfassungsfeld[
+dvrechtsbuendig]:=niltextFI FI ;startpos:=dvdefinition.druckwertezeigen:REAL
+VAR linksoben,linkslinks,spalten;INT VAR zeilen;zurueck;getdruckaufbereitung(
+erfassungsfeld[dwschriftart],linkslinks,linksoben,zeilen,spalten);
+erfassungsfeld[dwlinkerrandlinks]:=text(linkslinks);erfassungsfeld[
+dwlinkerrandoben]:=text(linksoben);erfassungsfeld[dwzeilenproseite]:=text(
+zeilen);erfassungsfeld[dwzeichenprozeile]:=subtext(text(spalten),1,pos(text(
+spalten),".")-1);.END PROC maskenwerteholenundausgeben;PROC objektklasseholen
+:erfassungsfeld[zobjklname]:=getobjektklasse(int(erfassungsfeld[zobjklasse]))
+;END PROC objektklasseholen;PROC selektionenzeigenvorbereiten(INT CONST
+seitennr):bildschirmausgabenselektionsammeln(seitennr);
+selektionsfeldersperren;freizeilenselektionloeschenEND PROC
+selektionenzeigenvorbereiten;PROC bildschirmausgabenselektionsammeln(INT
+CONST seitennr):INT VAR lvf;merkzeile:=maxselektionen+1;leseanfangindatei:=(
+seitennr-1)*maxselektionen+1;FOR lvfFROM 1UPTO maxselektionenREP IF lvf+
+leseanfangindatei-1<=anzahlderdateizeilenTHEN toline(f,lvf+leseanfangindatei-
+1);readrecord(f,zeile);erfassungsfeld[sersteselektion+(lvf-1)*2]:=subtext(
+zeile,1,pos(zeile,zeilennrtrenner)-1);IF pos(zeile,vergleichtrenner)>0THEN
+erfassungsfeld[serstervergleich+(lvf-1)*2]:=subtext(zeile,pos(zeile,
+vergleichtrenner)+tl);FI ;ELSE merkzeile:=lvf;LEAVE
+bildschirmausgabenselektionsammelnFI PER ;END PROC
+bildschirmausgabenselektionsammeln;PROC selektionsfeldersperren:INT VAR lvf;
+allefeldersperren(TRUE );FOR lvfFROM 1UPTO maxselektionenREP protect(maske,
+serstervergleich+(lvf-1)*2,FALSE )PER END PROC selektionsfeldersperren;PROC
+freizeilenselektionloeschen:INT VAR lv;FOR lvFROM merkzeileUPTO
+maxselektionenREP erfassungsfeld[sersteselektion+(lv-1)*2]:=niltext;
+erfassungsfeld[serstervergleich+(lv-1)*2]:=niltext;protect(maske,
+serstervergleich+(lv-1)*2,TRUE )PER END PROC freizeilenselektionloeschen;
+PROC zugriffezeigenvorbereiten(INT CONST seitennr):
+bildschirmausgabenzugriffsammeln(seitennr);zugriffsfeldersperren;
+freizeilenzugriffloeschenEND PROC zugriffezeigenvorbereiten;PROC
+bildschirmausgabenzugriffsammeln(INT CONST seitennr):INT VAR lvf;merkzeile:=
+maxzugriffe+1;leseanfangindatei:=(seitennr-1)*maxzugriffe+1;FOR lvfFROM 1
+UPTO maxzugriffeREP IF lvf+leseanfangindatei-1<=anzahlderdateizeilenTHEN
+toline(f,lvf+leseanfangindatei-1);readrecord(f,zeile);erfassungsfeld[znummer+
+(lvf-1)*3]:=subtext(zeile,1,pos(zeile,anzahltrenner)-1);erfassungsfeld[
+zersterzugriff+(lvf-1)*3]:=subtext(zeile,pos(zeile,namentrenner)+tl,pos(zeile
+,zeilennrtrenner)-1);IF pos(zeile,vergleichtrenner)>0THEN erfassungsfeld[
+zerstervergleich+(lvf-1)*3]:=subtext(zeile,pos(zeile,vergleichtrenner)+tl);
+ELSE erfassungsfeld[zerstervergleich+(lvf-1)*3]:=niltextFI ;ELSE merkzeile:=
+lvf;LEAVE bildschirmausgabenzugriffsammelnFI PER ;.END PROC
+bildschirmausgabenzugriffsammeln;PROC zugriffsfeldersperren:INT VAR lvf;
+allefeldersperren(TRUE );FOR lvfFROM 1UPTO maxzugriffeREP protect(maske,
+zerstervergleich+(lvf-1)*3,FALSE )PER END PROC zugriffsfeldersperren;PROC
+freizeilenzugriffloeschen:INT VAR lv;FOR lvFROM merkzeileUPTO maxzugriffeREP
+erfassungsfeld[znummer+(lv-1)*3]:=niltext;erfassungsfeld[zersterzugriff+(lv-1
+)*3]:=niltext;erfassungsfeld[zerstervergleich+(lv-1)*3]:=niltext;protect(
+maske,zerstervergleich+(lv-1)*3,TRUE )PER END PROC freizeilenzugriffloeschen;
+PROC datenseiteraufoderrunter(INT CONST wie):IF wie=vorwaertsTHEN datenseite
+INCR 1ELSE datenseiteDECR 1FI ;END PROC datenseiteraufoderrunter;PROC
+datenseiterunteroderrauf(INT CONST wie):IF wie=vorwaertsTHEN datenseiteDECR 1
+ELSE datenseiteINCR 1FI END PROC datenseiterunteroderrauf;PROC
+angabenloeschen(INT CONST was):SELECT wasOF CASE nameundtyp:
+nameundtyploeschenCASE zugriffsregeln:zugriffsregelloeschenCASE
+druckvariablen:druckvariableloeschenEND SELECT .nameundtyploeschen:delform(
+getactivformular);forget(getformtextname,quiet);forget(filenamedata+text(
+getactivformular),quiet);delete(dnrida).zugriffsregelloeschen:deleteregel(
+regelnr);sichernundhilfsfilesloeschen;.druckvariableloeschen:putsteuercode(
+int(erfassungsfeld[dvnummer]),niltext,0,FALSE ,FALSE );
+sichernundhilfsfilesloeschen.END PROC angabenloeschen;PROC allefeldersperren(
+BOOL CONST freigabe):INT VAR lv;FOR lvFROM fnrerstesausgabefeldUPTO
+letztesmaskenfeld[zuwas]+5REP protect(maske,lv,freigabe)PER ;protect(maske,
+letztesmaskenfeld[zuwas]+1,TRUE );startpos:=fnrerstesausgabefeld;END PROC
+allefeldersperren;PROC changeinfile(TEXT CONST fname,vorher,nachher):INT VAR
+lv;f:=sequentialfile(modify,fname);FOR lvFROM 1UPTO lines(f)REP toline(f,lv);
+readrecord(f,zeile);changeall(zeile,vorher,nachher);writerecord(f,zeile)PER ;
+toline(f,1)END PROC changeinfile;PROC druckdefinitiondrucken:
+druckenderdefinition:=TRUE ;zugriffsregelgibtesbereits:=TRUE ;meldeauffaellig
+(aktuellemaske,meldungsammelndruckdef);druckdefinitionzusammenstellen(PROC (
+INT CONST )maskenwerteholenundausgeben,erfassungsfeld);meldeauffaellig(
+aktuellemaske,meldungdruckendruckdef);sichernundhilfsfilesloeschen;
+nummerderdruckausgabe:=niltext;druckenderdefinition:=FALSE ;
+zugriffsregelgibtesbereits:=FALSE ;rueckschrittevorproc(1)#dr16.12.87#END
+PROC druckdefinitiondrucken;BOOL PROC erlaubteregeleingabe:LET maxeingabe=10;
+(nummernummerisch(erfassungsfeld[zobjklasse])CAND int(erfassungsfeld[
+zobjklasse])>1CAND int(erfassungsfeld[zobjklasse])<=maxeingabeCAND
+getobjektklasse(int(erfassungsfeld[zobjklasse]))<>niltext)CAND (
+nummernummerisch(erfassungsfeld[zregelnr])CAND int(erfassungsfeld[zregelnr])>
+0CAND int(erfassungsfeld[zregelnr])<=maxeingabe)END PROC erlaubteregeleingabe
+;BOOL PROC erlaubtevariableneingabe:LET maxeingabe=100;(nummernummerisch(
+erfassungsfeld[dvnummer])CAND int(erfassungsfeld[dvnummer])>0CAND int(
+erfassungsfeld[dvnummer])<=maxeingabe)END PROC erlaubtevariableneingabe;PROC
+eventuellmeldungausgeben:IF meldungstext<>niltextTHEN meldeauffaellig(
+aktuellemaske,meldungstext);meldungstext:=niltext;FI END PROC
+eventuellmeldungausgeben;PROC eventuellmeldungbeilistenabarbeitung:IF
+druckausgabelistenauswahlTHEN meldeauffaellig(aktuellemaske,meldungstext);
+kurzepause;meldungstext:=niltext;enter(1)ELSE IF listederdruckausgabengezeigt
+CAND (zuwas=zugriffsregelnOR zuwas=druckvariablen)CAND NOT (
+druckausgabelistenauswahl)THEN zurueckzurbearbeitung(2)ELSE
+rueckschrittevorproc(2)FI ;FI .kurzepause:pause(10).END PROC
+eventuellmeldungbeilistenabarbeitung;PROC feldschutzfestlegen(INT CONST abwo)
+:INT VAR lv;protect(maske,1,TRUE );FOR lvFROM abwoUPTO letztesmaskenfeld[
+zuwas]REP protect(maske,lv,TRUE )PER END PROC feldschutzfestlegen;PROC
+feldschutzfuerbearbeitungfestlegen(INT CONST wozu):protect(maske,1,TRUE );
+SELECT wozuOF CASE zugriffsregeln:feldschutzfestlegen(fnrerstesausgabefeld+2)
+CASE druckvariablen:feldschutzfestlegen(fnrerstesausgabefeld+1)OTHERWISE :
+allefeldersperren(FALSE )END SELECT ;END PROC
+feldschutzfuerbearbeitungfestlegen;PROC loeschfeldverdecken:LET rahmenzeichen
+="=";put(aktuellemaske,rahmenzeichen,letztesmaskenfeld[zuwas]+1);END PROC
+loeschfeldverdecken;TEXT PROC meldungseinschub:TEXT VAR t;SELECT zuwasOF
+CASE zugriffsregeln:t:="zur Regel k"+compress(erfassungsfeld[zobjklasse])+"r"
++compress(erfassungsfeld[zregelnr])CASE druckvariablen:t:=
+"zur Druckvariablen "+erfassungsfeld[dvnummer]OTHERWISE :t:=
+"zur Druckausgabe "+text(getactivformular)END SELECT ;tEND PROC
+meldungseinschub;PROC standardfelderfuellen:INT VAR lv;FOR lvFROM 1UPTO
+letztesmaskenfeld[zuwas]REP standardmaskenfeld(erfassungsfeld[lv],(lv))PER
+END PROC standardfelderfuellen;END PACKET ispidadefinieren;
+