S Suchen (mehrere Suchargumente)
Mehrfachsuche - Format 1
S [-] [n] , such [ vk such ] [...] ..... [, A]
such [col] [r] item
einfaches Suchargument wie im vorhergehenden Abschnitt "Suchen von Zeichenfolgen (einfaches Suchargument)" ausführlich beschrieben.
vk | + | *
Verknüpfungsoperator mit dem vorausgegangenen einfachen Suchargument such.
, Suche im aktuellen Satz das vorausgegangene oder das nachfolgende Suchargument. Die Suchbedingung gilt als erfüllt, wenn zumindest eines der beiden Such-Items im Datensatz enthalten ist.
+ Suche im aktuellen Satz das vorausgegangene und das nachfolgende Suchargument. Die Suchbedingung ist erfüllt, wenn beide Suchargumente im Datensatz enthalten sind. Die Reihenfolge der Suchargumente im Datensatz ist ohne Bedeutung.
*[n] Suche im aktuellen Satz das vorausgegangene und das nachfolgende Suchargument. Die Suchbedingung ist erfüllt, wenn beide Suchargumente im Datensatz enthalten sind. Die Suchargumente müssen in der gleichen Reihenfolge auftreten, wie im Suche-Kommando angegeben.
   n Anzahl der Trennzeichen mit beliebigem Inhalt, die im Datensatz zwischen dem ersten und zweiten Suchargument enthalten sein müssen. Falls n nicht angegeben wurde, so ist jede beliebige Anzahl von Trennzeichen, einschließlich 0 möglich.
Es können beliebig viele Konstrukte der Art vk such aneinandergereiht werden.
Bei Verknüpfung durch die Und-Bedingung '+' können auch geklammerte Ausdrücke angegeben werden: (.. , .. , ...)+(.. , .. , ...). Ein Beispiel hierzu ist weiter unten (Seite 8-) beschrieben.
A All: Bei einer Suche, die mehrere mit "oder" (",") verknüpfte Suchargumente enthält, wird die Suche nicht nach dem ersten im Datensatz gefundenen Item abgebrochen. Dies hat längere Ausführungszeiten beim Suchvorgang zur Folge. Dafür werden jedoch alle Treffer-Items mit den entsprechenden Spaltenangaben in der Hinweiszeile der CFS-Maske angezeigt.
Standard: Die Suche wird nach dem ersten gefundenen Item beendet.
NC No Columns. Im DL-Modus (Display Long) wird die Spaltenpositionierung auf den jeweiligen Treffer unterdrückt (gleiches Verhalten wie im DS-Modus).
Hinweise:
Die Reihe der Suchargumente und Verknüpfungsoperatoren wird linear abgearbeitet. Falls mehrere mit "+" bzw. "*" verknüpfte Suchargumente angegeben wurden und eines von ihnen nicht im Datensatz enthalten ist, so wird der Suchvorgang beendet bzw. beim nächsten, mit oder "," verknüpften Such-Item fortgesetzt.
Für jedes einzelne Suchargument such kann ein Spaltenbereich (:col1-col2: / :col: / >:col: / <:col:), eine Negativ-Bedingung ( -'item' ), sowie ein Such-Item in Normaldarstellung ( 'item' ), in hexadezimaler Darstellung ( X'item' ) oder ein Such-Item in Groß-/Kleinschreibung ( L'item' ) angegeben werden. Bei einem Such-Item in Normaldarstellung können die Hochkommas in der Regel sogar weggelassen werden. Durch S,FLAG*STATEMENT werden z.B. alle Datensätze gesucht, die die Zeichenfolge 'FLAG' und irgendwo danach die Zeichenfolge 'STATEMENT' enthalten. Weitere Informationen siehe Syntaxbeschreibung und Hinweise auf Seite 8-.
In der Kommandozeile von CFS stehen insgesamt 71 Bytes zur Aufnahme des gesamten Mehrfachsuche-Kommandos zur Verfügung. Dies wird sich bei der Angabe einer größeren Anzahl von Suchargumenten oft als Engpaß erweisen. Um dieser Situation zu begegnen, kann über das Kommandofeld von CFS eine spezielle Such-Maske angefordert werden. Zur Anforderung der Suchmaske dient das im folgenden beschriebene Format 2 des Suche-Kommandos: S,( ).
Beispiele:
S,'='*'(','DC '*'('*')'
Es werden alle Datensätze gesucht, die eine der beiden Bedingungen erfüllen:
- Zeichen '=' und irgendwann danach Zeichen '('. z.B. '=A(...)', '=V(...)'
- Zeichenfolge 'DC ' und irgendwo danach die Zeichen '(' und ')'.
z.B. 'DC A(...)', 'DC Y(...)'
S,:1:>X'004C'+:1:<X'0054'
Zur Ermittlung von Datensätzen einer bestimmten Länge kann mit dem Offset-Kommando O-4 das Satzlängenfeld in das Display miteinbezogen werden. Durch das angegebene Suche-Kommando werden in einer RECFORM=V Datei alle Datensätze gefunden, deren Länge größer als 76 Bytes und kleiner als 84 Bytes ist.
S,-L'a'+-L'b'+-L'c'
Es werden alle Sätze gesucht, die keinen der Kleinbuchstaben a, b oder c enthalten.
S,L'a',>L'a'+<L'z',L'z'
Es werden alle Sätze gesucht, die mindestens einen Kleinbuchstaben enthalten.
S,'A'+'D1','B'+'D1','A'+'D2','B'+'D2'
Es werden alle Datensätze gesucht, die die Zeichen A und D1 oder B und D1 oder A und D2 oder B und D2 enthalten. Die Suchfrage kann durch die algebraische Schreibweise ('A','B')+('D1','D2') abgekürzt werden.