Tipos de registros y propiedades

Están disponibles varios tipos de registros EGL:

Para obtener información detallada sobre qué sistemas destino dan soporte a qué tipos de registros, consulte la sección Referencia cruzada de tipos de archivos y registros. Para obtener información detallada sobre cómo se inicializan los componentes de registro, consulte la sección Inicialización de datos.

ALT_PCBRecord

Este componente de registro predefinido describe el diseño de un bloque de control de programa (PCB) que permite a un programa COBOL cambiar el destino de un mensaje de salida. En lugar de leer o escribir un registro de este tipo, se incluye una referencia al registro PCB al realizar operaciones de lectura o escritura en DL/I. El diseño del registro es el siguiente:
Record ALT_PCBRecord
	10 terminalName char(8);
	10 * char(2);
	10 statusCode char(2);
end

El tipo de registro ALT_PCBRecord presenta diversas propiedades y campos de propiedad, descritos en la sección Propiedades del componente de registro PCB.

BasicRecord

Un registro básico o un registro básico fijo se utiliza para el proceso interno y no puede acceder al almacenamiento de datos.

Por omisión, el componente es un componente de registro no fijo, pero es un componente de registro fijo si las definiciones de campo van precedidas por números de nivel.

En un componente de registro fijo del tipo basicRecord, están disponibles las siguientes propiedades:

En un programa principal, está disponible la siguiente propiedad de programa:
inputRecord
Esta propiedad identifica un registro que se inicializa automáticamente, como se describe en la sección Inicialización de datos.

DB_PCBRecord

Este componente de registro predefinido describe el diseño de un bloque de control de programa (PCB) que determina el acceso de un programa COBOL a la base de datos DL/I. En lugar de leer o escribir un registro de este tipo, se incluye una referencia al registro PCB al realizar operaciones de lectura o escritura en DL/I. El diseño del registro es el siguiente; puede definir su propio diseño de registro basado en éste:
Record DB_PCBRecord
	10 dbName char(8);
	10 segmentLevel num(2);
	10 statusCode char(2);
	10 procOptions char(4)
	10 * char(4);
	10 segmentName char(8);
	10 keyAreaLen int;
	10 numSensitiveSegs int;
	10 keyArea char(32767);
end
El tipo de registro DB_PCBRecord presenta diversas propiedades y campos de propiedad, descritos en la sección Propiedades del componente de registro PCB.

DLISegment

Este tipo de registro puede ser de longitud fija o no fija. Si es de longitud no fija, debe especificar la propiedad lengthItem (descrita más adelante en esta sección) en un bloque set-value.

El tipo de registro DLISegment contiene los datos que el usuario leerá o escribirá desde un segmento de base de datos DL/I. Puede escribir un segmento invocando una de las diversas sentencias get posibles; puede escribir un segmento invocando una sentencia add o replace; y puede eliminar un segmento del archivo invocando una sentencia delete.

Los campos del registro deben coincidir exactamente en longitud y tipo con los campos del segmento de base de datos. A efectos de claridad o como ayuda para la migración, no es necesario que los nombres de los campos de la definición de registro coincidan con los nombres de campo del segmento DL/I. Sin embargo, si alguno de los nombres de campo del registro no coincide, debe utilizar un bloque set-value para especificar la propiedad de ocho caracteres dliFieldName para dicho campo. Todos los nombres se doblarán (se convertirán a mayúsculas) durante la generación.

