B-TALK Ver 1.01 ユーザーズマニュアル編

B-TALK
Ver 1.01
ユーザーズマニュアル編
はじめに
本書は『B-TALK』の機能および使用方法について説明したものです。
『B-TALK』は「全銀協標準通信プロトコル-TCP/IP 手順-」に準拠したファームバンキングや
金融関係のオンラインシステムをパーソナルコンピュータ(以降単に PC と表記します)上で構築可能
にする通信制御ソフトウェアです。そして、このようなシステムのアプリケーション作成におけるプ
ログラミング言語には Visual C++ Ver 4.0 以上または Visual Basic Ver 4.0 以上を前提としています。
そのため、本書は「全銀協標準通信プロトコル-TCP/IP 手順-」,Win32 プログラミング環境およ
び各対応プログラミング言語について基礎的な知識をお持ちのユーザーを対象とした内容となって
います。これらについては別途関連資料を参照してください。
● 「全銀協標準通信プロトコル-TCP/IP 手順-(Ver1)」 全国銀行協会連合会
● Win32 プログラミングマニュアル
● Visual C++,Visual Basic プログラミングマニュアル
ご注意
① 本書およびソフトウェアの内容の一部または全部を無断で複製することは、プログラムのバックアッ
プの場合をのぞき法律で禁止されています。
② 本書およびソフトウェアの内容については将来予告無しに変更することがあります。
③ 本ソフトウェアを使用した結果につきましては、いっさい責任を負いかねますのでご了承ください。
④ 本書およびプログラムの内容は万全を期していますが、ご不審な点や誤っている点などがありました
ら、ご連絡くださいますようお願いいたします。
Windows は米国 Microsoft Corporation およびその他の国における登録商標です。
その他、本書に記載されている会社名、製品名は各社の商標または登録商標です。
1
目次
1 お使いになる前に ........................................................................................................3
1.1 『B-TALK』とは ...........................................................................................................................3
1.2 『B-TALK』の特長 .......................................................................................................................4
1.3 『B-TALK』の製品構成 ................................................................................................................5
1.4 通信形態 .......................................................................................................................................6
1.5 ハードウェアの条件 .....................................................................................................................7
1.6 アプリケーション開発の条件.......................................................................................................8
1.7 インストール ................................................................................................................................9
1.8 ライセンス..................................................................................................................................10
2 環境設定 .................................................................................................................... 11
2.1 初期設定ファイルの内容 ............................................................................................................11
2.2 初期設定ファイルの構成 ............................................................................................................13
2.3 初期設定ファイルの更新方法.....................................................................................................14
3 アプリケーションプログラミング .............................................................................15
3.1 ライブラリの種類.......................................................................................................................15
3.2 アプリケーションとのインタフェース ......................................................................................16
3.3 インタフェースの仕組み ............................................................................................................17
3.4 API関数の概要.............................................................................................................................18
3.5 API関数の詳細.............................................................................................................................19
3.6 電文別設定データ.......................................................................................................................39
3.7 イベントメッセージの概要 ........................................................................................................42
3.8 イベントメッセージの詳細 ........................................................................................................46
3.9 状態遷移 .....................................................................................................................................58
3.10 シーケンス................................................................................................................................60
3.11 アプリケーションとAPIのリンク .............................................................................................74
3.12 サンプルコーディング..............................................................................................................75
4 ダイアログボックス ..................................................................................................80
4.1 回線接続状況 ..............................................................................................................................80
4.2 ファイル転送状況.......................................................................................................................81
5 トレースログ .............................................................................................................82
5.1 トレースログの種類 ...................................................................................................................82
5.2 トレースログの見方 ...................................................................................................................83
5.3 トレースログの例.......................................................................................................................85
6 結果コード.................................................................................................................90
付録A コード変換表......................................................................................................92
2
1 お使いになる前に
『B-TALK』をお使いになるに当たって、事前に知っておいていただきたい点やご確認いただきた
い点がいくつかあります。
本章ではその点について説明します。
1.1 『B-TALK』とは
『B-TALK』は Windows 上で動作するファイル転送用のミドルウェアです。
「全銀協標準通信プロトコル-TCP/IP 手順-」(以降単に全銀協 TCP/IP 手順と表記します) に準
拠していますので、各企業および各銀行間でのパソコンファームバンキングや金融業界のオンライン
システムを構築可能です。通信相手となるシステムも全銀協 TCP/IP 手順をサポートしていればメー
カーに関係なく通信できます。
『B-TALK』はこれらのシステム構築を容易にするための全銀協 TCP/IP 手順の電文仕様に対応し
たアプリケーションインタフェース(以降単に API と表記します)を持っていますので、Visual C++
または Visual Basic を使って自由にアプリケーションを作成していただくことができます。
また、サンプルアプリケーションも付属していますので、特にアプリケーションを開発しなくても
簡易なファイル転送ができます。サンプルアプリケーションの使用方法等についてはサンプルアプリ
ケーションユーザーズマニュアルを参照してください。
3
1.2 『B-TALK』の特長
『B-TALK』には次のような特長があります。
① 互換性
全銀協 TCP/IP 手順に準拠していますので、対向装置も同手順をサポートしていればメーカー
に関係なく通信できます。
② 全銀協 TCP/IP 手順のサポート機能
●
●
●
●
●
再送機能(ファイル単位)
モード変更機能
マルチファイル転送機能
圧縮機能
サブレイヤオプション仕様
③ API
アプリケーション作成が容易な API を提供しています。Windows メッセージを使用した非同期
インタフェースですので、アプリケーションの実行をブロックしません。また、端末起動シン
グルファイル転送にのみ対応した DLL と全銀協 TCP/IP 手順にフルに対応した DLL の二つを
用意していますので、アプリケーション作成時の要求仕様によって使い分けていただくことが
できます。(開発対応言語は Visual C++,Visual Basic です)
アプリケーション
関数コール
通信ライブラリ:全銀協 TCP/IP 手順にフルに対応した DLL
関数コール
ファイル転送ライブラリ:端末起動シングルファイル転送対応 DLL
通信アプリケーション:全銀協 TCP/IP 手順の実行部
ファイル転送ライブラリ
関数コール
通信ライブラリ
Windows メッセージ
Windows メッセージ
通信アプリケーション
④ サンプルアプリケーション
付属のサンプルアプリケーションをお使いいただくことで、アプリケーションを開発すること
なく簡易なファイル転送ができます。
⑤ その他の機能
● ファイル転送状況をプログレスバーで表示しますので、視覚的に確認できます。
● トレースログ収集機能を持っています。動作状況,電文の内容等を記録/確認できます。
4
1.3 『B-TALK』の製品構成
『B-TALK』はフロッピーディスク(以降単に FD と表記します)1 枚で構成されます。
5
1.4 通信形態
『B-TALK』には端末側(起動側)としての機能とセンター側(着信側)としての機能があります。ここ
では『B-TALK』を端末側として使用した通信形態を示します。
① 加入電話網または ISDN 経由での通信
加入電話網
または
ISDN
B-TALK
モデム
センター
② LAN 経由での通信(パターン 1)
ルータ
LAN
LAN
B-TALK
B-TALK
センター
センター
③ LAN 経由での通信(パターン 2)
ルータ
加入電話網
または
ISDN
LAN
センター
B-TALK
6
1.5 ハードウェアの条件
『B-TALK』を使用するためには次のハードウェアの条件が必要になります。
項目
条件
PC
PC-AT 互換パソコン
OS
Windows 95、Windows 98、Windows NT、
Windows 2000、Windows XP
ハードディスク
3MByte 以上の空き容量が必要です
メモリ
3MByte 以上が必要です
さらに、『B-TALK』を加入電話網および ISDN 等の WAN を使用して PPP 接続する場合はモデム
または TA が必要になります。また、LAN 上で使用する場合には LAN 接続用ネットワークカードが
必要になります。
コメント
弊社の ISDN ボード『DAC’SⅡ』をご使用になれば、ISDN 経由での通信が可能にな
ります。
7
1.6 アプリケーション開発の条件
『B-TALK』を使用してアプリケーションを開発するには、次のソフトウェアが必要になります。
● Visual C++ Ver 4.0 以上、または Visual Basic Ver 4.0 以上の少なくともいずれか一方。
● Visual Basic をお使いになる場合に限り、Windows メッセージをハンドリングできるカスタム
コントロール。
※1 『B-TALK』はアプリケーションからの処理要求を実行したあとの結果,相手からの電文受信
およびその他の状態変化などをアプリケーションに通知するために Windows メッセージの
WM_COPYDATA を使用しています。『B-TALK』ではこのメッセージをイベントメッセージ
と呼びます。(イベントメッセージについては「3.6 イベントメッセージの概要」,
「3.7 イベン
トメッセージの詳細」を参照してください)
Visual Basic の標準のカスタムコントロールでは Windows メッセージをハンドリングできま
せんので、『B-TALK』からのイベントメッセージを扱うことができません。Visual Basic を使
用してアプリケーションを開発するには、Windows メッセージをハンドリングできるカスタム
コントロールが別途必要になります。
コメント
カスタムコントロールについてはお客様のご判断で任意にお選びいただいて結構で
す。
ご参考までに … 弊社内での開発時に使用したカスタムコントロールは文化オリエ
ント株式会社の Spy Works Pro 5.1J です。
注意!
ご使用になったカスタムコントロールによって生じた問題につきましては責任を負
いかねますので、ご了承ください。
8
1.7 インストール
FD には次のファイルが格納されています。
¥
<App>
FBAJ.exe
FBAJ.ini
<DLL> FBFT.dll
FBIF.dll
LogApi2.dll
ProgBar.dll
SRA.dll
<SDK> FBAJ.bas
FBFT.h
FBFT.lib
FBIF.h
FBIF.lib
セットアッププログラムは特に用意しておりませんのでお手数ですが、次の手順にしたがって FD
からハードディスクにコピーしてください。
1) App ディレクトリにある FBAJ.exe ファイルを PATH 環境変数内にリストされている任意のデ
ィレクトリにコピーしてください。
2) App ディレクトリにある FBAJ.ini ファイルを Windows ディレクトリにコピーしてください。
3) DLL ディレクトリにある各 DLL ファイルを次のどこかにコピーしてください。
z
z
z
z
FBAJ.exe と同じディレクトリ
Windows のシステムディレクトリ
Windows ディレクトリ
PATH 環境変数内にリストされている別ディレクトリ
以上の手順で『B-TALK』のインストールは完了です。
※1 SDK ディレクトリ内の FBAJ.bas,FBFT.h,FBIF.h は構造体定義、関数プロトタイプ定義等
です。アプリケーション作成時に参照してください。
※2 モデムや TA を介してリモートのコンピュータと通信するためにはリモートアクセスサービス
(RAS)のインストールと設定を行う必要があります。詳細は Windows のユーザーズマニュアル
を参照してください。
注意!
B-TALK を使用するには LAN 接続でしか使用されない場合でもダイヤルアップネッ
トワークがインストールされている必要があります。
9
1.8 ライセンス
『B-TALK』を正式にご使用いただくにはライセンス登録が必要になります。
ライセンス登録は、以下の流れになります。
1) 『B-TALK』を起動すると、製品情報・パスワード入力画面が表示されます。
2) 表示されている製品 ID を弊社窓口までご連絡下さい。
パスワード発行窓口
NTT データカスタマサービス株式会社
ソリューション事業部 ソリューション営業部
TEL (03)3534-8906
3) 折り返し、弊社よりパスワードをご連絡いたします。
4) 製品情報・パスワード入力画面にて、パスワードを入力し、OK ボタンを押下して下さい。
5) 正規のパスワードが入力されると、次回起動時から、製品情報・パスワード入力画面は、
表示されません。
※ライセンスが発行されるまでの間は、以下の操作で、製品情報・パスワード入力画面を
閉じて下さい。
a) ENTER キー押下
b) ESC キー押下
c) マウスによるボタンクリック(どちらのボタンでも可)
尚、パスワード未入力の状態でも『B-TALK』は使用可能です。
10
2 環境設定
『B-TALK』は起動時に初期設定ファイル(FBAJ.ini)から各種の制御情報を読み込み、終了するま
でこの情報にしたがって動作します。起動前に初期設定ファイルの中の制御情報を変更することで要
求条件に適した動作環境を実現できます。
本章ではこの初期設定ファイルについて説明します。
2.1 初期設定ファイルの内容
各制御情報の詳細は次の通りです。
また、初期設定ファイルがない時はデフォルト値で動作します。
制御情報(1/2)
分類
SOCKET
全銀手順
サブレイヤ
項目
説明
[( )内は有効範囲]
ポート番号
全銀協 TCP/IP 手順で使用する
PortNO
TCP/IP のポート番号。
TCP コネクションを能動接続
SOCKET 接続待ちタイ
する時の接続完了待ちタイマ
マー値
ーの秒数。
ComTime
(1~300)
通信制御電文のパスワードを
パスワード変換種別
EBCDIC に変換するかどうか
PWCvtID
の種別。
(0:変換しない,1:変換する)
ファイル制御電文のファイル
ファイルアクセスキー
アクセスキーを EBCDIC に変
変換種別
換するかどうかの種別。
FAKCvtID
(0:変換しない,1:変換する)
送信するデータ電文を一つの
レコードで構成する(ブロック
化しない)か複数のレコードで
ブロック化種別
構成する(ブロック化する)かの
BlockID
種別(※1) 。
(0:ブロック化しない,
1:ブロック化する)
論理 ACK 要求無しのデータ電
連続受信回数
文を連続して受信できる回数
MN
の最大値。
(0~15)
TCP コネクション接続後の無
無通信監視タイマー値
通信監視タイマーの秒数。
IdleTime
(1~300)
11
デフォルト 出荷時の値
値
5020
5020
30
30
1
1
1
1
1
1
0
15
30
30
制御情報(2/2)
分類
項目
ファイル名
FileName
総行数
LogSize
通信トレース 書き込み行数
ログ
LogLine
WriteBack キャッシュ
WriteBack
収集可否フラグ
Available
ファイル名
FileName
総行数
LogSize
アプリケーシ
ョントレース
ログ
収集レベル
LogLevel
WriteBack キャッシュ
WriteBack
説明
[( )内は有効範囲]
通信トレースログを書き出す
ファイル名。
ファイル内の最大行数。
(100~10000)
送受信電文またはイベントメ
ッセージのイメージを書き込
む時の行数。
(1~110)
ディスクに毎回書き込むかど
うかの種別。無効の時は毎回書
き込む。
(0:無効,1:有効)
アプリケーショントレースロ
グの収集を行うかどうかの種
別。
(0:無効,1:有効)
アプリケーショントレースロ
グを書き出すファイル名。
ファイルの最大行数。
(100~10000)
収集の対象にする事象のレベ
ル。指定されたレベル以下が収
集の対象。
(0:エラー/障害,
1:起動/終了/接続/切断,
2:警告,
3:メーカー解析用メッセージ)
ディスクに毎回書き込むかど
うかの種別。無効の時は毎回書
き込む。
(0:無効,1:有効)
デフォルト 出荷時の値
値
comtrace.t comtrace.t
xt
xt
400
400
4
4
1
1
1
1
aptrace.tx
t
aptrace.tx
t
2000
2000
2
2
0
0
※1 全銀協 TCP/IP 手順ではテキスト長の最大値が 2048 バイトで、そこから TTC のサイズ分(5
バイト)を引いた 2043 バイトが実際に有効なデータ部分です。『B-TALK』ではこの 2043 バイ
トの範囲でブロック化を行います。
12
2.2 初期設定ファイルの構成
初期設定ファイルは次のような構成になっています。
;=== SOCKET ===
[Socket]
;「全銀協標準通信プロトコル-TCP/IP 手順-」で使用するポート番号(デフォルト値:5020)
PortNO=5020
;SOCKET 接続待ちタイマー値(デフォルト値:30 秒)
ComTime=30
;=== 全銀手順 ===
[Protocol]
;パスワード変換種別(デフォルト値:1(変換する))
PWCvtID=1
;ファイルアクセスキー変換種別(デフォルト値:1(変換する))
FAKCvtID=1
;ブロック化種別(デフォルト値:1(ブロック化する))
BlockID=1
:
このように初期設定ファイルは section と key で制御情報が識別できる構成になっています。
[section]
key=文字列
:
section と key は表の中の分類と項目に対応しています。
13
2.3 初期設定ファイルの更新方法
初期設定ファイルの更新はお手持ちのテキストエディタで行う方法と、アプリケーションから
Win32API で行う方法があります。
① テキストエディタで更新する場合
文字列の部分を直接編集してください。その際、section と key は変更しないよう注意してくださ
い。
② アプリケーションから更新する場合
Win32API の WritePrivateProfileString 関数を使用してください。
サンプルとして”SOCKET”の”SOCKET 接続待ちタイマー値”を変更する時のコーディングイメー
ジを示します。
《Visual C++》
WritePrivateProfileString( “Socket”, “ComTime”, “60”, “FBAJ.ini” ) ;
《Visual Basic》
WritePrivateProfileString "Socket", "ComTime", “60”, “FBAJ.ini”
注意!
有効範囲を超えた値は設定しないでください。
14
3 アプリケーションプログラミング
『B-TALK』はアプリケーション作成に必要なライブラリおよびインタフェースを用意しています。
本章ではこれらアプリケーションプログラミングに必要な内容について説明します。
3.1 ライブラリの種類
『B-TALK』には二つのライブラリ(DLL)があります。
● 通信ライブラリ(FBIF.dll)
● ファイル転送ライブラリ(FBFT.dll)
通信ライブラリは全銀協 TCP/IP 手順にフルに対応した DLL で、通常のシングルファイル転送だ
けでなく、再送,モード変更,マルチファイル転送等、全銀協 TCP/IP 手順の機能をフルに使用した
アプリケーションを作成するのに最適です。
それに対してファイル転送ライブラリは端末起動シングルファイル転送だけを行うような簡易な
アプリケーションを作成するのに最適です。
各ライブラリの全銀協 TCP/IP 手順におけるサポート機能は次の通りです。
機能
通信ライブラリ
ファイル転送ライブラリ
モード変更
○
×
データ圧縮
○
○
可変長レコード
×
×
マルチファイル転送
○
×
再送(ファイル単位)
○
×
再送(テキスト単位)
×
×
サブレイヤオプション仕様
○
○
○:サポート
×:非サポート
15
3.2 アプリケーションとのインタフェース
各ライブラリを使用した場合のアプリケーションとのインタフェースは次のようになっています。
① 通信ライブラリを使用する場合
アプリケーション
Windows メッセージ(イベントメッセージ)
関数コール
通信ライブラリ
Windows メッセージ(処理オーダー)
通信アプリケーション
② ファイル転送ライブラリを使用する場合
アプリケーション
Windows メッセージ(イベントメッセージ)
関数コール
ファイル転送ライブラリ
関数コール
通信ライブラリ
Windows メッセージ(処理オーダー)
通信アプリケーション
16
3.3 インタフェースの仕組み
アプリケーションがある処理要求(ダイヤルアップネットワークと TCP コネクションの接続や開局
要求電文の送信など)を行う場合は各ライブラリの提供する API 関数を呼び出します。各ライブラリ
はその処理要求に応じた処理オーダーを Windows メッセージとして通信アプリケーションに通知し、
そこで実際に要求された処理が行われます。
処理が完了した場合や状態が変化した場合(接続の完了や開局回答電文の受信など)はその内容をイ
ベントメッセージとして Windows メッセージを使用してアプリケーションに通知します。
この二つの Windows メッセージにはともに WM_COPYDATA を使用しています。
通常の Windows メッセージは wParam,lParam の二つのデータを渡すことしかできませんが、
WM_COPYDATA は特殊な Windows メッセージで、lParam に COPYDATASTRUCT 構造体のアド
レスを持つことにより、この構造体にリンクするメッセージ本体に大きなメモリ領域を持たせること
ができます。
『B-TALK』ではこのメッセージ本体を処理オーダーおよびイベントメッセージとして使用してい
ます。
※1 WM_COPYDATA を送るには SendMessage 関数を使うため、受け手側はメッセージ内容の処理
が終わって参照の必要が無くなった時点で ReplyMessage 関数を呼び出すようにします。こうす
ることで、送り手側のスレッドと受け手側のスレッドともに処理を続行できます。
WM_COPYDATA,SendMessage 関数,ReplyMessage 関数の詳細については Win32API プロ
グラマーズリファレンス等を参照してください。
17
3.4 API 関数の概要
各ライブラリの提供する API 関数の機能の概要は次の通りです。
① 通信ライブラリ
関数名
機能概要
FBOpenService
通信アプリケーションを起動し、初期化を行う。
FBCloseService
通信アプリケーションを終了させる。
FBOpenLine
自側の端末からダイヤルアップネットワークと TCP コネクションの接続
を行う。この関数を呼び出すことにより、自側が起動側として全銀協
TCP/IP 手順を実行する。
FBAcceptLine
相手側の端末からダイヤルアップネットワークと TCP コネクションの接
続が行われるまで待機する。この関数を呼び出すことにより、自側が着信
側として全銀協 TCP/IP 手順を実行する。
FBCloseLine
ダイヤルアップネットワークと TCP コネクションの切断を行う。
FBOpenSession
自側が起動側の場合は相手へ開局要求電文を送信する。
自側が着信側の場合は相手へ開局回答電文を送信する。
FBCloseSession
自側が起動側の場合は相手へ閉局要求電文を送信する。
自側が着信側の場合は相手へ閉局回答電文を送信する。
FBChangeMode
自側が起動側の場合は相手へモード変更要求電文を送信する。
自側が着信側の場合は相手へモード変更回答電文を送信する。
FBStartFile
自側が起動側の場合は相手へ開始要求電文を送信する。
自側が着信側の場合は相手へ開始回答電文を送信する。
FBRestartFile
自側がファイル受信側の時は再送要求電文を送信する。
自側がファイル送信側の時は指定されたファイルを再送する。
FBGetMsgNo
入力されたイベントメッセージからメッセージ番号と結果コードを返却
する。(Visual Basic でアプリケーションを作成する時には必須)
FBGetSessionInfo
入力されたイベントメッセージから通信制御電文の内容を返却する。
(Visual Basic でアプリケーションを作成する時には必須)
FBGetFileInfo
入力されたイベントメッセージからファイル制御電文の内容を返却する。
(Visual Basic でアプリケーションを作成する時には必須)
② ファイル転送ライブラリ
関数名
関数の機能説明
Initialize
通信ライブラリの FBOpenService 関数を呼び出して、通信アプリケーシ
ョンの起動と初期化を行う。
Terminate
通信ライブラリの FBCloseService 関数を呼び出して、通信アプリケーシ
ョンの終了処理を行い通信アプリケーションを終了させる。
Request
シングルファイル転送の一括実行を受け付ける。
Response
ファイル転送ライブラリの状態と通信終了時にアプリケーションに送信
した MsgClosedLine のメッセージヘッダの結果コードと通信制御電文,
ファイル制御電文の処理結果を返却する。
DispMsg
イベントメッセージを受け取り、状態に応じて FBOpenSession 関数,
FBStartFile 関数,FBCloseSession 関数,FBCloseLine 関数を呼び出す。
18
3.5 API 関数の詳細
各ライブラリの提供する API 関数の機能の詳細は次の通りです。
① 通信ライブラリ
● FBOpenService 関数
【形式】
《Visual C++》
BOOL FBOpenService( HWND hwnd, LPSTR pComName )
《Visual Basic》
Declare Function FBOpenService Lib “FBIF.DLL” (ByVal hwnd As Long, ByVal _
pComName As String) As Long
【機能】
この関数は通信アプリケーションを起動し、初期化を行います。
【引数】
hwnd
pComName
アプリケーションのウィンドウハンドル
通信アプリケーション識別文字列
通信アプリケーションを識別する NULL で終わる文字列を指すポインタです。
この文字列にはアプリケーションごとにユニークな最大 8 文字の文字列を設定
してください。
【戻り値】
プロセスの起動と初期化処理が成功した場合は TRUE を返します。それ以外の場合は FALSE を返
します。
【備考】
この関数は通信アプリケーションを使用するに先立って最初に実行する必要があります。
通信アプリケーションの起動と初期化が終了した後に制御を戻します。
19
● FBCloseService 関数
【形式】
《Visual C++》
BOOL FBCloseService( )
《Visual Basic》
Declare Function FBCloseService Lib “FBIF.DLL” ( ) As Long
【機能】
この関数は通信アプリケーションの終了処理を行い、通信アプリケーションを終了させます。
【引数】
無し
【戻り値】
終了処理とプロセス終了が成功した場合は TRUE を返します。それ以外の場合は FALSE を返しま
す。
【備考】
この関数はアプリケーションが終了する前に必ず実行する必要があります。
通信アプリケーションを終了させた後に制御を戻します。
20
● FBOpenLine 関数
【形式】
《Visual C++》
BOOL FBOpenLine( LPSTR pIPAddr, BOOL bDialUp, LPSTR pDialUpEntry,
LPSTR pDialNumber, LPSTR pUserName, LPSTR pPassWord )
《Visual Basic》
Declare Function FBOpenLine Lib “FBIF.DLL” (ByVal pIPAddr As String, ByVal bDialUp _
As Long, ByVal pDialUpEntry As String, ByVal pDialNumber As String, ByVal _
pUserName As String, ByVal pPassWord As String) As Long
【機能】
この関数は相手側へのダイヤルアップネットワークと TCP コネクション接続を通信アプリケーシ
ョンに指示します。この関数を呼び出すことにより自側が全銀協 TCP/IP 手順の起動側として動作
します。
ダイヤルアップネットワークを使用する場合は最初にダイヤルアップネットワークの接続後、TCP
コネクションの接続を行います。ダイヤルアップネットワークを使用しない場合は直ちに TCP コ
ネクションの接続を行います。
【引数】
pIPAddr
bDialUp
pDialUpEntry
pDialNumber
pUserName
pPassWord
接続先相手の IP アドレス
“.”を含むアドレス表記を示す NULL で終わる文字列を指すポインタです。
(例) “192.168.0.1”
ダイヤルアップネットワークの接続指定
TRUE(0 以外):ダイヤルアップネットワークの接続を指定する。
FALSE(0)
:ダイヤルアップネットワークの接続を指定しない。
ダイヤルアップネットワークで電話帳に登録されたエントリ名
電話帳のエントリ名を示す NULL で終わる文字列を指すポインタです。
相手の電話番号
電話番号を示す NULL で終わる文字列を指すポインタです。
相手の認証を受ける時のユーザー名
ユーザー名を示す NULL で終わる文字列を指すポインタです。
相手の認証を受ける時のパスワード
パスワードを示す NULL で終わる文字列を指すポインタです。
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は要求を通信アプリケーションに渡した後に制御を戻します。結果はイベントメッセージ
で通知されます。
pDialNumber,pUserName,pPassWord のパラメータは電話帳のエントリの値を使用する場合
は NULL を設定してください。
電話帳のエントリの値と違う値にしたい場合に設定してください。
21
● FBAcceptLine 関数
【形式】
《Visual C++》
BOOL FBAcceptLine( BOOL bDialUp )
《Visual Basic》
Declare Function FBAcceptLine Lib “FBIF.DLL” (ByVal bDialUp As Long) As Long
【機能】
この関数は相手側の端末からダイヤルアップネットワークと TCP コネクションの接続が行われる
まで待機することを通信アプリケーションに指示します。この関数を呼び出すことにより自側が全
銀協 TCP/IP 手順の着信側として動作します。
【引数】
bDialUp
ダイヤルアップネットワーク経由での使用指定(※1)
TRUE(0 以外):ダイヤルアップネットワーク経由での着信を指定する。
FALSE(0)
:ダイヤルアップネットワーク経由での着信を指定しない。
※1 実際の処理では使用していないのでどちらを指定しても同じです。
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は要求を通信アプリケーションに渡した後に制御を戻します。結果はイベントメッセージ
で通知されます。
22
● FBCloseLine 関数
【形式】
《Visual C++》
BOOL FBCloseLine( )
《Visual Basic》
Declare Function FBCloseLine Lib “FBIF.DLL” ( ) As Long
【機能】
この関数はダイヤルアップネットワークと TCP コネクションの切断を通信アプリケーションに指
示します。
【引数】
無し
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は要求を通信アプリケーションに渡した後に制御を戻します。結果はイベントメッセージ
で通知されます。
23
● FBOpenSession 関数
【形式】
《Visual C++》
BOOL FBOpenSession( SessionInfo *psSessionInfo )
《Visual Basic》
Declare Function FBOpenSession Lib “FBIF.DLL” (psSessionInfo As SessionInfo) As Long
【機能】
この関数は自側が起動側の場合は相手への開局要求電文の送信を通信アプリケーションに指示し
ます。また、自側が着信側の場合は相手からの開局要求電文に対して開局回答電文の送信を通信ア
プリケーションに指示します。
【引数】
psSessionInfo
通信制御電文のデータ項目
開局要求電文または開局回答電文のデータ項目を設定した構造体を指すポイン
タです。
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は要求を通信アプリケーションに渡した後に制御を戻します。結果はイベントメッセージ
で通知されます。
通信制御電文のデータ項目の構造体と設定すべき項目に関しては「4.5 電文別設定データ」を参照
してください。
24
● FBCloseSession 関数
【形式】
《Visual C++》
BOOL FBCloseSession( SessionInfo *psSessionInfo )
《Visual Basic》
Declare Function FBCloseSession Lib “FBIF.DLL” (psSessionInfo As SessionInfo) As Long
【機能】
この関数は自側が起動側の場合は相手への閉局要求電文の送信を通信アプリケーションに指示し
ます。また、自側が着信側の場合は相手からの閉局要求電文に対して閉局回答電文の送信を通信ア
プリケーションに指示します。
【引数】
psSessionInfo
通信制御電文のデータ項目
閉局要求電文または閉局回答電文のデータ項目を設定した構造体を指すポイン
タです。
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は要求を通信アプリケーションに渡した後に制御を戻します。結果はイベントメッセージ
で通知されます。
通信制御電文のデータ項目の構造体と設定すべき項目に関しては「4.5 電文別設定データ」を参照
してください。
25
● FBChangeMode 関数
【形式】
《Visual C++》
BOOL FBChangeMode( SessionInfo *psSessionInfo )
《Visual Basic》
Declare Function FBChangeMode Lib “FBIF.DLL” (psSessionInfo As SessionInfo) As Long
【機能】
この関数は自側が起動側の場合は相手へのモード変更要求電文の送信を通信アプリケーションに
指示します。また、自側が着信側の場合は相手からのモード変更要求電文に対してモード変更回答
電文の送信を通信アプリケーションに指示します。
【引数】
psSessionInfo
通信制御電文のデータ項目
モード変更要求電文またはモード変更回答電文のデータ項目を設定した構造体
を指すポインタです。
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は要求を通信アプリケーションに渡した後に制御を戻します。結果はイベントメッセージ
で通知されます。
通信制御電文のデータ項目の構造体と設定すべき項目に関しては「4.5 電文別設定データ」を参照
してください。
26
● FBStartFile 関数
【形式】
《Visual C++》
BOOL FBStartFile( FileInfo *psFileInfo, LPSTR *pPathName )
《Visual Basic》
Declare Function FBStartFile Lib “FBIF.DLL” (psFileInfo As FileInfo, ByVal pPathName _
As String) As Long
【機能】
この関数は自側が起動側の場合は相手への開始要求電文の送信を通信アプリケーションに指示し
ます。このあと、ファイルの送受信~終了要求電文/終了回答電文の送受信まで、または”ファイル
なし”の時の開始回答電文受信までを自動的に実行します。
自側が着信側の場合は相手からの開始要求に対して開始回答電文の送信を通信アプリケーション
に指示します。このあと、ファイルの送受信~終了要求電文/終了回答電文の送受信までを自動的
に実行します。
【引数】
psFileInfo
pPathName
ファイル制御電文のデータ項目
開始要求電文または開始回答電文のデータ項目を設定した構造体を指すポイン
タです。
送受信ファイル名
送信時のデータが格納されているファイル名、または受信時のデータを格納す
べきファイル名を示す NULL で終わる文字列を指すポインタです。(パス名を
含んでいてもかまいません)
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は要求を通信アプリケーションに渡した後に制御を戻します。結果はイベントメッセージ
で通知されます。
ファイル制御電文のデータ項目の構造体と設定すべき項目に関しては「4.5 電文別設定データ」を
参照してください。
27
● FBRestartFile 関数
【形式】
《Visual C++》
BOOL FBRestartFile( FileInfo *psFileInfo, LPSTR *pPathName )
《Visual Basic》
Declare Function FBRestartFile Lib “FBIF.DLL” (psFileInfo As FileInfo, ByVal _
pPathName As String) As Long
【機能】
この関数は自側が起動側で連絡モードまたは着信側で照会モードの場合は相手からの再送要求電
文に対して再送ファイルの送信~終了要求電文/終了回答電文の送受信までを自動的に実行するよ
う通信アプリケーションに指示します。
自側が起動側で照会モードまたは着信側で連絡モードの場合は相手への再送要求電文の送信を通
信アプリケーションに指示します。このあと、ファイルの受信~終了要求電文の受信および終了回
答電文の送信までを自動的に実行します。
【引数】
psFileInfo
pPathName
ファイル制御電文のデータ項目
再送要求電文のデータ項目を設定した構造体を指すポインタです。
再送信ファイル名
再送のためのデータが格納されているファイル名を示す NULL で終わる文字列
を指すポインタです。
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は要求を通信アプリケーションに渡した後に制御を戻します。結果はイベントメッセージ
で通知されます。
ファイル制御電文のデータ項目の構造体と設定すべき項目に関しては「4.5 電文別設定データ」を
参照してください。
28
● FBGetMsgNo 関数
【形式】
《Visual C++》
BOOL FBGetMsgNo( LPSTR lParam, DWORD *pdwMsgNo, DWORD *pdwResult )
《Visual Basic》
Declare Function FBGetMsgNo Lib “FBIF.DLL” (ByVal lParam As Long, pdwMsgNo As _
Long, pdwResult As Long) As Long
【機能】
この関数は通信アプリケーションから通知されたイベントメッセージからメッセージ番号および
結果コードを取り出します。
【引数】
lParam
pdwMsgNo
pdwResult
イベントメッセージ
イベントメッセージの情報を含む COPYDATASTRUCT 構造体を指すポインタ
です。
メッセージ番号
イベントメッセージのメッセージ番号を指すポインタです。
結果コード
イベントメッセージの結果コードを指すポインタです。
【戻り値】
イベントメッセージからメッセージ番号と結果コードの取得が成功した場合は TRUE を返します。
それ以外の場合は FALSE を返します。
【備考】
この関数はイベントメッセージからメッセージ番号と結果コードを取得した後に制御を戻します。
29
● FBGetSessionInfo 関数
【形式】
《Visual C++》
BOOL FBGetSessionInfo( LPARAM lParam, SessionInfo *psSessionInfo )
《Visual Basic》
Declare Function FBGetSessionInfo Lib “FBIF.DLL” (ByVal lParam As Long, _
psSessionInfo As SessionInfo) As Long
【機能】
この関数は通信アプリケーションから通知されたイベントメッセージから通信制御電文のデータ
項目を取り出します。
【引数】
lParam
psSessionInfo
イベントメッセージ
イベントメッセージの情報を含む COPYDATASTRUCT 構造体を指すポインタ
です。
通信制御電文のデータ項目
開局要求電文,開局回答電文,閉局要求電文,閉局回答電文,モード変更要求
電文またはモード変更回答電文のデータ項目を設定した構造体を指すポインタ
です。
【戻り値】
イベントメッセージから通信制御電文のデータ項目の取得が成功した場合は TRUE を返します。
それ以外の場合は FALSE を返します。
【備考】
この関数はイベントメッセージから通信制御電文のデータ項目を取得した後に制御を戻します。
通信制御電文のデータ項目の構造体に関しては「4.5 電文別設定データ」を参照してください。
30
● FBGetFileInfo 関数
【形式】
《Visual C++》
BOOL FBGetFileInfo( LPARAM lParam, FileInfo *psFileInfo )
《Visual Basic》
Declare Function FBGetFileInfo Lib “FBIF.DLL” (ByVal lParam As Long, psFileInfo _
As FileInfo) As Long
【機能】
この関数は通信アプリケーションから通知されたイベントメッセージからファイル制御電文のデ
ータ項目を取り出します。
【引数】
lParam
psFileInfo
イベントメッセージ
イベントメッセージの情報を含む COPYDATASTRUCT 構造体を指すポインタ
です。
ファイル制御電文のデータ項目
開始要求電文,開始回答電文または終了回答電文のデータ項目を設定した構造
体を指すポインタです。
【戻り値】
イベントメッセージからファイル制御電文のデータ項目の取得が成功した場合は TRUE を返しま
す。それ以外の場合は FALSE を返します。
【備考】
この関数はイベントメッセージからファイル制御電文のデータ項目を取得した後に制御を戻しま
す。
ファイル制御電文のデータ項目の構造体に関しては「4.5 電文別設定データ」を参照してください。
31
② ファイル転送ライブラリ
● Initialize 関数
【形式】
《Visual C++》
BOOL Initialize( HWND hWnd, LPSTR pComName )
《Visual Basic》
Declare Function Initialize Lib “FBFT.DLL” ( ByVal hWnd As Long, ByVal pComName _
As String ) As Long
【機能】
この関数は通信ライブラリの FBOpenService 関数を呼び出して、通信アプリケーションの起動と
初期化を行います。
【引数】
hwnd
pComName
アプリケーションのウィンドウハンドル
通信アプリケーション識別文字列
通信アプリケーションを識別する NULL で終わる文字列を指すポインタです。
この文字列にはアプリケーションごとにユニークな最大 8 文字の文字列を設定
してください。
【戻り値】
プロセスの起動と初期化処理が成功した場合は TRUE を返します。それ以外の場合は FALSE を返
します。
【備考】
この関数は通信アプリケーションを使用するに先立って最初に実行する必要があります。
通信アプリケーションの起動と初期化が終了した後に制御を戻します。
32
● Terminate 関数
【形式】
《Visual C++》
BOOL Terminate( )
《Visual Basic》
Declare Function Terminate Lib “FBFT.DLL” ( ) As Long
【機能】
この関数は通信ライブラリの FBCloseService 関数を呼び出して、通信アプリケーションの終了処
理を行い通信アプリケーションを終了させます。
【引数】
無し
【戻り値】
終了処理とプロセス終了が成功した場合は TRUE を返します。それ以外の場合は FALSE を返しま
す。
【備考】
この関数はアプリケーションが終了する前に必ず実行する必要があります。
通信アプリケーションを終了させた後に制御を戻します。
33
● Request 関数
【形式】
《Visual C++》
BOOL Request( LPSTR pParmFile )
《Visual Basic》
Declare Function Request Lib “FBFT.DLL” ( ByVal pParmFile As String ) As Long
【機能】
この関数は通信ライブラリの FBOpenLine 関数,FBOpenSession 関数,FBStartFile 関数,
FBCloseSession 関数,FBCloseLine 関数を呼び出して行うダイヤルアップネットワーク/TCP コ
ネクション接続,開局要求,開始要求,テキスト送受信,終了要求/回答,閉局要求,ダイヤルア
ップネットワーク/TCP コネクション切断処理に対する一括実行を受け付けます。最初の
FBOpenLine 関数は本関数起動時に呼び出し、FBOpenSession 関数以降はアプリケーションがイ
ベントを受信したことを DispMsg 関数で通知するのを契機として呼び出します。各関数で必要な
パラメータはファイル形式で受け取ります。
【引数】
pParmFile
パラメータファイル名
各関数を呼び出す時に必要なパラメータが格納されているファイル名を示す
NULL で終わる文字列を指すポインタです。ファイル形式はバイナリファイル
でファイルサイズは固定長です。パラメータ内容を次表に示します。
項目名称
接続先 IP アドレス
ダイヤルアップネットワ
ークの接続指定
バイト数
15
1
属性
キャラクタ
キャラクタ
31
キャラクタ
31
31
キャラクタ
キャラクタ
31
キャラクタ
7
8
9
10
11
ダイヤルアップでのエン
トリ名
相手の電話番号
相手の認証を受ける時の
ユーザー名
相手の認証を受ける時の
パスワード
相手センター確認コード
当方センター確認コード
パスワード
アプリケーション ID
モード
7
7
6
1
1
バイナリ
バイナリ
キャラクタ
キャラクタ
キャラクタ
12
13
14
ファイル名
ファイルアクセスキー
レコード ID
12
6
1
キャラクタ
キャラクタ
キャラクタ
15
16
レコード長
データ圧縮 ID
4
1
バイナリ
キャラクタ
17
送受信ファイル名
70
キャラクタ
1
2
3
4
5
6
34
内容
‘.’区切りの IP アドレス
‘0’:ダイヤルアップネット
ワークを使用する
‘1’:ダイヤルアップネット
ワークを使用しない
‘-’区切りの電話番号
‘0’固定
‘0’:連絡
‘1’:照会
‘0’:固定長
‘1’:可変長
(‘0’固定)
1~2043
‘0’:圧縮無し
‘1’:圧縮有り
※1 属性がキャラクタのパラメータの空きエリアにはスペースを設定してください。
※2 相手センター確認コードと当方センター確認コードは全桁設定してください。
※3 レコード長は下位のバイトから順に詰めてください。
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は FBOpenLine 関数から戻ってきた時に制御を戻します。
パラメータファイルの中の
②
③
④
⑤
⑥
⑦
接続先 IP アドレス
ダイヤルアップでのエントリ名
相手の電話番号
相手の認証を受ける時のユーザー名
相手の認証を受ける時のパスワード
送受信ファイル名
は、空きエリアとしてスペースで埋められた部分を削除して通信アプリケーションに渡します。こ
れとは逆に
⑧ パスワード
⑨ ファイル名
⑩ ファイルアクセスキー
は、パラメータ内容をすべて引き継げるようにするために、スペースを削除しないでそのまま通信
アプリケーションに渡します。
35
● Response 関数
【形式】
《Visual C++》
BOOL Response( DWORD *pdwComSts, DWORD *pdwResCode, DWORD *pdwResult )
《Visual Basic》
Declare Function Response Lib “FBFT.DLL” ( pdwComSts As Long, pdwResCode As _
Long, pdwResult As Long ) As Long
【機能】
この関数はファイル転送ライブラリの状態と通信完了時にアプリケーションに送信した
MsgClosedLine のメッセージヘッダの結果コードと電文の処理結果を返します。
【引数】
pdwComSts
pdwResCode
pdwResult
通信状態
通信アプリケーションの状態を指すポインタです。
0:通信完了
1:通信中
結果コード
通信完了時の MsgClosedLine の結果コードを指すポインタです。内容について
は「6 エラー時の原因と対処」を参照してください。
(通信状態が”通信中”の時
は無効値(FFFFFFFF(16))を返します)
処理結果
通信制御電文,ファイル制御電文の処理結果の値をユニークに定義し直した 16
進値を指すポインタです。内容を以下に示します。(通信状態が”通信中”の時は
無効値(FFFFFFFF(16))を返します)
36
処理結果
内容
00(16) 正常
10(16) 通信制御電文区分エラー
11(16) 相手センター確認コードエラー
12(16) 当方センター確認コードエラー
13(16) サービス時間帯エラー
14(16) パスワードエラー
15(16) アプリケーション ID エラー
16(16) モードエラー
17(16) モード変更不可
20(16) ファイル制御電文区分エラー
21(16) ファイル名エラー
22(16) ファイルアクセスキーエラー
23(16) テキスト数エラー
24(16) レコード数エラー
25(16) レコード長エラー
26(16) 二重ファイル伝送
27(16) ファイルなし
28(16) レコード ID エラー
29(16) データ圧縮 ID エラー
99(16) 通信制御電文でのその他エラー
A9(16) ファイル制御電文でのその他エラー
FFFFFFFF(16) 無効値
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は通信状態を取得した後に制御を戻します。Request 関数が呼び出されダイヤルアップネ
ットワーク/TCP コネクション切断が完了するまでは”通信中”を返し、それ以外の時は”通信完了”
を返します。
37
● DispMsg 関数
【形式】
《Visual C++》
BOOL DispMsg( LPARAM lParam )
《Visual Basic》
Declare Function DispMsg Lib “FBFT.DLL” ( ByVal lParam As Long ) As Long
【機能】
この関数は通信アプリケーションから通知されたイベントメッセージを受け取り、状態に応じて通
信ライブラリの FBOpenSession 関数,FBStartFile 関数,FBCloseSession 関数,FBCloseLine
関数を呼び出します。
【引数】
lParam
イベントメッセージ
イベントメッセージの情報を含む COPYDATASTRUCT 構造体を指すポインタ
です。
【戻り値】
要求が受け付けられた場合は TRUE を返します。それ以外の場合は FALSE を返します。
【備考】
この関数は各関数から戻ってきた時に制御を戻します。
38
3.6 電文別設定データ
通 信 ラ イ ブ ラ リ の API 関 数 の 中 で 、 電 文 の 送 信 を 指 示 す る 関 数 (FBOpenSession 関 数 ,
FBCloseSession 関数,FBChangeMode 関数,FBStartFile 関数,FBRestartFile 関数)を呼ぶ時に
設定する必要のある項目は次の通りです。
(○:設定要,-:設定不要)
① 通信制御電文のデータ項目
関数
電文
FBOpenSession
FBCloseSession
FBChangeMode
開局要求
開局回答
閉局要求
閉局回答
モード
変更要求
モード
変更回答
-
-
-
-
-
-
処理結果
-
○
-
○
-
○
相手センター確認
コード
○
○
○
○
○
○
当方センター確認
コード
○
○
○
○
○
○
通信年月日時分秒
-
-
-
-
-
-
パスワード
○
○
○
○
○
○
アプリケーション
ID
○
○
○
○
○
○
モード
○
○
○
○
○
○
拡張用エリア
○
○
○
○
○
○
電文区分
② ファイル制御電文のデータ項目
関数
電文
FBStartFile
FBRestartFile
開始要求
開始回答
再送要求
電文区分
-
-
-
処理結果
-
○
-
ファイル名
○
○
○
ファイルアクセス
キー
○
○
○
テキスト数
-
-
-
レコード数
-
-
-
レコード ID
○
○
○
レコード長
○
○
○
再送指定区分
-
-
○
データ圧縮 ID
○
○
○
拡張用エリア
○
○
○
※1 レコード ID は固定長(‘0’)を設定してください。
※2 レコード長は 1~2043 の範囲で設定してください。
※3 再送指定区分は全ファイル再送(From=01,To=全ビットオン)を設定してください。
39
各制御電文のデータ項目のメモリ構成は次の通りです。( [ ]内の数値はバイト数です)
① 通信制御電文のデータ項目
7
typedef struct {
BYTE byMsgID ;
BYTE byResult ;
BYTE byPeerCode[7]
BYTE byDummy1 ;
BYTE byMyCode[7] ;
BYTE byDummy2 ;
BYTE byDateTime[6]
BYTE byDummy3 ;
BYTE byPassword[6]
BYTE byDummy4 ;
BYTE byAppID ;
BYTE byMode ;
BYTE byExtArea[34]
BYTE byDummy5 ;
BYTE byPad1 ;
WORD wPad2 ;
} SessionInfo;
;
;
;
;
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
電文区分
処理結果
相手センタ確認コード
パディング
当方センタ確認コード
パディング
通信年月日時分秒
パディング
パスワード
パディング
アプリケーション ID
モード
拡張エリア
パディング
パディング
パディング
● Visual Basic での構造体
Type SessionInfo
byMsgID
byResult
byPeerCode(7)
byMyCode(7)
byDateTime(6)
byPassword(6)
byAppID
byMode
byExtArea(34)
byPad1
wPad2
End Type
As
As
As
As
As
As
As
As
As
As
As
6
5
4
3
2
1
0
電文区分
[1]
処理結果
[1]
相手センター確認コード[7]
● Visual C++での構造体
Byte
Byte
Byte
Byte
Byte
Byte
Byte
Byte
Byte
Byte
Integer
40
パディング
[1]
当方センター確認コード[7]
パディング
通信年月日時分秒
[1]
[6]
パディング
パスワード
[1]
[6]
パディング
アプリケーション ID
モード
拡張用エリア
[1]
[1]
[1]
[34]
パディング
[4]
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
:
:
67
68
69
70
71
② ファイル制御電文のデータ項目
7
● Visual C++での構造体
typedef struct {
BYTE byMsgID ;
//
BYTE byResult ;
//
BYTE byFileName[12] ; //
BYTE byDummy1 ;
//
BYTE byFileAccKey[6] ;//
BYTE byDummy2 ;
//
WORD wNumOfText ;
//
DWORD dwNumOfRecord ; //
BYTE byRecordID ;
//
BYTE byPad1 ;
//
WORD wRecordLen ;
//
WORD wRetryFrom ;
//
WORD wRetryTo ;
//
BYTE byCompressID ;
//
BYTE byExtArea[32] ; //
BYTE byDummy3 ;
//
WORD wPad2 ;
//
} FileInfo;
電文区分
処理結果
ファイル名
パディング
ファイルアクセスキー
パディング
テキスト数
レコード数
レコード ID
パディング
レコード長
再送指定区分(From)
再送指定区分(To)
データ圧縮 ID
拡張用エリア
パディング
パディング
6
5
4
3
2
1
0
電文区分
処理結果
ファイル名
[1]
[1]
[12]
パディング
ファイルアクセスキー
[1]
[6]
パディング
テキスト数
[1]
[2]
レコード数
[4]
レコード ID
パディング
レコード長
[1]
[1]
[2]
再送指定区分(From)
[2]
再送指定区分(To)
[2]
データ圧縮 ID
拡張用エリア
[1]
[32]
パディング
[3]
● Visual Basic での構造体
Type FileInfo
byMsgID
byResult
byFileName(12)
byFileAccKey(6)
wNumOfText
dwNumOfRecord
byRecordID
byPad1
wRecordLen
wRetryFrom
wRetryTo
byCompressID
byExtArea(31)
wPad2
End Type
As
As
As
As
As
As
As
As
As
As
As
As
As
As
Byte
Byte
Byte
Byte
Integer
Long
Byte
Byte
Integer
Integer
Integer
Byte
Byte
Integer
41
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
:
:
68
69
70
71
3.7 イベントメッセージの概要
イベントメッセージは Windows メッセージの中の WM_COPYDATA を使って通知します。
WM_COPYDATA の時の wParam と lParam は
wParam = (WPARAM)(HWND)hwndFrom;
lParam = (LPARAM)(PCOPYDATASTRUCT)pcds;
// 送り手側のウィンドウのハンドル
// COPYDATASTRUCT 構造体へのポインタ
となっています。lParam が指している COPYDATASTRUCT 構造体の内容は次のようになっていま
す。
typedef struct tagCOPYDATASTRUCT {
DWORD
dwData;
DWORD
cbData;
PVOID
lpData;
} COPYDATASTRUCT;
// イベントメッセージ番号
// イベントメッセージのバイト長
// イベントメッセージを指すポインタ
COPYDATASTRUCT 構造体のメンバ lpData が指しているイベントメッセージはメッセージヘッ
ダとそれに続くメッセージデータから構成されています。
メッセージヘッダ
メッセージデータ
メッセージヘッダの内容は次のようになっています。
typedef
struct {
DWORD
dwMsgNo ;
DWORD
dwMsgLen ;
DWORD
dwResult ;
DWORD
dwReserved ;
} MsgHeader ;
//
//
//
//
//
メッセージヘッダ構造体
メッセージ番号
メッセージのバイト長
結果コード
リザーブ領域
dwMsgNo と COPYDATASTRUCT の dwData、および dwMsgLen と COPYDATASTRUCT の
cbData は同じ値です。
イベントメッセージには大きく分けて 3 種類のメッセージが有ります。
42
① 回線制御系メッセージ
typedef
struct {
// 回線制御構造体
MsgHeader
Header ;
// メッセージヘッダ
BYTE
byIPAddr[16] ;
// IP アドレス
BOOL
bDialUp ;
// ダイアルアップネットワーク指示フラグ
BYTE
byDialUpEntry[32] ;// ダイアルアップネットワーク電話帳のエントリ名
BYTE
byDialNumber[32] ;// 電話番号
BYTE
byUserName[32] ; // ユーザー名
BYTE
byPassWord[32] ; // パスワード
} MsgLineInfo ;
② 通信制御系メッセージ
typedef
struct {
MsgHeader
Header ;
BYTE
byMsgID ;
BYTE
byResult ;
BYTE
byPeerCode[7]
BYTE
byDummy1 ;
BYTE
byMyCode[7] ;
BYTE
byDummy2 ;
BYTE
byDateTime[6]
BYTE
byDummy3 ;
BYTE
byPassword[6]
BYTE
byDummy4 ;
BYTE
byAppID ;
BYTE
byMode ;
BYTE
byExtArea[34]
BYTE
byDummy5 ;
BYTE
byPad1 ;
WORD
wPad2 ;
} MsgSessionInfo ;
;
;
;
;
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
通信制御構造体
メッセージヘッダ
電文区分
処理結果
相手センタ確認コード
パディング
当方センタ確認コード
パディング
通信年月日時分秒
パディング
パスワード
パディング
アプリケーション ID
モード
拡張エリア
パディング
パディング
パディング
43
③ ファイル制御系メッセージ
typedef
struct {
//
MsgHeader
Header ;
//
BYTE
byMsgID ;
//
BYTE
byResult ;
//
BYTE
byFileName[12] ; //
BYTE
byDummy1 ;
//
BYTE
byFileAccKey[6] ;//
BYTE
byDummy2 ;
//
WORD
wNumOfText ;
//
DWORD
dwNumOfRecord ; //
BYTE
byRecordID ;
//
BYTE
byPad1 ;
//
WORD
wRecordLen ;
//
WORD
wRetryFrom ;
//
WORD
wRetryTo ;
//
BYTE
byCompressID ;
//
BYTE
byExtArea[32] ; //
BYTE
byDummy3 ;
//
WORD
wPad2 ;
//
BYTE
byPathName[128] ;//
} MsgFileInfo ;
ファイル制御構造体
メッセージヘッダ
電文区分
処理結果
ファイル名
パディング
ファイルアクセスキー
パディング
テキスト数
レコード数
レコード ID
パディング
レコード長
再送指定区分
再送指定区分
データ圧縮 ID
拡張用エリア
パディング
パディング
送受信ファイル名
44
各制御系メッセージには次のようなイベントメッセージがあります。
メッセージ分類
回線制御系
メッセージ
通信制御系
メッセージ
ファイル制御系
メッセージ
メッセージ名
意味
MsgOpenedLine
FBOpenLine 関数を呼び出して接続完了待ち状態にあ
る時に、その接続処理が完了したことを表す。
MsgAcceptedLine
FBAcceptLine 関数を呼び出して着信待ち状態にある
時に、その着信処理が完了したことを表す。
MsgClosedLine
FBCloseLine 関数を呼び出して切断完了待ち状態にあ
る時に、その切断処理が完了したことを表す。
MsgOpenSession
起動側の場合はこのメッセージは使用しない。
着信側の場合は相手からの開局要求電文を受信したこ
とを表す。
MsgOpenedSession
起動側の場合は相手から開局回答電文を受信し、開局待
ち状態が完了したことを表す。
着信側の場合は相手へ開局回答電文を送信し、開局待ち
状態が完了したことを表す。
MsgCloseSession
起動側の場合はこのメッセージは使用しない。
着信側の場合は相手からの閉局要求電文を受信したこ
とを表す。
MsgClosedSession
起動側の場合は相手から閉局回答電文を受信し、閉局待
ち状態が完了したことを表す。
着信側の場合は相手へ閉局回答電文を送信し、閉局待ち
状態が完了したことを表す。
MsgChangeMode
起動側の場合はこのメッセージは使用しない。
着信側の場合は相手からのモード変更要求電文を受信
したことを表す。
MsgChangedMode
起動側の場合は相手からモード変更回答電文を受信し、
モード変更待ち状態が完了したことを表す。
着信側の場合は相手へモード変更回答電文を送信し、モ
ード変更待ち状態が完了したことを表す。
MsgStartFile
起動側の場合はこのメッセージは使用しない。
着信側の場合は相手からの開始要求電文を受信したこ
とを表す。
MsgTermedFile
起動側の場合は相手から開始回答電文(ファイルなし)
を受信、または終了要求/終了回答電文を送受信し、フ
ァイル転送状態が完了したことを表す。
着信側の場合は相手へ開始回答電文(ファイルなし)を
送信し、または終了要求/終了回答電文を送受信し、フ
ァイル転送状態が完了したことを表す。
MsgRestartFile
ファイル送信側の場合は相手からの再送要求電文を受
信したことを表す。
ファイル受信側の場合はこのメッセージは使用しない。
45
3.8 イベントメッセージの詳細
各イベントメッセージの詳細は次の通りです。
① 回線制御系メッセージ
● MsgOpenedLine メッセージ
【意味】
FBOpenLine 関数を呼び出して接続完了待ち状態にある時に、その接続処理が完了したことを表し
ます。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
0
メッセージのバイト長
dwMsgLen
164(10) [A4(16)]
結果コード
dwResult
0
IP アドレス
byIPAddr
FBOpenLine 関数で指定された値
ダイヤルアップネットワ byDialUp
ーク指示フラグ
FBOpenLine 関数で指定された値
エントリ名
byDialUpEntry
FBOpenLine 関数で指定された値
電話番号
byDialNumber
FBOpenLine 関数で指定された値
ユーザー名
byUserName
FBOpenLine 関数で指定された値
パスワード
byPassWord
FBOpenLine 関数で指定された値
【備考】
なし
46
● MsgAcceptedLine メッセージ
【意味】
FBAcceptLine 関数を呼び出して着信待ち状態にある時に、その着信処理が完了したことを表しま
す。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
1
メッセージのバイト長
dwMsgLen
164(10) [A4(16)]
結果コード
dwResult
0
IP アドレス
byIPAddr
0
ダイヤルアップネットワ byDialUp
ーク指示フラグ
0
エントリ名
byDialUpEntry
0
電話番号
byDialNumber
0
ユーザー名
byUserName
0
パスワード
byPassWord
0
【備考】
なし
47
● MsgClosedLine メッセージ
【意味】
FBCloseLine 関数を呼び出して切断完了待ち状態にある時に、その切断処理が完了したこと、また
は通信中に異常が発生して切断処理を実行し、その切断処理が完了したことを表します。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
2
メッセージのバイト長
dwMsgLen
164(10) [A4(16)]
結果コード
dwResult
切断原因を示す値
IP アドレス
byIPAddr
起動側の場合は FBOpenLine 関数
で指定された値
着信側の場合は 0
ダイヤルアップネットワ byDialUp
ーク指示フラグ
起動側の場合は FBOpenLine 関数
で指定された値
着信側の場合は 0
エントリ名
byDialUpEntry
起動側の場合は FBOpenLine 関数
で指定された値
着信側の場合は 0
電話番号
byDialNumber
起動側の場合は FBOpenLine 関数
で指定された値
着信側の場合は 0
ユーザー名
byUserName
起動側の場合は FBOpenLine 関数
で指定された値
着信側の場合は 0
パスワード
byPassWord
起動側の場合は FBOpenLine 関数
で指定された値
着信側の場合は 0
※ 切断原因については「5 エラー時の原因と対処」を参照してください。
【備考】
なし
48
② 通信制御系メッセージ
● MsgOpenSession メッセージ
【意味】
起動側の場合はこのメッセージは使用しません。
着信側の場合は相手からの開局要求電文を受信したことを表します。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
3
メッセージのバイト長
dwMsgLen
88(10) [58(16)]
結果コード
dwResult
0
電文区分
byMsgID
受信電文の値
処理結果
byResult
受信電文の値
相手センター確認コード byPeerCode
受信電文の値
当方センター確認コード byMyCode
受信電文の値
通信年月日時分秒
byDateTime
受信電文の値
パスワード
byPassword
受信電文の値
アプリケーション ID
byAppID
受信電文の値
モード
byMode
受信電文の値
拡張用エリア
byExtArea
受信電文の値
【備考】
なし
49
● MsgOpenedSession メッセージ
【意味】
起動側の場合は相手から開局回答電文を受信し、開局待ち状態が完了したことを表します。
着信側の場合は相手へ開局回答電文を送信し、開局待ち状態が完了したことを表します。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
4
メッセージのバイト長
dwMsgLen
88(10) [58(16)]
結果コード
dwResult
0
電文区分
byMsgID
送受信電文の値
処理結果
byResult
送受信電文の値
相手センター確認コード byPeerCode
送受信電文の値
当方センター確認コード byMyCode
送受信電文の値
通信年月日時分秒
byDateTime
送受信電文の値
パスワード
byPassword
送受信電文の値
アプリケーション ID
byAppID
送受信電文の値
モード
byMode
送受信電文の値
拡張用エリア
byExtArea
送受信電文の値
【備考】
なし
50
● MsgCloseSession メッセージ
【意味】
起動側の場合はこのメッセージは使用しません。
着信側の場合は相手からの閉局要求電文を受信したことを表します。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
5
メッセージのバイト長
dwMsgLen
88(10) [58(16)]
結果コード
dwResult
0
電文区分
byMsgID
受信電文の値
処理結果
byResult
受信電文の値
相手センター確認コード byPeerCode
受信電文の値
当方センター確認コード byMyCode
受信電文の値
通信年月日時分秒
byDateTime
受信電文の値
パスワード
byPassword
受信電文の値
アプリケーション ID
byAppID
受信電文の値
モード
byMode
受信電文の値
拡張用エリア
byExtArea
受信電文の値
【備考】
なし
51
● MsgClosedSession メッセージ
【意味】
起動側の場合は相手から閉局回答電文を受信し、閉局待ち状態が完了したことを表します。
着信側の場合は相手へ閉局回答電文を送信し、閉局待ち状態が完了したことを表します。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
6
メッセージのバイト長
dwMsgLen
88(10) [58(16)]
結果コード
dwResult
0
電文区分
byMsgID
送受信電文の値
処理結果
byResult
送受信電文の値
相手センター確認コード byPeerCode
送受信電文の値
当方センター確認コード byMyCode
送受信電文の値
通信年月日時分秒
byDateTime
送受信電文の値
パスワード
byPassword
送受信電文の値
アプリケーション ID
byAppID
送受信電文の値
モード
byMode
送受信電文の値
拡張用エリア
byExtArea
送受信電文の値
【備考】
なし
52
● MsgChangeMode メッセージ
【意味】
起動側の場合はこのメッセージは使用しません。
着信側の場合は相手からのモード変更要求電文を受信したことを表します。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
7
メッセージのバイト長
dwMsgLen
88(10) [58(16)]
結果コード
dwResult
0
電文区分
byMsgID
受信電文の値
処理結果
byResult
受信電文の値
相手センター確認コード byPeerCode
受信電文の値
当方センター確認コード byMyCode
受信電文の値
通信年月日時分秒
byDateTime
受信電文の値
パスワード
byPassword
受信電文の値
アプリケーション ID
byAppID
受信電文の値
モード
byMode
受信電文の値
拡張用エリア
byExtArea
受信電文の値
【備考】
なし
53
● MsgChangedMode メッセージ
【意味】
起動側の場合は相手からのモード変更回答電文を受信し、モード変更待ち状態が完了したことを表
します。
着信側の場合は相手へモード変更回答電文を送信し、モード変更待ち状態が完了したことを表しま
す。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
8
メッセージのバイト長
dwMsgLen
88(10) [58(16)]
結果コード
dwResult
0
電文区分
byMsgID
送受信電文の値
処理結果
byResult
送受信電文の値
相手センター確認コード byPeerCode
送受信電文の値
当方センター確認コード byMyCode
送受信電文の値
通信年月日時分秒
byDateTime
送受信電文の値
パスワード
byPassword
送受信電文の値
アプリケーション ID
byAppID
送受信電文の値
モード
byMode
送受信電文の値
拡張用エリア
byExtArea
送受信電文の値
【備考】
なし
54
③ ファイル制御系メッセージ
● MsgStartFile メッセージ
【意味】
起動側の場合はこのメッセージは使用しません。
着信側の場合は相手からの開始要求電文を受信したことを表します。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
9
メッセージのバイト長
dwMsgLen
216(10) [D8(16)]
結果コード
dwResult
0
電文区分
byMsgID
受信電文の値
処理結果
byResult
受信電文の値
ファイル名
byFileName
受信電文の値
ファイルアクセスキー
byFileAccKey
受信電文の値
テキスト数
wNumOfText
受信電文の値
レコード数
dwNumOfRecord
受信電文の値
レコード ID
byRecordID
受信電文の値
レコード長
wRecordLen
受信電文の値
再送指定区分(From)
wRetryFrom
受信電文の値
再送指定区分(To)
wRetryTo
受信電文の値
データ圧縮 ID
byCompressID
受信電文の値
拡張用エリア
byExtArea
受信電文の値
送受信ファイル名
byPathName
受信電文の値
【備考】
なし
55
● MsgTermedFile メッセージ
【意味】
起動側の場合は相手から開始回答電文(ファイルなし)を受信、または終了要求/終了回答電文を送受
信し、ファイル転送状態が完了したことを表します。
着信側の場合は相手へ開始回答電文(ファイルなし)を送信、または終了要求/終了回答電文を送受信
し、ファイル転送状態が完了したことを表します。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
10(10) [0A(16)]
メッセージのバイト長
dwMsgLen
216(10) [D8(16)]
結果コード
dwResult
0
電文区分
byMsgID
送受信電文の値
処理結果
byResult
送受信電文の値
ファイル名
byFileName
送受信電文の値
ファイルアクセスキー
byFileAccKey
送受信電文の値
テキスト数
wNumOfText
送受信電文の値
レコード数
dwNumOfRecord
送受信電文の値
レコード ID
byRecordID
送受信電文の値
レコード長
wRecordLen
送受信電文の値
再送指定区分(From)
wRetryFrom
送受信電文の値
再送指定区分(To)
wRetryTo
送受信電文の値
データ圧縮 ID
byCompressID
送受信電文の値
拡張用エリア
byExtArea
送受信電文の値
送受信ファイル名
byPathName
送受信電文の値
【備考】
起動側で照会モードの時は電文区分と処理結果から正常にファイル転送が終了したかどうかを判
定するようにしてください。
56
● MsgRestartFile メッセージ
【意味】
ファイル送信側の場合は相手からの再送要求電文を受信したことを表します。
ファイル受信側の場合はこのメッセージは使用しません。
【内容】
項目
値( [ ]内は 16 進値)
メンバ名
メッセージ番号
dwMsgNo
11(10) [0B(16)]
メッセージのバイト長
dwMsgLen
216(10) [D8(16)]
結果コード
dwResult
0
電文区分
byMsgID
受信電文の値
処理結果
byResult
受信電文の値
ファイル名
byFileName
受信電文の値
ファイルアクセスキー
byFileAccKey
受信電文の値
テキスト数
wNumOfText
受信電文の値
レコード数
dwNumOfRecord
受信電文の値
レコード ID
byRecordID
受信電文の値
レコード長
wRecordLen
受信電文の値
再送指定区分(From)
wRetryFrom
受信電文の値
再送指定区分(To)
wRetryTo
受信電文の値
データ圧縮 ID
byCompressID
受信電文の値
拡張用エリア
byExtArea
受信電文の値
送受信ファイル名
byPathName
受信電文の値
【備考】
なし
57
3.9 状態遷移
API 関数とイベントメッセージの関係を状態遷移図としてまとめました。アプリケーション作成時
の参考にしてください。
① 起動側の状態遷移
未起動状態
FBOpenService()
FBCloseService()
アイドル状態
MsgClosedLine
FBOpenLine()
MsgClosedLine
接続完了待ち状態
MsgOpenedLine
切断完了待ち状態
FBCloseLine()
接続状態
MsgClosedSession
FBOpenSession()
開局待ち状態
MsgOpenedSession
閉局待ち状態
FBCloseSession()
開局状態
FBStartFile()
FBRestartFile()
FBChangeMode()
MsgTermedFile
ファイル転送状態
MsgRestartFile
FBRestartFile()
再送指示待ち状態
58
MsgChangedMode
モード変更待ち状態
② 着信側の状態遷移
未起動状態
FBOpenService()
FBCloseService()
アイドル状態
FBCloseLine()
FBAcceptLine()
MsgClosedLine
接続完了待ち状態
MsgAcceptedLine
MsgClosedLine
切断完了待ち状態
FBCloseLine()
接続状態
MsgClosedSession
FBOpenSession()
開局待ち状態
MsgOpenedSession
閉局待ち状態
FBCloseSession()
開局状態
FBStartFile()
FBRestartFile()
FBChangeMode()
MsgTermedFile
ファイル転送状態
MsgRestartFile
FBRestartFile()
再送指示待ち状態
59
MsgChangedMode
モード変更待ち状態
3.10 シーケンス
各通信パターンにおける API 関数,イベントメッセージおよび電文の相互関係をシーケンスとして
まとめました。アプリケーション作成時の参考にしてください。
①
②
③
④
⑤
⑥
パターン 1…通信ライブラリ使用/連絡モード/連続受信回数=0
パターン 2…通信ライブラリ使用/照会モード/連続受信回数=0
パターン 3…通信ライブラリ使用/連絡モード/再送/連続受信回数=0
パターン 4…通信ライブラリ使用/照会モード/再送/連続受信回数=0
パターン 5…通信ライブラリ使用/モード変更/連続受信回数=0
パターン 6…ファイル転送ライブラリ使用/連絡モード/連続受信回数=0
図中の記号の意味は次のようになっています。
:関数コール
:イベントメッセージ送信
:電文・論理 ACK 送信
60
① パターン 1(通信ライブラリ使用/連絡モード/連続受信回数=0)
アプリケーション
B-TALK
B-TALK
FBOpenService
アプリケーション
FBOpenService
FBAcceptLine
FBOpenLine
回線/TCP コネクション接続
MsgOpenedLine
MsgAcceptedLine
FBOpenSession
開局要求電文
論理 ACK
MsgOpenSession
FBOpenSession
開局回答電文
論理 ACK
MsgOpenedSession
MsgOpenedSession
FBStartFile
開始要求電文
論理 ACK
MsgStartFile
FBStartFile
開始回答電文
論理 ACK
データ電文
論理 ACK
終了要求電文
論理 ACK
終了回答電文
論理 ACK
MsgTermedFile
MsgTermedFile
61
アプリケーション
B-TALK
B-TALK
アプリケーション
FBCloseSession
閉局要求電文
論理 ACK
MsgCloseSession
FBCloseSession
閉局回答電文
論理 ACK
MsgClosedSession
MsgClosedSession
FBCloseLine
回線/TCP コネクション切断
MsgClosedLine
MsgClosedLine
FBCloseService
FBCloseService
62
② パターン 2(通信ライブラリ使用/照会モード/連続受信回数=0)
アプリケーション
B-TALK
B-TALK
FBOpenService
アプリケーション
FBOpenService
FBAcceptLine
FBOpenLine
回線/TCP コネクション接続
MsgOpenedLine
MsgAcceptedLine
FBOpenSession
開局要求電文
論理 ACK
MsgOpenSession
FBOpenSession
開局回答電文
論理 ACK
MsgOpenedSession
MsgOpenedSession
FBStartFile
開始要求電文
論理 ACK
MsgStartFile
FBStartFile
開始回答電文
論理 ACK
データ電文
論理 ACK
終了要求電文
論理 ACK
終了回答電文
論理 ACK
MsgTermedFile
MsgTermedFile
63
アプリケーション
B-TALK
B-TALK
アプリケーション
FBCloseSession
閉局要求電文
論理 ACK
MsgCloseSession
FBCloseSession
閉局回答電文
論理 ACK
MsgClosedSession
MsgClosedSession
FBCloseLine
回線/TCP コネクション切断
MsgClosedLine
MsgClosedLine
FBCloseService
FBCloseService
64
③ パターン 3(通信ライブラリ使用/連絡モード/再送/連続受信回数=0)
アプリケーション
B-TALK
B-TALK
アプリケーション
データ電文
障害
MsgClosedLine
MsgClosedLine
FBAcceptLine
FBOpenLine
回線/TCP コネクション接続
MsgOpenedLine
MsgAcceptedLine
FBOpenSession
開局要求電文
論理 ACK
MsgOpenSession
FBOpenSession
開局回答電文
論理 ACK
MsgOpenedSession
MsgOpenedSession
FBStartFile
開始要求電文
論理 ACK
MsgStartFile
FBRestartFile
再送要求電文
論理 ACK
MsgRestartFile
FBRestartFile
データ電文
論理 ACK
終了要求電文
論理 ACK
65
アプリケーション
B-TALK
B-TALK
アプリケーション
終了回答電文
論理 ACK
MsgTermedFile
MsgTermedFile
FBCloseSession
閉局要求電文
論理 ACK
MsgCloseSession
FBCloseSession
閉局回答電文
論理 ACK
MsgClosedSession
MsgClosedSession
FBCloseLine
回線/TCP コネクション切断
MsgClosedLine
MsgClosedLine
FBCloseService
FBCloseService
66
④ パターン 4(通信ライブラリ使用/照会モード/再送/連続受信回数=0)
アプリケーション
B-TALK
B-TALK
アプリケーション
データ電文
障害
MsgClosedLine
MsgClosedLine
FBAcceptLine
FBOpenLine
回線/TCP コネクション接続
MsgOpenedLine
MsgAcceptedLine
FBOpenSession
開局要求電文
論理 ACK
MsgOpenSession
FBOpenSession
開局回答電文
論理 ACK
MsgOpenedSession
MsgOpenedSession
FBRestartFile
再送要求電文
論理 ACK
MsgRestartFile
FBRestartFile
データ電文
論理 ACK
終了要求電文
論理 ACK
終了回答電文
論理 ACK
MsgTermedFile
MsgTermedFile
67
アプリケーション
B-TALK
B-TALK
アプリケーション
FBCloseSession
閉局要求電文
論理 ACK
MsgCloseSession
FBCloseSession
閉局回答電文
論理 ACK
MsgClosedSession
MsgClosedSession
FBCloseLine
回線/TCP コネクション切断
MsgClosedLine
MsgClosedLine
FBCloseService
FBCloseService
68
⑤ パターン 5(通信ライブラリ使用/モード変更/連続受信回数=0)
アプリケーション
B-TALK
B-TALK
FBOpenService
アプリケーション
FBOpenService
FBAcceptLine
FBOpenLine
回線/TCP コネクション接続
MsgOpenedLine
MsgAcceptedLine
FBOpenSession
開局要求電文
論理 ACK
MsgOpenSession
FBOpenSession
開局回答電文
論理 ACK
MsgOpenedSession
MsgOpenedSession
FBStartFile
開始要求電文
論理 ACK
MsgStartFile
FBStartFile
開始回答電文
論理 ACK
データ電文
論理 ACK
終了要求電文
論理 ACK
終了回答電文
論理 ACK
MsgTermedFile
MsgTermedFile
69
アプリケーション
B-TALK
B-TALK
アプリケーション
FBChangeMode
モード変更要求電文
論理 ACK
MsgChangeMode
FBChangeMode
モード変更回答電文
論理 ACK
MsgChangedMode
MsgChangedMode
FBStartFile
開始要求電文
論理 ACK
MsgStartFile
FBStartFile
開始回答電文
論理 ACK
データ電文
論理 ACK
終了要求電文
論理 ACK
終了回答電文
論理 ACK
MsgTermedFile
MsgTermedFile
FBCloseSession
閉局要求電文
論理 ACK
MsgCloseSession
FBCloseSession
閉局回答電文
70
アプリケーション
B-TALK
B-TALK
アプリケーション
論理 ACK
MsgClosedSession
MsgClosedSession
FBCloseLine
回線/TCP コネクション切断
MsgClosedLine
MsgClosedLine
FBCloseService
FBCloseService
71
⑥ パターン 6(ファイル転送ライブラリ使用/連絡モード/連続受信回数=0)
アプリケーション
B-TALK
B-TALK
Initialize
アプリケーション
FBOpenService
FBAcceptLine
Request
回線/TCP コネクション接続
MsgOpenedLine
MsgAcceptedLine
DispMsg
開局要求電文
Response
論理 ACK
MsgOpenSession
FBOpenSession
開局回答電文
論理 ACK
MsgOpenedSession
MsgOpenedSession
DispMsg
開始要求電文
Response
論理 ACK
MsgStartFile
FBStartFile
開始回答電文
論理 ACK
データ電文
論理 ACK
終了要求電文
論理 ACK
終了回答電文
論理 ACK
MsgTermedFile
MsgTermedFile
72
アプリケーション
B-TALK
B-TALK
アプリケーション
DispMsg
閉局要求電文
Response
論理 ACK
MsgCloseSession
FBCloseSession
閉局回答電文
論理 ACK
MsgClosedSession
MsgClosedSession
DispMsg
回線/TCP コネクション切断
Response
MsgClosedLine
MsgClosedLine
DispMsg
FBCloseService
Response
Terminate
73
3.11 アプリケーションと API のリンク
Visual C++および Visual Basic を使用してアプリケーションを作成する時の API とのリンク方法
は次の通りです。(Visual C++,Visual Basic の具体的な操作方法については別途各マニュアルを参
照してください。)
① Visual C++
1) プロジェクトを新規作成、またはすでに作成済みの場合はそのプロジェクトを開きます。
2) FD の<SDK>ディレクトリにあるヘッダファイル(*.h)と LIB ファイル(*.lib)を適当なディレク
トリ(プロジェクトファイルのあるディレクトリで結構です。)にコピーして、プロジェクトに追
加します。
● 通信ライブラリを使用する時…FBIF.h,FBIF.lib
● ファイル転送ライブラリを使用する時…FBFT.h,FBFT.lib
3) ソースファイルを作成します。ソースファイルの中でヘッダファイルをインクルードします。
4) ビルドします。
② Visual Basic
1) プロジェクトを新規作成、またはすでに作成済みの場合はそのプロジェクトを開きます。
2) FD の<SDK>ディレクトリにある Visual Basic Module ファイル(*.bas)を適当なディレクトリ
(プロジェクトファイルのあるディレクトリで結構です。)にコピーして、プロジェクトに追加し
ます。
3) コードを作成します。
4) EXE ファイルを作成します。
74
3.12 サンプルコーディング
サンプルコーディングとして次のようなプログラムを用意しました。仕様とプログラムリストは次
の通りですので、アプリケーション作成時の参考として活用してください。
【仕様】
●
●
●
●
●
アイコン状態で動作する。
通信ライブラリを使用する。
起動側連絡モードの動作のみを行う。
動作シーケンスは「3.10 シーケンス」のパターン 1 と同じ。
各電文に設定する項目のデータや送信ファイル等はグローバル変数で定義する。
【プログラムリスト】
/****************************************************************************
サンプルアプリケーションプログラム
Copyright(C) LOGIC Corp. 1998. All rights reserved.
****************************************************************************/
//============================== インクルードファイル定義 ==============================
#include <windows.h>
#include <stdio.h>
#include "FBIF.h"
//============================== 記号定数・構造体 ==============================
#define MAJOR_VERSION
1
// メジャーバージョン
#define MINOR_VERSION
00
// マイナーバージョン
#define
#define
#define
#define
#define
#define
// 電文区分の定義(通信制御電文)
msgOPENREQ
0x00
msgOPENANS
0x01
msgCLOSEREQ
0x02
msgCLOSEANS
0x03
msgMODEREQ
0x04
msgMODEANS
0x05
//
//
//
//
//
//
開局要求
開局回答
閉局要求
閉局回答
モード変更要求
モード変更回答
#define
#define
#define
#define
#define
// 電文区分の定義(ファイル制御電文)
msgSTARTREQ
0x10
msgSTARTANS
0x11
msgENDREQ
0x12
msgENDANS
0x13
msgRETRYREQ
0x14
//
//
//
//
//
開始要求
開始回答
終了要求
終了回答
再送要求
//============================== グローバル変数 ==============================
HINSTANCE ghInst ;
// current instance
char
char
gszAppName[] = "Sample" ;
gszTitle[80] ;
BYTE
g_byComName[] = "SAMPLE" ;
// The name of this application
// The title bar text (Making strings is in InitInstance)
// 通信アプリケーション識別文字
75
BYTE
BOOL
BYTE
BYTE
BYTE
BYTE
g_byIPAddr[] = "172.20.20.36" ;
g_bDialUp = FALSE ;
g_byDialEntry[] = "" ;
g_byDialNumber[] = "" ;
g_byDialUser[] = "" ;
g_byDialPass[] = "" ;
//
//
//
//
//
//
相手端末 IP アドレス
ダイアルアップネットワーク接続指定
ダイアルアップネットワークエントリ名
相手の電話番号
相手の認証を受ける時のユーザ名
相手の認証を受ける時のパスワード
BYTE
BYTE
BYTE
BYTE
BYTE
g_byPeerCode[] = "99999999000001" ;
g_byMyCode[] = "11111111000001" ;
g_byPassword[] = "ABCD" ;
g_byAppID = '0' ;
g_byMode = '0' ;
//
//
//
//
//
相手センター確認コード
当方センター確認コード
パスワード
アプリケーション ID
モード
BYTE
BYTE
BYTE
WORD
BYTE
BYTE
g_byFileName[] = "200000000001" ;
g_byFileAccKey[] = "200001" ;
g_byRecordID = '0' ;
g_wRecordLen = 2043 ;
g_byCompressID = '0' ;
g_byPathName[] = "C:\\temp\\t4212.txt" ;
//
//
//
//
//
//
ファイル名
ファイルアクセスキー
レコード ID
レコード長
データ圧縮 ID
送受信ファイル名
//============================== 関数プロトタイプ宣言 ==============================
BOOL
InitApplication( HANDLE ) ;
BOOL
InitInstance( HANDLE, int ) ;
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ;
VOID
CallingProc( HWND hWnd, LPARAM lParam ) ;
VOID
StrToBCD( BYTE *pStr, BYTE *pBCD ) ;
//============================== 関数 ==============================
/****************************************************************************
FUNCTION: WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
****************************************************************************/
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
MSG
msg;
HANDLE
hAccelTable;
if( !hPrevInstance )
{
if( !InitApplication( hInstance ) )
{
return( FALSE ) ;
}
}
if( !InitInstance( hInstance, nCmdShow ) )
{
return( FALSE ) ;
}
hAccelTable = LoadAccelerators( hInstance, gszAppName ) ;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
if( !TranslateAccelerator( msg.hwnd, hAccelTable, &msg ) )
{
TranslateMessage( &msg ) ;
DispatchMessage( &msg ) ;
}
}
return( msg.wParam ) ;
lpCmdLine ;
}
/****************************************************************************
76
FUNCTION: InitApplication(HINSTANCE)
PURPOSE: Initializes window data and registers window class
****************************************************************************/
BOOL InitApplication( HINSTANCE hInstance )
{
WNDCLASS wc;
wc.style
= CS_HREDRAW | CS_VREDRAW;// Class style(s).
wc.lpfnWndProc
= (WNDPROC)WndProc;
// Window Procedure
wc.cbClsExtra
= 0;
// No per-class extra data.
wc.cbWndExtra
= 0;
// No per-window extra data.
wc.hInstance
= hInstance;
// Owner of this class
wc.hIcon
= LoadIcon (hInstance, gszAppName); // Icon name from .RC
wc.hCursor
= LoadCursor(NULL, IDC_ARROW);// Cursor
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);// Default color
wc.lpszMenuName = gszAppName;
// Menu name from .RC
wc.lpszClassName = gszAppName;
// Name to register as
return( RegisterClass( &wc ) ) ;
}
/****************************************************************************
FUNCTION: InitInstance(HINSTANCE, int)
PURPOSE: Saves instance handle and creates main window
****************************************************************************/
BOOL InitInstance( HINSTANCE hInstance, int nCmdShow )
{
HWND
hWnd;
ghInst = hInstance;
wsprintf(gszTitle, "サンプル APP V%d.%02d", MAJOR_VERSION, MINOR_VERSION);
hWnd = CreateWindow(
gszAppName,
// See RegisterClass() call.
gszTitle,
// Text for window title bar.
WS_OVERLAPPEDWINDOW,// Window style.
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, // Use default positioning
NULL,
// Overlapped windows have no parent.
NULL,
// Use the window class menu.
hInstance,
// This instance owns this window.
NULL
// We don't use any data in our WM_CREATE
);
if (!hWnd) {
return (FALSE);
}
ShowWindow(hWnd, SW_SHOWMINNOACTIVE); // Show the window as ICON
return (TRUE);
}
/****************************************************************************
FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
PURPOSE: Processes messages
****************************************************************************/
LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM uParam, LPARAM lParam )
{
char
szMsg[100] ;
BOOL
bRes ;
switch( message )
{
case WM_CREATE :
bRes = FBOpenService( hWnd, g_byComName ) ;
if( bRes == FALSE )
77
{
sprintf( szMsg, "起動できません" ) ;
MessageBox( hWnd, szMsg, "FBtest", MB_OK ) ;
return( 0 ) ;
}
FBOpenLine( g_byIPAddr, g_bDialUp, g_byDialEntry, "", "", "" ) ;
return( 0 ) ;
case WM_DESTROY :
case WM_CLOSE :
PostQuitMessage( 0 ) ;
ExitProcess( 0 ) ;
return( 0 ) ;
case WM_COPYDATA :
CallingProc( hWnd, lParam ) ;
return( 0 ) ;
}
return( DefWindowProc( hWnd, message, uParam, lParam ) ) ;
}
/****************************************************************************
FUNCTION: CallingProc( HWND hWnd, LPARAM, lParam )
PURPOSE: 通信ライブラリ(FBIF.dll)を使った起動側の処理を行う
****************************************************************************/
VOID CallingProc( HWND hWnd, LPARAM lParam )
{
DWORD
dwMsgNo, dwResult ;
SessionInfo
Sess ;
FileInfo File ;
FBGetMsgNo( lParam, &dwMsgNo, &dwResult ) ;
// イベントメッセージで分岐する
switch( dwMsgNo )
{
case EVENT_MsgOpenedLine :
//=== MsgOpenedLine メッセージ受信 ===
// 開局要求電文を送信する処理
memset( &Sess, 0, sizeof(Sess) ) ;
Sess.byMsgID = msgOPENREQ ;
StrToBCD( g_byPeerCode, Sess.byPeerCode ) ;
StrToBCD( g_byMyCode, Sess.byMyCode ) ;
memset( Sess.byPassword, ' ', sizeof(Sess.byPassword) ) ;
memcpy( Sess.byPassword, g_byPassword, strlen(g_byPassword) ) ;
Sess.byAppID = '0' ;
Sess.byMode = g_byMode ;
ReplyMessage( 0 ) ;
FBOpenSession( &Sess ) ;
break ;
case EVENT_MsgOpenedSession :
//=== MsgOpenedSession メッセージ受信 ===
// 開始要求電文を送信する処理
memset( &File, 0, sizeof(File) ) ;
File.byMsgID = msgSTARTREQ ;
memset( File.byFileName, ' ', sizeof(File.byFileName) ) ;
memcpy( File.byFileName, g_byFileName, strlen(g_byFileName) ) ;
memset( File.byFileAccKey, ' ', sizeof(File.byFileAccKey) ) ;
memcpy( File.byFileAccKey, g_byFileAccKey, strlen(g_byFileAccKey) ) ;
File.byRecordID = '0' ;
File.wRecordLen = g_wRecordLen ;
File.byCompressID = g_byCompressID ;
ReplyMessage( 0 ) ;
78
FBStartFile( &File, g_byPathName ) ;
break ;
case EVENT_MsgTermedFile :
//=== MsgTermedFile メッセージ受信 ===
// 閉局要求電文を送信する処理
memset( &Sess, 0, sizeof(Sess) ) ;
Sess.byMsgID = msgCLOSEREQ ;
StrToBCD( g_byPeerCode, Sess.byPeerCode ) ;
StrToBCD( g_byMyCode, Sess.byMyCode ) ;
memset( Sess.byPassword, ' ', sizeof(Sess.byPassword) ) ;
memcpy( Sess.byPassword, g_byPassword, strlen(g_byPassword) ) ;
Sess.byAppID = '0' ;
Sess.byMode = g_byMode ;
ReplyMessage( 0 ) ;
FBCloseSession( &Sess ) ;
break ;
case EVENT_MsgClosedSession :
//=== MsgClosedSession メッセージ受信 ===
// 回線を切断する処理
ReplyMessage( 0 ) ;
FBCloseLine() ;
break ;
case EVENT_MsgClosedLine :
// MsgClosedLine メッセージ受信
ReplyMessage( 0 ) ;
FBCloseService() ;
PostMessage( hWnd, WM_DESTROY, 0, 0 ) ;
break ;
default :
ReplyMessage( 0 ) ;
break ;
}
}
/****************************************************************************
FUNCTION: StrToBCD( BYTE *pStr, BYTE *pBCD )
PURPOSE: 文字列を BCD に変換する
****************************************************************************/
VOID StrToBCD( BYTE *pStr, BYTE *pBCD )
{
char
ch ;
DWORD
dwCnt ;
for( dwCnt = 0 ; dwCnt < strlen( pStr ) ; dwCnt++ )
{
if( dwCnt % 2 )
{
ch = *(pStr+dwCnt) & 0x0F ;
*(pBCD+dwCnt/2) |= ch ;
}
else
{
ch = *(pStr+dwCnt) & 0x0F ;
ch <<= 4 ;
*(pBCD+dwCnt/2) = ch ;
}
}
}
79
4 ダイアログボックス
『B-TALK』は実行中の処理についての進行状況をダイアログボックスで表示しますので、その進
行状況を視覚的に確認することができます。また、ダイアログボックスの中にキャンセルボタンを実
装していますので、実行中の処理を強制終了させることもできます。
本章ではこのダイアログボックスについて説明します。
4.1 回線接続状況
FBOpenLine 関数でダイヤルアップネットワークの接続を指定した時は、その進行状況をダイアロ
グボックスで表示します。
キャンセルボタンをクリックすると、ダイヤルアップネットワークの接続処理を強制終了します。
80
4.2 ファイル転送状況
ファイル転送時のデータ電文の送信状況をダイアログボックスの中のプログレスバーで表示しま
す。
キャンセルボタンをクリックすると、ファイル転送処理を強制終了し、ダイヤルアップネットワー
クと TCP コネクションを切断します。
81
5 トレースログ
『B-TALK』は動作状況,電文の内容などを通信終了後に確認できるトレースログ収集機能を持っ
ています。
本章ではこのトレースログについて説明します。
5.1 トレースログの種類
トレースログには次の二つがあります。
● アプリケーショントレースログ
● 通信トレースログ
アプリケーショントレースログは通信アプリケーションへの処理オーダー,アプリケーションへの
イベントメッセージ,電文の送受信,回線状態の変化およびタイムアウトの発生状況などを記録して
います。このログは発生した事象を記録することを主目的としています。
一方の通信トレースログはイベントメッセージと送受信電文の内容を記録しています。
どちらのログもテキストファイル形式なのでお手持ちのテキストエディタで内容を確認できます。
またどちらもサイクリックにログを記録していますので、最新ログの次の行に
“<< End of xxxx >>”
を書き込んでいます。(xxxx はそのログのファイル名)
82
5.2 トレースログの見方
① アプリケーショントレースログ
アプリケーショントレースログの内容は次の通りです。
03/11
03/11
03/11
03/11
03/11
03/11
03/11
03/11
03/11
03/11
03/11
03/11
03/11
03/11
03/11
03/11
①
10:27:14:390
10:27:14:450
10:27:14:450
10:27:14:500
10:27:14:500
10:27:14:500
10:27:14:500
10:27:14:560
10:27:14:560
10:27:14:560
10:27:15:220
10:27:15:220
10:27:15:380
10:27:15:380
10:27:15:380
10:27:15:380
②
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
System
System
System
Common
Common
System
Common
Common
Protocol
Common
System
SubLayer
System
Protocol
SubLayer
Protocol
://-----------------------------------------------------------------://
全銀プロトコル Ver 1.01 起動
://-----------------------------------------------------------------:=> API メッセージ(MsgOpenService) 受信
:=> API メッセージ(MsgOpenLine) 受信
:FD_CONNECT 検出
:SOCKET 接続 完了
:<= EVENT メッセージ(MsgOpenedLine) 送信
:=> API メッセージ(MsgOpenSession) 受信
:--- (開局要求)[AF=0 MN=15] 送信 -->
:FD_READ 検出
:<-- (論理 ACK)[AF=0 MN=15] 受信 --:FD_READ 検出
:<-- (開局回答)[AF=0 MN=15] 受信 --:--- (論理 ACK)[AF=0 MN=15] 送信 -->
:<= EVENT メッセージ(MsgOpenedSession) 送信
③
④
番号
項目
説明
①
日付
事象の発生した日付
②
時間
事象の発生した時間
③
ログレベル
④
事象
収集対象の事象のレベル
初期設定ファイル(FBAJ.ini)で設定したレベル以下が対象となります。
発生した事象
83
② 通信トレースログ
通信トレースログの内容は次の通りです。
03/11 10:27:32:130 S 08
30
30
30
03/11 10:27:32:190 R 00
00
00
00
03/11 10:27:32:240 S 00
F0
FB
00
①
②
08
30
30
30
08
00
00
00
4D
F0
00
00
10
30
30
30
11
00
00
00
10
F0
00
00
0F
30
30
30
0F
00
00
00
0F
F0
00
00
00
30
30
30
00
00
00
00
00
F0
00
00
00
30
30
30
00
00
00
00
00
F0
F0
00
00
30
30
30
00
00
00
00
00
F1
00
00
00
30
30
30
00
00
00
00
00
F2
00
00
01
30
30
30
00
00
00
00
00
F0
00
00
01
30
30
30
00
00
00
00
00
F0
00
00
③
2C
30
30
30
00
00
00
00
00
F0
00
00
08
30
30
30
00
00
00
00
00
F0
00
00
00
30
30
30
00
00
00
00
45
F1
00
00
30
30
30
30
00
00
00
00
12
01
00
00
30
30
30
30
00
00
00
00
00
2C
00
00
30
30
30
30
00
00
00
00
F2
00
00
00
30
30
30
30
00
00
00
00
F0
01
00
00
30
30
30
30
00
00
00
00
F0
2C
00
00
30
30
30
30
00
00
00
00
F0
F0
00
00
④
⑤
番号
項目
説明
①
日付
事象の発生した日付
②
時間
事象の発生した時間
③
種別
事象の種別
(E:イベントメッセージ,S:電文送信,R:電文受信)
④
内容
イベントおよび電文の内容
⑤
名称
イベントおよび電文の名称
84
30 (データ)
30
30
30
00 (論理 ACK)
00
00
00
F0 (終了要求)
07
00
00
5.3 トレースログの例
トレースログの実例をいくつか挙げてみました。エラー事象発生時の参考にしてください。
85
① TCP コネクションが相手から切断
● シーケンス
FBOpenService
FBOpenLine
TCP コネクション接続完了
MsgOpenedLine
FBOpenSession
開局要求電文送信
論理 ACK 受信
TCP コネクション切断完了
MsgClosedLine
● アプリケーショントレースログ
03/19
03/19
03/19
03/19
03/19
03/19
03/19
03/19
03/19
03/19
03/19
03/19
10:53:02:410
10:53:04:450
10:53:04:450
10:53:04:450
10:53:04:450
10:53:04:560
10:53:04:610
10:53:04:720
10:53:04:720
10:53:26:250
10:53:27:240
10:53:27:240
1
1
1
1
1
1
1
1
1
1
1
1
Common
Common
System
Common
Common
Protocol
Common
System
SubLayer
System
Common
Common
:=> API メッセージ(MsgOpenService) 受信
:=> API メッセージ(MsgOpenLine) 受信
:FD_CONNECT 検出
:SOCKET 接続 完了
:<= EVENT メッセージ(MsgOpenedLine) 送信
:=> API メッセージ(MsgOpenSession) 受信
:--- (開局要求)[AF=0 MN=15] 送信 -->
:FD_READ 検出
:<-- (論理 ACK)[AF=0 MN=15] 受信 --:FD_CLOSE 検出
:回線切断 完了
:<= EVENT メッセージ(MsgClosedLine) 送信
● 通信トレースログ
03/19 10:53:04:450 E 00
32
00
00
03/19 10:53:04:610 S 00
00
40
00
03/19 10:53:04:720 R 00
00
00
00
03/19 10:53:27:240 E 02
32
00
00
00
30
00
00
4D
01
F0
00
08
00
00
00
00
30
00
00
00
2E
00
00
10
11
F0
00
11
00
00
00
00
2E
00
00
00
32
00
00
0F
11
00
00
0F
00
00
00
00
32
00
00
A4
30
00
00
00
11
00
00
00
00
00
00
A4
30
00
00
00
2E
00
00
00
11
00
00
00
00
00
00
00
2E
00
00
00
33
00
00
00
00
00
00
00
00
00
00
00
33
00
00
00
36
00
00
00
00
00
00
00
00
00
00
00
36
00
00
00
00
00
00
00
01
00
00
00
00
00
00
00
00
00
00
86
00
00
00
00
00
98
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
03
00
00
00
00
00
00
02
00
00
00
00
00
00
00
00
19
00
00
00
00
00
00
00
00
00
00
00
00
00
00
45
10
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
53
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
04
00
00
00
00
00
00
00
00
00
00
00
00
00
00
99
9B
00
00
00
00
00
00
00
00
00
00
31
54
00
00
99
9C
00
00
00
00
00
00
31
54
00
00
37
45
00
00
99
A0
00
00
00
00
00
00
37
45
00
00
32
53
00
00
99
AB
00
00
00
00
00
00
32
53
00
00
2E
54
00
00
00
B0
00
00
00
00
00
00
2E
54
00
00
(MsgOpenedLine)
(開局要求)
(論理 ACK)
(MsgClosedLine)
② 無通信監視タイムアウト
● シーケンス
FBStartFile
開始要求電文送信
論理 ACK 受信
無通信監視タイムアウト発生
回線切断完了
MsgClosedLine
● アプリケーショントレースログ
03/19
03/19
03/19
03/19
03/19
03/19
03/19
11:10:42:040
11:10:42:040
11:10:42:310
11:10:42:310
11:11:12:300
11:11:13:340
11:11:13:340
1
1
1
1
0
1
1
Protocol
Common
System
SubLayer
SubLayer
Common
Common
:=> API メッセージ(MsgStartFile) 受信
:--- (開始要求)[AF=0 MN=15] 送信 -->
:FD_READ 検出
:<-- (論理 ACK)[AF=0 MN=15] 受信 --:無通信監視タイムアウト 検出
:回線切断 完了
:<= EVENT メッセージ(MsgClosedLine) 送信
● 通信トレースログ
03/19 11:10:42:040 S 00
F0
FB
00
03/19 11:10:42:310 R 00
00
00
00
03/19 11:11:13:340 E 02
32
00
00
4D
F0
00
00
08
00
00
00
00
30
00
00
10
F0
00
00
11
00
00
00
00
2E
00
00
0F
F0
00
00
0F
00
00
00
00
32
00
00
00
F0
00
00
00
00
00
00
A4
30
00
00
00
F0
F0
00
00
00
00
00
00
2E
00
00
00
F1
00
00
00
00
00
00
00
33
00
00
00
F2
00
00
00
00
00
00
00
36
00
00
00
F0
00
00
00
00
00
00
01
00
00
00
87
00
F0
00
00
00
00
00
00
00
00
00
00
00
F0
00
00
00
00
00
00
03
00
00
00
00
F0
00
00
00
00
00
00
00
00
00
00
45
F1
00
00
00
00
00
00
00
00
00
00
10
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
F2
00
00
00
00
00
00
00
00
00
00
00
F0
00
00
00
00
00
00
00
31
54
00
00
F0
00
00
00
00
00
00
00
37
45
00
00
F0
F0
00
00
00
00
00
00
32
53
00
00
F0 (開始要求)
07
00
00
00 (論理 ACK)
00
00
00
2E (MsgClosedLine)
54
00
00
③ 項目エラー電文を受信
● シーケンス
開局要求電文受信(アプリケーション ID エラー)
論理 ACK 送信
開局回答電文送信
論理 ACK 受信
回線切断完了
MsgClosedLine
● アプリケーショントレースログ
03/19
03/19
03/19
03/19
03/19
03/19
03/19
11:35:37:380
11:35:37:380
11:35:37:380
11:35:47:540
11:35:47:540
11:35:48:530
11:35:48:530
0
1
1
1
1
1
1
Protocol
SubLayer
Common
System
SubLayer
Common
Common
:<-- 項目エラー電文 受信 --:--- (論理 ACK)[AF=0 MN=15] 送信 -->
:--- (開局回答)[AF=0 MN=15] 送信 -->
:FD_READ 検出
:<-- (論理 ACK)[AF=0 MN=0] 受信 --:回線切断 完了
:<= EVENT メッセージ(MsgClosedLine) 送信
● 通信トレースログ
03/19 11:35:37:380 R 00
00
00
00
03/19 11:35:37:380 S 00
00
00
00
03/19 11:35:37:380 S 00
00
00
00
03/19 11:35:47:540 R 00
00
00
00
03/19 11:35:48:530 E 02
00
00
00
4D
00
F1
00
08
00
00
00
4D
00
F1
00
08
00
00
00
00
00
00
00
10
99
F0
00
11
00
00
00
10
99
F0
00
11
00
00
00
00
00
00
00
00
99
00
00
0F
00
00
00
0F
99
00
00
00
00
00
00
00
00
00
00
00
99
00
00
00
00
00
00
00
99
00
00
00
00
00
00
A4
00
00
00
00
99
00
00
00
00
00
00
00
99
00
00
00
00
00
00
00
00
00
00
00
99
00
00
00
00
00
00
00
99
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
88
00
97
00
00
00
00
00
00
00
97
00
00
00
00
00
00
03
00
00
00
00
10
00
00
00
00
00
00
00
10
00
00
00
00
00
00
04
00
00
00
00
21
00
00
00
00
00
00
00
21
00
00
00
00
00
00
00
00
00
00
45
18
00
00
00
00
00
00
45
18
00
00
00
00
00
00
00
00
00
00
00
42
00
00
00
00
00
00
01
42
00
00
00
00
00
00
00
00
00
00
00
40
00
00
00
00
00
00
15
40
00
00
00
00
00
00
00
00
00
00
11
54
00
00
00
00
00
00
11
54
00
00
00
00
00
00
00
00
00
00
11
45
00
00
00
00
00
00
11
45
00
00
00
00
00
00
00
00
00
00
11
53
00
00
00
00
00
00
11
53
00
00
00
00
00
00
00
00
00
00
11
54
00
00
00
00
00
00
11
54
00
00
00
00
00
00
00
00
00
00
11
00
00
00
00
00
00
00
11
00
00
00
00
00
00
00
00
00
00
00
(開局要求)
(論理 ACK)
(開局回答)
(論理 ACK)
(MsgClosedLine)
④ 項目エラーの処理オーダーを受信
● シーケンス
FBOpenSession(モードエラー)
MsgClosedLine
● アプリケーショントレースログ
03/19 11:48:50:730 0 Protocol :=> 非許容 API メッセージ 受信
03/19 11:48:51:770 1 Common
:回線切断 完了
03/19 11:48:51:770 1 Common
:<= EVENT メッセージ(MsgClosedLine) 送信
● 通信トレースログ
03/19 11:48:50:620 E 00
32
00
00
03/19 11:48:51:770 E 02
32
00
00
00
30
00
00
00
30
00
00
00
2E
00
00
00
2E
00
00
00
32
00
00
00
32
00
00
A4
30
00
00
A4
30
00
00
00
2E
00
00
00
2E
00
00
00
33
00
00
00
33
00
00
00
36
00
00
00
36
00
00
00
00
00
00
02
00
00
00
89
00
00
00
00
04
00
00
00
00
00
00
00
04
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
31
54
00
00
31
54
00
00
37
45
00
00
37
45
00
00
32
53
00
00
32
53
00
00
2E (MsgOpenedLine)
54
00
00
2E (MsgClosedLine)
54
00
00
6 結果コード
『B-TALK』は処理結果をアプリケーションに通知できるようイベントメッセージに結果コードを
設定します。結果コードは通信ライブラリの FBGetMsgNo 関数またはファイル転送ライブラリの
Response 関数で取得できます。
結果コードの内容は次の通りです。
結果コード
内容
00000000(16)
正常
00010000(16)
回線接続処理中にキャンセルボタンが押され、回線接続処理が強制終了しました
00010001(16)
回線接続処理中に相手からの切断を検出しました
00010002(16)
回線接続処理中に回線障害を検出しました
00020000(16)
TCP コネクションが相手から切断されました
00020100(16)
Windows Socket の accept 関数でエラーが発生しました
00020101(16)
Windows Socket の bind 関数でエラーが発生しました
00020102(16)
Windows Socket の connect 関数でエラーが発生しました
00020103(16)
Windows Socket の ioctlsocket 関数でエラーが発生しました
00020104(16)
Windows Socket の listen 関数でエラーが発生しました
00020105(16)
Windows Socket の recv 関数でエラーが発生しました
00020106(16)
Windows Socket の send 関数でエラーが発生しました
00020107(16)
Windows Socket の socket 関数でエラーが発生しました
00020108(16)
Windows Socket の setsockopt 関数でエラーが発生しました
00020109(16)
Windows Socket の WSAAsyncSelect 関数でエラーが発生しました
00030000(16)
TCP コネクション接続処理中にタイムアウトが発生しました
00030001(16)
無通信監視タイムアウトが発生しました
00040000(16)
受信したサブレイヤヘッダの識別子で誤りを検出しました
00040001(16)
受信したサブレイヤヘッダの論理 ACK 不要フラグで誤りを検出しました
00040002(16)
受信したサブレイヤヘッダのメッセージ長で誤りを検出しました
00040100(16)
受信した TTC の情報区分で誤りを検出しました
00040101(16)
受信した TTC のテキストシーケンス番号で誤りを検出しました
00040102(16)
受信した TTC のテキスト長で誤りを検出しました
00040200(16)
受信した電文の電文区分で誤りを検出しました
00040300(16)
受信した電文のアプリケーション ID で誤りを検出しました
00040301(16)
受信した電文のモードで誤りを検出しました
00040302(16)
受信した電文のテキスト数で誤りを検出しました
00040303(16)
受信した電文のレコード数で誤りを検出しました
00040304(16)
受信した電文のレコード ID で誤りを検出しました
00040305(16)
受信した電文のデータ圧縮 ID で誤りを検出しました
00040400(16)
処理オーダーのメッセージ番号で誤りを検出しました
00040401(16)
処理オーダーのアプリケーション ID で誤りを検出しました
00040402(16)
処理オーダーのモードで誤りを検出しました
00040403(16)
処理オーダーのレコード ID で誤りを検出しました
00040404(16)
処理オーダーのレコード長で誤りを検出しました
00040405(16)
処理オーダーのデータ圧縮 ID で誤りを検出しました
00040406(16)
処理オーダーの送信ファイル名で誤りを検出しました
90
結果コード
内容
00050000(16)
ファイル転送中にプログレスバーのキャンセルボタンが押され、ファイル転送処
理が強制終了しました
00050001(16)
圧縮後のテキスト長が圧縮前のテキスト長よりも長くなってしまいました
00050002(16)
テキスト送信時、TTC のテキストシーケンス番号が 65535 を越えてしまいました
00060000(16)
通信アプリケーションの中で状態不一致が発生しました
91
付録 A コード変換表
電文を送信する時は JIS8 コードを EBCDIC コードに変換し、逆に電文を受信した時は EBCDIC
コードを JIS8 コードに変換します。
そのときのコード変換は次の通りです。(コードはすべて 16 進数です。)
JIS8
EBCDIC
JIS8
EBCDIC
文字
コード
文字
コード
文字
コード
文字
コード
NULL
00
NULL
00
SP
20
SP
40
SOH
01
SOH
01
!
21
!
4F
STX
02
STX
02
“
22
“
7F
ETX
03
ETX
03
#
23
#
7B
EOT
04
EOT
37
$
24
ENQ
05
ENQ
2D
%
25
%
6C
ACK
06
ACK
2E
&
26
&
50
BEL
07
BEL
2F
‘
27
‘
7D
BS
08
BS
16
(
28
(
4D
HT
09
HT
05
)
29
)
5D
LF
0A
NL
15
*
2A
*
5C
VT
0B
VT
0B
+
2B
+
4E
FF
0C
FF
0C
,
2C
,
6B
CR
0D
CR
0D
-
2D
-
60
SO
0E
0E
.
2E
.
4B
SI
0F
0F
/
2F
/
61
DLE
10
10
0
30
0
F0
DLE
E0
DC1
11
11
1
31
1
F1
DC2
12
12
2
32
2
F2
DC3
13
13
3
33
3
F3
DC4
14
3C
4
34
4
F4
NAK
15
NAK
3D
5
35
5
F5
SYN
16
SYN
32
6
36
6
F6
ETB
17
ETB
26
7
37
7
F7
CAN
18
CAN
18
8
38
8
F8
EM
19
EM
19
9
39
9
F9
SUB
1A
SUB
3F
:
3A
:
7A
ESC
1B
ESC
27
;
3B
;
5E
FS
1C
FS
1C
<
3C
<
4C
GS
1D
GS
1D
=
3D
=
7E
RS
1E
RS
1E
>
3E
>
6E
US
1F
US
1F
?
3F
?
6F
92
JIS8
EBCDIC
JIS8
文字
コード
文字
コード
@
40
@
A
41
A
B
42
C
EBCDIC
文字
コード
文字
コード
7C
`
60
79
C1
a
61
57
B
C2
b
62
59
43
C
C3
c
63
62
D
44
D
C4
d
64
63
E
45
E
C5
e
65
64
F
46
F
C6
f
66
65
G
47
G
C7
g
67
66
H
48
H
C8
h
68
67
I
49
I
C9
i
69
68
J
4A
J
D1
j
6A
69
K
4B
K
D2
k
6B
70
L
4C
L
D3
l
6C
71
M
4D
M
D4
m
6D
72
N
4E
N
D5
n
6E
73
O
4F
O
D6
o
6F
74
P
50
P
D7
p
70
75
Q
51
Q
D8
q
71
76
R
52
R
D9
r
72
77
S
53
S
E2
s
73
78
T
54
T
E3
t
74
80
U
55
U
E4
u
75
8B
V
56
V
E5
v
76
9B
W
57
W
E6
w
77
9C
X
58
X
E7
x
78
A0
Y
59
Y
E8
y
79
AB
Z
5A
Z
E9
z
7A
B0
[
5B
[
4A
{
7B
C0
¥
5C
¥
5B
|
7C
6A
]
5D
!
5A
}
7D
D0
^
5E
¬
5F
~
7E
A1
_
5F
_
6D
DEL
7F
93
DEL
07
JIS8
文字
EBCDIC
コード
文字
JIS8
コード
文字
EBCDIC
コード
文字
80
20
81
21
。
A1
。
41
82
22
「
A2
「
42
83
23
」
A3
」
43
84
24
、
A4
、
44
25
・
A5
・
45
86
06
ヲ
A6
ヲ
46
87
17
ァ
A7
ァ
47
88
28
ィ
A8
ィ
48
89
29
ゥ
A9
ゥ
49
8A
2A
ェ
AA
ェ
51
8B
2B
ォ
AB
ォ
52
8C
2C
ャ
AC
ャ
53
8D
09
ュ
AD
ュ
54
8E
0A
ョ
AE
ョ
55
8F
1B
ッ
AF
ッ
56
85
LF
A0
コード
B1
90
30
-
B0
-
58
91
31
ア
B1
ア
81
92
1A
イ
B2
イ
82
93
33
ウ
B3
ウ
83
94
34
エ
B4
エ
84
95
35
オ
B5
オ
85
96
36
カ
B6
カ
86
97
08
キ
B7
キ
87
98
38
ク
B8
ク
88
99
39
ケ
B9
ケ
89
9A
3A
コ
BA
コ
8A
9B
3B
サ
BB
サ
8C
9C
04
シ
BC
シ
8D
9D
14
ス
BD
ス
8E
9E
3E
セ
BE
セ
8F
9F
E1
ソ
BF
ソ
90
94
JIS8
EBCDIC
JIS8
文字
EBCDIC
文字
コード
文字
コード
タ
C0
タ
91
E0
B2
チ
C1
チ
92
E1
B3
ツ
C2
ツ
93
E2
B4
テ
C3
テ
94
E3
B5
ト
C4
ト
95
E4
B6
ナ
C5
ナ
96
E5
B7
ニ
C6
ニ
97
E6
B8
ヌ
C7
ヌ
98
E7
B9
ネ
C8
ネ
99
E8
CA
ノ
C9
ノ
9A
E9
CB
ハ
CA
ハ
9D
EA
CC
ヒ
CB
ヒ
9E
EB
CD
フ
CC
フ
9F
EC
CE
ヘ
CD
ヘ
A2
ED
CF
ホ
CE
ホ
A3
EE
DA
マ
CF
マ
A4
EF
DB
ミ
D0
ミ
A5
F0
DC
ム
D1
ム
A6
F1
DD
メ
D2
メ
A7
F2
DE
モ
D3
モ
A8
F3
DF
ヤ
D4
ヤ
A9
F4
EA
ユ
D5
ユ
AA
F5
EB
ヨ
D6
ヨ
AC
F6
EC
ラ
D7
ラ
AD
F7
ED
リ
D8
リ
AE
F8
EE
ル
D9
ル
AF
F9
EF
レ
DA
レ
BA
FA
FA
ロ
DB
ロ
BB
FB
FB
ワ
DC
ワ
BC
FC
FC
ン
DD
ン
BD
FD
FD
゙
DE
゙
BE
FE
FE
゚
DF
゚
BF
FF
FF
95
コード
文字
コード
B-TALK Ver1.01 ユーザーズマニュアル
2010 年 5 月
2版
NTT データカスタマサービス株式会社
ソリューション事業部 ソリューション営業部
東京都江東区豊洲 3-3-9 豊洲センタービルアネックス
TEL (03)3534-8906
Copyright(C) NTT DATA CUSTOMER SERVICE CORPORATION 2007. All rights reserved.
96