COBOL で REDEFINES を使用する方法
トランザクション インテグレーター (TI) プロジェクトの COBOL インポート プロセスは、データ記述エントリの REDEFINES 句を認識し、再定義されたエントリと再定義されたエントリを正しく関連付けます。 転送されるデータを表すエントリとして、再定義または再定義する句のいずれかを選択する必要があります。
再定義エントリは、再定義されたエントリよりも少ないスペースを使用できます。 再定義されたエントリよりも小さい再定義エントリを選択した場合、TI Project は自動的にフィラーを追加し、データがホストに送信されるときにデータの説明が正しくオーバーレイされるようにします。 再定義エントリが複数のフィールドを持つテーブルを表す場合、最後のフィールドにはフィラーが含まれます。
次の COBOL の例は、REDEFINES 句を示しています。 インポート中に再定義句が選択されました。
01 CUSTOMER-DATA.
05 CUSTOMER-ID PIC X(10).
05 CUSTOMER-ID-PARTS REDEFINES CUSTOMER-ID.
10 LOCATION PIC X(3).
10 NAME-ABREV PIC X(5).
結果としてインポートされるメソッドは次のとおりです。
CreateCustomerID(strLocation As String, strNameAbrev As String)
このメソッドに対して生成される COBOL は次のとおりです。
01 CREATECUSTOMERID-INPUT-AREA.
05 LOCATION PIC X(3). INPUT
05 NAME-ABREV PIC X(5). INPUT
05 FILLER PIC X(2). INPUT
FILLER は、CUSTOMER-ID 再定義領域に追加されます。 この FILLER が送信バッファーまたは受信バッファーの最後に発生した場合、パフォーマンス上の理由から送信されません。
このメソッドを呼び出す Visual Basic コードの例を次に示します。
Dim objCustomer As Object
Dim strLocation As String
Dim strNameAbrev As String
strLocation = "101"
strNameAbrev = "SPORT"
'create an instance of the invoicing object
On Error GoTo ErrorHandler1
Set objCustomer = CreateObject("Customer.Invoicing.1")
'invoke the CreateCustomerID method
On Error GoTo ErrorHandler2
objCustomer.CreateCustomerID strLocation, strNameAbrev