home *** CD-ROM | disk | FTP | other *** search
- to PART :X :A :B
- ; *** TEILSTRING VON :X VON POSITION :A BIS :B ***
- if (listp :X) [op []] ; Fuer Listen nicht zustaendig !
- if (not numberp :A) [op []] ; Bereichsgrenzen :A und B:
- if (not numberp :B) [op []] ; muessen Zahlen sein !
- ; Ggf. Indexgrenzen korrigieren
- (local "C "D) ; Hilfsvariablen
- make "C :A
- make "D :B
- if (:A < 1) [make "C 1]
- if (:B > count :X) [make "D count :X]
- op PART@ :X :C :D
- end
- to PART@ :X :A :B
- ; *** Diese Funktion macht die rekursive Arbeit fuer PART ***
- if (not :A > :B) [op fput (item :A :X) (PART@ :X :A + 1 :B)] ; THEN-Zweig
- [op "] ; ELSE-Zweig
- end
- to SEARCH :X :Y
- ; *** ERMITTELT DIE POSITION DES ZEICHENS :Y IM STRING :X ***
- if (0 = count :Y) [op 0] ; Stringlaenge 0 !
- local "H ; Hilfsvariable
- make "H SEARCH@ :X first :Y
- if (:H > count :X) [op 0] ; THEN-Zweig
- [op :H] ; ELSE-Zweig
- end
- to SEARCH@ :X :Y
- ; *** Diese Funktion macht dann die rekursive Arbeit fuer SEARCH ***
- if (0 = count :X) [op 1] ; Bei Null-String Dummywert zurueckgeben
- if (:Y = first :X) [op 1] ; THEN-Zweig
- [op 1 + SEARCH@ bf :X :Y] ; ELSE-Zweig
- end
-