Utilice un bloque set-value para especificar alguna o la totalidad de las siguientes propiedades del tipo de registro DLISegment:
segmentName char(8)
El nombre del segmento DL/I de tiempo de ejecución. Rellene este campo si el nombre del registro DLISegment no coincide con el nombre del segmento DL/I relacionado.
hostVarQualifier String
Si especifica un nombre calificador de variable de lenguaje principal, el generador de código utilizará ese nombre en lugar del nombre de registro para calificar los keyItems referenciados en el argumento de búsqueda de segmento (SSA) calificado por omisión. Si el nombre de registro del segmento DL/I no coincide con un identificador de variable de programa, asegúrese de que este campo sí coincide.
lengthItem FieldReference
Si utiliza segmentos de longitud variable en la base de datos DL/I, durante la ejecución debe almacenar la longitud total del registro DLISegment dentro de ese registro. lengthItem contiene el nombre del campo en el que se almacena esa longitud de registro.
keyItem FieldReference
Si tiene un campo de clave de secuencia o índice para ese registro, especifique aquí el nombre de dicho campo.
Además, puede definir la propiedad siguiente para cualquiera de los campos en un registro DLISegment:
dliFieldName char(8)
Si ha asignado un nombre a un campo del registro DLISegment que no coincide con el nombre del campo equivalente del segmento de base de datos DL/I, debe suministrar aquí el nombre de ese campo equivalente. Las mayúsculas/minúsculas no son significativas; todos los nombres de campo se doblarán (se convertirán a mayúsculas) durante la generación.
El ejemplo siguiente muestra un bloque set value que utiliza estas propiedades:
Record CustomerRecord type DLISegment { 
	segmentName = "STSCCST", 
	hostVarQualifier = "STSCCST",
	lengthItem = "mySegementLength",
	keyItem = "customerNo" }

	10 customerNo char(6)      { dliFieldName = "STQCCNO" };
	10 mySegementLength int;
	...
end

GSAM_PCBRecord

Este componente de registro predefinido describe el diseño de un bloque de control de programa (PCB) que determina el acceso de un programa COBOL a un conjunto de datos secuenciales simple, como por ejemplo un archivo de cinta o SYSIN. En lugar de leer o escribir un registro de este tipo, se incluye una referencia al registro PCB al realizar operaciones de lectura o escritura en DL/I. El diseño del registro es el siguiente:
Record GSAM_PCBRecord
	10 dbName char(8);
	10 * num(2);
	10 statusCode char(2);
	10 procOptions char(4)
	10 * char(20);
	10 recordSearchArg bigint;
	10 undefinedRecordLen int;
end
El tipo de registro GSAM_PCBRecord presenta diversas propiedades y campos de propiedad, descritos en la sección Propiedades del componente de registro PCB.

IndexedRecord

Un registro indexado es un registro fijo que le permite trabajar con un archivo al que se accede mediante un valor de clave, que identifica la posición lógica de un registro en el archivo. Puede leer el archivo invocando una sentencia get, get next o get previous. Además, puede escribir en el archivo invocando una sentencia add o replace; y puede eliminar un registro del archivo invocando una sentencia delete.

Las propiedades de un componente de tipo indexedRecord son las siguientes:
fileName
Esta propiedad es obligatoria. Para obtener detalles sobre el significado de la entrada, consulte la sección Asociaciones de recursos (visión general). Para obtener detalles sobre los caracteres válidos, consulte la sección Convenios de denominación.
keyItem
Esta propiedad obligatoria sólo puede ser un campo de estructura exclusivo en el mismo registro. Debe utilizar una referencia no calificada para especificar el campo de clave; por ejemplo, utilice myItem en lugar de myRecord.myItem. (Sin embargo, en una sentencia EGL, puede hacer referencia al campo de clave al igual que haría con cualquier campo.)

Consulte también la sección Propiedades que soportan registros de longitud variable.

IO_PCBRecord

Este componente de registro predefinido describe el diseño de un bloque de control de programa (PCB) que permite a un programa COBOL comunicarse con un usuario a través de un terminal. En lugar de leer o escribir un registro de este tipo, se incluye una referencia al registro PCB al realizar operaciones de lectura o escritura en DL/I. El diseño del registro es el siguiente:
Record IO_PCBRecord
	10 terminalName char(8);
	10 * char(2);
	10 statusCode char(2);
	10 * char(8);
	  12 localDate decimal(7);
	  12 localTime decimal(7);
	10 inputMsgSegNum int;
	10 userid char(8);
	10 groupName char(8);
	10 * char(12);
	  12 currentDate decimal(7);
	  12 currentTime decimal(11);
	  12 utcOffset hex(4);
	10 userIdIndicator char(1);
end
El tipo de registro IO_PCBRecord presenta diversas propiedades y campos de propiedad, descritos en la sección Propiedades del componente de registro PCB.

MQRecord

Un registro MQ es un registro fijo que permite acceder a una cola de mensajes MQSeries. Para obtener información detallada, consulte la sección Soporte de MQSeries.

PSBDataRecord

Utilizado para el proceso DL/I o en IMS, un registro de tipo PSBDataRecord es un registro fijo organizado del siguiente modo:
  Record PSBDataRecord
    psbName char(8);
    psbRef int;
  end

Puede utilizar el registro para interactuar con la variable de sistema DLILib.psbData, que contiene tanto el nombre del PSB de tiempo de ejecución como una dirección con la que se accede a dicho PSB. El registro también es útil si necesita pasar el PSB (en realidad, un nombre y una dirección) a otro programa o recibir el PSB de otro programa.

PSBRecord

Este componente de registro define la estructura del bloque de especificación de programa (PSB) de tiempo de ejecución e incluye una serie de registros PCB. Al desarrollar un registro PCB para una base de datos, por ejemplo (tipo de registro DB_PCBRecord), se representa una jerarquía de segmentos asignando valores a la propiedad compleja @PCB. Como se muestra en un ejemplo posterior, esa propiedad identifica el nombre y el tipo PCB e incluye un campo hierarchy, que a su vez contiene una secuencia de propiedades @Relationship.

Si utiliza la interfaz CBLTDLI, debe declarar primero los siguientes PCB a fin de suministrar el desplazamiento adecuado para el "acceso por índice" que CBLTDLI necesita:
  1. iopcb para un PCB de E/S
  2. ELAALT para un PCB de índice alternativo
  3. ELAEXP para un PCB expreso alternativo
A continuación figura un ejemplo de registro PSB para una base de datos de cliente:
Record CustomerPSB type PSBRecord { defaultPSBName="STBICLG" }
	// tres PCB necesarios para llamar a la interfaz CBLTDLI
	iopcb IO_PCBRecord { @PCB { pcbType = TP } };
	ELAALT ALT_PCBRecord { @PCB { pcbType = TP } };
	ELAEXP ALT_PCBRecord { @PCB { pcbType = TP } };
	
	// PCB de base de datos
	customerPCB DB_PCBRecord { @PCB {
		pcbType = DB,
		pcbName = "STDCDBL",
		hierarchy = [
			@Relationship { segmentRecord = "CustomerRecord" },
			@Relationship { 
				segmentRecord = "LocationRecord", parentRecord = "CustomerRecord" },
			@Relationship { 
				segmentRecord = "CreditRecord", parentRecord = "CustomerRecord" },
			@Relationship { 
				segmentRecord = "HistoryRecord", parentRecord = "CustomerRecord" },
			@Relationship { 
				segmentRecord = "OrderRecord", parentRecord = "LocationRecord" },
			@Relationship { 
				segmentRecord = "ItemRecord", parentRecord = "OrderRecord" }]}};
end
Para obtener más información acerca de las propiedades de un registro PCB, consulte la sección Propiedades del tipo de registro PCB.

RelativeRecord

Un registro relativo es un registro fijo que permite trabajar con un conjunto de datos cuyos registros tienen las siguientes propiedades:
  • Los registros son de longitud fija
  • Se puede acceder a los registros mediante un entero que representa la posición secuencial del registro en el archivo.
Las propiedades de un componente de tipo relativeRecord son las siguientes:
fileName
El contenido de este campo depende del contexto. Encontrará los detalles en Asociaciones de recursos y tipos de archivo. Para obtener detalles sobre los caracteres válidos, consulte la sección Convenios de denominación. Este campo es obligatorio.
keyItem
El campo de clave puede hacer referencia a cualquiera de estas áreas de memoria:
  • Un campo de estructura en el mismo registro
  • Un campo de estructura de un registro que es global al programa o que es local a la función que accede al registro
  • Una variable primitiva que es global al programa o que es local a la función que accede al registro
Debe utilizar una referencia no calificada para especificar el campo de clave. Por ejemplo, utilice myItem en lugar de myRecord.myItem. (En una sentencia EGL, puede hacer referencia al campo de clave de la misma manera que haría referencia a cualquier campo). El campo de clave debe ser exclusivo en el ámbito local de la función que accede al registro o bien debe estar ausente del ámbito local y ser exclusivo en el ámbito global.
El campo de clave tiene las siguientes características:
  • Tiene un tipo primitivo de BIN, DECIMAL, INT o NUM
  • No contiene posiciones decimales
  • Permite 9 dígitos como máximo

Sólo las sentencias get y add utilizan el campo de clave, pero éste debe estar disponible en cualquier función que utiliza el registro para acceder a archivos.

SerialRecord

Un registro serie es un registro fijo que le permite acceder a un archivo o conjunto de datos al que se accede secuencialmente. Puede leer el archivo invocando una sentencia get, y una serie de sentencias get next lee secuencialmente los registros del archivo, desde el primero al último. Puede escribir en el archivo invocando una sentencia add, que coloca un registro nuevo al final del archivo.

Las propiedades de registro serie son las siguientes:
fileName
El contenido de este campo depende del contexto. Encontrará los detalles en Asociaciones de recursos y tipos de archivo. Para obtener detalles sobre los caracteres válidos, consulte la sección Convenios de denominación. Este campo es obligatorio.

Consulte también la sección Propiedades que soportan registros de longitud variable.

SQLRecord

Un registro SQL es un registro que proporciona servicios especiales al acceder a una base de datos relacional.

Por omisión, el componente es un componente de registro no fijo, pero es un componente de registro fijo si las definiciones de campo van precedidas por números de nivel.

Cada componente tiene las siguientes propiedades opcionales:
tableNames
Una entrada en tableNames identifica una tabla SQL asociada al componente. Puede hacer referencia a varias tablas de una unión, pero las restricciones aseguran que no escribe en varias tablas con una única sentencia EGL. Puede asociar un determinado nombre de tabla con una etiqueta, que es un nombre corto opcional que se utiliza para hacer referencia a la tabla en una sentencia SQL.
defaultSelectCondition
La propiedad especifica condiciones que forman parte de la cláusula WHERE en las sentencias SQL por omisión. La cláusula WHERE es significativa cuando se utiliza un registro SQL en una sentencia EGL open o get o en sentencias como get next o get previous.

En la mayoría de casos, la condición de selección por omisión SQL complementa una segunda condición, que se basa en una asociación entre los valores de campo de clave del registro SQL y las columnas de clave de la tabla SQL.

tableNameVariables
Puede especificar una o más variables cuyo contenido durante la ejecución determina las tablas de base de datos a las que se debe acceder, como se describe en la sección SQL dinámico.
keyItems
Cada campo de clave sólo puede ser un campo de estructura exclusivo en el mismo registro. Debe utilizar una referencia no calificada para especificar cada uno de esos campos; por ejemplo, utilice myItem en lugar de myRecord.myItem. (Sin embargo, en una sentencia EGL, puede hacer referencia a un campo de clave al igual que haría con cualquier campo.)

Para obtener información detallada, consulte la sección Soporte de SQL.

VGUIRecord

Un componente VGUIRecord es un componente generable y es la base de un registro VGUI, que es un programa VGWebTransaction o variable de función que posibilita la comunicación entre el programa y una página Web específica.

Las propiedades de un componente de tipo VGUIRecord son las siguientes:
validatorFunction
Especifica la función de validador de funciones de EGL, que se invoca tras invocar todos los validadores de campos, tal como se describe en la sección Validación en aplicaciones Web creadas con EGL.
runValidatorFromProgram
Especifica si la función de validación se encuentra en el bean de registro de VGUI o en el programa que recibe los datos del bean de registro de VGUI.
commandValueItem
Identifica el campo de registro VGUI que contiene el valor del botón SUBMIT pulsado por el usuario.
Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.