PACKET sybifunktionenDEFINES initsybifunktionen,setzebenutzerberechtigung, holeberechtigungswert,setzeprogrammende,programmende, setzeeditorschalterzurueck,gesetztdurcheditor,setzeschalterfuermenueausgabe, loeschetastendruck,tastendruck,setzetastendruck,bittedasmenuezeigen, menuedraussen,seteingabe,vpwunsch,npwunsch,vpgewaehlt,npgewaehlt,enter,return ,reenter,leave,setzevergleichsknoten,vergleichsknoten,knotenaufstackablegen, legehistorieknotenab,holehistorietext,stopbaisy,setzeverteilteanwendung, beendendessystembauminterpreters:TEXT VAR gedruecktetaste;BOOL VAR programmendeschalter:=FALSE ,editorschalter:=FALSE ,schalterfuermenueausgabe :=FALSE ,vornachschalter,verteilteanwendung:=FALSE ;KNOTEN VAR k;STACK VAR s; INT VAR zurueckknotenanz;LET schaltervorprozedur=TRUE ,schalternachprozedur= FALSE ;TEXT VAR benutzerberechtigung:="";LET maxmenueebenen=4;LET HISTORIEKNOTEN =STRUCT (TEXT knotentext,INT anwahlpos);ROW maxmenueebenen HISTORIEKNOTEN VAR hk;INT VAR aktebene;PROC setzeverteilteanwendung: verteilteanwendung:=TRUE END PROC setzeverteilteanwendung;PROC seteingabe( TEXT CONST t):gedruecktetaste:=t;editorschalter:=TRUE END PROC seteingabe; PROC setzeeditorschalterzurueck:editorschalter:=FALSE END PROC setzeeditorschalterzurueck;BOOL PROC gesetztdurcheditor:editorschalterEND PROC gesetztdurcheditor;PROC setzebenutzerberechtigung(TEXT CONST t): benutzerberechtigung:=tEND PROC setzebenutzerberechtigung;PROC holeberechtigungswert(TEXT VAR t):t:=benutzerberechtigungEND PROC holeberechtigungswert;PROC setzeprogrammende(BOOL CONST wahrwert): programmendeschalter:=wahrwertEND PROC setzeprogrammende;BOOL PROC programmende:programmendeschalterEND PROC programmende;PROC setzeschalterfuermenueausgabe(BOOL CONST sfma):schalterfuermenueausgabe:=sfma END PROC setzeschalterfuermenueausgabe;BOOL PROC menuedraussen: schalterfuermenueausgabeEND PROC menuedraussen;BOOL PROC bittedasmenuezeigen: schalterfuermenueausgabeEND PROC bittedasmenuezeigen;PROC loeschetastendruck: gedruecktetaste:=""END PROC loeschetastendruck;TEXT PROC tastendruck: gedruecktetasteEND PROC tastendruck;PROC setzetastendruck(TEXT CONST taste): gedruecktetaste:=tasteEND PROC setzetastendruck;PROC vpwunsch:vornachschalter :=schaltervorprozedurEND PROC vpwunsch;PROC npwunsch:vornachschalter:= schalternachprozedurEND PROC npwunsch;BOOL PROC vpgewaehlt:vornachschalter END PROC vpgewaehlt;BOOL PROC npgewaehlt:NOT vornachschalterEND PROC npgewaehlt;PROC return(INT CONST zurueckknotenanzahl):zurueckknotenanz:= zurueckknotenanzahl;INT VAR knotenstackhoehe;knotenstackhoehe:=hoehe(s); npwunsch;IF knotenstackhoehe0THEN IF text( k)=hk(aktebene).knotentextTHEN aktebeneDECR 1FI ;FI ;zurueckknotenzaehler INCR 1PER ;END PROC holenaechstenstackknoten;PROC knotenaufstackablegen( KNOTEN VAR stackknoten):push(s,k)END PROC knotenaufstackablegen;PROC setzevergleichsknoten(KNOTEN CONST vglknoten):k:=vglknotenEND PROC setzevergleichsknoten;KNOTEN PROC vergleichsknoten:kEND PROC vergleichsknoten ;PROC beendendessystembauminterpreters:setzeprogrammende(TRUE );return(1)END PROC beendendessystembauminterpreters;PROC initsybifunktionen: programmendeschalter:=FALSE ;verteilteanwendung:=FALSE ;s:=leererstack; aktebene:=0;store(TRUE );INT VAR ind;FOR indFROM 1UPTO maxmenueebenenREP hk( ind).knotentext:="";hk(ind).anwahlpos:=0;PER END PROC initsybifunktionen; PROC legehistorieknotenab(TEXT CONST ktext,INT CONST mpkt):IF aktebene< maxmenueebenenTHEN aktebeneINCR 1;hk(aktebene).knotentext:=ktext;hk(aktebene) .anwahlpos:=mpktFI END PROC legehistorieknotenab;PROC holehistorietext(TEXT VAR ktext,INT VAR kpos,INT CONST nletzter):INT VAR hkzeiger;hkzeiger:= aktebene-nletzter+1;IF hkzeiger<1THEN ktext:=""ELSE ktext:=hk(hkzeiger). knotentext;kpos:=hk(hkzeiger).anwahlposFI END PROC holehistorietext;PROC stopbaisy:logbucheintragabmeldung;benutzerberechtigung:="";enter(1);breakEND PROC stopbaisy;PROC logbucheintragabmeldung:TEXT VAR eintrag:="Abmeldung """; eintragCAT name(myself);eintragCAT """";logeintrag(eintrag)END PROC logbucheintragabmeldung;END PACKET sybifunktionen