當記錄的最後一欄是字串時,該列大小可以調整。 其大小可從零到圖片條款中指定的最大尺寸不等。 當列的大小不一時,應用程式必須在傳送前明確地詳細指定每列的大小。
自動化端的實際尺寸欄位是看不到的。 交易整合器(TI)執行時環境利用自動化服務來決定輸入資料的大小。 當 TI 執行時環境將資料傳送給主機時,會自動設定實際大小欄位。
匯入 COBOL 向導從不會建立一個資料列大小可變的記錄集。 調出包含不同大小資料列的紀錄集屬性。 Variable sized rows 屬性允許使用者手動設定特定紀錄集的此選項。 可變大小列數屬性提供進階選項。 你可以指定實際的列大小變數是半字或全字二元檔。 實際大小變數會包含自己,或只包含列的大小。
以下 COBOL 範例展示了主機應用程式如何傳送不同大小的資料列。 長度欄位包含在列大小中:
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.
以下的 COBOL 範例展示了主機應用程式如何傳送不同大小的資料列。 長度欄位未包含在列大小中:
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.