Soporte de EGL para PSB y PCB de tiempo de ejecución

Este tema se ocupa de tareas adecuadas en los casos siguientes:

En los casos previos, puede personalizar elementos de programa de EGL según sea necesario para generar un programa COBOL que puede acceder a los bloques de especificación de programa (PSB) y a los bloques de comunicación de programa (PCB). En lo sucesivo, a estos bloques se les llamará PSB y PCB de tiempo de ejecución.

En primer lugar, defina los componentes de registro de DLISegment a los que hará referencia en los registros de PCB de base de datos (si los hay). Después de eso, las tareas primarias son las siguientes:
  1. Definir un componente de registro de PSB. Este componente incluye el conjunto de registros de PCB que se utilizarán al acceder a las colas de mensajes de IMS, las bases de datos de DL/I o los archivos de GSAM
  2. En el programa, asegúrese de que la información de PSB y PCB esté disponible:
    • Declare un registro basado en el componente de registro de PSB
    • Establezca la propiedad del programa @DLI, campo de propiedad psb, en el nombre del registro de PSB; para conocer detalles de la sintaxis, consulte el apartado Bloques set-value
Cada registro de PCB está basado en uno de los componentes de registro de PCB predefinidos, siguientes:
IO_ PCBRecord
Se utiliza para interactuar con un PCB de E/S que permite la entrada de un programa o terminal y (si la entrada venía de un terminal) permite la salida en el mismo terminal. El PCB de E/S también proporciona acceso a otras posibilidades de IMS; por ejemplo, punto de control y reinicio de un programa por lotes.
ALT_PCBRecord
Se utiliza para hacer referencia a un PCB de teleproceso que no sea el PCB de E/S. Este tipo de registro permite al código escribir la salida en una cola de mensajes asociada a otra transacción o a otro dispositivo distinto al terminal asociado al PCB de E/S. El PCB de tiempo de ejecución puede ser de una de las especies siguientes:
  • Un PCB alterno, en cuyo caso, la salida solo se produce si se produce un compromiso.
  • Un PCB alterno expreso, en cuyo caso, la salida se produce independientemente de si se produce un compromiso o una retrotracción.
DB_PCBRecord
Se utiliza para hacer referencia a un PCB de base de datos que representa a una base de datos de DL/I accesible desde el programa. El PCB de base de datos de tiempo de ejecución especifica los datos a los que es posible acceder y el tipo de acceso válido.
GSAM_PCBRecord
Se utiliza para hacer referencia a un PCB de GSAM que se utiliza cuando un programa por lotes de z/OS o de BMP de IMS accede a un archivo de serie que actúa como una base de datos de DL/I solo de raíz.
La lista siguiente proporciona detalles acerca del PSB de tiempo de ejecución en cada uno de los sistemas de destino.
CICS
El valor de la propiedad de registro PSB defaultPSBName es (por omisión) el nombre del PSB de tiempo de ejecución. EGL pone ese nombre en el campo psbName de la variable del sistema DLILib.psbData, pero puede asignar un valor distinto a ese campo de biblioteca. Cuando el programa intenta una operación de E/S frente a una base de datos de DL/I, el valor de psbName determina qué PSB se utiliza.
La variable del sistema DLILib.psbData tiene un segundo campo, psbRef. El valor inicial del campo es cero, lo que indica que no hay ningún PSB planificado. Cuando se produce el primer E/S de DL/I, el tiempo de ejecución de EGL emite una llamada de planificación de PSB, que actúa de la manera siguiente:
  • Utiliza el valor de DLILib.psbData.psbName para planificar un PSB de tiempo de ejecución.
  • Establece DLILib.psbData.psbRef en una dirección con la que se puede acceder a es PSB.
