![見出し画像](https://assets.st-note.com/production/uploads/images/133817450/rectangle_large_type_2_bd5241270ea38f2548a0ae7002873f01.jpeg?width=1200)
VB.NETでJVLinkからデータ取得 5 コーディング 3
JVLink入手
https://jra-van.jp/dlb/#tab5
DataLab.(データラボ) 会員サービス ソフト開発サポート
https://jra-van.jp/dlb/sdv/sdk.html
JRA-VAN Data Lab.開発ガイド(Ver.4.2.2)
https://jra-van.jp/dlb/sdv/sdk/DataLab422.pdf
JV-Data 仕様書PDF版(Ver.4.9.0)
https://jra-van.jp/dlb/sdv/sdk/JV-Data490.pdf
JV-Linkインターフェース仕様書(Ver.4.9.0)
https://jra-van.jp/dlb/sdv/sdk/JV-Link490.pdf
Microsoft Visual Studio Community 2019
https://visualstudio.microsoft.com/ja/vs/older-downloads/
バイナリデータの取得は成功している前提で進めていきますが、速報データを扱っている関係上、タイミングによってはJVRTOpenエラー -1が出てしまいます。
その際は、前の記事を参考にお好きな新しいレースIDを取得して再度実行してみて下さい。
この先の手順にレース設定や条件等は全く関係なく、速報人気オッズデータとしてレコード種別ID OB31に保存されていればどのレースでも取得できるという事です。
逆に言えば、どんな設定や条件でも正しく取得できるように記述しておくというのが次のステップです。
取得データの解析
ではまずレースIDの更新からです。
現在のコードは3/10の金鯱賞の人気オッズを取得するようになっていますが、金鯱賞は13頭立てで今後の説明がややこしくなるので、同じ日の中京3Rが18頭立てのレースなので、そのレースIDを使います。
※データなしのJVRTOpenエラー -1が出る場合は、上の記事を参考に18頭立ての新しいレースIDを使ってください。
3/10 中京3R 3歳未勝利 18頭
"2024031007010203"
このレースIDをセットして実行します。
![](https://assets.st-note.com/img/1710415498963-8IvcYCcwWR.png?width=1200)
このように取得できます。
取得データ: の後の値が速報系単複人気オッズ0B31から取り出したものです。
これだけでは余程勘の鋭い方以外は意味を読み取れないと思いますが、ここでJV-Data仕様書の出番です。
今回見ていくのはPDFの12ページです。
ここにオッズ1(単複枠)という表がありますが、これがレコード種別ID 0B31の中身です。
![](https://assets.st-note.com/img/1710417981954-sc1KyBxMTw.png?width=1200)
O1(オー.1)から続く数字の何番目が何を表してあるかが全部書いてあります。これをまずは邪魔なアルファベットOを削除し、更に単勝人気オッズだけ表示させるようにコードを変更します。
ElseIf retval > 0 Then ' データが正常に読み込まれた場合、解析を行う
'↓↓↓
' 必要なデータのみを抽出するためのロジックをここに実装
' 例えば、"O" 以降のデータを抽出する
'Dim datastartindex As Integer = rawRaceData.IndexOf("O"c) + 1
'If datastartindex > 0 Then
' Dim validdata As String = rawRaceData.Substring(datastartindex).Trim()
' ' 空白文字が出現する位置を見つける
' Dim endindex As Integer = validdata.IndexOf(" "c)
' If endindex > 0 Then
' validdata = validdata.Substring(0, endindex)
' End If
' TextBox1.AppendText("抽出データ: " & validdata & Environment.NewLine)
'End If
'↑↑↑
' ※※※ ↓この1行は生の取得データを確認したら削除し、上のコメントアウトを解除する
TextBox1.AppendText("取得データ: " & rawRaceData & Environment.NewLine)
End If
仕込んでおいたこの部分のコメントアウトを解除します
TextBox1.AppendText("取得データ: " & rawRaceData & Environment.NewLine)
この行は削除とありますが、コメントにしてしまうのが良いでしょう
'TextBox1.AppendText("取得データ: " & rawRaceData & Environment.NewLine)
Shift + 7でコメントアウトできます
下のようになればOKです
ElseIf retval > 0 Then ' データが正常に読み込まれた場合、解析を行う
'↓↓↓
' 必要なデータのみを抽出するためのロジックをここに実装
' 例えば、"O" 以降のデータを抽出する
Dim datastartindex As Integer = rawRaceData.IndexOf("O"c) + 1
If datastartindex > 0 Then
Dim validdata As String = rawRaceData.Substring(datastartindex).Trim()
' ' 空白文字が出現する位置を見つける
Dim endindex As Integer = validdata.IndexOf(" "c)
If endindex > 0 Then
validdata = validdata.Substring(0, endindex)
End If
TextBox1.AppendText("抽出データ: " & validdata & Environment.NewLine)
End If
'↑↑↑
' ※※※ ↓この1行は生の取得データを確認したら削除し、上のコメントアウトを解除する
'TextBox1.AppendText("取得データ: " & rawRaceData & Environment.NewLine)
End If
これで実行すると、邪魔者が消えて単勝人気オッズ絡みの部分だけが残ります。
![](https://assets.st-note.com/img/1710417659591-5MKO7uyYVx.png?width=1200)
これを一旦メモ帳に貼り付けてみます。
![](https://assets.st-note.com/img/1710417913239-Amf9rkgfFB.png?width=1200)
さて、この後がちょっとダルい作業になるので、今回はここまでにします。
次の記事