Consideraciones acerca de DL/I para entornos no CICS

En entornos no CICS, la planificación de PSB se maneja de forma diferente que en entornos CICS. Las secciones que siguen describen la planificación de PSB y la utilización de un PSB alternativo durante la ejecución.

Planificación de PSB

Durante la ejecución de programas para IMS/VS, BMP IMS y z/OS por lotes, la inicialización de DL/I planifica un solo PSB. Este PSB es el único disponible para un paso de trabajo por lotes o una transacción IMS.

Todos los programas EGL y no EGL de la unidad de ejecución deben compartir el mismo PSB. La unidad de ejecución incluye todos los programas que se llaman o a los que se realizan transferencias utilizando una sentencia transfer con la forma transferir a programa. Para BMP IMS y z/OS por lotes, la unidad de ejecución también incluye todos los programas a los que se realizan transferencias utilizando una sentencia transfer con la forma transferencia a una transacción. Para IMS/VS, la unidad de ejecución para un programa al que se realiza una transferencia mediante una sentencia transfer de la forma transferir a una transacción difiere del programa de transferencia.

En IMS/VS, el PSB que debe utilizarse se especifica en la definición del sistema IMS. El PSB IMS debe tener el mismo nombre que el programa. El PSB se planifica al principio de la transacción IMS.

Para BMP IMS y z/OS por lotes, se especifica el nombre del PSB que se va a utilizar en el JCL utilizado para ejecutar el trabajo por lotes. El PSB se planifica al principio del trabajo BMP IMS o z/OS por lotes.

Los puntos de compromiso y la unidad lógica de trabajo

Una unidad lógica de trabajo (LUW) finaliza siempre que se produce un punto de compromiso o una retrotracción.

Un punto de compromiso se produce cuando ocurre uno o varios de los siguientes eventos:
  • El programa de nivel superior de una unidad de ejecución finaliza satisfactoriamente.

    Para z/OS por lotes y BMP IMS, una unidad de ejecución consta de todos los programas EGL y no EGL que se transfieren el control entre sí utilizando una sentencia transfer o call. En programas no EGL, esto también incluye las transferencias que utilizan una macro OS XCTL o una sentencia call.

    En IMS/VS, una unidad de ejecución es equivalente a una transacción única y consta de todos los programas EGL y no EGL que se transfieren el control entre sí mediante una sentencia transfer de la forma transferencia a un programa o una sentencia call. Para programas no EGL, esto también incluye cualquier transferencia que utilice una sentencia call.

  • Un programa utiliza una sentencia de E/S converse y alguno de los siguientes valores está establecido en 1:
    • converseVar.segmentedMode (toma el valor por omisión 1 si el programa está definido como segmentado)
    • converseVar.commitOnConverse
    El mejor momento para que se produzca un punto de compromiso es después de la salida de terminal y antes de la próxima entrada de terminal. Un punto de compromiso en la E/S de terminal sincroniza las actualizaciones de la base de datos y envía mensajes de confirmación al usuario del programa.
  • Para programas z/OS por lotes y BMP IMS orientados a lotes, un programa transfiere mediante una sentencia transfer de la forma transferir a una transacción y la opción de generación synchOnTrxTransfer se establece en YES para el programa del que está transfiriendo
  • Un programa llama a la función sysLib.commit() o al servicio COMMIT.

    En z/OS por lotes, los programas EGL que no utilizan DL/I sólo emiten un punto de compromiso si el programa ha efectuado cambios en una tabla SQL. No se produce un punto de compromiso para los cambios de una tabla SQL efectuados por un programa no EGL.

    En IMS/VS y programas BMP IMS orientados a transacciones, (programas que exploran un archivo serie asociado con el PCB de E/S). sysLib.commit() se pasa por alto. Se produce un punto de compromiso siempre que existe una llamada GU (get unique) al PCB de E/S.

  • En IMS/VS y programas BMP IMS orientados a transacciones, un programa realiza una llamada get unique satisfactoria al PCB de E/S.
Una retrotracción se produce cuando ocurre uno o varios de los siguientes eventos:
  • Un programa de EGL llama a la función sysLib.rollback()
  • Un programa finaliza debido a una condición de error.
Cuando se produce una retrotracción, todos los cambios efectuados en las bases de datos y en archivos recuperables desde el inicio de la LUW se restituyen. La retrotracción no afecta a las bases de datos DL/I en el entorno VSE por lotes.

Utilizar funciones de punto de comprobación simbólico y reinicio (solo z/OS por lotes y BMP IMS)

Al ejecutar un programa por lotes, puede utilizar sysLib.commit() para comprometer periódicamente actualizaciones de base de datos. Como alternativa, puede utilizar EGLTDLI() para implementar funciones de punto de comprobación simbólico y reinicio. Tanto sysLib.commit() como la función de punto de comprobación simbólico comprometen actualizaciones de base de datos. Sin embargo, la función de punto de comprobación simbólico también permite guardar información, como por ejemplo totales de control o la clave del último registro de base de datos procesado cuando se produjo un punto de compromiso. Si el programa no finaliza satisfactoriamente, se restituye hasta el último punto de compromiso. Si ha guardado información mediante el punto de comprobación simbólico, al reiniciar el programa podrá restaurar los datos guardados mediante la llamada de reinicio DL/I (XRST). Puede utilizar esta información para reanudar el proceso en el punto de la base de datos en el que se detuvo el proceso.

Conceptos relacionados:
Soporte de bases de datos DL/I

Consulta relacionada:
call
converse
Consideraciones acerca de DL/I para entornos CICS
EGLTDLI()
transfer

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