次の方法で共有


可変サイズの行

レコードの最後の列が文字列の場合、行のサイズを可変にすることができます。 そのサイズは、0 と picture 句で指定された最大サイズの間で異なる場合があります。 行のサイズが可変の場合は、行が送信される前に、アプリケーションで各行のサイズを明示的に指定する必要があります。

実際のサイズ フィールドは Automation 側には表示されません。 トランザクション インテグレーター (TI) ランタイム環境では、Automation サービスを使用して入力データのサイズが決定されます。 TI ランタイム環境は、ホストにデータを送信するときに、実際のサイズ フィールドを自動的に設定します。

COBOL インポート ウィザードでは、可変サイズの行を含むレコードセットは作成されません。 可変サイズの行を含むレコードセットのプロパティを表示します。 Variable size 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.  
  

参照

OCCURS DEPENDING 句を使用して可変長テーブルを定義する
可変サイズの文字列
制限ありの最終フィールド