----
[[tustep:loesungen:start|Zurück zum Inhaltsverzeichnis - Lösungen und Tipps]]
----
====== Konventionen zum pattern matching ======
Seit der **TUSTEP-Version 2012** gelten neue Konventionen zum **pattern matching**. Sie sind systematischer aufgebaut, leichter zu merken und zu lesen als die bisher allein gültigen. Darüber hinaus können sie auch problemlos in Prozeduren genutzt werden, die mit **XML**-Editoren geschrieben werden.\\ \\  Eine **Liste der (neuen vs. alte) Konventionen zum Download** finden Sie {{files_open:daten:parameterneu2012.pdf|hier}} .\\ \\  Ein **#KOPIERE-Script**, das in Prozeduren die **alten Konventionen in die neuen konvertiert**, finden Sie unten.\\ \\  Zwischen den bisherigen und den neuen Konventionen **kann umgeschaltet werden**. Die Umschaltung **bewirkt auch eine Änderung der Konventionen im Editor**!\\ 
#parameter,{}     stellt die neuen Konventionen ein (Voreinstellung*)
#parameter,<>     stellt die bisherigen Konventionen ein
                  (!! gleichbedeutend: #parameter,neu !!)
¤ Die Voreinstellung {} **gilt für neue Sitzungen**, bei denen eine **tustep.ini-Datei automatisch eingerichtet** wird. In dem betreffenden Fenster ist die Zeile ''#PARAMETER,{}'' angekreuzt. Wenn man dies nicht ändert, wird für diese Sitzung #parameter,{} in die Datei tustep.ini geschrieben. In allen anderen Fällen gilt die Voreinstellung <>.\\ 
Übersicht:
linke Spalte: Codierung bei #parameter, modus={}
rechte Spalte: Codierung bei #parameter, modus=<>
Vordefinierte Zeichengruppen
{!}    ASCII-Zeichen                                      >%
{;}    TUSTEP-Zeichen außer ASCII-Zeichen
{@}    Zeichen außer Buchstaben und Ziffern               <@
{%}    Zeichen hinter % zur Akzentcodierung               >@
{\a}   Kleinbuchstaben                                    >*
{\A}   Großbuchstaben                                     <*
{&a}   Kleinbuchstaben & Großbuchstaben                   
{\0}   normale Ziffern
{&0}   normale Ziffern & hochgestellte Ziffern            >/
Zeichen- und Stringgruppen
?      ein beliebiges Zeichen                              <%
*      null bis beliebig viele beliebige Zeichen       ><<><%
[...]  lokale Zeichengruppe, z.B. m[ae][iy]er
{Z:xy} selbstdefinierte Zeichengruppe xy                >[xy]
{C:xy} alternative Schreibweise für {Z:xy}
{S:xy} selbstdefinierte Stringgruppe xy                 <[xy]
       Definition einer Zeichengruppe                 >1z <1z
       Definition einer Stringgruppe                  >1s <1s
       Bezug auf eine Zeichen- oder Stringgruppe        >1 <1
{–}    nachfolgende Zeichen aus der Gruppe entfernen       ><
{+}    nachfolgende Zeichen in die Gruppe aufnehmen        <>
Häufigkeitsbedingungen in Suchzeichenfolgen
{n}    genau n Elemente                                   >m
{n––m} n bis m Elemente, möglichst viele               <>m><0
{00}   1 bis unendlich viele Elemente = {1–0}             <>0
Zahlenwertbedingungen in Suchzeichenfolgen
{#}    Zahl mit beliebigem Wert
{#n}   Zahl mit Wert n                                 >={n-n}
{!n}   Zahl mit Wert ungleich n                         <{n-n}
{#n-m} Zahl mit Wert von n bis m                       >={n-m}
{!n-m} Zahl mit Wert kleiner n oder größer m            <{n-m}
Verweise in Suchzeichenfolgen
{+n=}  n-tes Element von links gezählt a != A             >=nn
{-n=}  n-tes Element von rechts gezählt a != A            <=nn
{+n:}  n-tes Element von links gezählt a == A             >:nn
{-n:}  n-tes Element von rechts gezählt a == A            <:nn
Elementbereiche in Suchzeichenfolgen
{|}    Begrenzungszeichen zwischen Elementbereichen
Verweise in Ersatzzeichenfolgen
{+n=}  n-tes Element von links gezählt                    >=nn
{-n=}  n-tes Element von rechts gezählt                   <=nn
{+0=}  alle Elemente der Kernzeichenfolge                 >=00
{–0=}  alle Elemente der Kernzeichenfolge                 <=00
{+n-m=} n-tes bis m-tes Element von li. gezählt        >=(n-m)
{+n–0=} n-tes bis letztes Element von li. gezählt      >=(n–0)
{-n-m=} n-tes bis m-tes Element von re. gezählt        <=(n-m)
{–0-m=} erstes bis m-tes Element von re. gezählt       <=(0-m)
{=n=}   Alle Elemente des n-ten Elementbereichs
{=0=}   Alle Elemente der Kernzeichenfolge
{=n-m=} Alle Elemente des n-ten bis m-ten Elementbereichs
{...+}  ... Kleinbuchstaben ––> Großbuchstaben         >+nn etc.
{...–}  ... Großbuchstaben ––> Kleinbuchstaben         >-nn etc.
{...;}  ... a, b, ..., $, ... ––> ä, ^b, ..., ^$, ...  >:nn etc.
{...!}  ... ä, ^b, ..., ^$, ... ––> a, b, ..., $, ...  >;nn etc.
Einzelzeichen
\?   Fragezeichen                                         ?
\*   Stern                                                *
\[   eckige Klammer auf                                   [
\]   eckige Klammer zu                                    ]
\{   geschweifte Klammer auf                              {
\}   geschweifte Klammer zu                               }
\a   Kleinbuchstabe a                                    >a
\A   Großbuchstabe A                                         spitze Klammer zu                                   >>
Sonstiges
{[}  linker Rand                                         <|
{]}  rechter Rand                                        >|
{|}  in Sortieralphabet-Tabellen: Umschalten auf ><
     höchste Wertigkeiten
==== Eingabeerleichterung im Editor ====
CTRL+K + erstes Zeichen, das in den Klammern vorgesehen ist
                  erleichtert die Eingabe von {...}
CTRL+K + Blank    zeigt eine Übersicht über die nach #pa,{} geltenden Konventionen
                  zum Schreiben der Parameter und der Editor-Anweisungen.
==== Ausführen "alter" Programme ====
 Will man Programme, deren Parameter **noch nach den <>-Konventionen geschrieben** wurden, in einer Umgebung verwenden, in der die neuen {}-Konventionen eingestellt sind, oder will man sicherstellen, dass **weitergegebene Programme unabhängig von den eingestellten Konventionen des Empfängers** laufen, besteht (ab der Version 2013) die Möglichkeit, in den Parametersatz - am besten jeweils gleich nach der Kommandozeile - den Parameter PAR einzufügen:\\ 
PAR       <>            Für die Interpretation der folgenden Parameter
                        gilt der Parameter-Modus <>
Dasselbe gilt auch im umgekehrten Fall:\\ 
PAR       {}            Für die Interpretation der folgenden Parameter
                        gilt der Parameter-Modus {}
**Beispiel:**\\ 
#rv,datei.tf,-std-,+,+,*
par       {}
ea        ||
ee        ||
ssl       20
*eof
oder:
#rv,datei.tf,-std-,+,+,*
par       <>
ea        |<>|
ee        |<>|
ssl       20
*eof
====== Prozedur zur Konvertierung alt nach neu ======
- [ trauth | trauth]\\ \\  Mit dem folgenden **#KOPIERE-Script** können in Prozeduren die **alten Konventionen in die neuen konvertiert** werden.\\ \\ {{files_open:daten:pm-conv.p|pm-conv.p}} [20 KB]\\ 
\\ \\  Eine **Beschreibung der Prozedur und ihre Voraussetzungen** finden sich am Anfang der Datei.\\ 
----
[[tustep:loesungen:start|Zurück zum Inhaltsverzeichnis - Lösungen und Tipps]]