Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In COBOL können Sie die SYNTAX "OCCURS DEPENDING ON" verwenden, um eine Tabelle mit variabler Länge in einer Datendeklaration zu definieren. Der Speicher für eine Tabelle mit variabler Länge ist dynamisch, abhängig vom Wert in der Längenbezeichnervariablen. Die übergebene Datenmenge hängt auch vom Wert in der Längenbezeichnervariablen ab: Nur die Anzahl der angegebenen Elemente wird gesendet oder empfangen. Die Längenbezeichnervariable für eine Tabelle mit variabler Länge muss ein numerischer Typ sein, und die Richtung muss mit der Richtung der von ihr gesteuerten Tabelle mit variabler Länge übereinstimmen.
Wenn Sie COBOL in Transaction Integrator (TI) Project importieren und Tabellen mit variabler Länge als Recordsets angeben, werden die Tabellen mit variabler Länge automatisch zu Arrays oder Recordsetobjekten, deren Größe durch einen anderen Parameter begrenzt ist. Der Längenbezeichner wird auf der Automatisierungsseite als Parameter verfügbar gemacht und muss korrekt festgelegt werden, wenn der Parameter an die Hostanwendung gesendet wird.
Um manuell anzugeben, dass ein Parameter in einer Methode der Längenbezeichner für ein Array ist, definieren Sie zuerst den Parameter für den Längenbezeichner, und definieren Sie dann den Array- oder Recordsetparameter:
Verwenden Sie in der Parametereigenschaftsklasse, die als ODO-Array definiert werden soll, den Designer, um die Is Array-Eigenschaft auszuwählen. Nachdem IsArray ausgewählt wurde, werden die Arrayabmessungen und -vorgänge abhängig von der Eigenschaft verfügbar. Definieren Sie die Dimensionen des Arrays mithilfe der Array Dimensions-Eigenschaft . Weisen Sie den ODO-Index dem Parameter zu, der als ODO-Array definiert ist. Wählen Sie den Index aus, indem Sie die Eigenschaft "Auftritt je nach" erweitern.
Sie können auch manuell angeben, dass ein Parameter in einer Methode der Längenbezeichner für einen Recordset-Parameter ist.
Führen Sie die gleichen Schritte wie zuvor definiert aus. Ändern Sie jedoch den Datentyp des Parameters von einem einfachen Datentyp in ein Recordset.
Der folgende COBOL-Code zeigt eine Tabelle mit variabler Länge:
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-NUMBER PIC 9(10).
10 INVOICE-DATE PIC 9(7) COMP-3.
10 INVOICE-AMOUNT PIC S9(13)V9(2) COMP-3.
10 INVOICE-DESCRIPTION PIC X(40).
Es folgt die Methode, die beim Importieren des vorherigen COBOL erstellt wird:
SendInvoices(lCustomerNo As Long, strLastName As String, strFirstName As String _
, lcInvoices As Long) As Object
Im Folgenden sehen Sie ein Beispiel für Microsoft® Visual Basic-Code®, der eine importierte Methode aufruft:
Dim objCustomer As Object 'Uses late binding
Dim objInvoices As ADODB.Recordset
Dim lCustomerNumber As Long
Dim iRow As Integer
Dim iCol As Integer
Dim strLastName As String
Dim strFirstName As String
'create an instance of the invoicing object
On Error GoTo ErrorHandler1
Set objCustomer = CreateObject("Customer.Invoicing.1")
lCustomerNumber = CLng(txtCustomerNumber)
'invoke the GetInvoices method
On Error GoTo ErrorHandler2
Set objInvoices = objCustomer.GetInvoices(lCustomerNumber _
, strLastName, strFirstName)
'
' Transfer the Recordset data to a variant array in a single operation.
' This is efficient, but may not be suitable for larger Recordsets.
'
Dim Data As Variant
Data = objInvoices.GetRows
grdInvoices.Rows = UBound(Data, 2) + 1
grdInvoices.Cols = UBound(Data, 1) + 1