Utilizar archivos serie y de impresión en IMS

Los archivos serie deben implementarse como colas de mensajes IMS en IMS/VS. En BMP IMS, pueden implementarse como colas de mensajes, archivos OS/VS, archivos VSAM o archivos GSAM. En z/OS por lotes, los archivos serie pueden implementarse como archivos OS/VS, archivos VSAM o archivos GSAM. La descripción que sigue trata de la utilización de archivos GSAM o colas de mensajes para archivos serie.

Los programas EGL que se ejecutan en los entornos BMP IMS o z/OS por lotes pueden implementar archivos serie como archivos GSAM. Puede utilizar las sentencias de E/S add, get next y close para archivos serie implementados como archivos GSAM. A continuación figura una lista de diferencias entre GSAM y el proceso normal de archivos serie: EGL no da soporte al argumento de búsqueda de registros para GSAM o registros de longitud indefinida. Un archivo serie o un archivo de impresión se identifica como archivo GSAM utilizando el componente de asociaciones de recurso durante la generación para especificar un tipo de archivo GSAM y un nombre de PCB.
Al asociar un archivo serie con un archivo GSAM, debe incluir la información siguiente:
Nombre de recurso
Indica el nombre de conjunto de datos de 1 a 44 caracteres utilizado en el JCL de entorno de ejecución de ejemplo. El nombre de archivo de la definición de registro se utiliza como nombre DD en el JCL de entorno de ejecución de ejemplo.
Tipo de archivo
Especifica GSAM como tipo de archivo para asociar el archivo serie o salida de impresora con un archivo GSAM.
Nombre de PCB
Especifica un nombre de PCB para el archivo serie que se asocia con el archivo GSAM. Si no especifica uno, el valor por omisión es el primer PCB GSAM del PSB EGL.

Utilizar archivos serie como colas de mensajes

Los programas en línea que se ejecutan en IMS/VS implementan archivos serie como colas de mensajes IMS. Los programas que se ejecutan como programas BMP IMS también pueden implementar archivos serie como colas de mensajes. Puede utilizar las sentencias de E/S add, get next y close para los archivos de salida. Si selecciona IMS/VS o BMP IMS como entorno de ejecución destino, puede definir archivos serie o de impresión como asociados a una cola de mensajes. Debe asociar todos los archivos serie y archivos de impresión con colas de mensajes para IMS/VS. Sólo puede asociarse un único archivo de entrada con la cola de mensajes.

Puede asociar un archivo serie o un archivo de impresión con una cola de mensajes utilizando un componente de asociaciones de recurso durante la generación y especificando el tipo de archivo y un nombre de PCB. Al asociar un archivo serie con una cola de mensajes, debe definir la siguiente información de recurso:
Nombre de recurso

Debe indicar el ID de destino de 1 a 8 caracteres para datos de archivo de impresora o de serie. El nombre debe coincidir con el ID de un terminal lógico IMS o un código de transacción definido en la definición del sistema IMS.

El nombre de archivo es el nombre de recurso por omisión para la cola de mensajes. Puede alterar temporalmente este valor por omisión en el componente de asociaciones de recurso.

Si el PCB que selecciona es un PCB alternativo modificable o alternativo express, puede alterar temporalmente el nombre de cola de mensajes por omisión durante la ejecución estableciendo un valor para sysVar.resourceAssociation para un archivo o converseVar.printerAssociation para una impresora en el programa. sysVar.resourceAssociation se trata como variable local. El establecimiento de sysVar.resourceAssociation para un registro de un programa no afecta a sysVar.resourceAssociation en otro programa. Una sentencia add graba en la cola de mensajes identificada por el valor de sysVar.resourceAssociation de ese programa.

Tipo de cola de mensajes
Puede especificar colas de mensajes de un solo segmento o colas de mensajes de varios segmentos.
Colas de mensajes de un solo segmento (SMSGQ)
En una cola de mensajes de un solo segmento, cada registro que añade o que lee (con una sentencia get next) del archivo serie es un mensaje completo. El programa COBOL generado emite una llamada IMS PURG entre los registros que se añaden a una cola de mensajes de un solo segmento. El programa COBOL generado emite una operación get de IMS exclusiva para cada sentencia get next.
Colas de mensajes de varios segmentos (MMSGQ)

En colas de mensajes de varios segmentos, una serie de adiciones al archivo serie se trata como si cada sentencia add fuera para un segmento de un solo mensaje. El mensaje no finaliza hasta que se emite una sentencia close o se alcanza un punto de compromiso. El programa COBOL generado emite una llamada IMS PURG para la sentencia close. A continuación, puede empezar a añadir segmentos de otro mensaje y cerrarlo. Las colas de mensajes de varios segmentos no son válidas para archivos de impresión.

