制限ありの最終フィールド
メソッドの最後の入力パラメーターまたは最後の出力パラメーターが配列またはレコードセットである場合、そのパラメーターをバインドできます。 そのサイズは、0 から指定された要素または行の最大数まで異なる場合があります。 配列またはレコードセットを最後にバインドする必要があります。 それ以外の場合、境界付き配列またはレコードセットの末尾とバッファー内の次のフィールドの先頭を特定する信頼性の高い方法はありません。 ホスト アプリケーションは、切り捨てられたテーブルの送信を処理する必要があります。
Automation クライアントは、このオプションを自動的に処理します。 トランザクション インテグレーター (TI) ランタイム環境では、Automation の境界に基づいて切り捨てられた量のデータが送信され、切り捨てられたデータが検出され、データの受信時に適切な Automation 型が作成されます。
COBOL インポート ウィザードでは、配列またはレコードセットの境界付きオプションは設定されません。 メソッド内の最後のパラメーターに対してこれを手動で設定するには、Designerを使用してプロパティの Maximum Occurrence に値を割り当てます。 このフィールドは、レコードセットに含まれる可能性のある行の最大数を定義します。 レコードセットを含むメソッドで、プロパティ Variable Size Final Field を方向によって true に設定して、レコードセットを境界付けします。
メソッドに無制限のレコードセットが含まれている場合は、その方向の境界付きまたは可変サイズの最終フィールドも指定できません。 たとえば、Parameter1 が出力パラメーターで、無制限のレコードセットである場合、最終的な出力パラメーターは、境界付き配列やレコードセット、または可変サイズの文字列にすることはできません。 戻り値が他のすべての出力パラメーターの後に配置されている場合、戻り値は境界付きの最終出力フィールドにすることができます。
次の COBOL の例では、レコードセット内の一部の行のみを送信します。
01 INVOICE-COUNT PIC S9(4) COMP.
01 CUSTOMER-DATA.
05 CUSTOMER-NUMBER PIC 9(9).
05 LAST-NAME PIC X(20).
05 INVOICES OCCURS 50 TIMES.
10 INVOICE-NUMBER PIC 9(10).
10 INVOICE-DATE PIC 9(7) COMP-3.
10 INVOICE-AMOUNT PIC S9(13)V9(2) COMP-3.
.
.
.
MOVE SIZE 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 I FROM 1 BY 1 UNTIL I = INVOICE-COUNT
COMPUTE SEND-LENGTH = LENGTH OF INVOICE-NUMBER +
LENGTH OF INVOICE-DATE +
LENGTH OF INVOICE-AMOUNT
EXEC-CICS SEND FROM(INVOICES(I))
LENGTH(SEND-LENGTH)
END-EXEC.
END-PERFORM.