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 erstezeileniltextTHEN 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;