Nota: Debe evitar escribir lógica que asigne un valor a DLILib.psbData.psbRef.
Durante una llamada, puede utilizar la variable DLILib.psbData para "pasar el PSB" (realmente, para pasar un nombre y la dirección relacionada.) Sin embargo, durante una transferencia, el PSB planificado solo finaliza si tiene lugar un punto de compromiso:
  • Si un PSB está planificado para el programa de transferencia pero no para el programa de recepción, siempre tiene lugar un punto de compromiso para una sentencia transfer.
  • Del mismo modo, si se planifica un PSB distinto para los programas de transferencia y recepción, siempre tiene lugar un punto de compromiso para una sentencia transfer.
  • Si el mismo PSB está planificado para los dos programas, el comportamiento de una sentencia transfer varía:
    • Si el formato de la sentencia transfer es transfer to transaction, tiene lugar un punto de compromiso.
    • Si el formato de la sentencia transfer es transfer to program, la opción del descriptor de construcción synchOnPgmTransfer determina si tiene lugar un punto de compromiso.
  • Si no se planifica ningún PSB para un programa de transferencia, siempre tiene lugar un punto de compromiso para una sentencia transfer de tipo transfer to transaction pero nunca para una sentencia transfer de tipo transfer to program.

Los PCB de DB son válidos en el PSB de tiempo de ejecución.

BMP IMS
El parámetro PSB en el JCL de tiempo de ejecución identifica el PSB de tiempo de ejecución utilizado a través del paso de trabajo. Aunque puede personalizar el JCL en tiempo de despliegue, EGL genera el valor de parámetro PSB por omisión en el JCL de tiempo de ejecución asignando el valor de la propiedad del registro PSB defaultPSBName.
Para BMP de IMS, EGL necesita que los primeros PCB de tiempo de ejecución sean de la forma siguiente:
  1. El PCB de E/S (asegúrese de que el programador del sistema IMS establece CMPAT en YES al desarrollar el trabajo PSBGEN)
  2. Un PCB alterno
  3. Un PCB alterno expreso

Los PCB de DB y GSAM también son válidos.

IMS/VS
Las reglas de la definición del sistema IMS aseguran que el nombre del programa principal es el nombre del PSB de tiempo de ejecución que está disponible a través de la transacción.
Para IMS/VS, EGL necesita que los primeros PCB de tiempo de ejecución sean de la forma siguiente:
  1. El PCB de E/S (asegúrese de que el programador del sistema IMS establece CMPAT en YES al desarrollar el trabajo PSBGEN)
  2. Un PCB alterno
  3. Un PCB alterno expreso

Los PCB de DB también son válidos.

Si el valor de la opción de descriptor de construcción workDBType es DLI (que es el valor por omisión), establezca uno de los PCB de de DB de tiempo de ejecución para la base de datos de trabajo de EGL, identificada por el nombre ELAWORK. No es necesario incluir la información de jerarquía para la base de datos ELAWORK.
Nota: Es recomendable especificar el último PCB de base de datos en el PSB de tiempo de ejecución como as ELAWORK de forma que si decide cambiar a una base de datos de trabajo de SQL, puede eliminar fácilemente ese PCB.
z/OS por lotes
El parámetro PSB en el JCL de tiempo de ejecución identifica el PSB de tiempo de ejecución utilizado a través del paso de trabajo. Aunque puede personalizar el JCL en tiempo de despliegue, EGL genera el valor del parámetro PSB por omisión asignando el valor de la propiedad de registro de PSB defaultPSBName.

Para el proceso por lotes de z/OS, , EGL necesita que el primer PCB de tiempo de ejecución sea el PCB de E/S. Además, EGL necesita que haya dos PCB adicionales de cualquier tipo en el PSB de tiempo de ejecución. Los PCB alternos, de DB y de GSAM son válidos.

EGL hace ajustes para los dos o tres PCB de E/S y de teleproceso si están declarados en el registro de PSB pero no están presentes en el PSB de tiempo de ejecución. Estos ajustes permiten generar el mismo programa en entornos distintos. En relación con CICS, por ejemplo, el tiempo de ejecución de EGL ignora los registros PCB de E/S inicial y alterno si están presentes en el código.

Requisitos para el componente de registro de PSB

Puede especificar una interfaz de llamada (AIBTDLI o CBLTDLI) estableciendo la propiedad del programa @DLI, campo de propiedad callInterface y la opción afecta a los requisitos del componente de registro de PSB que define:

Consulta relacionada
transfer

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