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