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.
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.
Una unidad lógica de trabajo (LUW) finaliza siempre que se produce un punto de compromiso o una retrotracción.
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.
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.
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