Función ASBITSTREAM

La función de campo ASBITSTREAM genera una corriente de bits para el subárbol de un campo determinado, de acuerdo a las normas del analizador que es propietario del campo, y utiliza los parámetros proporcionados por el llamador para:
  • Codificación
  • CCSID
  • Conjunto de mensajes
  • Tipo de mensaje
  • Formato de mensaje
  • Opciones
Esta función elimina realmente la limitación de la función BITSTREAM existente, que sólo se puede utilizar en un árbol producido por un analizador que pertenezca a un nodo de entrada

La función BITSTREAM existente se mantiene por razones de compatibilidad con versiones anteriores.

Sintaxis

Notas:
  1. Cada cláusula sólo puede aparecer una vez

ASBITSTREAM devuelve un valor del tipo BLOB que contiene una representación de corriente de bits del campo al que apunta ReferenciaCampo y sus elementos dependientes.

El algoritmo para realizar esta operación varía de un analizador a otro y según las opciones especificadas. Todos los analizadores dan soporte a las modalidades siguientes:
  • RootBitStream, en la que el algoritmo de generación de corriente de bits es el mismo que el que utiliza un nodo de salida. En esta modalidad, sólo se obtiene un resultado significativo si el campo al que se apunta se encuentra en lo alto de un subárbol y con una estructura adecuada.
  • EmbeddedBitStream, en la que no sólo el algoritmo de generación de corriente de bits es el mismo que el utilizado por un nodo de salida, sino que también los elementos siguientes:
    • Codificación
    • CCSID
    • Conjunto de mensajes
    • Tipo de mensaje
    • Formato de mensaje
    se determinan, si no se especifican de manera explícita, de la misma manera que el nodo de salida. Es decir, se determinan buscando los iguales anteriores de ReferenciaCampo con la suposición de que representan cabeceras.

    De esta manera, el algoritmo para determinar estas propiedades es esencialmente el mismo que el utilizado para la función BITSTREAM.

Algunos analizadores también dan soporte a otra modalidad, FolderBitStream, que genera una corriente de bits significativa para cualquier subárbol, siempre y cuando el campo al que se apunta represente una carpeta.

En todos los casos, la corriente de bits obtenida se puede suministrar a una sentencia CREATE con una cláusula PARSE, utilizando el mismo DOMAIN y OPTIONS para reproducir el subárbol original.

Cuando se llame la función, se evaluarán las expresiones de cláusulas. Se emitirá una excepción si alguna de las expresiones no da como resultado un valor del tipo adecuado.

Si cualquier parámetro es NULL, el resultado es NULL.

Cláusula Tipo Valor por omisión
Opciones entero RootBitStream & ValidateNone
Codificación entero 0
Ccsid entero 0
Conjunto de mensajes carácter Serie de longitud cero
Tipo de mensaje carácter Serie de longitud cero
Formato de mensaje carácter Serie de longitud cero

Aunque la cláusula OPTIONS acepta cualquier expresión que devuelva un valor de tipo entero, sólo tiene sentido generar valores de opciones de la lista de constantes suministradas, utilizando la función BITOR si se necesita más de una opción.

Una vez generado, el valor se convierte en un entero y se puede guardar en una variable o pasar como parámetro a una función, así como utilizarlo directamente en una llamada ASBITSTREAM. La lista de constantes definidas globalmente es:

Sólo se puede especificar una opción de cada grupo, a excepción de ValidateValue y ValidateContent, que se pueden utilizar juntas para obtener la validación de contenido y valores. Si no especifica una opción en un grupo, se utilizará la opción que aparece en negrita.

La cláusula ENCODING acepta cualquier expresión que devuelva un valor de tipo entero. No obstante, sólo tiene sentido generar valores de codificación de la lista de constantes suministradas:
       0
       MQENC_INTEGER_NORMAL
       MQENC_INTEGER_REVERSED
       MQENC_DECIMAL_NORMAL
       MQENC_DECIMAL_REVERSED
       MQENC_FLOAT_IEEE_NORMAL
       MQENC_FLOAT_IEEE_REVERSED
       MQENC_FLOAT_S390
0 utiliza la codificación del gestor de colas.

Los valores utilizados para la cláusula CCSID siguen el sistema de numeración normal. Por ejemplo, 1200 = UCS-2, 1208 = UTF-8.

Además, se da soporte a los siguientes valores especiales:
       0
       -1
0 utiliza el CCSID del gestor de colas y -1 utiliza el CCSID tal como lo determina el propio analizador. Este valor está reservado.

Para las cláusulas ausentes, se utilizan los valores por omisión proporcionados. Utilice los valores por omisión de CCSID y codificación, porque toman sus valores de los valores de CCSID y codificación del gestor de colas.

De manera similar, utilice los valores por omisión para cada opción de conjunto de mensajes, tipo y formato, porque muchos analizadores no necesitan información de conjunto de mensajes, tipo o formato; cualquier valor válido es suficiente.

Cuando se han evaluado las expresiones, se genera la corriente de bits adecuada.
Nota: Dado que esta función tiene un gran número de cláusulas, se da soporte a una sintaxis alternativa en que se suministran los parámetros como una lista separada por comas en lugar de cláusulas con nombre. En este caso, las expresiones deben estar en el orden siguiente:
ENCODING -> CCSID -> SET -> TYPE -> FORMAT -> OPTIONS

La lista se puede truncar en cualquier punto y puede utilizar una expresión vacía para las cláusulas para las que no suministre un valor.

Ejemplos

      DECLARE options INTEGER BITOR(FolderBitStream, ValidateContent, ValidateValue);
      SET result = ASBITSTREAM(cursor OPTIONS options CCSID 1208);
      SET Result = ASBITSTREAM(Environment.Variables.MQRFH2.Data,,1208,,,,options);

Conceptos relacionados
ESQL

Tareas relacionadas
Desarrollo de ESQL
Manejo de mensajes XML grandes
Trabajo con mensajes XML y corrientes de bits

Referencia relacionada
Preferencia de sintaxis
Funciones de campo ESQL
Función BITSTREAM