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 VALUE ZERO.
  02 データ名M6 PIC X(1)  VALUE SPACE.
  02 データ名M7 PIC X(1).
  02 データ名N  PIC X(14) VALUE LOW-VALUE.
01 一意名2.
  02 データ名O  PIC X(4)  VALUE 'OUT '.
  02 データ名P  PIC X(8).
  02 データ名Q  PIC X(8)  VALUE SPACE.
  02 データ名R  PIC X(8)  VALUE SPACE.
  02 データ名T  PIC X(28) VALUE LOW-VALUE.
01 一意名3.
  02 データ名U  PIC 9(x)  COMP.
  02 データ名V  PIC X(x).
  02 データ名Y  PIC X(4).
  02 データ名Z  PIC X(n).

機能

HSC1手順またはHSC2手順(非同期モード)の場合,相手システムへメッセージを送信します。

HSC2手順(同期モード)の場合,相手システムへ回線接続要求を送信します。

相手システムへ送る一方送信メッセージのうち,一つのセグメントを送信します。セグメントの数だけCBLDCMCF('SEND△△△△')を呼び出すと,一つの論理メッセージを送信できます。なお,回線接続要求は単一セグメントです。

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

[図データ]

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

●データ名A

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

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

空白を設定します。

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

MCFで使用する領域です。

●データ名G

0を設定します。

●データ名H

メッセージの最終セグメントを送信するかどうかを設定します。次のどちらかを設定します。

VALUE 'ESI△'
先頭セグメントまたは中間セグメントを送信する場合に設定します。
VALUE 'EMI△'
最終セグメントを送信する場合や,メッセージが単一セグメントの場合に,「VALUE 'EMI△'」を設定します。
メッセージの送信の終了を連絡するために,最後は必ずこの値を設定してください。
回線接続要求を送信する場合にも,「VALUE 'EMI△'」を設定します。

●データ名I

空白を設定します。

●データ名J

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

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

●データ名K

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

VALUE 'SEQ△'
出力通番が必要な場合に設定します。
VALUE 'NSEQ'
出力通番が必要ない場合に設定します。
空白
省略されたものとして,「VALUE 'NSEQ'」(出力通番は必要ない)が設定されます。

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

空白を設定します。

●データ名M4,データ名M5

0を設定します。

●データ名M6

空白を設定します。

●データ名M7

使用するバッファ形式を設定します。

VALUE '1'
バッファ形式1を使用する場合に設定します。
VALUE '2'
バッファ形式2を使用する場合に設定します。
空白
省略されたものとして,「VALUE '1'」(バッファ形式1)が設定されます。

●データ名N

MCFで使用する領域です。

●データ名O

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

●データ名P

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

●データ名Q,データ名R

空白を設定します。

●データ名T

MCFで使用する領域です。

●データ名U

【バッファ形式1の場合】 PIC 9(9)
テキスト形態とデータ名Zで設定する内容のセグメントの長さを設定します。メッセージの送信の終了を連絡する場合で,セグメントの内容がないときは,0を設定してください。
【バッファ形式2の場合】 PIC 9(4)
テキスト形態とデータ名Zで設定する内容のセグメントの長さ+4を設定します。メッセージの送信の終了を連絡する場合で,セグメントの内容がないときは,4を設定してください。

●データ名V

【バッファ形式1の場合】 PIC X(8)
【バッファ形式2の場合】 PIC X(2)
  • 領域の24ビットに1を設定
    送信完了通知イベントまたは送信障害通知イベントを通知させるときに設定します。ただし,これらのイベントを処理するMHPをMCFアプリケーション定義で指定していない場合は無効です。
    メッセージが複数のセグメントで構成される場合,先頭セグメント送信時の指定が有効になります。
  • 領域の24ビットに0を設定
    送信完了通知イベントまたは送信障害通知イベントを通知させません。
データ名Vとビットの設定位置の関係を次に示します。
[図データ]
注※
Xの値は次のとおりです。
【バッファ形式1の場合】 X=63
【バッファ形式2の場合】 X=15

●データ名Y

送信メッセージのテキスト形態を設定します。

●データ名Z

次に示す内容を設定します。

【HSC1手順またはHSC2手順(非同期モード)の場合】
送信するセグメントの内容
【HSC2手順(同期モード)でIDを交換する場合】
相手ターミナルID
【HSC2手順(同期モード)でIDを交換しない場合】
相手ダイヤル番号

送信できるセグメントの長さの最大値は,通信管理が送信する最大セグメント長にテキスト形態の4バイトを加えた値です。

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

●データ名B

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

ステータスコード

ステータスコード意味
00000正常に終了しました。
71002メッセージキューへの出力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
データ名Uに32000バイトを超える値を設定しています。
MCFが終了処理中のため,メッセージの送信を受け付けられません。
71003メッセージキューが満杯です。
71004メッセージを格納するバッファをメモリ上に確保できませんでした。
71108メッセージを送信しようとしましたが,送信先の管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
72000<MHPの実行でリターンした場合>
先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に,CBLDCMCF('SEND△△△△')を呼び出しています。
<SPPの実行でリターンした場合>
トランザクションでないSPPの処理から,CBLDCMCF('SEND△△△△')を呼び出しています。
72001データ名Pに設定した論理端末名称が間違っています。
CBLDCMCF('SEND△△△△')を呼び出せない論理端末を設定しています。
72005バッファ形式1の先頭セグメントまたは中間セグメント送信時,データ名Uに0以下の値を設定しています。または,バッファ形式2の先頭セグメントまたは中間セグメント送信時,データ名Uに4以下の値を設定しています。
72016データ名Nまたはデータ名Tに設定した値が間違っています。
データ名Jに設定した値が間違っています。
データ名M1に設定した値が間違っています。
データ名M7に設定した値が間違っています。
72017データ名Kに設定した値が間違っています。
72019データ名M6に設定した値が間違っています。
72020データ名Iに設定した値が間違っています。
72024データ名Oに設定した値が間違っています。
72026データ名Hに設定した値が間違っています。
72028データ名Aに設定した値が間違っています。
72041バッファ形式1の単一セグメント送信時,データ名Uに0以下の値を設定しています。または,バッファ形式2の単一セグメント送信時,データ名Uに4以下の値を設定しています。
上記以外プログラムの破壊などによる,予期しないエラーが発生しました。