summaryrefslogtreecommitdiff
path: root/app/schulis-simulationssystem/3.0/src/ls-DIALOG 2.simsel
diff options
context:
space:
mode:
Diffstat (limited to 'app/schulis-simulationssystem/3.0/src/ls-DIALOG 2.simsel')
-rw-r--r--app/schulis-simulationssystem/3.0/src/ls-DIALOG 2.simsel9
1 files changed, 9 insertions, 0 deletions
diff --git a/app/schulis-simulationssystem/3.0/src/ls-DIALOG 2.simsel b/app/schulis-simulationssystem/3.0/src/ls-DIALOG 2.simsel
new file mode 100644
index 0000000..b2a5323
--- /dev/null
+++ b/app/schulis-simulationssystem/3.0/src/ls-DIALOG 2.simsel
@@ -0,0 +1,9 @@
+PACKETls dialog 2DEFINES some, one,ls exit key,some with max, some exactly,double some,infix namen,ohne praefix,not empty:LET maxentries=200;LET zeichenstring= ""1""27""3""10""13""12""8""2"o ?",oben untenreturnruboutkringelblank=""3""10""13""12"o ",qeinsneunh="w19m";LETzurueck=""8"",piep=""7"",hop=1,esc=2,oben=3,unten=4,return=5,rubout=6,links=7,rechts=8,kringel=9,leertaste=10,fragezeichen=11,letztes zeichen=11;LET punkt = ".",blank = " ";LET zwei thesauri = TRUE;
+INT VARx,y,xsize,ysize,maxeintraege,anzahl:=0,ersteauswahlzeile,virtuellercursor,reellercursor,ausgewaehlte,aufbauzaehler,minsel,maxsel;TEXT VARkennzeile1,kennzeile2,registrierkette:="",exitkey:="",hopmoeglichkeiten,eingabemoeglichkeiten;BOOL VARabbruch,auswahlende,wechsel,linkerth,info,parallelauswahl;THESAURUS VARthes1,thes2;DATASPACE VARds;BOUND ROWmaxentriesTEXT VAReintrag;ROW2TEXT CONSTfehlermeldung:=ROW2TEXT:("Unzulässige Cursorwerte bei der Auswahl","Fenster für Auswahl zu klein (x < 56 / y < 15)");ROW18TEXT CONSThinweis:=ROW18TEXT:(" Bitte warten...!"," Info: <?> Weiter: <ESC><w> Menü: <ESC><m>","Weitere Einträge"," Info: <?> Menü: <ESC><m>"," INFORMATIONEN ZUR AUSWAHL AUS DER LISTE"," Positionierung der Schreibmarke:"," Pfeil auf/ab : eine Position nach oben/unten"," HOP Pfeil auf/ab : auf erste/letzte Pos. der Seite"," ESC 1/ESC 9 : auf erste/letzte Pos. der Liste"," Ankreuzen und Löschen von Kreuzen:"," RETURN/x : den Eintrag ankreuzen"," RUBOUT/o/Leertaste: Kreuz vor dem Eintrag löschen"," HOP RETURN/HOP x : alle folgenden Eintr. ankreuzen"," HOP RUBOUT/HOP o : alle folgenden Kreuze löschen"," /HOP Leertaste","Die Anzahl der ausgewählten Einträge ist falsch. Weiter mit beliebiger Taste"," Weiter mit beliebiger Taste!"," Pfeil links/rechts: zwischen den beiden Listen wechseln");TEXT PROClsexitkey:exitkeyEND PROClsexitkey;PROClsexitkey(TEXT CONSTausgang):exitkey:=ausgang;END PROClsexitkey;PROCauswahl(THESAURUS CONSTt,TEXT CONSTtext1,text2,TEXT VARmarkers):IFaufbauzaehler>0THENwerteinitialisieren;namenbesorgen;bildschirmaufbauen;wechsel:=TRUE END IF;IFparallelauswahlTHENaufbauzaehlerDECR1ELSEaufbauzaehlerDECR2END IF;IFaufbauzaehler<0THENauswaehlenlassenEND IF.werteinitialisieren:eintrag:=ds;kennzeile1:=text1;kennzeile2:=text2;abbruch:=FALSE;wechsel:=FALSE;virtuellercursor:=1;reellercursor:=1;ersteauswahlzeile:=y+4;anzahl:=0;eingabemoeglichkeiten:=zeichenstring+markers;hopmoeglichkeiten:=obenuntenreturnruboutkringelblank+markers;ausgewaehlte:=0;maxeintraege:=ysize-6.namenbesorgen:fischedienamenausdemthesaurus;registrierkette:=anzahl*"o";IFkeineintragvorhandenTHENabbruch:=TRUE;auswahlende:=TRUE;LEAVEauswahlFI.bildschirmaufbauen:gibhinweisaus(kennzeile1,kennzeile2);bauebildschirmauf(1).auswaehlenlassen:kreuzean.fischedienamenausdemthesaurus:INT VARzeiger;FORzeigerFROM1UPTOhighestentry(t)REP IFname(t,zeiger)<>""THENanzahlINCR1;eintrag[anzahl]:=name(t,zeiger)FI PER.keineintragvorhanden:anzahl=0.END PROCauswahl;PROCreellencursorsetzen:INT CONSTmaxlaenge:=min(65,xsize-9);TEXT VARhilf:=marke(virtuellercursor);hilfCATzurueck;hilfCATinvers(subtext(eintrag(virtuellercursor),1,maxlaenge));cursor(x+1,ersteauswahlzeile+reellercursor-1);out(hilf)END PROCreellencursorsetzen;PROCbauebildschirmauf(INT CONSTanfang):gibkopfzeileaus;gibnamenstabelleaus;gibfusszeileaus;loescheggfrestbereich.gibkopfzeileaus:cursor(x+1,ersteauswahlzeile-1);IFreellercursor=virtuellercursorTHENout((xsize-2)*punkt)ELSEout((xsize-length(hinweis[3])-5)*punkt);out(invers(hinweis[3]))FI;line.gibnamenstabelleaus:INT VARzeiger,zaehler:=-1;FORzeigerFROManfangUPTOgrenzeREPzaehlerINCR1;cursor(x+1,ersteauswahlzeile+zaehler);outtext(marke(zeiger)+subtext(eintrag[zeiger],1,65),1,xsize-4);out(" ");PER.gibfusszeileaus:cursor(x+1,ersteauswahlzeile+zaehler+1);IF NOT((virtuellercursor+maxeintraege-reellercursor)<anzahl)THENout((xsize-2)*punkt)ELSEout((xsize-length(hinweis[3])-5)*punkt+invers(hinweis[3]));FI.loescheggfrestbereich:IFzaehler+1<maxeintraegeTHENloeschebildschirmrestFI.loeschebildschirmrest:TEXT VARzeile:=(xsize-2)*blank;FORzeigerFROMrestanfangUPTOrestendeREPcursor(x+1,zeiger);out(zeile)PER.restanfang:ersteauswahlzeile+zaehler+2.restende:ersteauswahlzeile+maxeintraege.grenze:min(anzahl,anfang+maxeintraege-1).END PROCbauebildschirmauf;TEXT PROCmarke(INT CONSTzeiger):" "+(registrierketteSUBzeiger)+" ".END PROCmarke;BOOL PROCangekreuzt(INT CONSTzeiger):(registrierketteSUBzeiger)<>"o"END PROC
+angekreuzt;PROCkreuzean:auswahlende:=FALSE;wechsel:=FALSE;reellencursorsetzen;REPzeichenlesen;zeicheninterpretierenUNTILauswahlendePER.zeichenlesen:TEXT VARzeichen;inchar(zeichen).zeicheninterpretieren:SELECTpos(eingabemoeglichkeiten,zeichen)OF CASEhop:hopkommandoverarbeitenCASEesc:esckommandoverarbeitenCASEoben:nachobenCASEunten:nachuntenCASEreturn:ankreuzenweiter;evtlaufhoerenCASErubout:auskreuzenweiterCASEkringel,leertaste:auskreuzen(virtuellercursor,TRUE)CASElinks:nachlinkswennerlaubtCASErechts:nachrechtswennerlaubtCASEfragezeichen:info:=TRUE;auswahlende:=TRUE CASE0:out(piep)OTHERWISEankreuzen(virtuellercursor,zeichen,TRUE);evtlaufhoerenEND SELECT.evtlaufhoeren:IFmaxsel=1THENauswahlende:=TRUE;IFparallelauswahlTHENwechsel:=TRUE END IF;loeschecursor;LEAVEkreuzeanFI.END PROCkreuzean;PROChopkommandoverarbeiten:zweiteszeichenlesen;zeicheninterpretieren.zweiteszeichenlesen:TEXT VARzweiteszeichen;inchar(zweiteszeichen).zeicheninterpretieren:SELECTpos(hopmoeglichkeiten,zweiteszeichen)OF CASE0:out(piep)CASE1:hopnachobenCASE2:hopnachuntenCASE3:zweiteszeichen:=eingabemoeglichkeitenSUB(letzteszeichen+1);alledarunterankreuzenCASE4,5,6:alledarunterloeschenOTHERWISEalledarunterankreuzenEND SELECT.alledarunterankreuzen:INT VARi;FORiFROMvirtuellercursorUPTOanzahlREPankreuzen(i,zweiteszeichen,FALSE)PER;bildaktualisieren;reellencursorsetzen.alledarunterloeschen:INT VARj;FORjFROMvirtuellercursorUPTOanzahlREPauskreuzen(j,FALSE)PER;bildaktualisieren;reellencursorsetzen.hopnachoben:IFganzobenTHENout(piep)ELIFobenaufderseiteTHENraufblaetternELSEtopofpageFI.ganzoben:virtuellercursor=1.obenaufderseite:reellercursor=1.raufblaettern:virtuellercursorDECRmaxeintraege;virtuellercursor:=max(virtuellercursor,1);bauebildschirmauf(virtuellercursor);reellencursorsetzen.topofpage:loeschecursor;virtuellercursorDECR(reellercursor-1);reellercursor:=1;reellencursorsetzen.hopnachunten:IFganzuntenTHENout(piep)ELIFuntenaufderseiteTHENrunterblaetternELSEbottomofpageFI.ganzunten:virtuellercursor=anzahl.untenaufderseite:reellercursor>maxeintraege-1.runterblaettern:INT VARaltervirtuellercursor:=virtuellercursor;virtuellercursorINCRmaxeintraege;virtuellercursor:=min(virtuellercursor,anzahl);reellercursor:=virtuellercursor-altervirtuellercursor;bauebildschirmauf(altervirtuellercursor+1);reellencursorsetzen.bottomofpage:loeschecursor;altervirtuellercursor:=virtuellercursor;virtuellercursorINCR(maxeintraege-reellercursor);virtuellercursor:=min(anzahl,virtuellercursor);reellercursorINCR(virtuellercursor-altervirtuellercursor);reellencursorsetzen.END PROChopkommandoverarbeiten;PROCesckommandoverarbeiten:TEXT VARzweiteszeichen;inchar(zweiteszeichen);SELECTpos(qeinsneunh,zweiteszeichen)OF CASE1:pruefeobausstiegerlaubtCASE2:zeigeanfangCASE3:zeigeendeCASE4:loeschecursor;abbruch:=TRUE;auswahlende:=TRUE;registrierkette:=""OTHERWISEout(piep)END SELECT.zeigeanfang:IFvirtuellercursor=1THENout(piep)ELIFvirtuellercursor=reellercursorTHENloeschecursor;virtuellercursor:=1;reellercursor:=1;reellencursorsetzenELSEvirtuellercursor:=1;reellercursor:=1;bauebildschirmauf(1);reellencursorsetzenFI.zeigeende:IFvirtuellercursor=anzahlTHENout(piep)ELIFendeaufbildschirmTHENloeschecursor;reellercursorINCR(anzahl-virtuellercursor);virtuellercursor:=anzahl;reellencursorsetzenELSEvirtuellercursor:=anzahl;reellercursor:=maxeintraege;bauebildschirmauf(anzahl-(maxeintraege-1));reellencursorsetzenFI.endeaufbildschirm:(reellercursor+anzahl-virtuellercursor)<maxeintraege+1.pruefeobausstiegerlaubt:IFausgewaehlte>=minselANDausgewaehlte<=maxselTHENloeschecursor;auswahlende:=TRUE ELSEout(piep);footnote(hinweis[16]);pause;IFmaxsel>1THENfootnote(hinweis[2])ELSEfootnote(hinweis[16])END IF END IF END PROCesckommandoverarbeiten;PROCankreuzen(INT CONSTeintrag,TEXT CONSTzeichen,BOOL CONSTcursorsetzen):IF NOTangekreuzt(eintrag)THENausgewaehlteINCR1END IF;replace(registrierkette,eintrag,zeichen);IFcursorsetzenTHENreellencursorsetzen;END IF END PROCankreuzen;PROCankreuzenweiter:ankreuzen(virtuellercursor,
+eingabemoeglichkeitenSUB(letzteszeichen+1),FALSE);IFvirtuellercursor<anzahlTHENnachuntenFI;IFvirtuellercursor=anzahlTHENreellencursorsetzenFI END PROCankreuzenweiter;PROCauskreuzenweiter:IF NOTangekreuzt(virtuellercursor)THENout(piep);LEAVEauskreuzenweiterFI;auskreuzen(virtuellercursor,FALSE);IFvirtuellercursor<anzahlTHENnachuntenELSEloeschecursorFI;reellencursorsetzen.END PROCauskreuzenweiter;PROCauskreuzen(INT CONSTeintrag,BOOL CONSTcursorsetzen):IFcursorsetzenTHEN IF NOTangekreuzt(eintrag)THENout(piep);LEAVEauskreuzenELSEreplace(registrierkette,eintrag,"o");ausgewaehlteDECR1;reellencursorsetzen;END IF ELSE IFangekreuzt(eintrag)THENausgewaehlteDECR1END IF;replace(registrierkette,eintrag,"o")END IF END PROCauskreuzen;PROCbildaktualisieren:INT VARob,un,i,zaehler:=-1;ob:=virtuellercursor-reellercursor+1;un:=min(ob+maxeintraege-1,anzahl);FORiFROMobUPTOunREPzaehlerINCR1;cursor(x+1,ersteauswahlzeile+zaehler);out(marke(i))PER END PROCbildaktualisieren;PROCnachoben:IFnochnichtobenTHENgehenachobenELSEout(piep)FI.nochnichtoben:virtuellercursor>1.gehenachoben:IFreellercursor=1THENscrolldownELSEcursorupFI.scrolldown:virtuellercursorDECR1;bauebildschirmauf(virtuellercursor);reellencursorsetzen.cursorup:loeschecursor;virtuellercursorDECR1;reellercursorDECR1;reellencursorsetzenEND PROCnachoben;PROCnachunten:IFnochnichtuntenTHENgehenachuntenELSEout(piep)FI.nochnichtunten:virtuellercursor<anzahl.gehenachunten:IFreellercursor>maxeintraege-1THENscrollupELSEcursordownFI.scrollup:virtuellercursorINCR1;bauebildschirmauf(virtuellercursor-(maxeintraege-1));reellencursorsetzen.cursordown:loeschecursor;virtuellercursorINCR1;reellercursorINCR1;reellencursorsetzenEND PROCnachunten;PROCnachlinkswennerlaubt:IFparallelauswahlAND NOTlinkerthTHENwechsel:=TRUE;auswahlende:=TRUE;loeschecursorELSEout(piep)END IF END PROCnachlinkswennerlaubt;PROCnachrechtswennerlaubt:IFparallelauswahlANDlinkerthTHENwechsel:=TRUE;auswahlende:=TRUE;loeschecursorELSEout(piep)END IF END PROCnachrechtswennerlaubt;PROCloeschecursor:cursor(x+1,ersteauswahlzeile+reellercursor-1);outtext(marke(virtuellercursor)+subtext(eintrag(virtuellercursor),1,65),1,xsize-4);out(" ");END PROCloeschecursor;PROCgibhinweisaus(TEXT CONSTt1,t2):cursor(x+1,y+1);out(center(xsize-2,invers(t1)));cursor(x+1,y+2);out(center(xsize-2,t2));END PROCgibhinweisaus;PROCuntersuchebildschirmmasszahlen(TEXT CONSTt1,t2):IFunzulaessigecursorwerteTHENerrorstop(fehlermeldung[1])ELIFfensteristzukleinTHENerrorstop(fehlermeldung[2])FI.unzulaessigecursorwerte:(x+xsize)>80COR(y+ysize)>25CORx<1CORy<1CORxsize>79CORysize>24.fensteristzuklein:(xsize)<39COR(ysize)<15CORlength(t1)>(xsize-5)CORlength(t2)>(xsize-5)COR(xsize<39AND NOTparallelauswahl)END PROCuntersuchebildschirmmasszahlen;TEXT PROCggfgekuerztertext(TEXT CONSTtext):IFlength(text)>(xsize-8)THENsubtext(text,1,xsize-10)+".."ELSEtextFI END PROCggfgekuerztertext;PROCzeigebedieninfo(INT CONSTspalte,zeile,breite,hoehe):INT VARi,extrazeile:=0;IFparallelauswahlTHENextrazeile:=1END IF;notierehinweisueberschrift;notierepositionierhinweise;IFnochplatzvorhandenTHENnotiereauswahlmoeglichkeitenaufalterseiteELSEwechsleaufnaechsteseite;notierehinweisueberschrift;notiereauswahlmoeglichkeitenaufneuerseiteFI;stellealtenbildschirmzustandwiederher.notierehinweisueberschrift:cursor(spalte+1,zeile+1);out(center(breite-2,hinweis[5]));cursor(spalte+1,zeile+2);out("",breite-2).notierepositionierhinweise:cursor(spalte+1,zeile+3);out(hinweis[6],breite-2);cursor(spalte+1,zeile+4);out("",breite-2);IFparallelauswahlTHENcursor(spalte+1,zeile+5);out(hinweis[18],breite-2)END IF;FORiFROM5UPTO7REPcursor(spalte+1,zeile+i+extrazeile);out(hinweis[i+2],breite-2)PER.notiereauswahlmoeglichkeitenaufalterseite:cursor(spalte+1,zeile+8+extrazeile);out("",breite-2);cursor(spalte+1,zeile+9+extrazeile);out(hinweis[10],breite-2);cursor(spalte+1,zeile+10+extrazeile);out("",breite-2);FORiFROM11UPTO15REPcursor(spalte+1,zeile+i+extrazeile);out(hinweis[i],breite-2)PER;loeschedierestlichenzeilen;footnote(hinweis[17]);
+cursorinruhestellung;clearbuffer.loeschedierestlichenzeilen:FORiFROMzeile+16+extrazeileUPTOzeile+hoehe-2REPcursor(spalte+1,i);out("",breite-2)PER.wechsleaufnaechsteseite:loescheseitenrest;footnote(hinweis[17]);cursorinruhestellung;clearbuffer;pause.loescheseitenrest:INT VARzaehler;FORzaehlerFROM8+extrazeileUPTOhoehe-2REPcursor(spalte+1,zeile+zaehler);out("",breite-2)PER.notiereauswahlmoeglichkeitenaufneuerseite:cursor(spalte+1,zeile+3);out(hinweis[10],breite-2);cursor(spalte+1,zeile+4);out("",breite-2);FORiFROM5UPTO9REPcursor(spalte+1,zeile+i);out(hinweis[i+6],breite-2)PER;FORzaehlerFROM10UPTOhoehe-2REPcursor(spalte+1,zeile+zaehler);out("",breite-2)PER.cursorinruhestellung:cursor(spalte+1,zeile+hoehe-1).stellealtenbildschirmzustandwiederher:clearbuffer;pause;IFparallelauswahlORmaxsel>1THENfootnote(hinweis[2])ELSEfootnote(hinweis[4])END IF.nochplatzvorhanden:hoehe>16+extrazeileEND PROCzeigebedieninfo;THESAURUS PROCinit(INT CONSTspalte,zeile,breite,hoehe,lminauswahl,lmaxauswahl,rminauswahl,rmaxauswahl,THESAURUS CONSTth1,th2,BOOL CONSTzweith,TEXT CONSTt1,t2,t3,t4,TEXT VARlmarkers,rmarkers):INT VARlx,rx,lxsize,rxsize,lvirtcursor,rvirtcursor,lsel:=0,rsel:=0,lanzahl:=0,ranzahl:=0;TEXT VARlregistrierkette,rregistrierkette,lhopmoeglichkeiten,leingabemoeglichkeiten,rhopmoeglichkeiten,reingabemoeglichkeiten,text1,text2,text3,text4;DATASPACE VARlds,rds;AREA VARa;ueberpruefegroesse;IFzweithTHENsteuerezweithesaurusauswahlenELSEsteuereeinethesaurusauswahlEND IF.ueberpruefegroesse:fill(a,spalte,zeile,breite,hoehe+1).steuerezweithesaurusauswahlen:doppelinit;REPEATbearbeitelinkenthesaurus;wechslevonlinksnachrechts;bearbeiterechtenthesaurus;wechslevonrechtsnachlinks;PER;emptythesaurus.steuereeinethesaurusauswahl:einzelinit;minsel:=lminauswahl;maxsel:=lmaxauswahl;REPauswahl(th1,text1,text2,lmarkers);IFinfoTHENzeigebedieninfo(spalte,zeile,breite,hoehe);info:=FALSE;auswahlende:=FALSE;gibhinweisaus(text1,text2);bauebildschirmauf(virtuellercursor-reellercursor+1)END IF UNTILauswahlendeEND REPEAT;einzelaufraeumen.einzelinit:aufbauzaehler:=1;x:=spalte;y:=zeile;xsize:=breite;ysize:=hoehe;info:=FALSE;auswahlende:=FALSE;parallelauswahl:=FALSE;ds:=nilspace;text1:=ggfgekuerztertext(t1);text2:=ggfgekuerztertext(t2);untersuchebildschirmmasszahlen(text1,text2);zeichneeinzelkasten;setzestdfussnote.zeichneeinzelkasten:fill(a,x+1,y+1,xsize-2,ysize-2);outframe(a).einzelaufraeumen:footnote(hinweis[1]);thes1:=emptythesaurus;lmarkers:="";IF NOTabbruchTHENthes1:=erzeugeausgabe(registrierkette,lmarkers);END IF;forget(lds);forget(rds);forget(ds);thes1.doppelinit:aufbauzaehler:=2;lx:=spalte;lxsize:=(breite+1)DIV2;rx:=spalte+lxsize-1;rxsize:=lxsize;lvirtcursor:=1;rvirtcursor:=1;lregistrierkette:="";rregistrierkette:="";leingabemoeglichkeiten:="";lhopmoeglichkeiten:="";reingabemoeglichkeiten:="";rhopmoeglichkeiten:="";lanzahl:=1;ranzahl:=1;lds:=nilspace;rds:=nilspace;thes1:=emptythesaurus;thes2:=emptythesaurus;y:=zeile;ysize:=hoehe;x:=lx;xsize:=lxsize;forget(ds);ds:=lds;parallelauswahl:=TRUE;text1:=ggfgekuerztertext(t1);text2:=ggfgekuerztertext(t2);text3:=ggfgekuerztertext(t3);text4:=ggfgekuerztertext(t4);untersuchebildschirmmasszahlen(text1,text2);schreibedoppelkasten;footnote(hinweis[2]).bearbeitelinkenthesaurus:linkerth:=TRUE;auswahl(th1,text1,text2,lmarkers);lsel:=ausgewaehlte;IFabbruchTHENbearbeiteabbruchELIFinfoTHENzeigebedieninfo(spalte,zeile,breite,hoehe);schreibemittellinie;gibhinweisaus(text1,text2);bauebildschirmauf(virtuellercursor-reellercursor+1)ELIF NOTwechselTHEN IFrsel>=rminauswahlANDrsel<=rmaxauswahlTHENforget(lds);lds:=ds;lregistrierkette:=registrierkette;lanzahl:=anzahl;abganginordnungELSEauswahlendeungueltigEND IF END IF.wechslevonlinksnachrechts:x:=rx;xsize:=rxsize;wechsel:=FALSE;lanzahl:=anzahl;anzahl:=ranzahl;auswahlende:=FALSE;lvirtcursor:=virtuellercursor-reellercursor+1;virtuellercursor:=rvirtcursor;reellercursor:=1;lregistrierkette:=registrierkette;registrierkette:=rregistrierkette;lhopmoeglichkeiten:=hopmoeglichkeiten;hopmoeglichkeiten:=
+rhopmoeglichkeiten;leingabemoeglichkeiten:=eingabemoeglichkeiten;eingabemoeglichkeiten:=reingabemoeglichkeiten;ausgewaehlte:=rsel;forget(lds);lds:=ds;forget(ds);ds:=rds;forget(rds);minsel:=rminauswahl;maxsel:=rmaxauswahl;linkerth:=FALSE;IFinfoTHENinfo:=FALSE;auswahlende:=FALSE;gibhinweisaus(text3,text4);bauebildschirmauf(virtuellercursor-reellercursor+1)END IF.bearbeiterechtenthesaurus:auswahl(th2,text3,text4,rmarkers);rsel:=ausgewaehlte;IFabbruchTHENbearbeiteabbruchELIFinfoTHENzeigebedieninfo(spalte,zeile,breite,hoehe);schreibemittellinie;gibhinweisaus(text3,text4);bauebildschirmauf(virtuellercursor-reellercursor+1)ELIF NOTwechselTHEN IFlsel>=lminauswahlANDlsel<=lmaxauswahlTHENforget(rds);rds:=ds;rregistrierkette:=registrierkette;ranzahl:=anzahl;abganginordnungELSEauswahlendeungueltigEND IF END IF.wechslevonrechtsnachlinks:x:=lx;xsize:=lxsize;wechsel:=FALSE;auswahlende:=FALSE;rvirtcursor:=virtuellercursor-reellercursor+1;virtuellercursor:=lvirtcursor;reellercursor:=1;rregistrierkette:=registrierkette;registrierkette:=lregistrierkette;rhopmoeglichkeiten:=hopmoeglichkeiten;hopmoeglichkeiten:=lhopmoeglichkeiten;reingabemoeglichkeiten:=eingabemoeglichkeiten;eingabemoeglichkeiten:=leingabemoeglichkeiten;ausgewaehlte:=lsel;forget(rds);rds:=ds;forget(ds);ds:=lds;forget(lds);minsel:=lminauswahl;maxsel:=lmaxauswahl;ranzahl:=anzahl;anzahl:=lanzahl;IFinfoTHENinfo:=FALSE;auswahlende:=FALSE;gibhinweisaus(text1,text2);bauebildschirmauf(virtuellercursor-reellercursor+1)END IF.abganginordnung:footnote(hinweis[1]);eintrag:=lds;anzahl:=lanzahl;thes1:=erzeugeausgabe(lregistrierkette,lmarkers);eintrag:=rds;anzahl:=ranzahl;thes2:=erzeugeausgabe(rregistrierkette,rmarkers);forget(lds);forget(rds);forget(ds);LEAVEinitWITHemptythesaurus.bearbeiteabbruch:footnote(hinweis[1]);lmarkers:="";rmarkers:="";forget(lds);forget(rds);forget(ds);LEAVEinitWITHemptythesaurus.auswahlendeungueltig:out(piep);footnote(hinweis[16]);pause;footnote(hinweis[2]).setzestdfussnote:IFlmaxauswahl>1THENfootnote(hinweis[2])ELSEfootnote(hinweis[4])END IF.schreibedoppelkasten:fill(a,spalte+1,zeile+1,breite-2,hoehe-2);outframe(a);cursor(rx,zeile);out(balkenoben);schreibemittellinie;cursor(rx,zeile+hoehe-1);out(balkenunten).schreibemittellinie:INT VARi;FORiFROMzeile+1UPTOzeile+hoehe-2REPcursor(rx,i);out(senkrecht)PER END PROCinit;THESAURUS PROCerzeugeausgabe(TEXT CONSTkette,TEXT VARmarkers):INT VARi;THESAURUS VARausgabe:=emptythesaurus;markers:="";FORiFROM1UPTOanzahlREPEAT IF(ketteSUBi)<>"o"THENinsert(ausgabe,eintrag[i]);markersCAT(ketteSUBi);END IF PER;ausgabeEND PROCerzeugeausgabe;THESAURUS PROCinfixnamen(THESAURUS CONSTt,TEXT CONSTinfix):THESAURUS VARtt:=emptythesaurus;INT VARi;FORiFROM1UPTOhighestentry(t)REP TEXT VAReintrag:=name(t,i);IFeintragenthaeltinfixTHENinsert(tt,eintrag)FI PER;tt.eintragenthaeltinfix:pos(eintrag,infix)<>0END PROCinfixnamen;THESAURUS PROCinfixnamen(THESAURUS CONSTt,INT CONSTdateityp):THESAURUS VARtt:=emptythesaurus;INT VARi;FORiFROM1UPTOhighestentry(t)REP TEXT VAReintrag:=name(t,i);IFeintragenthaeltinfixTHENinsert(tt,eintrag)FI PER;tt.eintragenthaeltinfix:eintrag<>""CANDtype(old(eintrag))=dateityp.END PROCinfixnamen;THESAURUS PROCinfixnamen(THESAURUS CONSTt,TEXT CONSTinfix1,INT CONSTdateityp):THESAURUS VARtt:=emptythesaurus;INT VARi;FORiFROM1UPTOhighestentry(t)REP TEXT VAReintrag:=name(t,i);IFeintragenthaeltinfixTHENinsert(tt,eintrag)FI PER;tt.eintragenthaeltinfix:(pos(eintrag,infix1)<>0)AND(type(old(eintrag))=dateityp).END PROCinfixnamen;THESAURUS PROCinfixnamen(THESAURUS CONSTt,TEXT CONSTinfix1,infix2):THESAURUS VARtt:=emptythesaurus;INT VARi;FORiFROM1UPTOhighestentry(t)REP TEXT VAReintrag:=name(t,i);IFeintragenthaeltinfixTHENinsert(tt,eintrag)FI PER;tt.eintragenthaeltinfix:(pos(eintrag,infix1)<>0)OR(pos(eintrag,infix2)<>0)END PROCinfixnamen;THESAURUS PROCinfixnamen(TEXT CONSTinfix):infixnamen(ALLmyself,infix)END PROCinfixnamen;THESAURUS PROCinfixnamen(TEXT CONSTinfix1,infix2):infixnamen(ALLmyself,infix1,infix2)END PROCinfixnamen;THESAURUS PROC
+ohnepraefix(THESAURUS CONSTthesaurus,TEXT CONSTpraefix):THESAURUS VARt:=emptythesaurus;INT VARzaehler;FORzaehlerFROM1UPTOhighestentry(thesaurus)REP IFname(thesaurus,zaehler)<>""ANDpos(name(thesaurus,zaehler),praefix)=1THENinsert(t,subtext(name(thesaurus,zaehler),length(praefix)+1))FI;PER;tEND PROCohnepraefix;BOOL PROCnotempty(THESAURUS CONSTt):INT VARi;FORiFROM1UPTOhighestentry(t)REP IFname(t,i)<>""THEN LEAVEnotemptyWITH TRUE FI PER;FALSE END PROCnotempty;THESAURUS PROCsome(INT CONSTspalte,zeile,breite,hoehe,THESAURUS CONSTth,TEXT CONSTt1,t2):TEXT VARreturn:="x";init(spalte,zeile,breite,hoehe,0,maxentries,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",return,return)END PROCsome;THESAURUS PROCsome(INT CONSTspalte,zeile,THESAURUS CONSTt,TEXT CONSTt1,t2):some(spalte,zeile,79-spalte+1,24-zeile,t,t1,t2)END PROCsome;THESAURUS PROCsome(THESAURUS CONSTth,TEXT CONSTt1,t2):TEXT VARreturn:="x";init(1,1,79,23,0,maxentries,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",return,return)END PROCsome;TEXT PROCone(INT CONSTspalte,zeile,breite,hoehe,THESAURUS CONSTth,TEXT CONSTt1,t2):TEXT VARreturn:="x";name(init(spalte,zeile,breite,hoehe,0,1,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",return,return),1)END PROCone;TEXT PROCone(INT CONSTspalte,zeile,THESAURUS CONSTt,TEXT CONSTt1,t2):one(spalte,zeile,79-spalte+1,24-zeile,t,t1,t2)END PROCone;TEXT PROCone(THESAURUS CONSTth,TEXT CONSTt1,t2):TEXT VARreturn:="x";name(init(1,1,79,23,0,1,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",return,return),1)END PROCone;PROCdoublesome(INT CONSTzeile,hoehe,leftmin,leftmax,rightmin,rightmax,THESAURUS VARth1,th2,TEXT CONSTt1,t2,t3,t4):TEXT VARreturn:="x";th1:=init(1,zeile,79,hoehe,leftmin,leftmax,rightmin,rightmax,th1,th2,zweithesauri,t1,t2,t3,t4,return,return);th1:=thes1;th2:=thes2;END PROCdoublesome;PROCdoublesome(INT CONSTleftmin,leftmax,rightmin,rightmax,THESAURUS VARth1,th2,TEXT CONSTt1,t2,t3,t4):TEXT VARreturn:="x";th1:=init(1,1,79,23,leftmin,leftmax,rightmin,rightmax,th1,th2,zweithesauri,t1,t2,t3,t4,return,return);th1:=thes1;th2:=thes2;END PROCdoublesome;PROCdoublesome(INT CONSTzeile,hoehe,leftmin,leftmax,rightmin,rightmax,THESAURUS VARth1,th2,TEXT CONSTt1,t2,t3,t4,TEXT VARlmarkers,rmarkers):th1:=init(1,zeile,79,hoehe,leftmin,leftmax,rightmin,rightmax,th1,th2,zweithesauri,t1,t2,t3,t4,lmarkers,rmarkers);th1:=thes1;th2:=thes2;END PROCdoublesome;PROCdoublesome(INT CONSTleftmin,leftmax,rightmin,rightmax,THESAURUS VARth1,th2,TEXT CONSTt1,t2,t3,t4,TEXT VARlmarkers,rmarkers):th1:=init(1,1,79,23,leftmin,leftmax,rightmin,rightmax,th1,th2,zweithesauri,t1,t2,t3,t4,lmarkers,rmarkers);th1:=thes1;th2:=thes2;END PROCdoublesome;THESAURUS PROCsomewithmax(INT CONSTspalte,zeile,breite,hoehe,THESAURUS CONSTth,INT CONSTmax,TEXT CONSTt1,t2,TEXT VARmarkers):init(spalte,zeile,breite,hoehe,0,max,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",markers,markers)END PROCsomewithmax;THESAURUS PROCsomewithmax(THESAURUS CONSTth,INT CONSTmax,TEXT CONSTt1,t2,TEXT VARmarkers):init(1,1,79,23,0,max,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",markers,markers)END PROCsomewithmax;THESAURUS PROCsomewithmax(INT CONSTspalte,zeile,breite,hoehe,THESAURUS CONSTth,INT CONSTmax,TEXT CONSTt1,t2):TEXT VARmarker:="x";init(spalte,zeile,breite,hoehe,0,max,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",marker,marker)END PROCsomewithmax;THESAURUS PROCsomewithmax(THESAURUS CONSTth,INT CONSTmax,TEXT CONSTt1,t2):TEXT VARmarker:="x";init(1,1,79,23,0,max,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",marker,marker)END PROCsomewithmax;THESAURUS PROCsomeexactly(INT CONSTspalte,zeile,breite,hoehe,THESAURUS CONSTth,INT CONSTanzahl,TEXT CONSTt1,t2):TEXT VARtx:="x";init(spalte,zeile,breite,hoehe,anzahl,anzahl,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",tx,tx)END PROCsomeexactly;THESAURUS PROCsomeexactly(THESAURUS CONSTth,INT CONSTanzahl,TEXT CONSTt1,t2):TEXT VARtx:="x";init(1,1,79,23,anzahl,anzahl,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",tx,tx)END PROCsomeexactly;THESAURUS PROC
+someexactly(INT CONSTspalte,zeile,breite,hoehe,THESAURUS CONSTth,INT CONSTanzahl,TEXT CONSTt1,t2,TEXT VARmarkers):init(spalte,zeile,breite,hoehe,anzahl,anzahl,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",markers,markers)END PROCsomeexactly;THESAURUS PROCsomeexactly(THESAURUS CONSTth,INT CONSTanzahl,TEXT CONSTt1,t2,TEXT VARmarkers):init(1,1,79,23,anzahl,anzahl,0,0,th,emptythesaurus,NOTzweithesauri,t1,t2,"","",markers,markers)END PROCsomeexactly;END PACKETlsdialog2;
+