JVReadで、ファイルが切り替わるときの戻り値

タイトル JVReadで、ファイルが切り替わるときの戻り値
記事No 7507
投稿日 : 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で、ファイルが切り替わるときの戻り値
記事No 7508
投稿日 : 2025/01/16(Thu) 22:03
投稿者 サメの餌

たかしさん、こんばんは。

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

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

タイトル Re^2: JVReadで、ファイルが切り替わるときの戻り値
記事No 7509
投稿日 : 2025/01/17(Fri) 12:24
投稿者 たかし

サメの餌さん、ありがとうございます!

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

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

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

タイトル Re^3: JVReadで、ファイルが切り替わるときの戻り値
記事No 7512
投稿日 : 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【解説】

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