summaryrefslogtreecommitdiff
path: root/app/baisy/2.2.1-schulis/src/sybifunktionen
blob: ebe62eab952d0db84de3a0d60707203b54a02846 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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 knotenstackhoehe<zurueckknotenanzahlTHEN holeerstenstackknoten
ELSE holenaechstenstackknotenFI END PROC return;PROC enter(INT CONST 
zurueckknotenanzahl):zurueckknotenanz:=zurueckknotenanzahl;INT VAR 
knotenstackhoehe;knotenstackhoehe:=hoehe(s);vpwunsch;IF knotenstackhoehe<
zurueckknotenanzahlTHEN holeerstenstackknotenELSE holenaechstenstackknotenFI 
END PROC enter;PROC reenter(INT CONST zurueckknotenanzahl):enter(
zurueckknotenanzahl)END PROC reenter;PROC leave(INT CONST zurueckknotenanzahl
):return(zurueckknotenanzahl)END PROC leave;PROC holeerstenstackknoten:IF 
verteilteanwendungTHEN zurueckverzweigenvorbereitenELSE 
lokalerstenstackknotenholenFI .zurueckverzweigenvorbereiten:
programmendeschalter:=TRUE .lokalerstenstackknotenholen:REP pop(s,k)UNTIL 
leer(s)PER ;aktebene:=0.END PROC holeerstenstackknoten;PROC 
holenaechstenstackknoten:INT VAR zurueckknotenzaehler:=0;WHILE (
zurueckknotenzaehler<zurueckknotenanz)REP pop(s,k);IF aktebene>0THEN 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