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

JRA-VAN DataLab.

競馬ソフト開発コーナー

JV-Link 質問箱

一括表示 リストに戻る
タイトルJVReadで、ファイルが切り替わるときの戻り値
記事No7507
投稿日: 2025/01/16(Thu) 11:42
投稿者たかし
お世話になります。
JVReadのfilenameが、切り替わる最後のタイミングについて教えてください。

例えば仮に、JVOpenをdataspec="RACE"で呼び出し、JVReadを繰り返
し呼ぶと、"JG〜"の次に"H1〜"が出力引数で得られるとし
ます。その2種のそれぞれは1ファイルずつだけを得て、"JG〜"は3
レコード、"H1〜"は2レコードとします。

その場合、JVReadの戻り値は、下記のようになりますか?
呼び出し1回目: 80(JG,フォーマット番号31のレコード長=80バイト)
呼び出し2回目: 80
呼び出し3回目: 80(JGの3レコード目を取得)
呼び出し4回目: -1
呼び出し5回目: 28955(H1,フォーマット番号5のレコード長=28955バイト)
呼び出し6回目: 28955(H1の2レコード目を取得)
呼び出し7回目: -1
呼び出し8回目: 0

それとも、下記でしょうか?
呼び出し1回目: 80(JG,フォーマット番号31のレコード長=80バイト)
呼び出し2回目: 80
呼び出し3回目: -1(3レコード目を取得しつつ、切り替わりなので-1)
呼び出し4回目: 28955(H1,フォーマット番号5のレコード長=28955バイト)
呼び出し5回目: -1(2レコード目を取得しつつ、切り替わりなので-1)
呼び出し6回目: 0

ドキュメントの「−1の戻り値は実際には物理ファイルの終わりに返される」
という記述は後者かなと思いつつ、不明瞭なのでご質問します。
実際には固定長だから2レコード目以降は全部同じでしょうが、後者だと、も
し1レコードだけのデータがある場合は、出力バイト数を戻り値からは得られな
いです。

よろしくお願いいたします。

タイトルRe: JVReadで、ファイルが切り替わるときの戻り値
記事No7508
投稿日: 2025/01/16(Thu) 22:03
投稿者サメの餌
たかしさん、こんばんは。

公式から回答があるとは思いますが、これ、前者の筈ですね。3レコード目を
取得しつつ切り替わりって事ではなく3レコード目を取得後に次が切り替わりに
なる。じゃないと自分のコードもそうなってまして、データが正確に取り込めて
ない事になります。しかし、自分のは問題なく取り込めてますので前者の認識で
行ける筈です。

納得のいく説明にはなってないかもですが、公式の回答まで若干ラグあるかと
思い書かせて頂きました。公式以外は興味なければスルーしてください。

タイトルRe^2: JVReadで、ファイルが切り替わるときの戻り値
記事No7509
投稿日: 2025/01/17(Fri) 12:24
投稿者たかし
サメの餌さん、ありがとうございます!

前者とのこと、承知しました!
(後者だとすると、-1→0の流れと合わず、気持ち悪いなぁと思っていました)

でも確かに、行数が(外部の情報を見れば)わかるものがあるから、
最後まで取得できていることは試行錯誤すればわかりますね!

いちおう、公式の回答をいただいて、ここの掲示板の知見として残ればいいな
と思います。
そしていつかのドキュメント更新時にでも、明確に書いていただければ。

タイトルRe^3: JVReadで、ファイルが切り替わるときの戻り値
記事No7512
投稿日: 2025/01/21(Tue) 18:33
投稿者JRA-VANソフトサポート
JRA-VANソフトサポート 鷹森です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

> 例えば仮に、JVOpenをdataspec="RACE"で呼び出し、JVReadを繰り返
> し呼ぶと、"JG〜"の次に"H1〜"が出力引数で得られるとし
> ます。その2種のそれぞれは1ファイルずつだけを得て、"JG〜"は3
> レコード、"H1〜"は2レコードとします。

> その場合、JVReadの戻り値は、下記のようになりますか?
> 呼び出し1回目: 80(JG,フォーマット番号31のレコード長=80バイト)
> 呼び出し2回目: 80
> 呼び出し3回目: 80(JGの3レコード目を取得)
> 呼び出し4回目: -1
> 呼び出し5回目: 28955(H1,フォーマット番号5のレコード長=28955バイト)
> 呼び出し6回目: 28955(H1の2レコード目を取得)
> 呼び出し7回目: -1
> 呼び出し8回目: 0

> それとも、下記でしょうか?
> 呼び出し1回目: 80(JG,フォーマット番号31のレコード長=80バイト)
> 呼び出し2回目: 80
> 呼び出し3回目: -1(3レコード目を取得しつつ、切り替わりなので-1)
> 呼び出し4回目: 28955(H1,フォーマット番号5のレコード長=28955バイト)
> 呼び出し5回目: -1(2レコード目を取得しつつ、切り替わりなので-1)
> 呼び出し6回目: 0

前者の認識で問題ございません。
また下記JV-Linkインターフェース仕様書に解説を記載しておりますので、ご参照ください。

■ソフトウェア開発キット(SDK)提供コーナー
https://jra-van.jp/dlb/sdv/sdk.html
・JV-Linkインターフェース仕様書(Ver.4.9.0.1)
 25ページ JVRead【解説】

以上、よろしくお願いいたします。

ウィンドウを閉じる