다음을 통해 공유


가변 크기 행

레코드의 마지막 열이 문자열인 경우 행의 크기가 변함없이 조정될 수 있습니다. 해당 크기는 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 필드