Conceptos básicos de base de datos DL/I

Este tema trata sólo los aspectos de DL/I relacionados con la E/S de base de datos. Las llamadas DL/I también se utilizan en IMS para manejar las comunicaciones de terminal y de programa a programa. Consulte la sección Utilizar PCB no de base de datos en programación DL/I.

Estos términos y conceptos son esenciales en el desarrollo de un programa de base de datos DL/I:
Segmentos
La unidad primaria de datos de una base de datos DL/I es el segmento. Un segmento es parecido a un registro. Es un solo bloque de datos dividido en campos de datos.
Jerarquía de base de datos
Una sola base de datos puede contener muchos tipos de segmentos. Estos segmentos están organizados en una relación jerárquica (descendente). El segmento de la cúspide de la jerarquía se denomina segmento raíz. Cada segmento puede tener uno o varios segmentos dependientes relacionados con él en un nivel inferior de la jerarquía. Un segmento que tiene un segmento dependiente se denomina padre del segmento dependiente. El segmento dependiente se denomina segmento hijo. Cada segmento de la base de datos, excepto un segmento raíz, tiene un padre y sólo uno. El segmento raíz no tiene padre.
Campo de secuencia
Uno de los campos de cada tipo de segmento de una base de datos puede designarse como campo de secuencia. El valor del campo de secuencia determina el orden de almacenamiento y recuperación de los segmentos de la base de datos. Si se ha definido un campo de secuencia para el segmento hijo, DL/I almacena varias apariciones del mismo segmento hijo por orden de campo de secuencia bajo el padre de ese segmento hijo.
Bloque de especificación de programa (PSB)
Un PSB es una descripción DL/I formal de las estructuras jerárquicas de la base de datos a las que un programa puede acceder. El componente de registro EGL de tipo PSBRecord contiene la información que el programa necesita para interactuar con el PSB DL/I. El PSB muestra las relaciones jerárquicas que existen entre los tipos de segmentos.
Bloque de comunicación de programa (PCB)
Un PCB es una entrada de un PSB. Cada PCB de base de datos describe una estructura de datos jerárquica que un programa puede utilizar. La estructura de datos puede corresponder directamente a la estructura de una base de datos DL/I física o lógica o puede invertir la estructura de la base de datos por medio del acceso de un índice secundario.
Llamada DL/I
Una llamada DL/I es una invocación de DL/I por parte de un programa. La lista de parámetros pasada para una llamada de base de datos suministra a DL/I la siguiente información:
Código de función
Indica si DL/I debe obtener, insertar, sustituir o suprimir segmentos de la base de datos.
Identificador de base de datos
Señala al bloque de comunicación de programa (PCB) que identifica la base de datos a la que debe acceder DL/I en la llamada.
Dirección de área de E/S
Identifica la dirección del almacenamiento intermedio que contiene el segmento a partir del cual se efectúa la lectura de la base de datos o antes del que se escribe en la base de datos.
Lista de argumentos de búsqueda de segmento (SSA)
Lista un conjunto de criterios de búsqueda que permiten a DL/I seleccionar los segmentos que recupera de la base de datos o especificar la posición de los segmentos que inserta en la base de datos.
Al codificar un programa DL/I en un lenguaje como COBOL o PL/I, codificará la lista de parámetros de DL/I directamente o utilizará la interfaz a nivel de mandatos de CICS para crear la lista de parámetros de DL/I. EGL crea automáticamente listas de parámetros de DL/I en función de la opción de E/S y de la posición del objeto de E/S en el PSB. Puede visualizar la llamada DL/I creada para la función. También puede modificar la llamada DL/I para utilizar funciones de DL/I adicionales.
Posición en la base de datos
Cuando se está ejecutando un programa, DL/I mantiene un puntero de posición para cada PCB del PSB del programa. El puntero indica el lugar de la base de datos en la que una función SCAN (función DL/I get next) inicia la búsqueda del segmento que debe recuperarse.

En cualquier llamada DL/I satisfactoria, el puntero de posición señala al segmento situado a continuación del último segmento al que se ha accedido en la llamada. Si no se han emitido llamadas, la posición actual indica el principio de la base de datos. Si se encuentra la condición de final de base de datos, la posición actual pasa a ser el principio de la base de datos.

A medida que DL/I continúa explorando una base de datos en busca de un segmento que satisfaga los criterios de la lista de SSA, accede a cada segmento raíz por orden de aparición en la base de datos. Cuando DL/I encuentra un segmento raíz, accede a todos los segmentos dependientes del raíz antes de explorar el próximo segmento raíz. Al explorar segmentos dependientes, DL/I intenta primero leer el próximo segmento situado en el nivel inferior siguiente. Si no hay nivel inferior, lee el próximo segmento situado al mismo nivel. Si no hay más segmentos en el nivel actual, vuelve al nivel anterior para buscar el segmento siguiente. Este proceso se denomina orden de búsqueda “de arriba a abajo, de izquierda a derecha”.

Conceptos relacionados:
Soporte de bases de datos DL/I

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