summaryrefslogtreecommitdiff
path: root/app/schulis/2.2.1/src/5.thesaurus
blob: 571edf933cee07d7f082b0204c278c53ebfd2775 (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
PACKET thesauruszeigenDEFINES thesauruszeigenvorbereiten,thesauruszeigen,
thesaurusblaettern,thesaurusauswahl:LET listenmaskenname="mu objektliste";
LET niltext="",markoff=" ",markon="x";LET andenanfang=1,andasende=2,vorwaerts
=3,rueckwaerts=4;LET zeileninliste=18,ausgabelaenge=71;THESAURUS VAR 
dateiliste;TEXT VAR markmerker;INT VAR erstezeile,letztezeile;PROC 
thesauruszeigenvorbereiten(THESAURUS CONST th,BOOL VAR istleer):dateiliste:=
COMPR th;letztezeile:=highestentry(dateiliste);markmerker:=letztezeile*
markoff;erstezeile:=1;istleer:=letztezeile=0;END PROC 
thesauruszeigenvorbereiten;PROC thesauruszeigen:standardstartproc(
listenmaskenname);eineseitezeigen;standardnproc;END PROC thesauruszeigen;
PROC thesaurusblaettern(INT CONST wohin):INT VAR merkeerstezeile:=erstezeile;
SELECT wohinOF CASE andenanfang:andendateianfangCASE andasende:andasdateiende
CASE vorwaerts:vorwaertsblaetternindateiCASE rueckwaerts:
rueckwaertsblaetternindateiEND SELECT ;IF merkeerstezeile<>erstezeileTHEN 
speicheremarkierungen(merkeerstezeile);eineseitezeigen;ELSE standardmeldung(
72,niltext);FI ;leave(1).andendateianfang:IF erstezeile<>1THEN erstezeile:=1;
FI .andasdateiende:IF erstezeile<letztezeile-zeileninliste+1THEN erstezeile:=
letztezeile-zeileninliste+1;FI .vorwaertsblaetternindatei:IF erstezeile<
letztezeile-zeileninliste+1THEN erstezeileINCR zeileninliste;FI .
rueckwaertsblaetternindatei:erstezeile:=max(1,erstezeile-zeileninliste).END 
PROC thesaurusblaettern;THESAURUS PROC thesaurusauswahl:THESAURUS VAR auswahl
:=emptythesaurus;INT VAR i;speicheremarkierungen(erstezeile);FOR iFROM 1UPTO 
letztezeileREP IF (markmerkerSUB i)=markonTHEN insert(auswahl,name(dateiliste
,i));FI ;PER ;auswahlEND PROC thesaurusauswahl;PROC speicheremarkierungen(
INT CONST erstezeile):INT VAR i;FOR iFROM 1UPTO zeileninlisteREP IF 
standardmaskenfeld(2*i)<>niltextTHEN replace(markmerker,erstezeile+i-1,markon
);ELSE replace(markmerker,erstezeile+i-1,markoff);FI PER END PROC 
speicheremarkierungen;PROC eineseitezeigen:INT VAR i;FOR iFROM 1UPTO 
zeileninlisteREP IF aktzeile<=letztezeileTHEN standardmaskenfeld(eintrag,i*2+
1);standardmaskenfeld(markiert,i*2);ELSE standardmaskenfeld(spaces,i*2+1);
standardmaskenfeld(niltext,i*2);feldschutz(i*2);FI PER ;infeld(2).markiert:
IF (markmerkerSUB (aktzeile))=markonTHEN markonELSE niltextFI .aktzeile:
erstezeile+i-1.eintrag:text(name(dateiliste,aktzeile),ausgabelaenge).spaces:
text(niltext,ausgabelaenge).END PROC eineseitezeigen;THESAURUS OP COMPR (
THESAURUS CONST th):THESAURUS VAR res:=emptythesaurus;TEXT VAR eintrag;INT 
VAR index:=0;get(th,eintrag,index);WHILE index>0REP insert(res,eintrag);get(
th,eintrag,index);PER ;resEND OP COMPR ;END PACKET thesauruszeigen;