Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/XMAP3編


CBLDCMCF('SEND ') − メッセージの送信(COBOL言語)

〈このページの構成〉

形式

PROCEDURE DIVISIONの指定

CALL 'CBLDCMCF' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定

01 一意名1.
   02 データ名A  PIC X(8) VALUE 'SEND    '.
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名C  PIC X(4) VALUE SPACE.
   02 データ名D  PIC X(4) VALUE SPACE.
   02 データ名E  PIC 9(8).
   02 データ名F  PIC 9(8).
   02 データ名G  PIC 9(9) COMP VALUE ZERO.
   02 データ名H  PIC X(4).
   02 データ名I  PIC X(4) VALUE SPACE.
   02 データ名J  PIC X(4).
   02 データ名K  PIC X(4).
   02 データ名L  PIC X(8) VALUE SPACE.
   02 データ名M1 PIC X(4) VALUE SPACE.
   02 データ名M2 PIC X(8) VALUE SPACE.
   02 データ名M3 PIC X(4) VALUE SPACE.
   02 データ名M4 PIC 9(9) COMP VALUE ZERO.
   02 データ名M5 PIC 9(9) COMP.
   02 データ名M6 PIC X(1).
   02 データ名M7 PIC X(1) VALUE '2'.
   02 データ名M8 PIC X(1).
   02 データ名N  PIC X(13) VALUE LOW-VALUE.
01 一意名2.
   02 データ名O  PIC X(4) VALUE 'OUT '.
   02 データ名P  PIC X(8).
   02 データ名Q  PIC X(8).
   02 データ名R  PIC X(8) VALUE SPACE.
   02 データ名T1 PIC X(6) VALUE SPACE.
   02 データ名T2 PIC X(22) VALUE LOW-VALUE.
01 一意名3.
   02 データ名U  PIC 9(4) COMP.
   02 データ名V  PIC X(2).
   02 データ名W  PIC X(n).

機能

論理端末に一方送信メッセージを送信します。一方送信メッセージは,一つのセグメントで構成されます。

送信できるメッセージの一つのセグメントの最大長は,32000バイトまでです。

セグメントを送信する領域(一意名3で示す領域)の形式を次に示します。

[図データ]

TP1/NET/XMAP3の論理端末に送信する場合は,XMAP3で作成した出力論理マップをCOPY文で取り込み,一意名3として指定します。出力論理マップの詳細については,マニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド」,またはマニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 開発ガイド」を参照してください。コーディング例については,「付録H.1 コーディング例」を参照してください。

UAPで値を設定するデータ領域

●データ名A

メッセージの送信を示す要求コード「VALUE 'SEND△△△△'」を設定します。

●データ名C,データ名D

空白を設定します。

●データ名E,データ名F

MCFで使用する領域です。

●データ名G

0を設定します。

●データ名H

送信するメッセージのセグメント種別を設定します。

VALUE 'ESI△'

先頭セグメントを送信する場合に設定します。

VALUE 'EMI△'

次のどれかの場合に設定します。

  • 論理メッセージが単一セグメントの場合

  • 先頭セグメントの応答送信後に応答メッセージの送信の終了を連絡する場合

●データ名I

空白を設定します。

●データ名J

一般として送信するか優先として送信するかを設定します。

VALUE 'NORM'

一般の一方送信メッセージとして送信する場合に設定します。

VALUE 'PRIO'

優先の一方送信メッセージとして送信する場合に設定します。

空白

省略されたものとして,「VALUE 'NORM'」(一般の一方送信メッセージとして送信する)が設定されます。

●データ名K

出力通番を付けるかどうかを設定します。

VALUE 'SEQ△'

出力通番を付ける場合に設定します。

VALUE 'NSEQ'

出力通番を付けない場合に設定します。

空白

省略されたものとして,「VALUE 'NSEQ'」(出力通番は付けない)が設定されます。

●データ名L,データ名M1,データ名M2,データ名M3

空白を設定します。

●データ名M4

0を設定します。

●データ名M5

MCFで使用する領域です。

●データ名M6

マッピングモードを設定します。

VALUE '0'

論理マップと物理マップの情報でマッピングする場合に設定します。

VALUE '1'

論理マップだけでマッピングする場合に設定します。

空白

省略されたものとして,「VALUE '0'」(論理マップと物理マップの情報でマッピングする)が設定されます。

●データ名M7

使用する送受信バッファの形式を「VALUE '2'」と設定します。

●データ名M8

空白または「VALUE '0'」を設定します。

