@DLI

La propiedad de programa @DLI permite especificar comportamientos para las llamadas DL/I del programa por medio de un bloque de establecimiento de valores (set-value). Si incluye esta propiedad en un programa, EGL podrá acceder a los detalles relativos a la llamada más reciente a una base de datos DL/I. Para obtener más información, consulte la sección relativa a DLIVar.

La propiedad @DLI contiene los siguientes campos:
callInterface DLICallInterfaceKind
La propiedad callInterface define aspectos de las llamadas IMS y DL/I que el programa COBOL generado por EGL implementa en respuesta a sentencias EGL como add y get. Es aconsejable utilizar AIBTDLI, aunque el uso de ese valor requiere que la organización configure los PSB adecuados para la interfaz AIBTDLI.
Los valores son los siguientes:
AIBTDLI (valor por omisión)
Esta interfaz más reciente se beneficia de la característica AIB (Application Interface Block) de IMS. El AIB permite acceder a los PCB de tiempo de ejecución por el nombre, en lugar de por la dirección. Sin embargo, antes de utilizar esta interfaz asegúrese de que el programador del sistema de la organización ha asignado un nombre simbólico a cada uno de los PCB de tiempo de ejecución; en particular, el programador debe establecer el parámetro PCBNAME en la definición PSBGEN.

El nombre se identifica estableciendo la propiedad PCBName del registro PCB. El valor por omisión de la propiedad es el nombre del registro.

CBLTDLI
El acceso a un PCB es ligeramente más rápido, ya que el programa utiliza una dirección en lugar de un nombre de PCB. Sin embargo, los requisitos para definir los componentes PSBRecord son superiores que con AIBTDLI y, más importante, generalmente debe pasar un registro PSB o registros PCB a los programas llamados en lugar de confiar simplemente en un nombre de un registro PCB determinado del programa llamado. Aparte de manejar datos extra en una llamada de programa, para pasar un registro PSB es necesario establecer la propiedad psbParm del programa llamado y para pasar registros PCB es necesario establecer la propiedad pcbParms del programa llamado. (Si pasa un registro PSB y registros PCB, no se tiene en cuenta el PSB.)
psb STRING
La propiedad psb identifica el registro PSB que hace referencia al Bloque de especificación de programa (PSB de tiempo de ejecución) que debe planificarse con el programa. El registro debe estar en el ámbito.

En entornos que no CICS, no puede cambiar el PSB de tiempo de ejecución que es el primero planificado en la unidad de ejecución.

pcbParms STRING[]
Utilizado en un programa llamado que recibe registros PCB como parámetros, el campo de propiedad pcbParms proporciona una lista de series que permiten a EGL comparar cada parámetro (de un tipo de registro PCB) con un registro PCB del componente de registro PSB del programa. La propiedad no tiene efecto si el valor de la propiedad callInterface es AIBTDLI.

Como se muestra en el ejemplo siguiente, la posición de las series en la matriz debe coincidir con la posición de los registros PCB del componente de registro PSB del programa, y cada serie no vacía de la matriz debe ser idéntica al nombre de un registro PCB de la lista de parámetros del programa.

Record PSBRecordPart type PSBRecord {defaultPSBName = "ibmPSB"}
  
  // en este ejemplo se emiten los detalles de los registros siguientes
  ioPCB IO_PCBRecord;
  dbPCB DB_PCBRecord;       // pasado en
  db2PCB DB_PCBRecord;
  gsamPCB GSAM_PCBRecord;     // pasado en
  gsam2PCB GSAM_PCBRecord;
end

program PrintCatalog type basicProgram 
(GSAM_PCB_parm GSAM_PCBRecord, DB_PCB_parm DB_PCBRecord) { 
	@DLI{
		psb = "myPSB",
		callInterface = CBLTDLI,
		pcbParms = ["", "DB_PCB_parm", "", "GSAM_PCB_parm", ""]
	}
}

	myPSB PSBRecordPart;

Si especifica las propiedades pcbParms y psbParm, las direcciones específicas del PCB de la primera alteran temporalmente las direcciones equivalentes de la segunda.

Aunque se utiliza una serie vacía para cada registro PCB que se encuentra en el componente de registro PSB pero que no se compara mediante un parámetro, puede evitar especificar los últimos elementos de la matriz si dichos elementos hacen referencia a registros PCB que no se comparan mediante un parámetro. La asignación siguiente también es válida en el ejemplo actual:
   pcbParms = ["", "DB_PCB_parm", "", "GSAM_PCB_parm"]

Para evitar un error en el posicionamiento de los elementos de la matriz si más tarde añade un registro PCB al componente de registro PSB, incluya (sin excepciones) un elemento de matriz para cada registro PCB del componente de registro PSB.

Si un registro PCB del componente de registro PSB es una redefinición de otro registro PCB de ese componente, el registro original y el registro redefinido representan la misma área de memoria y se cuentan sólo una vez al construir la matriz de pcbParms.

psbParm STRING
Si un programa no EGL llama a un programa EGL e incluye una dirección y un nombre de 12 bytes para acceder a un PSB de tiempo de ejecución, la propiedad psbParm del programa llamado identifica el parámetro que suministra el nombre y la dirección.
El parámetro es de tipo PSBDataRecord, que se estructura del siguiente modo:
  Record PSBDataRecord
    psbName char(8);
    psbRef int;
  end
A continuación figura un ejemplo de la propiedad utilizada:
  Program Prog1 ( psbData PSBDataRecord ) 
  {
     @DLI (psbParm = "psbData" )
  }

Si especifica las propiedades pcbParms y psbParm, las direcciones específicas del PCB de la primera alteran temporalmente las direcciones equivalentes de la segunda.

El nombre y la dirección recibidos en el programa se asignan automáticamente a la variable de sistema DLILib.psbData.

handleHardDLIErrors BOOLEAN
Establece el valor por omisión para la variable del sistema VGVar.handleHardDLIErrors. La variable controla si un programa continúa ejecutándose después de que se haya producido un error grave en una operación de E/S de IMS o DL/I en un bloque try. El valor predeterminado de la propiedad es yes, que establece la variable en 1.

Puede que el código migrado desde VisualAge Generator no funcione como antes a menos que establezca handleHardDLIErrors en no, lo que establece la variable en 0.

Para obtener información detallada, consulte las secciones DLIVar y Manejo de excepciones.

Conceptos relacionados
Soporte de bases de datos DL/I
Consulta relacionada
DLIVar
Manejo de excepciones
Propiedades de componentes de registro PCB

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