In einem Kontext, in dem auf eine Zeichenvariable verwiesen wird, können Sie stattdessen auf eine Unterzeichenfolge (eine sequenzielle Untergruppe der Zeichen in der betreffenden Variablen) verweisen. Beispiel: Wenn eine Variable namens myVar den Wert "ABCD" aufweist, können Sie auf "BC", das zweite und dritte Zeichen, als myVar[2:3] verweisen.
Darüber hinaus können Sie eine Unterzeichenfolge auf der linken Seite einer Zuordnungsanweisung angeben, wenn die Zielunterzeichenfolge eine feste Länge hat. Der Unterzeichenfolgenbereich wird mit Leerzeichen aufgefüllt, wenn die Quelle kürzer als die Unterzeichenfolge ist, und der Quellentext wird abgeschnitten, wenn er länger als die Unterzeichenfolge ist.
Es kann ein Problem auftreten, wenn Sie Daten aus einer Quellenvariablen einer Unterzeichenfolge derselben Variablen zuordnen (beispielsweise myResult[1:5] = myResult); eine derartige Verwendung von sich überlappendem Speicher wird im EGL-Debugger und in mit EGL generiertem Java™-Code unterstützt, nicht jedoch in mit EGL generiertem COBOL-Code.

Eine Ausnahmebedingung tritt auf, wenn der Wert für vonIndex größer ist als der Wert für bisIndex.
Der Wert beider Indizes stellt eine Byteposition dar, sofern Textvariable nicht den Typ DBCHAR oder UNICODE hat. Ist dies der Fall, stellt der Wert eine Doppelbytezeichenposition dar.
Wenn Textvariable eine Zeichenfolge (ohne Längenbegrenzung) ist, liegt der Wert des Index zwischen 1 und der Länge der Zeichenfolge.
Wenn Textvariable eine Zeichenfolge mit begrenzter Länge ist, liegt der Wert des Index zwischen 1 und der in der Variablendeklaration angegebenen Länge. Befinden sich an den angegebenen Positionen keine Zeichen, hängt der Inhalt der Zielunterzeichenfolge vom Zieltyp ab. Wenn der Zieltyp STRING lautet, ist das Ergebnis eine leere Zeichenfolge; andernfalls wird das Ziel mit Leerzeichen aufgefüllt.
Die Zählung beginnt auch bei bidirektionalen Sprachen wie Arabisch oder Hebräisch beim Zeichen ganz links.
limited string(20);
s string;
limited = "123456789";
s = limited[11:12]; // Kein Fehler; Wert von 's' ist "" (leere Zeichenfolge).
s = limited[8:12]; // Kein Fehler; Wert von 's' ist "89".
limited = s[8:12]; // Fehler, da 's' keine Längenbegrenzung hat.
// Die letzte gültige Position ist die mit dem letzten Zeichen.
limited string(20) = "123456789";
s string = "abc";
limited[12:14] = s; // kein Fehler; Wert von 'limited' wird zu "123456789 abc"
: