Al declarar un componente de registro, puede incluir propiedades que den soporte a la utilización de registros de longitud variable. Puede utilizar registros serie de longitud variable para acceder a archivos secuenciales, registros serie o indexados de longitud variable para acceder a archivos VSAM y registros MQ de longitud variable para acceder a colas de mensajes de MQSeries.
Record mySerialRecordPart1 type serialRecord { fileName = "myFile", lengthItem = "myOtherField" } 10 myField01 BIN(4); // 2 bytes de longitud 10 myField02 NUM(3); // 3 bytes de longitud 10 myField03 CHAR(20); // 20 bytes de longitud endAl grabar un registro, el valor del elemento de longitud debe estar dentro de los límites, a menos que el elemento sea un elemento de carácter. Por ejemplo, un registro de tipo mySerialRecordPart1 puede tener el elemento de longitud, myOtherField, establecido en 2, 5, 6, 7, ... , 24 , 25. Un registro con myOtherField establecido en 2 sólo contiene un valor para myField01; un registro con myOtherField establecido en 5 contiene valores para myField01 y myField02; un registro con myOtherField establecido de 6 a 24 también contiene parte de myField03.
La propiedad NumElementsItem, si está presente, identifica un elemento que se utiliza cuando el código se añade al archivo o cola o los actualiza. El registro de longitud variable debe tener una matriz como último elemento de estructura de nivel superior. El valor del elemento de número de elementos representa el número real de elementos de matriz que se han escrito. El valor puede ir de 0 al máximo, que es el valor de apariciones especificado en la declaración del último elemento de estructura de nivel superior del registro.
Record mySerialRecordPart2 type serialRecord { fileName = "myFile", numElementsItem = "myField02" } 10 myField01 BIN(4); // 2 bytes de longitud 10 myField02 NUM(3); // 3 bytes de longitud 10 myField03 CHAR(20)[3]; // 60 bytes de longitud 20 mySubField01 CHAR(10); 20 mySubField02 CHAR(10); endEscribir un registro del tipo mySerialRecordPart2 con el elemento de número de elementos myField02 establecido en 2 da como resultado un registro de longitud variable, grabándose en el archivo o cola myField01, myField02 y dos apariciones de myField03.
El elemento de número de elementos debe ser un elemento en la parte de longitud fija del registro de longitud variable. Utilice una referencia no calificada para nombrar el elemento de número de elementos. Por ejemplo, utilice myField02 en lugar de myRecord.myField02.
El elemento de número de elementos no tiene ningún efecto cuando se lee un registro del archivo.
Si se especifican las propiedades lengthItem y numElementsItem para un registro de longitud variable, la longitud del registro se calcula utilizando el elemento de número de elementos. La longitud calculada se mueve al elemento de longitud de registro antes de que se escriba el registro en el archivo.
De forma parecida, si se pasan registros de longitud variable en una transferencia, se reserva espacio para la longitud máxima especificada para el registro.
Conceptos relacionados
Soporte de MQSeries
Tipos de registros y propiedades
Consulta relacionada
Elemento callLink
Propiedades de registros MQ