Si emite una sentencia get next para un archivo serie MMSGQ, el programa generado emite una llamada IMS get unique para obtener el primer segmento del mensaje. Las sentencias get next adicionales provocan llamadas GN para obtener el resto de segmentos del mensaje. Al final de todos los segmentos de un mensaje, el programa COBOL generado establece el estado de registro noRecordFound. Si continúa la exploración, el programa generado iniciará otra serie de llamadas get unique (GU), seguidas de llamadas get next (GN). Cuando no se encuentren más mensajes, el programa generado devolverá un estado endOfFile (fin de archivo).

Nombre de PCB

También debe especificar un nombre de PCB para el archivo serie que se asocia con una cola de mensajes. Debe especificar el nombre asignado al PCB de I/O como el nombre de PCB para un archivo de entrada serie. El PCB de E/S solo es la cola de mensajes utilizada para la entrada. Si utiliza un archivo de entrada serie, debe utilizar un programa principal por lotes o un programa por lotes llamado. El programa generado maneja toda la lógica de PCB de E/S para programas principales de transacción.

Puede especificar el nombre de PCB para un archivo de salida serie. El nombre de PCB debe ser el nombre asignado a un registro PCB alterno. El nombre de PCB por omisión es el nombre del primer PCB alterno del PSB. Solo puede enviar salida al PCB de E/S utilizando una de las funciones del sistema siguientes:
  • VGLib.VGTDLI()
  • DLILib.AIBTDLI()
  • DLILib.EGLTDLI()

Definir registros para utilizarlos con colas de mensajes

Al definir un registro serie para asociarlo con una cola de mensajes, debe definir sólo los datos de programa. El programa COBOL generado añade la cabecera de mensaje IMS (longitud, ZZ y código de transacción) para una sentencia add y la elimina para una sentencia get next.

Comprobar el resultado de las sentencias de E/S de archivo serie

Cuando un archivo serie se asocia con una cola de mensajes o base de datos GSAM, el programa generado emite una llamada DL/I para implementar la operación de E/S. Cuando la llamada DL/I finaliza, Enterprise Developer Server para z/OS realiza las siguientes funciones:
  • Para sentencias get next, el estado de registro se establece en función del código de estado DL/I. El campo sysVar.sessionID o sysVar.userID se actualiza a partir del campo de ID de usuario del PCB de E/S cuando el programa generado emite una llamada GU para el PCB de E/S. Esto ocurre en la primera sentencia get next para un archivo serie definido como cola de mensajes de varios segmentos (MMSGQ), y en cada sentencia get next de una cola de mensajes de un solo segmento (SMSGQ). El campo EGL sysVar.transactionID se actualiza a partir del nombre de transacción de la cabecera del mensaje IMS después de cada sentencia get next que provoca una llamada GU para el PCB de E/S.
  • Para sentencias add o close, el estado de registro se actualiza en función del código de estado DL/I.
Después de una llamada DL/I que implica a la cola de mensajes o a GSAM, los campos DLIVar no se actualizan. Estos campos sólo se actualizan para funciones que acceden a registros de segmentos DL/I. Esto permite que un programa escrito para una cola de datos transitorios CICS o para un archivo serie OS/VS se ejecute de forma coherente cuando el archivo se cambia por una cola de mensajes o base de datos GSAM en un entorno IMS. Debe comprobar los valores de error de E/S para determinar si se ha alcanzado el fin del archivo o si se ha producido un error en el archivo serie. Si necesita información más detallada del PCB, utilice los nombres de campo de IO_PCBRecord o ALT_PCBRecord. Considere una situación en la que la variable PSB (llamada myPSB) declara un ALT_PCBRecord llamado myAltPCB y en la que ha utilizado myAltPCB como el nombre de PCB en la asignación de recursos. Para hacer referencia al código de estado de DL/I después de una sentencia add, utilice myPSB.myAltPCB.statusCode.

Utilizar archivos de impresión como colas de mensajes

En IMS/VS, debe asociar archivos de impresión con colas de mensajes. En BMP IMS, puede asociar archivos de impresión con colas de mensajes. Puede asociar archivos de impresión con colas de mensajes de la misma forma que asocia archivos serie con colas de mensajes, con la excepción de que SMSGQ es el único tipo de archivo válido para una asociación de recursos cuyo nombre de archivo sea printer. En la definición del sistema IMS, debe definir el nombre de cola de mensajes que desea utilizar en el entorno de ejecución como terminal lógico. Puede utilizarse converseVar.printerAssociation para cambiar el destino de impresora durante la ejecución. Por ejemplo, puede definir una tabla de ID de usuario y el ID de impresora que cada usuario utiliza habitualmente. Estableciendo converseVar.printerAssociation, puede direccionar la salida de impresora a una impresora cercana al usuario del programa.

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