String-Literale sind Folgen beliebiger Zeichen, eingeschlossen in Hochkommas. In der Literatur werden String-Literale auch als Zeichenketten bezeichnet; in diesem Handbuch sind beide Begriffe aber nicht identisch. So muss eine Zeichenkette nicht in Hochkommas eingeschlossen sein. Darum ist z.B. ABC eine Zeichenkette und 'ABC' ein String-Literal.
Zu unterscheiden sind bei String-Literalen zwei Darstellungsarten: als C-String und X-String.
Datentyp | <c-string> | <x-string> |
Zeichenvorrat | alle EBCDIC-Zeichen | Hexadezimal-Ziffern (0 ... F) |
Länge | beliebig | beliebig |
Darstellung | [C]'.......' | X'......' |
Leerstring | [C]'' | X'' |
Hinweis
Die internen Darstellungen von C- und X-Strings sind gleich, d.h. jeder C-String lässt sich auch als X-String darstellen.
Die Begriffe C-String und X-String beziehen sich darauf, wie die Bytes, aus denen die Zeichenkette besteht, dargestellt werden:
Im C-String wird jedes Byte durch sein EBCDIC-Zeichen dargestellt (Zeichen = Character, Abkürzung: C). Daraus ergibt sich als Zeichenvorrat der gesamte EBCDI-Code; dies bedeutet auch, dass Groß- und Kleinschreibung erhalten bleiben.
Im X-String wird jedes Byte durch die sich ergebenden EBCDIC-Zeichen der Halbbytes dargestellt; im X-String folgen also paarweise aufeinander die Darstellung von linkem und rechtem Halbbyte. Entsprechend ergeben sich als Zeichenvorrat die Ziffern des hexadezimalen Zahlensystems, das heißt die Ziffern von 0 bis F.
Wird für einen X-String eine ungerade Anzahl Sedezimalziffern angegeben, wird er intern von links mit einer Null aufgefüllt. (Beispiel: X'123' wird zu X'0123')
Ein Sonderfall ist der Leerstring: Er besteht nur aus den paarweisen Hochkommas; ein C oder X kann vorangestellt sein (C'' / X''). Der Leerstring darf nicht mit dem Leerzei-chen-String verwechselt werden (C'
'BLANK'
' / X'40').
Strings sind immer in Hochkommas eingeschlossen; umgekehrt bedeutet dies: Zeichenketten und Zahlen, die in Hochkommas eingeschlossen sind, werden als Strings interpretiert.
Ist dem Hochkomma kein Zeichen vorangestellt, gilt der String standardmäßig als C-String. Dem X-String muss ein X vorangestellt sein. Andere Buchstaben sind nicht zulässig und führen zum Fehler.
Strings können über Vergleichsoperatoren oder Verkettungsoperatoren miteinander verknüpft werden.
Strings können auch als Inhalt von Variablen, als Ergebnis eines Funktionsaufrufs oder Ergebnis eines Ausdrucks in einen neuen Ausdruck eingehen.
Hinweis
Die Bezeichnung „string_ausdruck“, die als Parameterwert in vordefinierten Funktionen verwendet wird, steht für einen der folgenden Werte:
eine in Hochkommas eingeschlossene Zeichenfolge (<c-string>)
den Namen einer Variablen, die eine Zeichenkette enthält (<composed-name>)
einen Ausdruck, der als Ergebnis eine Zeichenkette zurückliefert
Beispiel
/JV-NAME = 'MY-JV' /MY-VAR = JV('JV-NAME') Wert der Jobvariablen JV-NAME /MY-VAR = JV(JV-NAME) Wert der Jobvariablen MY-JV /MY-VAR = JV('&JV-NAME') Wert der Jobvariablen MY-JV /MY-VAR = JV(JV(JV-NAME)) Wert der Jobvariablen, deren Name in der Jobvariablen MY-JV abgelegt ist
Beispiel
/A = 'ABCD' /B = C'ABCD' /C = X'C1C2C3C4'
Den Variablen A und B wird der gleiche C-String zugewiesen. Der Variablen C wird ein X-String zugewiesen, der ausgewertet die Zeichenfolge ABCD ergibt. Alle drei Variablen haben somit denselben Inhalt.