JRA公式競馬データ配信サービス JRA-VAN Data Lab.

JRA-VAN DataLab.

競馬ソフト開発コーナー

JV-Link 質問箱

一括表示 リストに戻る
タイトルタイムスタンプにつきまして
記事No8617
投稿日: 2016/03/08(Tue) 18:04
投稿者白老
2点質問させてください。

JV-Link441.pdf 中の JVOpen のパラメータ lastfiletimestamp に関する説明
の中で、「lastfiletimestamp の設定で JVRead/JVGets の中断・再開が可能で
す」という一行があります。

しかし、これに続く「通常データの中断・再開」「セットアップデータの中断
・再開」では、その lastfiletimestamp は参照しておりませんし、実際、lastf
iletimestamp が保持する「最も新しいファイルのタイムスタンプ」では、中断
および再開はできないように思われます。この一行はどう解釈したら良いのでし
ょうか。

また、同じ個所の「通常データの中断・再開」に関して、「最後に読込んだフ
ァイルの m_CurrentFileTimestamp を 保持し、再開時の JVOpen の fromtime
に、保持している m_CurrentFileTimestamp を設定することで JVRead/JVGets
を再開することができます」とあります。

その m_CurrentFileTimestamp ですが、ファイル毎に一意でなく重複している
事があります。よって、重複しているファイル群の途中で中断し、記載されてい
るとおりの手順で再開した場合、同じタイムスタンプを持つ後続のファイルを飛
ばしてしまう事が考えられます。

これを回避するには「セットアップデータの中断・再開」と同様にファイル名
を参照して JVSkip を行なうか、最後に読み込んだファイルのタイムスタンプの
前のタイムスタンプを用いて再開するしかないように思われますが、このような
理解で宜しいでしょうか。

タイトルRe: タイムスタンプにつきまして
記事No8618
投稿日: 2016/03/09(Wed) 20:22
投稿者白老
前回の投稿に関連しまして、もう一点疑問が生じました。セットアップデータの中断・再開に関してですが、仕様書に記載されている方法では、次のような場合に問題が生じるのではないでしょうか。

(1) 現在日時を 2016 年 3 月 27 日(日)とする。
(2) 1991 年など任意の時点からセットアップを開始する。
(3) 2016 年 3 月のある時点で中断する。
(4) 一週間後の 4 月 3 日(日)に再開する。

この場合、(3) で中断した時点での「最後に読み込んだファイル名」は、3 月分の通常データのファイル名になります。しかし (4) で再開しますと、3 月分はセットアップ用データが取得されることになり、(3) で保持しているファイル名を持つ通常データのファイルは取得できなくなるのでないかと思います。

このような現象が起こり得るであれば、どのようにセットアップを中断・再開するべきでしょうか。

追記:以下の方法を思いつきました。
(1) 3 月 1 日以降の通常データに含まれるファイルのリストを作成。
(2) そのリストに中断時点のファイルが含まれるか調べる。
(3a) 含まれるなら 3 月の通常データであるから、通常データを用いて更新する。
(3b) 含まれないなら 2 月以前のセットアップ用データであるから、仕様書の手順どおりに再開。

タイトルRe: タイムスタンプにつきまして
記事No8621
投稿日: 2016/03/18(Fri) 14:01
投稿者JRA-VANソフトサポート
JRA-VANソフトサポートの竹下です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。
回答が遅くなり大変申し訳ございませんでした。

> しかし、これに続く「通常データの中断・再開」「セットアップ
> データの中断・再開」では、その lastfiletimestamp は参照して
> おりませんし、実際、lastfiletimestamp が保持する「最も新しい
> ファイルのタイムスタンプ」では、中断および再開はできないよう
> に思われます。この一行はどう解釈したら良いのでし
> ょうか。

誤解を与えるような記述となってしまい申し訳ございません。
この手順につきましては、本文中にございます、
プロパティ値"m_CurrentFileTimestamp"を参照して
いただければと思います。

> これを回避するには「セットアップデータの中断・再開」と同様に
> ファイル名を参照して JVSkip を行なうか、最後に読み込んだ
> ファイルのタイムスタンプの前のタイムスタンプを用いて再開する
> しかないように思われますが、このような理解で宜しいでしょうか。

はい、ご認識の通りで問題ございません。

また、2件目のご質問につきましても回答させていただきます。

> この場合、(3) で中断した時点での「最後に読み込んだファイル
> 名」は、3 月分の通常データのファイル名になります。しかし
> (4) で再開しますと、3 月分はセットアップ用データが
> 取得されることになり、(3) で保持しているファイル名を
> 持つ通常データのファイルは取得できなくなるのでないかと思います。

ご記載いただいたケースだと、懸念されている事象が発生する
可能性はあるとこちらでも認識しております。
ご記載いただいている対応案で問題ないかと思われます。
またはファイル名で判断せずに、現在読み込んでいるレコードが
既にデータベース等に登録されているのであればスキップする 
などの方法も挙げられます。
競馬ソフトのつくりによって柔軟に対応いただければと思います。


お手数をお掛けしますが、よろしくお願い致します。

タイトルRe^2: タイムスタンプにつきまして
記事No8623
投稿日: 2016/03/18(Fri) 19:50
投稿者白老
ご回答ありがとうございます。
本件につきましては了解致しました。
問題なく処理できるようプログラムしたいと思います。

ウィンドウを閉じる