====================================================================================================
== Release Note ====================================================================================

■ V11.083 : 2011/08/27

  ・ 新規公開



■ V11.091 : 2011/09/08

  ・ TDSMDMssgXxxxx() 関数により、SML形式、TS300形式両方のメッセージ定義ファイルの使用を同一の関数
     で可能とした。



■ V11.101 : 2011/10/05
■ V11.102 : 2011/10/11

  ・ 内部管理上の問題に関する改修。機能での変更はない。
  


■ V11.110 : 2011/11/08

  ・ メッセージ定義ファイルを使用した場合の、不定個数リストに関する改訂。
    ・ 不定個数リストの定義個数に関する制限を撤廃。複数の不定個数リストを定義可能とした。
    ・ 複数レベルで複数の不定個数リストを設定可能とした。
    ・ 不定個数リストの個数が =0 の場合に、メッセージ構築が正しく行えない問題を改訂。

  ・ メッセージ定義ファイルにおける改訂。
    ・ 複数行に渡る /* */ を可能とする。
    ・ 有効行の中で /* */ の部分のみをコメント化が可能。
    ・ テキスト項目データの " " 中では、コメント指示文字の評価を行わない。
    ・ '\' によるエスケープを行う。

  ・ 通信トレースに関する改訂。
    ・ 項目名を表示する場合、(TRCTTYPE&0x0400)!=0 の場合、先頭行にメッセージ名称を表示する。
    ・ 通信トレースのメッセージ・リストの先頭スペースの個数を (TRCTTYPE&0800) で 2 or 0 の選択を
       可能とした。
    ・ TDWTraceSetDataSize() を新設し、通信トレースの打ち切りバイト数を設定可能とした。

  ・ HSMS の場合、Separate request が出ていない状態で Shutdown を行う場合、Close() により、強制的
     に Separate request を送出するように改訂。



■ V11.111 : 2011/11/15

  ・ TDSMssgNextL() における F4、F8、S8、U8 の表現が間違っていた（正常に表現できていなかった）問題
     を改訂。



■ V11.120 : 2011/12/06

  ・ HSMS 通信に関する改訂。
    ・ Passive 側において、一旦 Accept し、切断した後、再度 Accept した場合に、トレース出力に
       ACCEPT が表示されない問題を改訂。
    ・ Diselect 要求に対する T6 タイムアウトが発生するケースを想定していない問題を改訂。
    ・ Select、Deselect、LinkTest Request 時の W-bit の扱いを変更。デフォルトでは W-bit=0 とし、
       .ini の (DEVMODE&0x08)!=0 の場合に =1 とする。

  ・ トランザクションＩＤの付与において、制御用、データ用のソースＩＤを同一のものを指定するする事
     を可能とした。ただし、この場合 CommSend() において、送信時に実際に付与する TXID と戻り値に戻る
     TXID が異なる場合があるので、説明書に注記した。



■ V12.010 : 2012/01/12

  ・ SECS-1 通信における Single Block 時のブロック番号を (DEVMODE&0x04) で指定可能とした。

  ・ データ送信時 (特に SECS-1 で) 大きなメッセージ送信する場合に、送信に時間がかかって T3TO になる
     場合があること抑止するため、データ送信後にタイマーの再設定を行い、送信前の TXID の登録時は長い
     値を設定することにすることを可能とした。

  ・ SML 形式メッセージ定義において、項目名定義部分 "XX[99.99]XXXXX" に ' '、'\t' の挿入を可能にし
     た。即ち "B [ 10.. 20] BINITEM" といった定義書式が可能となり、書式整形しやすくした。



