IMS DB - Recuperación de datos
Los diversos métodos de recuperación de datos utilizados en las llamadas IMS DL / I son los siguientes:
- Llamada GU
- Llamada GN
- Usando códigos de comando
- Procesamiento múltiple
Consideremos la siguiente estructura de la base de datos IMS para comprender las llamadas a la función de recuperación de datos:
Llamada GU
Los fundamentos de la llamada GU son los siguientes:
La llamada GU se conoce como llamada Get Unique. Se utiliza para procesamiento aleatorio.
Si una aplicación no actualiza la base de datos con regularidad o si el número de actualizaciones de la base de datos es menor, usamos el procesamiento aleatorio.
La llamada GU se utiliza para colocar el puntero en una posición particular para una posterior recuperación secuencial.
Las llamadas GU son independientes de la posición del puntero establecida por las llamadas anteriores.
El procesamiento de la llamada GU se basa en los campos clave únicos proporcionados en la declaración de la llamada.
Si proporcionamos un campo clave que no es único, DL / I devuelve la aparición del primer segmento del campo clave.
CALL 'CBLTDLI' USING DLI-GU
PCB-NAME
IO-AREA
LIBRARY-SSA
BOOKS-SSA
ENGINEERING-SSA
IT-SSA
El ejemplo anterior muestra que emitimos una llamada GU al proporcionar un conjunto completo de SSA calificados. Incluye todos los campos clave desde el nivel raíz hasta la ocurrencia del segmento que queremos recuperar.
Consideraciones sobre llamadas GU
Si no proporcionamos el conjunto completo de SSA calificados en la llamada, entonces DL / I funciona de la siguiente manera:
Cuando usamos un SSA no calificado en una llamada GU, DL / I accede a la primera ocurrencia del segmento en la base de datos que cumple con los criterios que usted especifica.
Cuando emitimos una llamada GU sin ningún SSA, DL / I devuelve la primera aparición del segmento raíz en la base de datos.
Si algunos SSA en niveles intermedios no se mencionan en la llamada, entonces DL / I usa la posición establecida o el valor por defecto de un SSA no calificado para el segmento.
Códigos de estado
La siguiente tabla muestra los códigos de estado relevantes después de una llamada GU:
S. No | Código de estado y descripción |
---|---|
1 | Spaces Llamada exitosa |
2 | GE DL / No pude encontrar un segmento que cumpliera con los criterios especificados en la llamada |
Llamada GN
Los fundamentos de la llamada GN son los siguientes:
La llamada GN se conoce como llamada Get Next. Se utiliza para el procesamiento secuencial básico.
La posición inicial del puntero en la base de datos es antes del segmento raíz del primer registro de la base de datos.
La posición del puntero de la base de datos está antes de la siguiente aparición del segmento en la secuencia, después de una llamada GN exitosa.
La llamada GN comienza a través de la base de datos desde la posición establecida por la llamada anterior.
Si una llamada GN no está calificada, devuelve la siguiente ocurrencia del segmento en la base de datos independientemente de su tipo, en secuencia jerárquica.
Si una llamada GN incluye SSA, DL / I recupera solo los segmentos que cumplen los requisitos de todos los SSA especificados.
CALL 'CBLTDLI' USING DLI-GN
PCB-NAME
IO-AREA
BOOKS-SSA
El ejemplo anterior muestra que emitimos una llamada GN que proporciona la posición inicial para leer los registros secuencialmente. Obtiene la primera aparición del segmento LIBROS.
Códigos de estado
La siguiente tabla muestra los códigos de estado relevantes después de una llamada GN:
S. No | Código de estado y descripción |
---|---|
1 | Spaces Llamada exitosa |
2 | GE DL / No pude encontrar un segmento que cumpliera con los criterios especificados en la llamada. |
3 | GA Una llamada GN no calificada sube un nivel en la jerarquía de la base de datos para recuperar el segmento. |
4 | GB Se alcanza el final de la base de datos y no se encuentra el segmento. |
GK Una llamada GN no calificada intenta buscar un segmento de un tipo particular que no sea el recién recuperado, pero permanece en el mismo nivel jerárquico. |
Códigos de comando
Los códigos de comando se utilizan con las llamadas para buscar una ocurrencia de segmento. Los diversos códigos de comando utilizados con las llamadas se describen a continuación.
Código de comando F
Puntos a tener en cuenta:
Cuando se especifica un código de comando F en una llamada, la llamada procesa la primera aparición del segmento.
Los códigos de comando F se pueden usar cuando queremos procesar secuencialmente y se puede usar con llamadas GN y llamadas GNP.
Si especificamos un código de comando F con una llamada GU, no tiene ningún significado, ya que las llamadas GU recuperan la aparición del primer segmento por defecto.
Código de comando L
Puntos a tener en cuenta:
Cuando se especifica un código de comando L en una llamada, la llamada procesa la última aparición del segmento.
Los códigos de comando L se pueden usar cuando queremos procesar secuencialmente y se puede usar con llamadas GN y llamadas GNP.
Código de comando D
Puntos a tener en cuenta:
El código de comando D se usa para obtener más de un segmento de ocurrencias usando una sola llamada.
Normalmente, DL / I opera en el segmento de nivel más bajo especificado en una SSA, pero en muchos casos, también queremos datos de otros niveles. En esos casos, podemos usar el código de comando D.
El código de comando D facilita la recuperación de toda la ruta de los segmentos.
Código de comando C
Puntos a tener en cuenta:
El código de comando C se usa para concatenar claves.
El uso de operadores relacionales es un poco complejo, ya que necesitamos especificar un nombre de campo, un operador relacional y un valor de búsqueda. En su lugar, podemos usar un código de comando C para proporcionar una clave concatenada.
El siguiente ejemplo muestra el uso del código de comando C:
01 LOCATION-SSA.
05 FILLER PIC X(11) VALUE ‘INLOCSEG*C(‘.
05 LIBRARY-SSA PIC X(5).
05 BOOKS-SSA PIC X(4).
05 ENGINEERING-SSA PIC X(6).
05 IT-SSA PIC X(3)
05 FILLER PIC X VALUE ‘)’.
CALL 'CBLTDLI' USING DLI-GU
PCB-NAME
IO-AREA
LOCATION-SSA
Código de comando P
Puntos a tener en cuenta:
Cuando emitimos una llamada GU o GN, el DL / I establece su parentesco en el segmento de nivel más bajo que se recupera.
Si incluimos un código de comando P, entonces el DL / I establece su parentesco en un segmento de nivel superior en la ruta jerárquica.
Código de comando U
Puntos a tener en cuenta:
Cuando se especifica un código de comando U en un SSA no calificado en una llamada GN, el DL / I restringe la búsqueda del segmento.
El código de comando U se ignora si se usa con un SSA calificado.
Código de comando V
Puntos a tener en cuenta:
El código de comando V funciona de manera similar al código de comando U, pero restringe la búsqueda de un segmento en un nivel particular y todos los niveles por encima de la jerarquía.
El código de comando V se ignora cuando se usa con un SSA calificado.
Q Código de comando
Puntos a tener en cuenta:
El código de comando Q se utiliza para poner en cola o reservar un segmento para uso exclusivo de su programa de aplicación.
El código de comando Q se utiliza en un entorno interactivo donde otro programa podría realizar un cambio en un segmento.
Procesamiento múltiple
Un programa puede tener varias posiciones en la base de datos de IMS, lo que se conoce como procesamiento múltiple. El procesamiento múltiple se puede realizar de dos maneras:
- Múltiples PCB
- Posicionamiento múltiple
Múltiples PCB
Se pueden definir varios PCB para una sola base de datos. Si hay varios PCB, entonces un programa de aplicación puede tener diferentes vistas. Este método para implementar el procesamiento múltiple es ineficaz debido a los gastos generales impuestos por los PCB adicionales.
Posicionamiento múltiple
Un programa puede mantener múltiples posiciones en una base de datos usando una sola PCB. Esto se logra manteniendo una posición distinta para cada ruta jerárquica. El posicionamiento múltiple se utiliza para acceder a segmentos de dos o más tipos secuencialmente al mismo tiempo.