Compartir a través de


Campos finales enlazados

Cuando la última entrada o el último parámetro de salida de un método es una matriz o un conjunto de registros, ese parámetro se puede enlazar. Su tamaño puede variar de 0 al número máximo de elementos o filas especificados. La matriz o el conjunto de registros deben estar limitados por última vez. De lo contrario, no hay ninguna manera confiable de determinar el final de una matriz limitada o un conjunto de registros y el principio del campo siguiente en el búfer. La aplicación host debe encargarse de enviar la tabla truncada.

El cliente de Automation controla esta opción automáticamente. El entorno en tiempo de ejecución del Integrador de transacciones (TI) envía una cantidad truncada de datos en función de los límites de Automation y detecta los datos truncados y crea el tipo de automatización adecuado cuando se reciben los datos.

El Asistente para importar COBOL nunca establece la opción limitada para matrices o conjuntos de registros. Para establecer esto manualmente para el parámetro final en un método, use el Designer para asignar un valor a la propiedad Maximum Occurrence. Este campo define el número máximo de filas que puede contener el conjunto de registros. En el método que contiene el conjunto de registros, establezca la propiedad Variable Size Final Field en true por dirección para que el conjunto de registros esté limitado.

Si el método contiene un conjunto de registros sin enlazar, tampoco puede especificar un campo final de tamaño variable o limitado para esa dirección. Por ejemplo, si Parameter1 es un parámetro de salida y es un conjunto de registros sin enlazar, el parámetro de salida final no puede ser una matriz limitada, un conjunto de registros o una cadena de tamaño variable. Cuando el valor devuelto se coloca después de todos los demás parámetros de salida, el valor devuelto puede ser el campo de salida final enlazado.

El siguiente ejemplo de COBOL envía solo algunas de las filas de un conjunto de registros:

01  INVOICE-COUNT                        PIC S9(4) COMP.  
01  CUSTOMER-DATA.  
    05  CUSTOMER-NUMBER                  PIC 9(9).  
    05  LAST-NAME                        PIC X(20).  
    05 INVOICES OCCURS 50 TIMES.  
               10  INVOICE-NUMBER               PIC 9(10).  
               10  INVOICE-DATE                 PIC 9(7) COMP-3.  
               10  INVOICE-AMOUNT               PIC S9(13)V9(2) COMP-3.  
.  
.  
.  
            MOVE SIZE 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 I FROM 1 BY 1 UNTIL I = INVOICE-COUNT  
                COMPUTE SEND-LENGTH = LENGTH OF INVOICE-NUMBER +  
                                      LENGTH OF INVOICE-DATE +  
                                      LENGTH OF INVOICE-AMOUNT  
                EXEC-CICS SEND FROM(INVOICES(I))  
                               LENGTH(SEND-LENGTH)  
                               END-EXEC.  
            END-PERFORM.