Subseries

En cualquier contexto en el que haga referencia a un campo de caracteres, puede hacer referencia a una subserie que es un subconjunto secuencial de los caracteres de ese campo. Si un valor de campo es ABCD, puede hacer referencia a BC (por ejemplo), que son el segundo y tercer carácter.

Además, puede especificar una subserie en el lado izquierdo de una sentencia assignment si el campo destino es de tipo CHAR, DBCHAR o UNICODE. El área de subserie se rellena (con blancos, si es necesario) y el texto asignado no se extiende más allá del área de subserie (sino que se trunca, si es necesario). Además, puede especificar una subserie en el lado izquierdo si el campo destino es una serie de longitud limitada; dicha situación se describe más adelante, a modo de ejemplo.

La sintaxis de una referencia de subserie es la siguiente.

Diagrama de sintaxis de subserie
itemReference
A campo de carácter o HEXADECIMAL, pero no un literal. El elemento puede ser una variable del sistema o un elemento de matriz. Las series de longitud limitada están sujetas a consideraciones especiales, como se describe más adelante.
fromIndex
El primer carácter de interés del elemento, donde 1 representa el primer carácter del elemento de carácter, 2 representa el segundo, etc. Puede utilizar una expresión numérica que dé como resultado un entero, pero la expresión no puede incluir una invocación de función.

El valor de fromIndex representa una posición de byte a menos que itemReference haga referencia a un elemento de tipo DBCHAR o UNICODE, en cuyo caso el valor representa una posición de carácter de doble byte.

Si itemReference es una serie (de longitud no limitada), el valor de fromIndex está entre 1 y la longitud de la serie.

Si itemReference es una serie de longitud limitada, el valor de fromIndex está entre 1 y la longitud especificada en la declaración de la variable. Si la posición no tiene valor, la subserie es una serie vacía, como se muestra en un ejemplo posterior.

Cuente a partir del carácter situado más a la izquierda, incluso aunque esté trabajando con un idioma bidireccional, como árabe o hebreo.

toIndex
El último carácter de interés del elemento, donde 1 representa el primer carácter del elemento de carácter, 2 representa el segundo, etc. Puede utilizar una expresión numérica que dé como resultado un entero, pero la expresión no puede incluir una invocación de función.

El valor de toIndex representa una posición de byte a menos que itemReference haga referencia a un elemento de tipo DBCHAR o UNICODE, en cuyo caso el valor representa una posición de carácter de doble byte.

Si itemReference es una serie (de longitud no limitada), el valor máximo de toIndex es la posición del último carácter de la serie.

Si itemReference es una serie de longitud limitada, el valor de toIndex es la longitud especificada en la declaración de la variable. Si la posición no tiene valor, la subserie sólo llega hasta la última posición que contiene un carácter, como se muestra en un ejemplo posterior.

Si toIndex es mayor que fromIndex y ambos números son válidos, la subserie es una serie vacía.

Cuente a partir del carácter situado más a la izquierda, incluso aunque esté trabajando con un idioma bidireccional, como árabe o hebreo.

Observe el ejemplo siguiente:
  limited string(20); 	
  s string;  	
  limited = "123456789"; 	
  s = limited[11:12]; // Sin errores, y el valor de s es "" (una serie vacía).
  s = limited[8:12];  // Sin errores, y el valor de s es "89". 	
  limited = s[8:12];  // Error debido a que s no tiene límite de longitud.  
                      // La última posición válida es la que tiene el último carácter.
Si crea una subserie de una serie de longitud limitada en el lado izquierdo de una sentencia de asignación y si fromIndex está más allá de la posición que contiene el último carácter, EGL coloca un espacio en blanco por cada carácter nulo que hay entre el valor que ya se encuentra en la serie de longitud limitada y el contenido asignado:
  limited string(20) = "123456789";	
  s string = "abc";
  limited[12:14] = s; // sin errores; el valor de la serie limitada pasa a ser "123456789
abc"
:

Conceptos relacionados
Referencias a variables en EGL

Tareas relacionadas
Diagrama de sintaxis para sentencias y mandatos EGL

Consulta relacionada
Expresiones de texto

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.