Freigeben über


Gebundene endgültige Felder

Wenn die letzte Eingabe oder der letzte Ausgabeparameter in einer Methode ein Array oder recordset ist, kann dieser Parameter begrenzt werden. Die Größe kann von 0 bis zur maximalen Anzahl der angegebenen Elemente oder Zeilen variieren. Das Array oder Recordset muss zuletzt begrenzt werden. Andernfalls gibt es keine zuverlässige Möglichkeit, das Ende eines begrenzten 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 Automation-Client behandelt diese Option automatisch. Die Transaktionsintegrator-Laufzeitumgebung (TI) sendet eine abgeschnittene Datenmenge basierend auf den Automation-Grenzen, erkennt die abgeschnittenen Daten und erstellt den entsprechenden Automation-Typ, wenn Daten empfangen werden.

Der Assistent zum Importieren von COBOL legt nie die option bounded für Arrays oder Recordsets fest. Um dies manuell für den endgültigen Parameter in einer Methode festzulegen, verwenden Sie die 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 Variable Size Final Field auf true by direction fest, damit das Recordset begrenzt wird.

Wenn die Methode ein Recordset enthält, das nicht gebunden ist, können Sie auch kein begrenztes oder variabel dimensioniertes endgültiges Feld für diese Richtung angeben. Wenn parameter1 beispielsweise ein Ausgabeparameter und ein ungebundenes Recordset ist, darf der endgültige Ausgabeparameter kein begrenztes Array oder Recordset oder eine Zeichenfolge mit variabeler Größe sein. Wenn der Rückgabewert hinter allen anderen Ausgabeparametern positioniert ist, 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.