가변 크기 행
레코드의 마지막 열이 문자열인 경우 행의 크기가 변함없이 조정될 수 있습니다. 해당 크기는 0과 그림 절에 지정된 최대 크기 사이에서 다를 수 있습니다. 가변적으로 크기가 조정된 행이 있는 경우 애플리케이션은 행이 전송되기 전에 각 행의 크기를 명시적으로 지정해야 합니다.
실제 크기 필드는 Automation 쪽에 표시되지 않습니다. TI(트랜잭션 통합자) 런타임 환경은 Automation 서비스를 사용하여 입력 데이터의 크기를 결정합니다. TI 런타임 환경에서 호스트에 데이터를 보내면 실제 크기 필드가 자동으로 설정됩니다.
COBOL 가져오기 마법사는 항상 크기가 조정된 행이 있는 레코드 집합을 생성하지 않습니다. 고정 크기 행이 포함된 레코드 집합의 속성을 불러올 수 있습니다. 변수 크기의 행 속성을 사용하면 사용자가 특정 레코드 집합에 대해 이 옵션을 수동으로 구성할 수 있습니다. 변수 크기의 행 속성은 고급 옵션을 제공합니다. 실제 행 크기 변수가 반 단어 또는 전체 단어 이진 파일임을 지정할 수 있습니다. 실제 크기 변수는 자체를 포함하거나 행의 크기만 포함합니다.
다음 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.
참고 항목
OCCURS DEPENDING 절을 사용하여 가변 길이 테이블 정의
가변 크기 문자열
바인딩된 final 필드