Freigeben über


Zeilen mit unterschiedlicher Größe

Wenn die letzte Spalte in einem Datensatz eine Zeichenfolge ist, kann die Zeile variabel groß sein. Die Größe kann zwischen Null und der maximalen Größe variieren, die in der Bildklausel angegeben ist. Wenn Sie veränderliche Zeilen haben, muss Ihre Anwendung explizit die Größe jeder Zeile angeben, bevor die Zeile gesendet wird.

Das Feld für die tatsächliche Größe ist auf der Automatisierungsseite nicht sichtbar. Die Laufzeitumgebung des Transaktionsintegrators (TI) verwendet Automatisierungsdienste, um die Größe von Eingabedaten zu bestimmen. Wenn die TI-Laufzeitumgebung Daten an den Host sendet, legt sie automatisch das tatsächliche Größenfeld fest.

Der COBOL-Import-Assistent erstellt niemals ein Recordset mit variabel großen Zeilen. Rufen Sie Eigenschaften für das Recordset ab, das variabel große Zeilen enthält. Mit der Eigenschaft " Zeilen variabler Größe " können Benutzer diese Option für ein bestimmtes Recordset manuell konfigurieren. Die Eigenschaft "Zeilen mit variabler Größe " bietet erweiterte Optionen. Sie können angeben, dass die tatsächliche Zeilengrößenvariable als Halbwort- oder Vollwort-Binärwert vorliegt. Die tatsächliche Größenvariable enthält sich selbst oder enthält nur die Größe der Zeile.

Das folgende COBOL-Beispiel zeigt, wie die Hostanwendung Zeilen mit unterschiedlicher Größe sendet. Das Längenfeld ist in der Zeilengröße enthalten:

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-DATA.  
            15  INVOICE-ROW-SIZE         PIC S9(4) COMP.  
             15  INVOICE-NUMBER           PIC 9(10).  
             15  INVOICE-DATE             PIC 9(7) COMP-3.  
             15  INVOICE-AMOUNT           PIC S9(13)V9(2) COMP-3.  
         10  INVOICE-DESCRIPTION          PIC X(4096).  
.  
.  
.  
            MOVE LENGTH 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 ROW FROM 1 BY 1 UNTIL ROW > INVOICE-COUNT  
                INSPECT INVOICE-DESCRIPTION TALLYING INVOICE-ROW-SIZE  
                    FOR CHARACTERS BEFORE INITIAL '   '  
                ADD LENGTH OF INVOICE-DATA TO INVOICE-ROW-SIZE  
                EXEC-CICS SEND FROM(INVOICE-ROW-SIZE)  
                               LENGTH(2)  
                               END-EXEC  
                EXEC-CICS SEND FROM(INVOICES(ROW))  
                               LENGTH(INVOICE-ROW-SIZE)  
                               END-EXEC  
            END-PERFORM.  
  

Das folgende COBOL-Beispiel zeigt, wie die Hostanwendung veränderliche Zeilen sendet. Das Längenfeld ist nicht in der Zeilengröße enthalten:

       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  INVOICE-ROW-SIZE                 PIC S9(4) COMP.  
         05  INVOICES OCCURS 50 TIMES DEPENDING ON INVOICE-COUNT.  
             10  INVOICE-DATA.  
                  15  INVOICE-NUMBER           PIC 9(10).  
                  15  INVOICE-DATE             PIC 9(7) COMP-3.  
                  15  INVOICE-AMOUNT           PIC S9(13)V9(2) COMP-3.  
              10  INVOICE-DESCRIPTION          PIC X(4096).  
.  
.  
.  
            MOVE SIZE OF CUSTOMER-DATA TO SEND-LENGTH.  
            SUBTRACT LENGTH OF INVOICES FROM SEND-LENGTH.  
            SUBTRACT LENGTH OF INVOICE-ROW-SIZE FROM SEND-LENGTH.  
            EXEC-CICS SEND FROM(CUSTOMER-DATA)  
                           LENGTH(SEND-LENGTH)  
                           END-EXEC.  
  
            PERFORM VARYING ROW FROM 1 BY 1 UNTIL ROW > INVOICE-COUNT  
                INSPECT COMMENTS TALLYING INVOICE-ROW-SIZE  
                    FOR CHARACTERS BEFORE INITIAL '   '  
                ADD LENGTH OF INVOICE-DATA TO INVOICE-ROW-SIZE  
                EXEC-CICS SEND FROM(INVOICE-ROW-SIZE)  
                               LENGTH(LENGTH OF INVOIVE-ROW-SIZE)  
                               END-EXEC  
  
                EXEC-CICS SEND FROM(INVOICES(ROW))  
                               LENGTH(INVOICE-ROW-SIZE)  
                               END-EXEC  
            END-PERFORM.  
  

Siehe auch

Definieren einer Tabelle mit variabler Länge mit der OCCURS-DEPENDING-Klausel
Zeichenfolgen mit variabeler Größe
Beschränkte finale Felder