Filas de tamaño variable
Cuando la última columna de un registro es una cadena, la fila puede tener un tamaño variable. Su tamaño puede variar entre cero y el tamaño máximo especificado en la cláusula picture. Cuando tiene filas de tamaño variable, la aplicación debe especificar explícitamente el tamaño de cada fila antes de que se envíe la fila.
El campo de tamaño real no está visible en el lado de Automatización. El entorno en tiempo de ejecución del Integrador de transacciones (TI) usa servicios de Automatización para determinar el tamaño de los datos de entrada. Cuando el entorno en tiempo de ejecución de TI envía datos al host, establece automáticamente el campo tamaño real.
El Asistente para importar COBOL nunca crea un conjunto de registros con filas de tamaño variable. Abra las propiedades del conjunto de registros que contiene las filas de tamaño variable. La propiedad Filas de tamaño variable permite al usuario configurar manualmente esta opción para un conjunto de registros específico. La propiedad Filas de tamaño variable ofrece opciones avanzadas . Puede especificar que la variable de tamaño de fila real sea un binario de palabras medias o de palabra completa. La variable de tamaño real se incluirá a sí misma o solo incluirá el tamaño de la fila.
En el siguiente ejemplo de COBOL se muestra cómo la aplicación host envía filas de tamaño variable. El campo length se incluye en el tamaño de fila:
01 CUSTOMER-DATA.
05 CUSTOMER-NUMBER PIC 9(9).
05 LAST-NAME PIC X(20).
05 FIRST-NAME PIC X(20).
05 INVOICE-COUNT PIC 9(7) COMP-3.
05 INVOICES OCCURS 50 TIMES DEPENDING ON INVOICE-COUNT.
10 INVOICE-DATA.
15 INVOICE-ROW-SIZE PIC S9(4) COMP.
15 INVOICE-NUMBER PIC 9(10).
15 INVOICE-DATE PIC 9(7) COMP-3.
15 INVOICE-AMOUNT PIC S9(13)V9(2) COMP-3.
10 INVOICE-DESCRIPTION PIC X(4096).
.
.
.
MOVE LENGTH OF CUSTOMER-DATA TO SEND-LENGTH.
SUBTRACT LENGTH OF INVOICES FROM SEND-LENGTH.
EXEC-CICS SEND FROM(CUSTOMER-DATA)
LENGTH(SEND-LENGTH)
END-EXEC.
PERFORM VARYING ROW FROM 1 BY 1 UNTIL ROW > INVOICE-COUNT
INSPECT INVOICE-DESCRIPTION TALLYING INVOICE-ROW-SIZE
FOR CHARACTERS BEFORE INITIAL ' '
ADD LENGTH OF INVOICE-DATA TO INVOICE-ROW-SIZE
EXEC-CICS SEND FROM(INVOICE-ROW-SIZE)
LENGTH(2)
END-EXEC
EXEC-CICS SEND FROM(INVOICES(ROW))
LENGTH(INVOICE-ROW-SIZE)
END-EXEC
END-PERFORM.
En el siguiente ejemplo de COBOL se muestra cómo la aplicación host envía filas de tamaño variable. El campo length no se incluye en el tamaño de fila:
01 CUSTOMER-DATA.
05 CUSTOMER-NUMBER PIC 9(9).
05 LAST-NAME PIC X(20).
05 FIRST-NAME PIC X(20).
05 INVOICE-COUNT PIC 9(7) COMP-3.
05 INVOICE-ROW-SIZE PIC S9(4) COMP.
05 INVOICES OCCURS 50 TIMES DEPENDING ON INVOICE-COUNT.
10 INVOICE-DATA.
15 INVOICE-NUMBER PIC 9(10).
15 INVOICE-DATE PIC 9(7) COMP-3.
15 INVOICE-AMOUNT PIC S9(13)V9(2) COMP-3.
10 INVOICE-DESCRIPTION PIC X(4096).
.
.
.
MOVE SIZE OF CUSTOMER-DATA TO SEND-LENGTH.
SUBTRACT LENGTH OF INVOICES FROM SEND-LENGTH.
SUBTRACT LENGTH OF INVOICE-ROW-SIZE FROM SEND-LENGTH.
EXEC-CICS SEND FROM(CUSTOMER-DATA)
LENGTH(SEND-LENGTH)
END-EXEC.
PERFORM VARYING ROW FROM 1 BY 1 UNTIL ROW > INVOICE-COUNT
INSPECT COMMENTS TALLYING INVOICE-ROW-SIZE
FOR CHARACTERS BEFORE INITIAL ' '
ADD LENGTH OF INVOICE-DATA TO INVOICE-ROW-SIZE
EXEC-CICS SEND FROM(INVOICE-ROW-SIZE)
LENGTH(LENGTH OF INVOIVE-ROW-SIZE)
END-EXEC
EXEC-CICS SEND FROM(INVOICES(ROW))
LENGTH(INVOICE-ROW-SIZE)
END-EXEC
END-PERFORM.
Consulte también
Definición de una tabla de longitud variable con la cláusula OCCURS DEPENDING
Datos de tamaño variable
Campos finales enlazados