diff options
Diffstat (limited to 'dialog/ls-DIALOG 2')
-rw-r--r-- | dialog/ls-DIALOG 2 | 844 |
1 files changed, 0 insertions, 844 deletions
diff --git a/dialog/ls-DIALOG 2 b/dialog/ls-DIALOG 2 deleted file mode 100644 index 7fb5d36..0000000 --- a/dialog/ls-DIALOG 2 +++ /dev/null @@ -1,844 +0,0 @@ -(* - - ********************************************************* - ********************************************************* - ** ** - ** ls-DIALOG 2 ** - ** ** - ** Version 1.2 ** - ** ** - ** (Stand: 04.11.88) ** - ** ** - ** ** - ** Autor: Wolfgang Weber, Bielefeld ** - ** ** - ** ** - ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld ** - ** ** - ** Copyright (C) 1988 ERGOS GmbH, Siegburg ** - ** ** - ********************************************************* - ********************************************************* - - *) -PACKET ls dialog 2 DEFINES - some, - one, - infix namen, - ohne praefix, - not empty: -LET maxentries = 200; -LET zeichenstring = ""1""27""3""10""13""12"xo?", - oben unten return rubout kreuz kringel = ""3""10""13""12"xo", - q eins neun h = "q19h"; -LET zurueck = ""8"", - piep = ""7""; -LET hop = 1, - esc = 2, - oben = 3, - unten = 4, - return = 5, - rubout = 6, - - kreuz = 7, - kringel = 8, - frage = 9; -LET punkt = ".", - gleich = "=", - blank = " "; -INT VAR x, - y, - xsize, - ysize, - maxeintraege, - anzahl, - erste auswahlzeile, - virtueller cursor, - reeller cursor; -TEXT VAR kennzeile 1, - kennzeile 2, - registrierkette :: ""; -BOOL VAR abbruch, - auswahlende; -BOUND ROW max entries TEXT VAR eintrag; -ROW 2 TEXT CONST fehlermeldung :: ROW 2 TEXT : ( - - "Unzulässige Cursorwerte bei der Auswahl", - "Fenster für Auswahl zu klein (x < 56 / y < 15)"); -ROW 24 TEXT CONST hinweis :: ROW 24 TEXT : ( - " Bitte warten... Ich sortiere und räume auf!", - " Info: <?> Fertig: <ESC><q> Abbrechen: <ESC><h>", - " Zum Weitermachen bitte irgendeine Taste tippen!", - "Weitere Dateien!", - "INFORMATIONEN: Auswahl mehrerer Dateien", - "INFORMATIONEN: Auswahl einer Datei", - " "15"Positionierungen: "14"", - " hoch : zum vorausgehenden Namen", - - " runter : zum folgenden Namen", - " HOP hoch : auf den ersten Namen der Seite", (***********) - " HOP runter : auf den letzten Namen der Seite", (* bitte *) - " ESC 1 : auf den ersten Namen der Liste", (* diese *) - " ESC 9 : auf den letzten Namen der Liste", (* Länge *) - " "15"Auswahl treffen: "14"", (* nicht *) - " RETURN / x : diesen Namen ankreuzen ", (* über- *) - - " RUBOUT / o : Kreuz vor dem Namen loeschen", (* schrei-*) - " HOP RETURN / HOP x : alle folgende Namen ankreuzen", (* ten! *) - " HOP RUBOUT / HOP o : alle folgende Kreuze loeschen", (***********) - " "15"Auswahl verlassen: "14"", - " ESC q : Auswahl verlassen", - " ESC h : Auswahl abbrechen", - " Auswahl m e h r e r e r Dateien durch Ankreuzen", - " Auswahl e i n e r Datei durch Ankreuzen", - " Bitte warten... Ich breche die Auswahl ab!" - - ); -THESAURUS PROC auswahl (THESAURUS CONST t, - BOOL CONST mehrere moeglich, - TEXT CONST t1, t2): - werte initialisieren; - namen besorgen; - bildschirm aufbauen; - auswaehlen lassen; - abgang vorbereiten. - werte initialisieren: - THESAURUS VAR ausgabe :: empty thesaurus; - DATASPACE VAR ds := nilspace; - eintrag := ds; - kennzeile 1 := t1; - kennzeile 2 := t2; - abbruch := FALSE; - - erste auswahlzeile := y + 7; - anzahl := 0; - maxeintraege := ysize - 11; - virtueller cursor := 1; - reeller cursor := 1. - namen besorgen: - fische die namen aus dem thesaurus; - IF kein eintrag vorhanden - THEN LEAVE auswahl WITH ausgabe - FI. - bildschirm aufbauen: - schreibe kopfzeile; - gib hinweis aus (kennzeile 1, kennzeile 2); - gib erklaerungszeile aus (mehrere moeglich); - baue bildschirm auf (1); - footnote (x, y, xsize, ysize, hinweis [2]); - - schreibe fusszeile; - reellen cursor setzen . - schreibe kopfzeile: - cursor (x, y); - out(ecke oben links); - (xsize - 2) TIMESOUT waagerecht; - out(ecke oben rechts). - schreibe fusszeile: - cursor (x, y + ysize - 1); - out (ecke unten links); - (xsize - 2) TIMESOUT waagerecht; - out (ecke unten rechts). - auswaehlen lassen: - kreuze an (mehrere moeglich). - abgang vorbereiten: - IF abbruch - THEN change footnote (x, y, xsize, ysize, hinweis [24]) - - ELSE change footnote (x, y, xsize, ysize, hinweis [ 1]) - FI; - cursor (x + 1, y + ysize - 1); - ausgabe erzeugen; - forget (ds); - ausgabe. - fische die namen aus dem thesaurus: - INT VAR zeiger; - FOR zeiger FROM 1 UPTO highest entry (t) REP - IF name (t, zeiger) <> "" - THEN anzahl INCR 1; - eintrag [anzahl] := name (t, zeiger) - FI - PER. - kein eintrag vorhanden: - anzahl = 0. - ausgabe erzeugen: - TEXT VAR nummer; - WHILE registrierkette <> "" REP - - nummer := subtext (registrierkette, 1, 3); - registrierkette := subtext (registrierkette, 5); - insert (ausgabe, eintrag [ int (nummer)]) - PER. -END PROC auswahl; -PROC reellen cursor setzen: - cursor (x + 1, erste auswahlzeile + reeller cursor - 1); - out (marke (virtueller cursor, TRUE) + (8 * zurueck)) -END PROC reellen cursor setzen; -PROC baue bildschirm auf (INT CONST anfang): - gib kopfzeile aus; - gib namenstabelle aus; - gib fusszeile aus; - loesche ggf restbereich. - - gib kopfzeile aus: - cursor (x, erste auswahlzeile - 1); out (senkrecht); - IF reeller cursor = virtueller cursor - THEN (xsize - 2) TIMESOUT punkt - ELSE (xsize - length (hinweis [4]) - 5) TIMESOUT punkt; - out (invers (hinweis [4])) - FI; - out (senkrecht); - line. - gib namenstabelle aus: - INT VAR zeiger, zaehler :: -1; - FOR zeiger FROM anfang UPTO grenze REP - zaehler INCR 1; - cursor (x, erste auswahlzeile + zaehler); - out (senkrecht); out (marke (zeiger, FALSE)); - - outtext (subtext (eintrag [zeiger], 1, xsize - 10), 1, xsize - 10); - out (senkrecht); - PER. - gib fusszeile aus: - cursor (x, erste auswahlzeile + zaehler + 1); - out (senkrecht); - IF NOT ((virtueller cursor + maxeintraege - reeller cursor) < anzahl) - THEN (xsize - 2) TIMESOUT punkt - ELSE (xsize - length (hinweis [4]) - 5) TIMESOUT punkt; - out (invers (hinweis [4])) - FI; - out (senkrecht). - loesche ggf restbereich: - IF zaehler + 1 < maxeintraege - - THEN loesche bildschirmrest - FI. - loesche bildschirmrest: - FOR zeiger FROM restanfang UPTO restende REP - cursor (x, zeiger); out (senkrecht); - (xsize - 2) TIMESOUT blank; - out (senkrecht) - PER. - restanfang: - erste auswahlzeile + zaehler + 2. - restende: - erste auswahlzeile + maxeintraege. - grenze: - min (anzahl, anfang + max eintraege - 1). -END PROC baue bildschirm auf; -TEXT PROC marke (INT CONST zeiger, BOOL CONST mit cursor): - - INT VAR platz := nr (zeiger); - IF platz = 0 - THEN leer - ELSE mit zahl - FI. - mit zahl: - IF mit cursor - THEN "==>" + (3 - length (text (platz))) * blank + text (platz) + "x " - ELSE " " + (3 - length (text (platz))) * blank + text (platz) + "x " - FI. - leer: - IF mit cursor - THEN "==> o " - ELSE " o " - FI. -END PROC marke; -INT PROC nr (INT CONST zeiger): - IF pos (registrierkette, textstring (zeiger)) = 0 - THEN 0 - ELSE (pos (registrierkette, textstring (zeiger)) DIV 4) + 1 - - FI -END PROC nr; -TEXT PROC textstring (INT CONST nr): - text (nr, 3) + "!" -END PROC textstring; -PROC info (BOOL CONST mehrere): - notiere hinweisueberschrift; - notiere positionierhinweise; - IF noch platz vorhanden - THEN notiere auswahlmoeglichkeiten auf alter seite - ELSE wechsle auf naechste seite; - notiere hinweisueberschrift; - notiere auswahlmoeglichtkeiten auf neuer seite - FI; - stelle alten bildschirmzustand wieder her. - notiere hinweisueberschrift: - - cursor (x + 1, y + 1); - IF mehrere - THEN out (center(xsize - 2, invers (hinweis [5]))) - ELSE out (center(xsize - 2, invers (hinweis [6]))) - FI; - cursor (x + 1, y + 2); out ("", xsize - 2). - notiere positionierhinweise: - cursor (x + 1, y + 3); out (hinweis [ 7], xsize - 2); - cursor (x + 1, y + 4); out (hinweis [ 8], xsize - 2); - cursor (x + 1, y + 5); out (hinweis [ 9], xsize - 2); - cursor (x + 1, y + 6); out (hinweis [10], xsize - 2); - cursor (x + 1, y + 7); out (hinweis [11], xsize - 2); - - cursor (x + 1, y + 8); out (hinweis [12], xsize - 2); - cursor (x + 1, y + 9); out (hinweis [13], xsize - 2). - notiere auswahlmoeglichkeiten auf alter seite: - cursor (x + 1, y + 10); out ("", xsize - 2); - cursor (x + 1, y + 11); out (hinweis [14], xsize - 2); - cursor (x + 1, y + 12); out (hinweis [15], xsize - 2); - IF mehrere - THEN gib alle auswahlmoeglichkeiten auf der alten seite an - ELSE gib eine auswahlmoeglichkeit auf der alten seite an - FI; - - notiere verlassmoeglichkeiten auf der alten seite; - loesche die restlichen zeilen; - change footnote (x, y, xsize, ysize, hinweis [3]); - cursor in ruhestellung; - clear buffer. - gib alle auswahlmoeglichkeiten auf der alten seite an: - cursor (x + 1, y + 13); out (hinweis [16], xsize - 2); - cursor (x + 1, y + 14); out (hinweis [17], xsize - 2); - cursor (x + 1, y + 15); out (hinweis [18], xsize - 2). - gib eine auswahlmoeglichkeit auf der alten seite an: - cursor (x + 1, y + 13); out ("", xsize - 2); - - cursor (x + 1, y + 14); out ("", xsize - 2); - cursor (x + 1, y + 15); out ("", xsize - 2). - notiere verlassmoeglichkeiten auf der alten seite: - cursor (x + 1, y + 16); out ("", xsize - 2); - cursor (x + 1, y + 17); out (hinweis [19], xsize - 2); - cursor (x + 1, y + 18); out (hinweis [20], xsize - 2); - cursor (x + 1, y + 19); out (hinweis [21], xsize - 2). - loesche die restlichen zeilen: - IF ysize = 24 - THEN cursor (x + 1, y + 20); out ("", xsize - 2) - FI. - - wechsle auf naechste seite: - loesche seitenrest; - change footnote (x, y, xsize, ysize, hinweis [3]); - cursor in ruhestellung; - clear buffer; - pause. - loesche seitenrest: - INT VAR zaehler; - FOR zaehler FROM 10 UPTO ysize - 4 REP - cursor (x + 1, y + zaehler); out ("", xsize - 2) - PER. - notiere auswahlmoeglichtkeiten auf neuer seite: - cursor (x + 1, y + 3); out (hinweis [14], xsize - 2); - cursor (x + 1, y + 4); out (hinweis [15], xsize - 2); - IF mehrere - - THEN gib alle auswahlmoeglichkeiten auf der neuen seite an - ELSE gib eine auswahlmoeglichkeit auf der neuen seite an - FI; - notiere verlassmoeglichkeiten auf der neuen seite. - gib alle auswahlmoeglichkeiten auf der neuen seite an: - cursor (x + 1, y + 5); out (hinweis [16], xsize - 2); - cursor (x + 1, y + 6); out (hinweis [17], xsize - 2); - cursor (x + 1, y + 7); out (hinweis [18], xsize - 2). - gib eine auswahlmoeglichkeit auf der neuen seite an: - cursor (x + 1, y + 5); out ("", xsize - 2); - - cursor (x + 1, y + 6); out ("", xsize - 2); - cursor (x + 1, y + 7); out ("", xsize - 2). - notiere verlassmoeglichkeiten auf der neuen seite: - cursor (x + 1, y + 8); out ("", xsize - 2); - cursor (x + 1, y + 9); out (hinweis [19], xsize - 2); - cursor (x + 1, y + 10); out (hinweis [20], xsize - 2); - cursor (x + 1, y + 11); out (hinweis [21], xsize - 2); - cursor in ruhestellung. - cursor in ruhestellung: - cursor (x + 1, y + ysize - 2). - stelle alten bildschirmzustand wieder her: - - clear buffer; - pause; - gib hinweis aus (kennzeile 1, kennzeile 2); - gib erklaerungszeile aus (mehrere); - virtueller cursor := 1; - reeller cursor := 1; - baue bildschirm auf (1); - change footnote (x, y, xsize, ysize, hinweis [2]); - reellen cursor setzen. - noch platz vorhanden: - (ysize - 4) > 18. -END PROC info; -PROC kreuze an (BOOL CONST mehrere): - auswahlende := FALSE; - REP - zeichen lesen; zeichen interpretieren - UNTIL auswahlende PER. - zeichen lesen: - - TEXT VAR zeichen; - getchar (zeichen). - zeichen interpretieren: - SELECT pos (zeichenstring, zeichen) OF - CASE hop : hop kommando verarbeiten (mehrere) - CASE esc : esc kommando verarbeiten - CASE oben : nach oben - CASE unten : nach unten - CASE kreuz : ankreuzen; evtl aufhoeren - CASE return : ankreuzen weiter; evtl aufhoeren - CASE rubout : auskreuzen weiter - CASE kringel : auskreuzen - CASE frage : info (mehrere) - - OTHERWISE out (piep) - END SELECT. - evtl aufhoeren: - IF NOT mehrere - THEN LEAVE kreuze an - FI. -END PROC kreuze an; -PROC hop kommando verarbeiten (BOOL CONST mehrere): - zweites zeichen lesen; - zeichen interpretieren. - zweites zeichen lesen: - TEXT VAR zweites zeichen; - getchar(zweites zeichen). - zeichen interpretieren: - SELECT pos (oben unten return rubout kreuz kringel, zweites zeichen) OF - CASE 1 : hop nach oben - CASE 2 : hop nach unten - - CASE 3, 5 : IF mehrere THEN alle darunter ankreuzen FI - CASE 4, 6 : IF mehrere THEN alle darunter loeschen FI - OTHERWISE out (piep) - END SELECT. - alle darunter ankreuzen: - INT VAR i; - FOR i FROM virtueller cursor UPTO anzahl REP - IF nr (i) = 0 - THEN ankreuzen - FI - PER; - bild aktualisieren ; - reellen cursor setzen . - ankreuzen: - registrierkette CAT textstring (i). - alle darunter loeschen: - INT VAR j, position; - FOR j FROM virtueller cursor UPTO anzahl REP - - position := nr (j); - IF position > 0 - THEN rausschmeissen; - FI - PER; - bild aktualisieren; - reellen cursor setzen. - rausschmeissen: - registrierkette := subtext (registrierkette, 1, (4 * position) - 4) + - subtext (registrierkette, (4 * position) + 1). - hop nach oben: - IF ganz oben - THEN out (piep) - ELIF oben auf der seite - THEN raufblaettern - ELSE top of page - FI. - ganz oben: - virtueller cursor = 1. - - oben auf der seite: - reeller cursor = 1. - raufblaettern: - virtueller cursor DECR max eintraege; - virtueller cursor := max (virtueller cursor, 1); - baue bildschirm auf (virtueller cursor); - reellen cursor setzen. - top of page: - loesche marke; - virtueller cursor DECR (reeller cursor - 1); - reeller cursor := 1; - reellen cursor setzen. - hop nach unten: - IF ganz unten - THEN out (piep) - ELIF unten auf der seite - THEN runterblaettern - - ELSE bottom of page - FI. - ganz unten: - virtueller cursor = anzahl. - unten auf der seite: - reeller cursor > max eintraege - 1. - runterblaettern: - INT VAR alter virtueller cursor :: virtueller cursor; - virtueller cursor INCR max eintraege; - virtueller cursor := min (virtueller cursor, anzahl); - reeller cursor := virtueller cursor - alter virtueller cursor; - baue bildschirm auf (alter virtueller cursor + 1); - reellen cursor setzen. - bottom of page: - - loesche marke; - alter virtueller cursor := virtueller cursor; - virtueller cursor INCR (max eintraege - reeller cursor); - virtueller cursor := min (anzahl, virtueller cursor); - reeller cursor INCR (virtueller cursor - alter virtueller cursor); - reellen cursor setzen. -END PROC hop kommando verarbeiten; -PROC esc kommando verarbeiten: - TEXT VAR zweites zeichen; - getchar (zweites zeichen); - SELECT pos (q eins neun h, zweites zeichen) OF - CASE 1 : auswahlende := TRUE - - CASE 2 : zeige anfang - CASE 3 : zeige ende - CASE 4 : abbruch := TRUE; - auswahlende := TRUE; - registrierkette := "" - OTHERWISE out (piep) - END SELECT. - zeige anfang: - IF virtueller cursor = 1 - THEN out (piep) - ELIF virtueller cursor = reeller cursor - THEN loesche marke; - virtueller cursor := 1; - reeller cursor := 1; - reellen cursor setzen - ELSE virtueller cursor := 1; - - reeller cursor := 1; - baue bildschirm auf (1); - reellen cursor setzen - FI. - zeige ende: - IF virtueller cursor = anzahl - THEN out (piep) - ELIF ende auf bildschirm - THEN loesche marke; - reeller cursor INCR (anzahl - virtueller cursor); - virtueller cursor := anzahl; - reellen cursor setzen - ELSE virtueller cursor := anzahl; - reeller cursor := max eintraege; - - baue bildschirm auf (anzahl - (max eintraege - 1)); - reellen cursor setzen - FI. - ende auf bildschirm: - (reeller cursor + anzahl - virtueller cursor) < max eintraege + 1. -END PROC esc kommando verarbeiten; -PROC ankreuzen: - INT VAR platz :: nr (virtueller cursor); - IF platz <> 0 - THEN out (piep); - LEAVE ankreuzen - FI; - registrierkette CAT textstring (virtueller cursor); - reellen cursor setzen -END PROC ankreuzen; -PROC ankreuzen weiter: - - INT VAR platz :: nr (virtueller cursor); - IF platz <> 0 - THEN out (piep); - LEAVE ankreuzen weiter - FI; - registrierkette CAT textstring (virtueller cursor); - IF virtueller cursor < anzahl - THEN nach unten - FI; - IF virtueller cursor = anzahl - THEN reellen cursor setzen - FI -END PROC ankreuzen weiter; -PROC auskreuzen weiter: - INT VAR position :: nr (virtueller cursor); - IF position = 0 - THEN out (piep); - LEAVE auskreuzen weiter - FI; - rausschmeissen; - - IF virtueller cursor < anzahl - THEN nach unten - ELSE loesche marke - FI; - bild aktualisieren; - reellen cursor setzen. - rausschmeissen: - registrierkette := subtext (registrierkette, 1, 4 * position - 4) + - subtext (registrierkette, 4 * position + 1). -END PROC auskreuzen weiter; -PROC auskreuzen: - INT VAR position :: nr (virtueller cursor); - IF position = 0 - THEN out (piep); - LEAVE auskreuzen - FI; - rausschmeissen; - loesche marke; - - bild aktualisieren; - reellen cursor setzen. - rausschmeissen: - registrierkette := subtext (registrierkette, 1, 4 * position - 4) + - subtext (registrierkette, 4 * position + 1). -END PROC auskreuzen; -PROC bild aktualisieren: - INT VAR ob, un, i, zaehler :: -1; - ob := virtueller cursor - reeller cursor + 1; - un := min (ob + max eintraege - 1, anzahl); - FOR i FROM ob UPTO un REP - zaehler INCR 1; - cursor (x + 1, erste auswahlzeile + zaehler); - out (marke (i,FALSE)) PER - -END PROC bild aktualisieren; -PROC nach oben: - IF noch nicht oben (*virtuell*) - THEN gehe nach oben - ELSE out (piep) - FI. - noch nicht oben: - virtueller cursor > 1. - gehe nach oben: - IF reeller cursor = 1 THEN scroll down ELSE cursor up FI. - scroll down: - virtueller cursor DECR 1; - baue bildschirm auf (virtueller cursor); - reellen cursor setzen. - cursor up: - loesche marke; - virtueller cursor DECR 1; - reeller cursor DECR 1; - reellen cursor setzen - -END PROC nach oben; -PROC nach unten: - IF noch nicht unten (*virtuell*) - THEN gehe nach unten - ELSE out (piep) - FI. - noch nicht unten: - virtueller cursor < anzahl. - gehe nach unten: - IF reeller cursor > max eintraege - 1 THEN scroll up ELSE cursor down FI. - scroll up: - virtueller cursor INCR 1; - baue bildschirm auf (virtueller cursor - (max eintraege - 1)); - reellen cursor setzen. - cursor down: - loesche marke; - virtueller cursor INCR 1; - reeller cursor INCR 1; - - reellen cursor setzen -END PROC nach unten; -PROC loesche marke: - out (marke (virtueller cursor, FALSE)) -END PROC loesche marke; -PROC footnote (INT CONST x, y, xsize, ysize, TEXT CONST text): - cursor (x, y + ysize - 3); - out (balken links); (xsize - 2) TIMESOUT waagerecht; out (balken rechts); - change footnote (x, y, xsize, ysize, text) -END PROC footnote; -PROC change footnote (INT CONST x, y, xsize, ysize, TEXT CONST text): - cursor (x, y + ysize - 2); - out (senkrecht); outtext (text, 1, xsize - 2); out (senkrecht) - -END PROC change footnote; -PROC gib hinweis aus (TEXT CONST t1, t2): - cursor (x, y + 1); out (senkrecht); - out (center (xsize - 2, invers (t1))); - out (senkrecht); - cursor (x, y + 2); out (senkrecht); - out ("", xsize - 2); - out (senkrecht); - cursor (x, y + 3); out (senkrecht); - out (center (xsize - 2, t2)); - out (senkrecht) -END PROC gib hinweis aus; -PROC gib erklaerungszeile aus (BOOL CONST mehrere): - - cursor (x, y + 4); out (senkrecht); - out ((xsize - 2) * gleich); - out (senkrecht); - cursor (x, y + 5); out (senkrecht); - IF mehrere - THEN out (erklaerungszeile mehrere) - ELSE out (erklaerungszeile eine) - FI; - out (senkrecht). - erklaerungszeile mehrere: - invers (text 1 + (rest1 * blank)). - erklaerungszeile eine: - invers (text 2 + (rest2 * blank)). - - text1: - hinweis [22]. - text2: - hinweis [23]. - rest1: (***************************) - xsize - length (text1) - 5. (* durch 'invers' wird ein *) - (* Blank angehängt und zu- *) - rest2: (* sätzlich noch durch *) - xsize - length (text2) - 5. (* 'relativcenter' - außer-*) -END PROC gib erklaerungszeile aus; (* dem nimmt die Markierung*) - (* selbst eine Position ein*) - - (***************************) -THESAURUS PROC infix namen (THESAURUS CONST t, TEXT CONST infix): - THESAURUS VAR tt :: empty thesaurus; - INT VAR i; - FOR i FROM 1 UPTO highest entry (t) REP - TEXT VAR eintrag :: name (t,i); - IF eintrag enthaelt infix - THEN insert (tt, eintrag) - FI - PER; - tt. - eintrag enthaelt infix: - pos (eintrag, infix) <> 0 -END PROC infix namen; -THESAURUS PROC infix namen (THESAURUS CONST t, INT CONST dateityp): - - THESAURUS VAR tt :: empty thesaurus; - INT VAR i; - FOR i FROM 1 UPTO highest entry (t) REP - TEXT VAR eintrag :: name (t,i); - IF eintrag enthaelt infix - THEN insert (tt, eintrag) - FI - PER; - tt. - eintrag enthaelt infix: - type (old (eintrag)) = dateityp. -END PROC infix namen; -THESAURUS PROC infix namen (THESAURUS CONST t, - TEXT CONST infix 1, INT CONST dateityp): - THESAURUS VAR tt :: empty thesaurus; - INT VAR i; - FOR i FROM 1 UPTO highest entry (t) REP - - TEXT VAR eintrag :: name (t,i); - IF eintrag enthaelt infix - THEN insert (tt, eintrag) - FI - PER; - tt. - eintrag enthaelt infix: - (pos (eintrag, infix 1) <> 0) AND (type (old (eintrag)) = dateityp). -END PROC infix namen; -THESAURUS PROC infix namen (THESAURUS CONST t, - TEXT CONST infix 1, infix 2): - THESAURUS VAR tt :: empty thesaurus; - INT VAR i; - FOR i FROM 1 UPTO highest entry (t) REP - TEXT VAR eintrag :: name (t,i); - IF eintrag enthaelt infix - - THEN insert (tt, eintrag) - FI - PER; - tt. - eintrag enthaelt infix: - (pos (eintrag, infix 1) <> 0) OR (pos (eintrag, infix 2) <> 0) -END PROC infix namen; -THESAURUS PROC infix namen (TEXT CONST infix): - infix namen (ALL myself, infix) -END PROC infix namen; -THESAURUS PROC infix namen (TEXT CONST infix 1, infix 2): - infix namen (ALL myself, infix 1, infix 2) -END PROC infix namen; -THESAURUS PROC ohne praefix (THESAURUS CONST thesaurus, TEXT CONST praefix): - THESAURUS VAR t :: empty thesaurus; - - INT VAR zaehler; - FOR zaehler FROM 1 UPTO highest entry (thesaurus) REP - IF name (thesaurus, zaehler) <> "" - AND pos (name (thesaurus, zaehler), praefix) = 1 - THEN insert (t, subtext (name (thesaurus, zaehler), - length (praefix) + 1)) - FI; - PER; - t -END PROC ohne praefix; -BOOL PROC not empty (THESAURUS CONST t): - INT VAR i; - FOR i FROM 1 UPTO highest entry (t) REP - IF name (t, i) <> "" - THEN LEAVE not empty WITH TRUE - - FI - PER; - FALSE -END PROC not empty; -PROC untersuche bildschirmmasszahlen (TEXT CONST t1, t2): - IF unzulaessige cursorwerte - THEN errorstop (fehlermeldung [1]) - ELIF fenster ist zu klein - THEN errorstop (fehlermeldung [2]) - FI. - unzulaessige cursorwerte: - (x + xsize) > 80 COR (y + ysize) > 25 COR x < 1 COR y < 1 - COR xsize > 79 COR ysize > 24. - fenster ist zu klein: - (xsize) < 56 COR (ysize) < 15 - COR length (t1) > (xsize - 5) COR length (t2) > (xsize - 5). - -END PROC untersuche bildschirmmasszahlen; -TEXT PROC ggf gekuerzter text (TEXT CONST text): - IF length (text) > (xsize - 5) - THEN subtext (text, 1, xsize - 7) + ".." - ELSE text - FI -END PROC ggf gekuerzter text; -THESAURUS PROC some (INT CONST spa, zei, breite, hoehe, - THESAURUS CONST t, - TEXT CONST t1, t2): - TEXT VAR text 1, text 2; - x := spa; - y := zei; - xsize := breite; - ysize := hoehe; - text 1 := ggf gekuerzter text (t1); - - text 2 := ggf gekuerzter text (t2); - untersuche bildschirmmasszahlen (text 1, text 2); - auswahl (t, TRUE, text 1, text 2) -END PROC some; -THESAURUS PROC some (INT CONST spa, zei, - THESAURUS CONST t, - TEXT CONST t1, t2): - some (spa, zei, 79 - spa + 1, 24 - zei + 1, t, t1, t2) -END PROC some; -THESAURUS PROC some (THESAURUS CONST t, - TEXT CONST t1, t2): - some (1, 1, 79, 24, t, t1, t2) -END PROC some; -TEXT PROC one (INT CONST spa, zei, breite, hoehe, - - THESAURUS CONST t, - TEXT CONST t1, t2): - TEXT VAR text 1, text 2; - x := spa; - y := zei; - xsize := breite; - ysize := hoehe; - text 1 := ggf gekuerzter text (t1); - text 2 := ggf gekuerzter text (t2); - untersuche bildschirmmasszahlen (text 1, text 2); - name (auswahl (t, FALSE, text 1, text 2), 1) -END PROC one; -TEXT PROC one (INT CONST spa, zei, - THESAURUS CONST t, - TEXT CONST t1, t2): - one (spa, zei, 79 - spa + 1, 24 - zei + 1, t, t1, t2) - -END PROC one; -TEXT PROC one (THESAURUS CONST t, TEXT CONST t1, t2): - one (1, 1, 79, 24, t, t1, t2) -END PROC one; -END PACKET ls dialog 2; - - |