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
© Copyright 2024 Paperzz