Gibt das n-te Wort aus dem Argument "Zeichenfolge" zurück oder eine leere Zeichenfolge, wenn die Zeichenfolge weniger als n Wörter hat. Beispiel:
SAY WORD (`Nun ist es Zeit `,2) -> ist
Gibt die Startposition des n-ten Worts im Argument "Zeichenfolge" zurück, oder 0, wenn die Zeichenfolge weniger als n Wörter hat. Beispiel:
SAY WORDINDEX (`Nun ist es Zeit `,3) -> 9
Gibt die Länge des n-ten Worts im Argument "Zeichenfolge" zurück. Beispiel:
SAY WORDLENGTH (`vier fünf sechs',3) -> 5
Gibt die Anzahl der Wörter im Argument "Zeichenfolge" zurück. Beispiel:
SAY WORDS (`Wie geht' `s Dir?") -> 3
Schreibt das Argument "Zeichenfolge" in die angegebene logische Datei. Der Rückgabewert ist die Anzahl der geschriebenen Zeichen. Beispiel:
SAY WRITECH (`Ausgabe', `Test') -> 4
Schreibt das Argument "Zeichenfolge" in die angegebene logische Datei und fügt ein Zeichen für Zeilenvorschub an. Der Rückgabewert ist die Anzahl der geschriebenen Zeichen. Beispiel:
SAY WRITELN (`Ausgabe', `Test') -> 5
Wandelt eine aus Hexadezimalziffern bestehende Zeichenfolge in die (gepackte) Zeilendarstellung um. Leerzeichen sind im Argument "Zeichenfolge" an Bytegrenzen zulässig. Beispiel:
SAY X2C (`12ab') -> `12ab'x
SAY X2C ('12 ab') -> `12ab'x
SAY X2C(61) -> a
Wandelt eine Hexadezimalzahl in eine Dezimalzahl um. Beispiel:
Generiert eine Zeichenfolge, die aus allen Zeichen besteht, deren Codes numerisch zwischen den angegebenen Start- und Endzeichen liegen. Standardzeichen sind `00'x für Start und `FF'x für Ende. Nur die jeweils ersten Zeichen der Argumente "Start" und "Ende" sind von Bedeutung. Beispiel:
SAY XRANGE() -> `00010203
. . . FDFEFF'x
SAY XRANGE (`a', `f') -> `abcdef'
SAY XRANGE (, `0A'x) -> `00010203045060708090A'x
Das folgende Beispielprogramm illustriert viele der integrierten Funktionen, mit denen Zeichenfolgen manipuliert werden.
Programm 13. Changestrings.rexx
/*Dieses ARexx-Programm zeigt die Wirkung integrierter Funktionen, die Zeichenfolgen manipulieren. Die Funktionen lassen sich in zwei Gruppen einteilen: solche, die einzelne Zeichen verändern, und solche, die ganze Zeichenfolgen verändern.*/
teststringl = " every good boy does fine "
/*Die erste Gruppe bilden die Funktionen STRIP (), COMPRES (), SPACE (), TRIM (), TRANSLATE (), DELSTR (), DELWORD (), INSERT (), OVERLAY () und REVERSE ().*/
/*STRIP () entfernt lediglich voran- und nachgestellte Leerzeichen.*/
/*Drucken Sie zu Vergleichszwecken die Originalzeichenfolge aus. Die Zeichenfolge wird mit einem Punkt abgeschlossen, damit Sie sehen, was mit den Leerzeichen am Ende der Zeichenfolge geschieht.*/
SAY " every good boy does fine "
/*Die gleiche Zeichenfolge ohne voran- und nachgestellte Leerzeichen*/
SAY STRIP (" every good boy does fine ")"."
/*Gescheiterter Versuch, die voran- und nachgestellten "e"'s zu entfernen*/
SAY STRIP (" every good boy does fine ", ,"e")"."
/*Die "e"'s waren durch die noch immer vorhandenen, voran- und nachgestellten Leerzeichen geschützt. Durch Löschen dieser Leerzeichen werden die """"s den Auswirkungen der Funktion STRIP () ausgesetzt*/
SAY STRIP ("every good boy does fine", , "e")"."
/*Nun werden die "e"'s und die Leerzeichen aus der Originalzeichenfolge gelöscht*/
SAY STRIP (" every good boy does fine ",,"e")"."
/*Nun wird die weiter oben definierte Variable "teststring1" verwendet. Entfernung nur der nachgestellten Leerzeichen aus der Testzeichenfolge.*/
/*Entfernung der nachgestellten Leerzeichen und des "e"*/
SAY STRIP (teststring1,T," e")"."
/*Compress() entfernt Zeichen überall innerhalb einer Zeichenfolge. Hier werden alle Leerzeichen aus der Testzeichenfolge teststring1 gelöscht*/
SAY TIME (`Civil') /*Uhrzeit HH:MM{AM | PM}*/
SAY TIME (`h') /*Stunden seit Mitternacht*/
SAY TIME (`m') /*Minuten seit Mitternacht*/
SAY TIME (`s') /*Sekunden seit Mitternacht*/
SAY TIME (`e') /*Vergangene Zeit seit dem Programmstart*/
/*Funktion: TRACE Verwendung: TRACE ( [Option] )*/
SAY TRACE (TRACE () ) /*Unverändert lassen*/
TRANSLATE (Zeich.folge[,Ausgabe] [,Eingabe] [,Füllz.])*/
SAY TRANSLATE (`aBCdef') /*Umwandeln in Großbuchstaben*/
SAY TRANSLATE (`abcdef', `1234')
SAY TRANSLATE (`654321'. `abcdef', `123456')
SAY TRANSLATE (`abcdef', `123', `abcdef', `+')
/*Funktion: TRIM Verwendung: TRIM (Zeichenfolge)*/
/* Funktion: TRUNC Verwendung:
/*Funktion: UPPER Verwendung: UPPER (Zeichenfolge)*/
/*Funktion: VALUE Verwendung: VALUE (Name)*/
/*Funktion: VERIFY Verwendung:
VERIFY (Zeichenfolge,Liste[,'M'])*/
SAY VERIFY (`123a45', `0123456789')
SAY VERIFY (`abc3de', `012456789', `M')
/*Funktion: WORD Verwendung: WORD (Zeichenfolge,n)*/
SAY WORD (`Nun ist es Zeit',3)
/*Funktion: WORDINDEX Verwendung:
SAY WORDINDEX (`Nun ist es Zeit `,3)
/*Funktion: WORDLENGTH Verwendung:
SAY WORDLENGTH (`Nun ist es Zeit `,4)
/*Funktion: WORDS Verwendung: WORDS (Zeichenfolge)*/
/*Funktion: WRITECH Verwendung:
WRITECH (Datei,Zeichenfolge)*/
IF OPEN (`test', `ram:test$$', `W') THEN DO
SAY WRITECH (`test', `Hallo') /*Zeichenfolge schreiben*/
/*Funktion: WRITELN Verwendung:
WRITELN (Datei,Zeichenfolge)*/
IF OPEN (`test', `ram:test$$', `W') THEN DO
/+Zeichenfolge (plus Zeilenvorschubzeichen) schreiben*/
/*Funktion: X2C Verwendung: X2C (hexadezimale Zeichenfolge)*/
SAY X2C (`616263') /*Umwandeln in Zeichen (gepackt)*/
/*Funktion: XRANGE Verwendung:
Die Ausgabe des Testprogramms 13 sieht folgendermaßen aus:
every good boy does fine
every good boy does fine.
every good boy does fine .
very good boy does fin.
very good boy does fin.
every good boy does fine.
every good boy does fin.
Everygoodboydoesfine
1:23PM /*Diese Testergebnisse hängen von der Uhrzeit ab, */
13 /*zu der Sie das Programm aufrufen.*/
803
48199
0.80
N
N
ABCDEF
abcdef
fedcba
123+++
abc
123
134566.12 DM
ABCDEF12
Mein Name
4
0
es
8
4
4
7
8
abc
F0F1F2F3F4F5F6F7F8F9FFAFBFCFDFEFF
ABCDEFG