Definición de campo (código de función 8)

Debe proporcionar la entrada y la salida que se requieren para una operación de definición de campo.

Al entrar

La entrada que se proporcionó a la operación de definición de campo y la salida que se requiere son las siguientes:

Iniciar la información de la interfaz de programación específica del programa.Los registros contienen la siguiente información:
Tabla 1. Contenido de los registros de entrada
Registrar Contiene
1 Dirección de la lista de parámetros de procedimiento de campo (FPPL)
del 2 al 12 Valores desconocidos que deben restaurarse al salir.
13 Dirección del área de almacenamiento del registro.
14 Dirección de devolución.
15 Dirección del punto de entrada de la rutina de salida.

El contenido de todos los demás registros y de los campos no enumerados en las siguientes tablas es impredecible.

El área de trabajo consta de 512 bytes contiguos sin inicializar.

El FPIB dispone de la siguiente información:
Tabla 2. Contenido del FPIB a la entrada
Campo Contiene
FPBFCODE 8, el código de función
FPBWKLN 512, la longitud del área de trabajo
El CVD contiene la siguiente información:
Tabla 3. Contenido del DCE a la entrada
Campo Contiene
FPVDTYPE Uno de estos códigos para el tipo de datos del valor de la columna:
Código
Significado
16
CHAR
20
VARCHAR
24
GRAPHIC
28
VARGRAPHIC
FPVDVLEN El atributo de longitud de la columna

Se omite el campo FPVDVALE. El FVD proporcionado tiene una longitud de 4 bytes. El campo FPPVL contiene la información:

Tabla 4. Contenido del FPPVL al entrar
Campo Contiene
FPPVLEN La longitud, en bytes, del área que contiene la lista de valores de parámetros. El valor mínimo es 254, incluso si no hay parámetros.
FPPVCNT El número de descriptores de valor que siguen; cero si no hay parámetros.
FPPVVDS Un conjunto contiguo de descriptores de valor, uno para cada parámetro de la lista de valores de parámetros, cada uno precedido por un campo de longitud de 4 bytes.

Al salir

Los registros deben contener la siguiente información:
Tabla 5. Contenido de los registros de salida
Registrar Contiene
del 2 al 12 Los valores que contenían en el momento de la entrada.
15 El entero cero si la columna descrita en el CVD es válida para el procedimiento de campo; de lo contrario, el valor no debe ser cero.

Los siguientes campos deben configurarse como se muestra; todos los demás campos deben permanecer como al ingresar.

El FPIB debe tener la siguiente información:
Tabla 6. Contenido del FPIB a la salida
Campo Contiene
FPBWKLN La longitud, en bytes, del área de trabajo que se proporcionará a las operaciones de codificación y decodificación de campos; 0 si no se requiere área de trabajo.
FPBRTNC Un código de retorno de carácter opcional de 2 bytes, definido por el procedimiento de campo; se deja en blanco si no se proporciona ningún código de retorno.
FPBRSNC Un código de motivo de carácter opcional de 4 bytes, definido por el procedimiento de campo; se deja en blanco si no se proporciona ningún código de motivo.
FPBTOKP Opcionalmente, la dirección de un mensaje de error de 40 bytes que reside en el área de trabajo o en el área estática del procedimiento de campo; ceros si no se da ningún mensaje.

Los errores señalados por un procedimiento de campo dan como resultado SQLCODE -681 (SQLSTATE '23507'), que se establece en el área de comunicación SQL (SQLCA). El contenido de FPBRTNC y FPBRSNC, y el mensaje de error al que apunta FPBTOKP, también se colocan en los tokens, en SQLCA, como campo SQLERRMT. El significado del mensaje de error viene determinado por el procedimiento de campo.

El FVD debe contener la siguiente información:
Tabla 7. Contenido del FVD a la salida
Campo Contiene
TIPO DE FPVD El código numérico para el tipo de datos del valor del campo. Cualquiera de los tipos de datos enumerados en la Tabla 1 es válido.
FPVDVLEN La longitud del valor del campo.

El campo FPVDVALE no debe establecerse; la longitud del FVD es de solo 4 bytes.

El FPPVL puede redefinirse para adaptarse al procedimiento de campo, y devolverse como el FPPVL modificado, sujeto a las siguientes restricciones:
  • El procedimiento de campo no debe aumentar la duración del FPPVL.
  • FPPVLEN debe contener la longitud real del FPPVL modificado, o 0 si no se devuelve ninguna lista de parámetros.
El FPPVL modificado se registra en la tabla de catálogo SYSIBM.SYSFIELDS y se pasa de nuevo al procedimiento de campo durante la codificación y decodificación de campo. La FPPVL modificada no necesita tener el formato de una lista de parámetros de procedimiento de campo, y no necesita describir constantes mediante descriptores de valor.
Finalizar la información de la interfaz de programación específica del programa.