■ V12.030 : 2012/03/06

  ・ パラメータ TORECV を追加し、指定時間メッセージ受信が無い場合に接続断する事を可能にした。

  ・ (SECSMODE&0x0100) を追加し、==0 の場合は、既接続中に新規接続があった場合は、その接続を即切断。
     !=0 の場合は、既接続を切断し、新規接続を有効とする。
     これにより、接続したまま、未動作のクライアントの接続を無効とすることを可能とした。

  ・ HSMS 時の Connect 要求が失敗した場合のエラー・コードを E_CONN_ERR と明確化した。

  ・ _TDSCommStatus() を追加し、現在の接続状態を取得することを可能とした。

  ・ _TDSMDMssgInitialize() の mode に 0x4000 を追加し、指定があった場合 ((mode&0x4000)!=0 の場合)
     は、スレッドのロックを行う。これにより、ユーザＡＰでロックを行う必要がなくなる。

  ・ 簡易 API (_TDSUDrvXxxxx() 系関数) を追加し、HSMS Active 側も Connect、Select 要求を AP 側で
     コード化することなく、接続し通信することを可能とした。



■ V12.031 : 2012/03/28

  ・ サンプル・ソースコードを改訂
    ・ メッセージ定義ファイル使用処理のロック制御
    ・ Sample1、Sample2 で、送受信 SECS メッセージ構造表示を送受信が混在しないように制御する処理
       を追加



■ V12.071 : 2012/07/08

  ・ プログラマーズ・マニュアルの _TDSMDMssgInitialize()、_TDSMDMssgTerminate() の mode に 関する
     記述に誤りがあり改訂。

  ・ .ini の XMSGSIZE に大きな値を設定した場合に、CPU負荷が増加する現象を回避。



■ V12.121 : 2012/12/12

  ・ _TDSMDMssgInitialize() にて、ロック制御を行う指定をしている場合で、_TDSMDMssgFinc() にて、
     指定 SF-Code に合致するメッセージが存在せず、エラーで戻る場合にも _TDSMDMssgExit() を実行し
     ないとロックが解除されない問題を解決。

  ・ NSG/TS300 形式のメッセージ定義ファイルを使用した場合の、デフォルト・パラメータ、チェック・
     パラメータの指定で、"" を指定すると、'"' が設定されてしまう問題を解決。

  ・ 通信トレース出力におけるリスト形式表示で、データ項目値を複数行に渡り表示することで、全データ
     値を表示することを可能とした。(TRCTTYPE&0x04) にて指定する。

  ・ 通信トレース出力における１６進数形式表示で、１行に表示するデータ個数を、16バイト、20バイトの
     選択を可能とした。(TRCTTYPE&0x08) にて指定する。

  ・ _TDSMssgBuild()、_TDSMssgNext() の mode&0x4000 を有効とし、２バイト文字列の自動変換をサポート
     した。

  ・ 通信トレースに任意のコメントを出力する際、_TDSCommSendComment() で指定した文字列の後ろに、
     ゴミが付いてしまう場合がある問題を解決。
     また、長いメッセージを指定した場合に発生する問題を解決。

  ・ 通信トレース出力時、SECS データを構成する項目のデータ個数が多く、トレースの１行に収まらずに
     最後が、"..." 表記となる場合に、通信トレースに正しく表示されない問題を解決。

  ・ Windows での使用時に、DEVMODE の設定が S9Fx でトランザクションの解放を行う設定の場合に、トラ
     ンザクションの解放がされない問題を解決。

  ・ Ｔ３タイムアウト発生後に対応する２次メッセージを受信する等により、予期せぬメッセージを受信し
     た場合の報告がされない問題を解決。_TDSCommRecv() から -EFAULT で戻るように改訂。

  ・ SECS-1 接続の場合、_TDSCommOpen() 直後に、_TDSCommStatus() の値が =3 となり、接続状態を示す
     ように改訂。

  ・ _TDSSMMssgXxxxx()、_TDSTSMssgXxxxx() 系関数を廃し、_TDSMDMssgXxxxx() に一本化した。
     _TDSSMMssgXxxxx()、_TDSTSMssgXxxxx() 系関数は、互換性を保持するため、TDS.h 内でマクロ定義。
 
  ・ TDSSample1Proc.cpp、TDSSample2Proc.cpp での _TDSMDMssgInitialize() の mode の値が、仕様書での
     定義と異なった設定（0x8000 及び 0x00）にしてしまっていたものを、正しい値（0x4000）に訂正。

  ・ 付属の Sample.sml の S6F11 の構成を変更しました。ご注意下さい。



