sentencia STRING
La sentencia STRING encadena los contenidos parciales o completos de dos o más elementos de datos o literales para formar un solo elemento de datos.
Se puede escribir una sentencia STRING en lugar de una serie de sentencias MOVE.
- identifier-1, literal-1
- Representa los campos de envío.
- Frase DELIMITED BY
- Establece los límites de la serie.
- identifier-2, literal-2
- Son delimitadores; es decir, caracteres que delimitan los datos que se van a transferir.
- TAMAÑO
- Transfiere el área de envío completa.
- Frase INTO
- Identifica el campo de recepción.
- identifier-3
- Representa el campo de recepción.
- Frase POINTER
- Apunta a una posición de carácter en el campo de recepción. El campo de puntero indica una posición de carácter alfanumérico relativo, una posición de carácter DBCS o una posición de carácter nacional cuando el campo de recepción es de uso DISPLAY, DISPLAY-1o NATIONAL, respectivamente.
- identifier-4
- Representa el campo de puntero. identifier-4 debe ser lo suficientemente grande para contener un valor igual a la longitud del campo receptor más 1. Debe inicializar identifier-4 en un valor distinto de cero antes de que comience la ejecución de la sentencia STRING.
Se aplican las siguientes normas:
- Todos los identificadores excepto identifier-4 deben hacer referencia a elementos de datos descritos explícita o implícitamente como de uso DISPLAY, DISPLAY-1o NATIONAL.
- literal-1 o literal-2 debe ser de categoría alfanumérica, DBCS o nacional y puede ser cualquier constante figurativa que no empiece por la palabra ALL (excepto NULL).
- Si identifier-1 o identifer-2 hace referencia a un elemento de datos de categoría numérica, cada elemento numérico debe describirse como un entero sin el símbolo 'P' en su serie de caracteres PICTURE.
- identifier-3 no debe hacer referencia a un elemento de datos de categoría numérico editado, alfanumérico editado o nacional editado; un elemento de datos de coma flotante externo de uso DISPLAY, o un elemento de datos de coma flotante externo de uso NATIONAL.
- identifier-3 no debe describirse con la cláusula JUSTIFIC.
- Si identifier-3 es de uso DISPLAY, identifier-1 y identifier-2 deben ser de uso DISPLAY y todos los literales deben ser literales alfanuméricos. Se puede especificar cualquier constante figurativa excepto una que empiece con la palabra ALL. Cada constante figurativa representa un literal alfanumérico de 1 carácter.
- Si identifier-3 es de uso DISPLAY-1, identifier-1 y identifier-2 deben ser de uso DISPLAY-1 y todos los literales deben ser literales DBCS. La única constante figurativa que se puede especificar es SPACE, que representa un literal DBCS de 1 carácter. No debe especificarse ALL literal-DBCS .
- Si identifier-3 es de uso NATIONAL, identifier-1 y identifier-2 deben ser de uso NATIONAL y todos los literales deben ser literales nacionales. Se puede especificar cualquier constante figurativa excepto carácter-simbólico y una que empiece por la palabra ALL. Cada constante figurativa representa un literal nacional de 1 carácter.
- Si identifier-1 o identifier-2 hace referencia a un elemento de datos elementales de uso DISPLAY que se describe como numérico de categoría, editado numéricamente o editado alfanumérico, el elemento se trata como si se hubiera redefinido como alfanumérico de categoría.
- Si identifier-1 o identifier-2 hace referencia a un elemento de datos elementales de uso NATIONAL que se describe como un elemento de categoría numérico, editado numéricamente o editado a nivel nacional, el elemento se trata como si se hubiera redefinido como de categoría nacional.
- identifier-4 no debe describirse con el símbolo P en su serie de caracteres PICTURE.
- Ninguno de los identificadores de una sentencia STRING puede ser un campo de fecha con ventana.
La evaluación de subíndices, modificación de referencia, longitudes de variable, ubicaciones de variable e identificadores de función se realiza sólo una vez, al principio de la ejecución de la sentencia STRING. Por lo tanto, si identifier-3 o identifier-4 se utiliza como subíndice, modificador de referencia o argumento de función en la sentencia STRING, o afecta a la longitud o ubicación de cualquiera de los identificadores de la sentencia STRING, los valores calculados para dichos subíndices, modificadores de referencia, longitudes de variable, ubicaciones de variable y funciones no se verán afectados por ningún resultado de la sentencia STRING.
Si identifier-3 y identifier-4 ocupan la misma área de almacenamiento, se producirán resultados no definidos, incluso si los identificadores están definidos por la misma entrada de descripción de datos.
Si identifier-1 o identifier-2 ocupa la misma área de almacenamiento que identifier-3 o identifier-4, se producirán resultados no definidos, incluso si los identificadores están definidos por la misma entrada de descripción de datos.
Consulte Flujo de datos para obtener información detallada sobre el procesamiento de la sentencia STRING.
Frases ON OVERFLOW
- imperative-statement-1
- Ejecutado cuando el valor del puntero (explícito o implícito):
- Es menor que 1
- Excede un valor igual a la longitud del campo de recepción
Cuando se produce cualquiera de las condiciones anteriores, existe una condición de desbordamiento y no se transfieren más datos. A continuación, se termina la operación STRING, se ignora la frase NOT ON OVERFLOW, si se especifica, y el control se transfiere al final de la sentencia STRING o, si se especifica la frase ON OVERFLOW, a imperative-statement-1.
Si el control se transfiere a imperative-statement-1, la ejecución continúa de acuerdo con las reglas para cada sentencia especificada en imperative-statement-1. Si se ejecuta una ramificación de procedimiento o una sentencia condicional que provoca una transferencia explícita de control, el control se transfiere de acuerdo con las reglas de dicha sentencia; de lo contrario, al finalizar la ejecución de imperative-statement-1, el control se transfiere al final de la sentencia STRING.
Si en el momento de la ejecución de una sentencia STRING, no se encuentran las condiciones que causarían una condición de desbordamiento, después de la finalización de la transferencia de datos, la frase ON OVERFLOW, si se especifica, se ignora. A continuación, el control se transfiere al final de la sentencia STRING, o si se especifica la frase NOT ON OVERFLOW, a imperative-statement-2.
Si el control se transfiere a imperative-statement-2, la ejecución continúa de acuerdo con las reglas para cada sentencia especificada en imperative-statement-2. Si se ejecuta una ramificación de procedimiento o una sentencia condicional que provoca una transferencia explícita de control, el control se transfiere de acuerdo con las reglas de dicha sentencia. De lo contrario, al finalizar la ejecución de imperative-statement-2, el control se transfiere al final de la sentencia STRING.
frase END-STRING
Este terminador de ámbito explícito sirve para delimitar el ámbito de la sentencia STRING. END-STRING permite que una sentencia STRING condicional se anide en otra sentencia condicional. END-STRING también puede utilizarse con una sentencia STRING imperativa.
Para más información, consulte Declaraciones de ámbito delimitado.
