Freigeben über


Begrenzte finale Felder

Wenn die letzte Eingabe oder der letzte Ausgabeparameter in einer Methode ein Array oder Recordset ist, kann dieser Parameter gebunden werden. Die Größe kann von 0 bis zur maximalen Anzahl von Elementen oder Zeilen variieren. Das Array oder das Recordset muss zuletzt gebunden werden. Andernfalls gibt es keine zuverlässige Möglichkeit, das Ende eines gebundenen Arrays oder Recordsets und den Anfang des nächsten Felds im Puffer zu bestimmen. Die Hostanwendung muss sich um das Senden der abgeschnittenen Tabelle kümmern.

Der Automatisierungsclient behandelt diese Option automatisch. Die Laufzeitumgebung (Transaction Integrator, TI) sendet eine abgeschnittene Datenmenge basierend auf den Automatisierungsgrenzen und erkennt die abgeschnittenen Daten und erstellt den entsprechenden Automatisierungstyp, wenn Daten empfangen werden.

Der COBOL-Importassistent legt niemals die begrenzte Option für Arrays oder Recordsets fest. Um dies manuell für den endgültigen Parameter in einer Methode festzulegen, verwenden Sie den Designer, um der Eigenschaft "Maximum Occurrence" einen Wert zuzuweisen. Dieses Feld definiert die maximale Anzahl von Zeilen, die das Recordset enthalten kann. Legen Sie für die Methode, die das Recordset enthält, die Eigenschaft " Endgültiges Feld mit variabler Größe" auf "true" fest, damit das Recordset gebunden wird.

Wenn die Methode ein Recordset enthält, das ungebunden ist, können Sie für diese Richtung auch kein gebundenes oder variabel großes endgültiges Feld angeben. Wenn Parameter1 beispielsweise ein Ausgabeparameter ist und es sich um ein ungebundenes Recordset handelt, kann der endgültige Ausgabeparameter kein gebundenes Array oder Recordset oder eine Zeichenfolge mit unterschiedlicher Größe sein. Falls der Rückgabewert nach allen anderen Ausgabeparametern positioniert wird, kann der Rückgabewert das begrenzte endgültige Ausgabefeld sein.

Im folgenden COBOL-Beispiel werden nur einige Zeilen in einem Recordset gesendet:

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.