■ V12.122 : 2013/11/10

  ・ 内部管理上の問題に関する改修。機能での変更はない。



■ V14.040 : 2014/04/25

  ・ C#、VB 対応 DLL である TDCSS.dll、TDVBS.dll が Win32 プラットホーム用であることを明記し、
     サンプルの Makefile 及び Readme.txt に、Win64 プラットホームでの Build 方法を記述。

  ・ 有効でないメッセージ定義ファイルを指定しているにも関わらず、誤って通信トレースにメッセージ名
     称、メッセージ項目名称を表示する旨の指示を行っている場合の問題を回避。

  ・ 処理中にシステム時刻が大きく変化した場合のタイムアウト処理に対応。

  ・ Sample1、Sample2 において終了時に異常終了する現象に簡易的に対応。詳細は、Sample1Dlg.cpp、
     Sample2Dlg.cpp 内のコメント参照。



■ V14.060 : 2014/06/27

  ・ Java API を整備 (JNA を使用した実装)

  ・ MacOS X (10.6.3 以降) に対応



■ V15.050 : 2015/05/08

  ・ T7 タイムアウト 及び 無受信タイムアウト発生時の、エラー情報を、ユーザＡＰにまで返す様に改訂。

  ・ １次メッセージと２次メッセージのトレース出力の順番が入れ違いになる現象を回避

  ・ .ini ファイルの DEVID 行に、複数の DeviceID を指定可能とした。

  ・ FreeBSD (10.1 以降) に対応



■ V15.080 : 2015/08/01

  ・ 64bit アプリケーション対応の .lib、.dll 等 (UNIX 系ＯＳも含む) を整備。

  ・ TDS.doc の _TDSMssgNext() の戻り値で、解析終了を意味する値を -ENODATA と誤記していたが、正し
     い値 -E_NODATA に訂正。

  ・ TDS.h に _TDSUDrvUserComment() マクロを定義

  ・ HSMS 接続の場合、_TDSCommRecv() を実行しないと、HSMS Selected になる過程での状態を
     _TDSCommStatus() が正しい値を返さない現象を、HSMS Selected 以前の状態の場合 _TDSCommStatus()
     内で _TDSCommRecv() を実行する事により回避するよ改訂。

  ・ SECS-2 メッセージ編集における項目形式コード =022 (ローカル・キャラクタ文字列項目) の扱いに誤
     りがあり、2Bytes で１項目とカウントしていたのを、正しく 1Byte で１項目とするよう修正。
     同時に、UTF-8 と SJIS、EUC-J 間での変換時に、使用 Byte数が異なる事による相違を（できるだけ）
     吸収するように改訂。

  ・ 上記に関連して、通信トレース出力において、マルチバイト文字列（"K" 指定）が正しく表現されない
     問題を改訂。また、同項目を含むメッセージを正しく認識できず、トレース出力において項目名が表示
     されない問題、_TDSMDMssgAutoRes() で対応メッセージを選択しない問題を修正。

  ・ メッセージ定義を使用した２次メッセージの自動選択機能（_TDSMDMssgAutoRes()）において、メッセー
     ジ方向を両方向とした１次メッセージ定義の下方に定義した２次メッセージの選択をしない現象を修正。

  ・ SECS メッセージの構築、解析が SECS 通信制御識別子を指定しなくても可能とした。
     _TDSMssgInit()、_TDSMssgFind() の mode に bit#11 を新設し、パラメータ fdc の扱いを変更。
     これにより、TDS 設定ファイル (.ini ファイル) を用意しなくても、SECS メッセージの構築、解析を
     可能とした。

  ・ PeerGroup 社 SDR の API と互換性のある C、C++ における SdrXxxxx() 関数 I/F 互換ライブラリ
     及び Yokogawa 社 YSD の API と互換性のある C、C++ における YSD_Xxxxxx() 関数 I/F 互換ライブラ
     リを、おまけとして整備した。
     SDR 互換 API、YSD 互換 API に関しては、弊社（info@trust-design.co.jp）までお問い合わせ下さい。


