Campi finali con vincoli

Quando l'ultimo input o l'ultimo parametro di output in un metodo è una matrice o un recordset, tale parametro può essere associato. Le dimensioni possono variare da 0 al numero massimo di elementi o righe specificate. La matrice o il recordset devono essere associati. In caso contrario, non esiste alcun modo affidabile per determinare la fine di una matrice associata o un recordset e l'inizio del campo successivo nel buffer. L'applicazione host deve prestare attenzione all'invio della tabella troncata.

Il client di Automazione gestisce automaticamente questa opzione. L'ambiente di runtime di Transaction Integrator (TI) invia una quantità di dati troncata in base ai limiti di Automazione e rileva i dati troncati e crea il tipo di automazione appropriato quando vengono ricevuti i dati.

L'Importazione guidata COBOL non imposta mai l'opzione associata per matrici o set di record. Per impostare manualmente questo parametro per il parametro finale in un metodo, usare il Designer per assegnare un valore alla proprietà Occorrenza massima. Questo campo definisce il numero massimo di righe che il recordset può contenere. Nel metodo contenente il recordset impostare la proprietà Variable Size Final Field su true per direzione per rendere il recordset associato.

Se il metodo contiene un recordset non associato, non è anche possibile specificare un campo finale delimitato o variabilmente ridimensionato per tale direzione. Ad esempio, se Parameter1 è un parametro di output e si tratta di un recordset non associato, il parametro di output finale non può essere una matrice associata o un recordset o una stringa di dimensioni variabile. Quando il valore restituito viene posizionato dopo tutti gli altri parametri di output, il valore restituito può essere il campo di output finale associato.

L'esempio DI COBOL seguente invia solo alcune delle righe in un recordset:

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.