●データ名N

MCFで使用する領域です。

●データ名O

分岐送信を示す「VALUE 'OUT△'」を設定します。

●データ名P

出力先の論理端末名称を設定します。論理端末名称は最大8バイトの長さです。8バイトに満たない場合,論理端末名称の後ろを空白で埋めてください。

●データ名Q

マップ名を設定します。マップ名は最大6バイトの長さです。マップ名の後ろを空白で埋めて,8文字になるように設定してください。

空白を設定した場合,論理端末定義(mcftalcle -p)のdflmapオペランドで指定したデフォルトマップ名を使用します。

●データ名R,データ名T1

空白を設定します。

●データ名T2

MCFで使用する領域です。

●データ名U

送信する出力論理マップの長さ(論理マップ固定部の長さ+論理マップ可変部・定数部の長さ)を設定します。先頭セグメントの送信後,メッセージの送信の終了を連絡する場合には,4を設定してください。

●データ名V

送信完了通知イベントを設定します。データ名Vとビットの設定値の関係を次に示します。

AIX,HP-UXの場合

[図データ]

送信完了通知イベントおよび送信障害通知イベントの要否は,データ名Vの領域の24ビットに設定します。

  • 領域の24ビットに1を設定すると,送信完了通知イベントおよび送信障害通知イベントを通知させます。ただし,これらのイベントを処理するMHPをアプリケーション属性定義(mcfaalcap)で指定していない場合は無効です。

    メッセージが複数のセグメントで構成される場合,先頭セグメント送信時の指定が有効になります。

  • 領域の24ビットに0を設定すると,送信完了イベントおよび送信障害通知イベントを通知させません。

Linux,Windowsの場合

[図データ]

送信完了通知イベントおよび送信障害通知イベントの要否は,データ名Vの領域の212ビットに設定します。

  • 領域の212ビットに1を設定すると,送信完了通知イベントおよび送信障害通知イベントを通知させます。ただし,これらのイベントを処理するMHPをアプリケーション属性定義(mcfaalcap)で指定していない場合は無効です。

    メッセージが複数のセグメントで構成される場合,先頭セグメント送信時の指定が有効になります。

  • 領域の212ビットに0を設定すると,送信完了イベントおよび送信障害通知イベントを通知させません。

●データ名W

送信するセグメントの内容(論理マップ可変部・定数部に出力する内容)を設定します。

OpenTP1から値が返されるデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

71002

メッセージキューへの出力処理中に障害が発生しました。

メッセージキューが閉塞されています。

メッセージキューが割り当てられていません。

データ名Uに32004バイトを超える値を設定しています。

MCFが終了処理中のため,メッセージの送信を受け付けられません。

71003

メッセージキューが満杯です。

71004

メッセージを格納するバッファをメモリ上に確保できませんでした。

71108

メッセージを送信しようとしましたが,送信先の管理テーブルを確保できませんでした。

プロセスのローカルメモリが不足しています。

72000

<MHPの実行でリターンした場合>

先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に,CBLDCMCF('SEND△△△△')を呼び出しています。

<SPPの実行でリターンした場合>

トランザクションでないSPPの処理から,CBLDCMCF('SEND△△△△')を呼び出しています。

72001

データ名Pに設定した論理端末名称が間違っています。

データ名Pに設定した論理端末名称は,定義されていません。

CBLDCMCF('SEND△△△△')を呼び出せない論理端末を設定しています。

72005

<データ名HでVALUE 'ESI△'を設定した場合>

データ名Uに0から4バイト,またはマイナス値を設定しています。

72016

データ名Nまたはデータ名T2に設定した値が間違っています。

データ名T1に設定した値が間違っています。

データ名Jに設定した値が間違っています。

データ名M1に設定した値が間違っています。

データ名M7,M8に設定した値が間違っています。

72017

データ名Kに設定した値が間違っています。

72019

データ名M6に設定した値が間違っています。

72020

データ名Iに設定した値が間違っています。

72024

データ名Oに設定した値が間違っています。

72026

データ名Hに設定した値が間違っています。

72028

データ名Aに設定した値が間違っています。

72041

<データ名HでVALUE 'EMI△'を設定した場合>

  • データ名Uに0から4バイト,またはマイナス値を設定しています。

  • データ名HにVALUE 'ESI△'を設定したCBLDCMCF('SEND△△△△')を呼び出さないで,メッセージの送信の終了を連絡しています。

上記以外

プログラムの破壊などによる,予期しないエラーが発生しました。