ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ
開発ガイド

２０２２年２月２２日
第４．２．２版

修正履歴
日付2022/2/22

版
4.2.2

1.1.4

項番
－
3.4.2
－
2.1
3.3.2
3.3.4
2.1
－
－
1
2.1
3.3.4
3.4.6
3.4.5

種類
修正
修正
修正
修正
追記
追記
修正
修正
修正
修正
修正
追記
修正
修正

内容
スタートキット(CD-ROM)の提供終了に伴い、関連する記述を修正「プロジェクトの作成」手順の誤りを修正
VisualStudio2019 へのバージョン更新
ＪＶ－Ｌｉｎｋ動作環境を更新（OS・ブラウザ）
セットアップデータ取得についての説明を追記
FROM タイム指定についての説明を追記
ＪＶ－Ｌｉｎｋ動作環境を更新
VisualStudio2015 へのバージョン更新
Windows Vista 対応によりバージョン更新
現在のサービス内容に合わせ説明を修正
ＪＶ－Ｌｉｎｋ動作環境を修正
セットアップ時のＦＲＯＭタイムについての説明を追記
JV-Data 構造体について説明を追加
・サンプルソース 1 の JVSetUIProperties 判定処理のコメントを修正
誤：「-1」→「-100」
サンプルソース 1 の解説の誤りを修正
誤：「-1」→「-100」

2021/5/26
2021/5/13

4.2.1
4.2.0

2018/9/4
2017/6/6
2008/6/17
2008/2/26
2008/2/26
2006/6/6

4.1.0
4.0.0
3.0.0
2.4.0
2.4.0
2.1.4.1

2004/3/2

2003/7/11

1.0.7β

3.4.5

修正

3.4.6

修正

・JVSetUIProperties のエラー判定条件を修正
誤：「-1」→「-100」
VB.net 版 JV-Data 構造体の修正に伴い、レコードヘッダ構造体へのデータ展開メソッドが変更になったため、サンプルソースのレコード種別ＩＤの判定方法を変更。
サンプルソース２の解説の誤りを修正
・誤：「オプションに 1 をセットします」→正：「オプションに 2 をセットします」「１．３ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫとは」→「１．４ ＪＲＡ－ＶＡＮ Ｄ
ａｔａ Ｌａｂ．ＳＤＫとは」「５ ＪＶ-Ｄａｔａ（JRA-VAN 提供データ）仕様」→「JV-Data 仕様書」
・開発環境に Delphi 6.0 を追加
・「ＶＣ＋＋、ＶＢ、Ｄｅｌｐｈｉ用」→「主な開発環境用」
・開発環境製品名にメーカー名を追加
・推奨開発環境について説明を追加
ＪＶ－Ｌｉｎｋのインストール手順を追加
サンプルソース３の不具合を修正
・Delphi 6.0 の製品名の誤りを修正
・C++ Builder サンプルプログラム追加
・説明文の修正
コントロールの構成を修正
注意事項を修正
サンプルプログラム修正
初版作成

2003/5/2

1.0.3β3.4.6

修正2003/4/22

1.0.1β

1.2.1

修正

1.2.3
3.1.1
3.1.2

修正
追加
修正
追加

3.2
3.4.7
A.1

追加
修正
修正

A.2.4
A.2.5
A.3
－

修正
修正
修正
新規

2003/4/1

1.0β

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

目次
はじめに

１ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．概要
１．１ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．とは１．２ ＪＶ－Ｌｉｎｋとは１．３ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫとは

２ システム要件
２．１ ＪＶ－Ｌｉｎｋ動作環境

３ 開発ガイド
３．１ 開発環境
３．１．１ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ． ＳＤＫが利用可能な開発環境
３．２ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫのインストール
３．３ ＪＶ－Ｄａｔａの取得方法の概念
３．３．１ 競馬ソフトが必要とするデータの２つのパターン
３．３．２ 蓄積系ソフトのデータ取得の方法
３．３．３ 非蓄積系ソフトのデータ取得の方法
３．３．４ 競馬ソフトによるＦＲＯＭタイムの管理
３．３．５ データベースへの取り込み
３．４ ＪＶ－Ｌｉｎｋを使ったプログラミング１（通常データ）
３．４．１ プログラミングのゴール
３．４．２ プロジェクトの作成
３．４．３ ＪＶ－Ｌｉｎｋコントロールの追加
３．４．４ フォームの作成
３．４．５ 設定ボタンのコーディング（JVSetUIProperties）
３．４．６ 今週開催レースボタンのコーディング
３．４．７ ダウンロード中プログレスバー表示ダイアログのコーディング
３．４．８ ビルド＆実行

3

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

ＡＰＰＥＮＤＩＸ

Ａ．サンプルプログラム１
Ａ．１ サンプルプログラム１の構成
Ａ．２ サンプルプログラム１の解説
Ａ．３ サンプルソース『MicrosoftVisualBasic.2019 版』

4

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

はじめに
平素よりＪＲＡ－ＶＡＮをご利用いただき誠にありがとうございます。
弊社では JRA 公式データをより一層活用できる仕組みとして、「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．」サービスを提供しております。本サービスは、データリンクモジュールのＪＶ－Ｌｉｎｋ（※）を通じて、様々な競馬データの利用が可能になるサービスです。
エンドユーザー様、およびソフトウェア作者の皆様には、この「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．」サービスの仕組みをご理解いただき、ＪＲＡ－ＶＡＮのデータ提供サービスを活用していただきたいと願っております。
※ＪＶ－Ｌｉｎｋについては「１．２ ＪＶ－Ｌｉｎｋとは」を参照して下さい。

5ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

１ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．概要
１．１ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．とは
ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．は、JRA 公式データの配信サービスです。Ｄａｔａ Ｌａｂ．は次に挙げる
項目を実現することにより、エンドユーザー様、ソフトウェア作者様、JRA-VAN それぞれがメリットを受けられることを目標にしたサービスです。
・必要なデータのダウンロードを競馬ソフトが自動的に行うことでエンドユーザー様の利便性を向上
・競馬ソフトの目的により様々なデータ取得単位を提供
・競馬ソフト開発情報やサンプルプログラムの提供による競馬ソフトの開発生産性の向上
・データ不正利用の防止

上記からも分かる通り、ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．はエンドユーザー様が競馬データを直接取得、閲覧するサービスではなく、競馬ソフトを通じて競馬データを閲覧するサービスです。
エンドユーザー様は、それぞれの目的や好みで競馬ソフトを選び、利用することができます。
ソフトウェア作者様は、ＪＶ－Ｌｉｎｋを利用して、競馬データを直接、また簡単にソフトに取り込むことが可能です。また、当ドキュメントでは説明を割愛しますが、報奨制度にエントリーすることで報奨金を受け取ることも可能です。
※報奨制度は報奨金規約に定める手続きを経てエントリーを行う必要があります。
詳細は JRA-VAN サイトの各種手続き・確認（作者サポート） ページ https://jra-van.jp/dlb/sdv/support.html
をご参照ください。

１．２ ＪＶ－Ｌｉｎｋとは先ほど、「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．は、エンドユーザー様が競馬データを直接取得、閲覧するサービスではなく、競馬ソフトを通じて競馬データを閲覧するサービス」であると書きましたが、この仕組みを競馬ソフトに提供するのがＪＶ－Ｌｉｎｋです。
ＪＶ－Ｌｉｎｋは競馬ソフトがＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．サーバーへアクセスする際のインターフェー
スモジュールになります。ＡＴＬで作成されたＡｃｔｉｖｅＸ ＣＯＭサービスとして提供され、ＪＲＡ－ＶＡＮ
Ｄａｔａ Ｌａｂ．対応の競馬ソフトを利用するには、競馬ソフトのインストールとともにこのＪＶ－Ｌｉｎｋをインストールする必要があります。
また競馬ソフトを開発する場合はＪＶ－Ｌｉｎｋが提供する各インターフェースを利用することでＪＲＡ－
ＶＡＮのサーバーへのアクセスを意識することなく、データを読み込むことが出来ます。（※）※ＪＶ－Ｌｉｎｋの詳しい使用方法については「３ 開発ガイド」を参照してください。

6ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

ＪＶ－Ｌｉｎｋは以下の機能を競馬ソフトに提供します。
・通常データの自動ダウンロード機能と読み出し機能
・今週分データの自動ダウンロード機能と読み出し機能
・セットアップデータの自動ダウンロード機能と読み出し機能
・データのキャッシュ機能

１．２．１ ＪＶ－Ｌｉｎｋによるデータ取得方法
ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ユーザーの具体的なデータ取得方法は以下のようなイメージとなります。
・競馬ソフトのユーザーインターフェースからデータ取り込み機能を呼び出す事によってデータを取得（取得元はＪＲＡ－ＶＡＮサイト）

エンドユーザー様はどんな競馬データを取得する必要があるのかなどを意識せず、競馬ソフトを立ち上げて取り込み機能を呼び出すだけで、データが利用可能になります。
ＪＲＡ－ＶＡＮでは、このようなユーザー環境をより簡単に各ソフトに実装していただけるよう、競馬ソフトの開発ツールとして「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ」（※）をソフトウェア作者様にご提供します。
※「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ」については「１．３ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫとは」を参照して下さい。

「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ」にはＪＲＡ－ＶＡＮサーバーのインターフェースモジュールである「ＪＶ－Ｌｉｎｋ」が含まれており、競馬ソフトはこの「ＪＶ－Ｌｉｎｋ」の機能を呼び出してデータを取得することになります。基本的に競馬ソフトは必要とするデータの種類と期間を指定すればよく、そのデータを取得するために必要な手続きは全て「ＪＶ－Ｌｉｎｋ」が行います。
ただし「ＪＶ－Ｌｉｎｋ」はオンラインデータ照会のための機能ではなく、あくまでも競馬ソフトが持つデータベースへ最新データを取り込むための機能となっています。したがって競馬データの画面表示やレースの予想計算は競馬ソフトが持つデータベースを利用してください。

7ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

データ取得概念図

必要なデータを問合わせデータを要求競馬ソフト
データを応答ＪＶ－Ｌｉｎｋ

Data Lab.サーバー

必要なデータをダウンロードデータベースコンテンツサーバー

１．２．２ データの暗号化・復号化
ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．では提供するデータを圧縮するとともに暗号化を施して送信しま
す。ただし、競馬ソフトはＪＶ－Ｌｉｎｋから復号化済のデータを受け取るため、復号化処理を意識する必要がありません。
１．２．３ データ仕様について
ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．では、ＪＲＡ－ＶＡＮ競馬データを総称して「ＪＶ－Ｄａｔａ」と標記します。
提供されているデータの種類、データフォーマット、提供タイミングなどについては、「ＪＶ－Ｄａｔａ仕様書」を参照してください。

8ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

１．３ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫとは「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ（Software Development Kit）」はＤａｔａ Ｌａｂ．対応競馬ソフトを作成するための開発キットとなります。「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ」は JRA-VAN サイトのソフト
ウェア開発キット(ＳＤＫ)提供コーナー(https://jra-van.jp/dlb/sdv/sdk.html）で配布しております。
ＳＤＫには以下のものが含まれます。
・「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ開発ガイド」（当ドキュメント）・「ＪＶ－Ｄａｔａ仕様書」
・「ＪＶ－Ｌｉｎｋインターフェース仕様書」
・最新版ＪＶ－Ｌｉｎｋモジュール
・サンプルプログラム
・ＪＶ－Ｄａｔａ構造体ソース
・Ｄａｔａ Ｌａｂ．検証ツール

9ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

２ システム要件
２．１ ＪＶ－Ｌｉｎｋ動作環境
オペレーティングシステム
Windows 8.1、 10※Windows 8.1、 10 では 32bit・64bit 版ともにご利用いただけます。
※Windows 10 Mobile、Windows RT については、非対応となります。
※いずれの OS も日本語版のみの対応となります。
ブラウザ
Microsoft Edge
Google Chrome
Internet Explorer ※非推奨
CPU
1GHz 以上の 32 ビットまたは 64 ビットの CPU
メモリ

1GB 以上、 推奨：2GB 以上
その他
インターネット接続環境が必要です。（ブロードバンド接続を推奨）

10

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３ 開発ガイド
３．１ 開発環境「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ」を使って競馬ソフトを開発するにはＶｉｓｕａｌＳｔｕｄｉｏなどのプログラム開発環境が必要です。開発環境には様々なものが存在しますが、ここでは「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ」を使って開発するのに必要な開発環境について記述します。
３．１．１ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫが利用可能な開発環境「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ」にはプログラム開発に必要なＪＶ－Ｌｉｎｋというモジュールが含まれています。ＪＶ－Ｌｉｎｋは多くの開発環境で効率的な開発が可能となるようＡｃｔｉｖｅＸ Ｃ
ＯＭサービスとして作成されており、また、よりコンパクトで高速な動作をさせるためＡＴＬ（Ａｃｔｉｖｅ Ｔｅｍｐｌａｔｅ Ｌｉｂｒａｒｙ）を利用して作成されています。そのため、ＪＶ－Ｌｉｎｋは ActiveX COM
サービスが利用可能な（あるいは Windows の DLL が呼び出せる）開発環境であれば利用可能です。

11

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

ＡｃｔｉｖｅＸ ＣＯＭサービスについて

ＡｃｔｉｖｅＸ ＣＯＭサービスが何であるか分からない方のために簡単な説明をします。
ＶＣ＋＋やＶＢ、Ｄｅｌｐｈｉでプログラム開発を行なったことのある方は、ＡｃｔｉｖｅＸコントロールについての知識はお持ちだと思います。これらの開発環境でダイアログなどを作成する場合にはボタ
ンコントロールやリストボックスコントロールなどを直接ダイアログボックス(フォーム)にドラッグ＆ドロップで貼り付けて作成することが可能です。これはプログラムのＧＵＩの要素であるボタンやリスト
ボックスの描画や振る舞いを自分でプログラミングするよりもはるかに開発効率がよく、開発されたプログラムを使う側のユーザーにとっても見た目や振る舞いが統一され使い易いプログラムの開発が可能になります。ＪＶ－Ｌｉｎｋもこれらのコントロールの一種になります。したがってフォームにドラッグ＆ドロップで貼り付けて機能を呼び出すことが可能です。しかしながらこれらコントロー
ルには様々な種類があり、その呼ばれ方もＯＬＥコントロールやＯＣＸなどと様々であるためその分類はまぎらわしいものとなっています。ただ、通常プログラム開発をするにあたってそれぞれの分類までを意識する必要はあまり無いので開発者は便利なプログラミングパーツとしてひとくくりに考えている場合がほとんどだと思います。
ＪＶＬｉｎｋはＡｃｔｉｖｅＸ ＣＯＭサービスとして提供されており、リストボックスコントロールなどと同様の使い方をしますが、「コントロール」と言わず「サービス」と言っているのはボタンやリストボックスのように目に見えるＧＵＩを持たない場合に「サービス」という分類に入るからです。また、「ＣＯＭ」と付くのは Microsoft の Component Object Model：ＣＯＭの仕様に基づいて作成されているからです。ＣＯＭ仕様について記述しようとすれば一冊の本になってしまいますので、ここではＣＯＭ仕様で作成することによってＪＶ－Ｌｉｎｋの汎用性が劇的に高まるという利点があるということにとどめて
おきます。

12

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．２ ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫのインストール「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ」を使って競馬ソフトを開発するには開発環境を用意した後に「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ」を開発用のマシンにインストールする必要があります。
３．２．１ インストーラーの起動
ＪＶ－Ｌｉｎｋ.exe をダブルクリックしインストーラーを起動し、「次へ」ボタンをクリックします。

13

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．２．２ 使用許諾契約
使用許諾契約書を読んで「同意します」にチェックを入れ、「次へ」ボタンをクリックします。

３．２．３ インストール先の指定
ＪＶ－Ｌｉｎｋのインストール先を指定して「次へ」ボタンをクリックします。

14

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．２．４ インストールの開始「インストール」ボタンをクリックしてインストールを開始します。

３．２．５ ファイルコピーの実行

15

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．２．６ インストールの完了「完了」ボタンをクリックすると、インストールが完了します。

16

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
３．３ ＪＶ－Ｄａｔａ取得方法の概念
３．３．１ 競馬ソフトが必要とするデータの２つのパターン
ＪＲＡ－ＶＡＮのデータを利用する競馬ソフトが必要とするデータの保持方法は大きく２つのパターンに分けることができます。またこの２つのパターンに相対して競馬ソフトを２つの性格に分類することができます。ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ではこの分類を明確に意識したデータ種別、
データ取得の仕組みを用意しています。
一つは過去のある時点から現在までの完全なデータを保持するパターンで、このパターンを必要とするソフトはＪＲＡ－ＶＡＮのデータをデータベースとして利用し様々な角度からの分析や検索を主機能とするソフトになります。ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ではこのような性格を持つソ
フトを「蓄積系ソフト」と呼びます。もちろん従来のサービスではエンドユーザーがデータを選択
してソフトに組み込んでいましたので、そこにはデータの抜けが発生する可能性もあるので従来の競馬ソフトはデータの抜けを考慮した作りになっているはずですが、ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａ
ｂ．では抜けが発生しないデータ取得が可能になっています。
もう一つは今週開催されるレースに関する情報だけを必要とするパターンで、主に競馬新聞に代わるものとして利用されるソフトや予想を行なうソフトなどがこれにあたります。ＪＲＡ－ＶＡＮ
Ｄａｔａ Ｌａｂ．ではこのような性格を持つソフトを「非蓄積系ソフト」と呼びます。「非蓄積系ソフト」
はその名の通りデータを完全に蓄積する必要はなく、データに期間的な抜けがあっても今週開催されるレースに関するデータにさえ抜けが無ければ主たる機能に影響がないソフトということになります。ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．では今週の開催に関するデータだけを漏れなく取得することが可能になっています。
したがって新しくＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．対応の競馬ソフトを作成したり、既存の競馬ソフト
をＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．対応に変更する場合にどちらのパターンを選択するかを決定する必要があります。

３．３．２ 蓄積系ソフトのデータ取得の方法
蓄積系ソフトは過去のある時点からの完全なデータを保持しますが、一般的に言って過去数年分、あるいは全過去データを持たないと機能的に面白みがありません。もちろんこれはエンド
ユーザーの考え方次第ではありますが、少なくとも過去のレース結果を照会することが出来るソ
フトにとって過去データは多ければ多いほどその機能を発揮することができると言えるでしょう。
17ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

したがって「蓄積系ソフト」はインストールされた後、まず初めに過去データの取り込みを行なう
必要があります。ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ではこの処理を「セットアップ」と呼び、ＪＶ－Ｌｉｎｋ
はこのためにセットアップ機能を提供します。セットアップはＪＲＡ－ＶＡＮのサーバーからデータをダウンロードして行います。
セットアップによって過去から現在までの情報を漏れなく取り込んだ後は、日々発生する変更
データ（差分データ）を漏れなく取得し続ければデータベースは完全性を保ちます。このための変更データの取得処理をＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．では「通常データ取得」と呼び、ＪＶ－Ｌｉｎ
ｋは通常データ取得機能を提供します。
「セットアップ」処理と「通常データ取得」処理によるデータベース更新を下図に示します。

【蓄積系ソフトが１９９１年以降を指定してセットアップを行なった場合】
競馬ソフトが管理するデータベース※Ｔ１がセットアップを行なったタイミングです。

データ種別と FROM タイム
を指定してセットアップ処理

セットアップ処理によって取得したデータ

データ種別と FROM タイム
を指定して通常データ取得処理
通常データ取得処理
によって取得した差分データ
通常データ取得処理
によって取得した差分データセットアップ用データ（サーバー）
1986 年～2003 年 2 月のデータを収容

差
分

差
分

差
分

差
分

差
分 2003 年 3 月以降の
通常データ

通常データ
取得処理

セットアップ処理

Ｔ１

18

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
セットアップによる取り込みは、過去のある時点から現在までの完全なデータを取り込むため、対象ファイルが多くなり処理が遅くなる場合がございます。ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．では過去のある時点から現在までのデータを取り込む方法と、過去のある時点からある時点までのデータを取り込む方法を提供します。
期間の詳細な指定方法については「ＪＶ－Ｌｉｎｋインターフェース仕様書」を参照して下さい。

19ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．３．３ 非蓄積系ソフトのデータ取得の方法
非蓄積系ソフトは基本的に今週開催されるレースのデータに対して処理を行ないます。過去に行なった処理を振り返る（例えば過去に行なったレース予想を再表示する）といった機能を持たなければ、過去に取り込んだデータを必ずしも保持する必要はありません。ソフトを起動するごとにその時点で次に開催されるレースに関する必要なデータを取り込めばデータベースとしては充分ということになります。ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．はその週のレースに関して処理を行なうために必要と思われるデータのセットを用意しています。
したがって「非蓄積系ソフト」は蓄積系ソフトと違いセットアップ処理を行なう必要がありません。
ＪＶ－Ｌｉｎｋに用意された「通常データ取得」機能の「当週のみ」のオプションを使って断片的なデータを取得することになります。ただし JRA-VAN ではその週に開催されるレースに関する情報についてもその週の中で更新されますので、最新の状態に保つにはやはり更新データを取得する必要があります。
非蓄積系ソフトのデータ取得を下図に示します。

【レース予想ソフトが第１週と第４週に処理を行なった場合】

レース開催▼
第１週データ

レース開催▼
第２週データ

レース開催▼
第３週データ

レース開催▼
第４週データ競馬ソフトが管理するデータベース

データ種別と FROM タイムと今週オプションを指定して通常データ
取得処理

第１週データ
第４週データ20

データ種別と FROM タイムと今週オプションを指定して通常データ
取得処理

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．３．４ 競馬ソフトによる FROM タイムの管理
ＪＶ－Ｌｉｎｋは呼び出される際に「FROM タイム」を受け取ることを想定しています。ＪＶ－Ｌｉｎｋが「FROM タイム」を受け取るとその時刻から現在時刻、または指定した時刻までに発生したデー
タを競馬ソフトに返します。したがってデータの連続性を保つためには競馬ソフトがＪＶ－Ｌｉｎｋに渡す「FROM タイム」は前回取得したデータの最終時刻である必要があります。ＪＶ－Ｌｉｎｋは競馬ソフトにデータを渡す際にデータの最終時刻（次回「FROM タイム」として使用するべき時刻）を同時に返しますので、競馬ソフトはこの時刻を次回取り込み処理まで保存しておく必要があります。
【蓄積系ソフト通常データ取得における FROM タイム指定】
蓄積系ソフトはデータの連続性が重要なので FROM タイムを確実に管理する必要があります。

Ｔ１

Ｔ２

Ｔ３

Ｔ４

初回はＦＲＯＭタイムにＴ０（ゼロ）を指定しＴ３までを取得
ＪＶ－ＬｉｎｋからはＴ３が返る。

Ｔ５

Ｔ６

次回取得時はＦＲＯＭタイムにＴ３を指定しないとデータの重複や、抜けが発生する。

蓄積系ソフトセットアップ時のＦＲＯＭタイムについて

通常データ取得の場合のＦＲＯＭタイムは、「データの連続性を保つ」ことを目的としたものです。これに対してセットアップ時のＦＲＯＭタイムは、「指定年以降のデータを取得する」ことが目的となります。そのため、セットアップ時のＦＲＯＭタイムは、レースの開催日などが対象となります。例えば 1991 年以降のレースデータを取得対象とする場合、セットアップのＦＲＯＭタイムには” 19910101000000”を指定することになります。この場合でも競走馬や騎手などのマスタ情報は全データが取得対象となります。

21

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド【蓄積系ソフトセットアップデータ取得における FROM タイム指定】
セットアップ時の FROM タイムは、レースの開催日などが対象となるため、過去のある時点からある時点までのデータを取り込む場合、データの重複や抜けが発生します。
通常データ取得時と同様に FROM タイムに指定する時刻を確実に管理する必要があります。

・ JV-Link から返却される最新のデータ提供時刻ではなく、取得終了日に設定した日時を次のFROM タイムに設定する。（上記①、②）・ セットアップデータ取得の最後は必ず取得終了日なしで取得を行う。（上記③）・ セットアップデータで取得終了日を使って複数回取得を行う際は、通常データ取得時に使用するために、JV-Link から返却される最新のデータ提供時刻を保持しておく。（上記④）22

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド【非蓄積系ソフトの今週データ取得における FROM タイム指定】
非蓄積系ソフトは長期においてのデータの連続性は不要ですが、今週のデータの中では連続性を保つ必要があるので FROM タイムの管理は蓄積系ソフトと同じです。
ある週に開催されるレースに関係したデータは下の表のようなサイクルで提供され、約１週間で完結します。
今週データとはこの１サイクル（約１週ぶん）のデータを示します。ただし日曜日と月曜日は次の週のサイクルと重なるので今週データ取得では２週ぶんのデータを読むことになります。

曜日
日曜

提供データ
特別登録馬データ

月曜

特別登録馬関連データ

火曜
水曜
木曜

出走馬名表関連データ

金曜

出馬表関連データ

土曜
開催日
日曜
開催日
月曜

出馬表関連データ

提供データ内容
次の土日の特別レースに関する情報と特別レースに登録されている馬の情報が提供されます。（ハンデなし）※１
次の土日の特別レースに関する情報と特別レースに登録されている馬の情報が提供されます。（ハンデあり）※１
また、登録されている馬に関する補てん情報も同時に提供されます。

次の土日の全レースに関する情報とレースごとに出走の決まった馬の情報が提供されます。この時点では馬番および枠番が未定の状態です。※２
また、出走する馬に関する補てん情報も同時に提供されます。
次の土日の全レースに関する情報と土曜日の馬番、枠番付きの出走馬
情報、および日曜日の馬番、枠番無しの出走馬情報が提供されます。
※２
次の日曜日の全レースに関する情報と日曜日の馬番、枠番付きの出走馬情報が提供されます。

成績関連データ

レースの結果に関する情報が提供されます。

注：上の表は一般的なモデルですが、レース開催日が土曜、日曜以外の場合は例外となります。
※１：翌々週の G1 レースの情報が含まれている場合があります。
※２：G1 レースの馬番、枠番だけ他のレースより早く提供される場合があります。

月

火

水

木

金

土

日

前回実行時に取り込まれたぶん

Ｔ１

月

火

水

木

今回実行時に取り込まれるぶんＴ２

金土

次回実行時に取り込まれるぶんＴ３

・前回取り込み時に保存しておいた FROM タイム（T1）をつかって T3 のタイミングで今週データを取得した場合には T2～T3 までのデータ（今週ぶん）が取得できる。T1～T2 までのデータは不要。
・次回の処理では T3 を指定することにより今週データ内での連続性が保たれる。

23

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
３．３．５ データベースへの取り込み
ＪＶ－Ｌｉｎｋは複数のデータファイルをまとめて競馬ソフトに提供しますが、その読み込み順はレ
コード単位に完全な時系列順を保証していません。原則としてＪＶ－Ｌｉｎｋはレコード種別ごとに提供日順にファイルを読み出しますが、データの作成時刻順に並んでいるとはかぎりません。
したがって競馬ソフトは読み込んだ各レコードが持つ作成日付がデータベースに既に存在するレコードの作成日付と比べて新しい場合には更新を、古い場合にはレコードを無視、データベースに該当のレコードが存在しない場合には挿入をといった考慮が必要です。
以下に簡単なフローチャートを示します。（EOF やデータの終わりを考慮していません）

JVReadレコードからキーを取り出して K にセット

K をキーにデータベース読み込みNO
データベースに該当レコードあり
YES

データベース側作成日：取り込みレコード作成日＞≦

UPDATE

何もしない

24

INSERTＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
３．４ ＪＶ－Ｌｉｎｋを使ったプログラミング１（通常データ）
ＪＶ－Ｌｉｎｋを使ってＪＶ-Ｄａｔａを取り込む方法について具体的な例を示すことによってＪＶ－Ｌｉｎｋの使い方を解説していきたいと思います。ここでは VisualStudio2019 を例に順を追ってプログラミン
グ方法を説明していきます。ＪＶ－Ｌｉｎｋのインターフェースの詳細については触れませんので、インターフェースの詳細については「ＪＶ－Ｌｉｎｋインターフェース仕様書」を参照して下さい。
３．４．１ プログラミングのゴール
ここではＪＶ－Ｌｉｎｋを使って今週分のレース情報を取得して表示する簡単なプログラム（ＪＶＳａ
ｍｐｌｅ１）を作成します。

このプログラムはボタンが２つとテキストボックスが一つのシンプルな画面を持っています。「設定」ボタンを押すとＪＶ－ＬｉｎｋのＪＶＳｅｔＵＩＰｒｏｐｅｒｔｉｅｓインターフェースを使ってＪＶ－Ｌｉｎｋの各
種設定を行なうことができます。「今週開催レース」ボタンを押すとＪＶ－Ｌｉｎｋの一連のインターフェースを使って今週ぶんの出馬表データを取得し、テキストボックスに内容を表示します。また、データのダウンロード中にはプログレスバー付きダイアログも表示します。

25

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド「今週開催レース」ボタンを押した際にプログラム、ＪＶ－Ｌｉｎｋ、サーバー間で行なわれる処理
は以下のようになります。

サンプル
プログラム

ＪＶＩｎｉｔＪＶ－Ｌｉｎｋ

データ
問い合わせ

ＪＶＯｐｅｎ

プ
ロ
グ
レ
ス
バ
ー
ダ
イ
ア
ロ
グ

サーバー

ダ
ウ
ン
ロ
ー
ド
ス
レ
ッ
ド

ＪＶＳｔａｔｕｓ

ＪＶＳｔａｔｕｓ

ＪＶＲｅａｄ…
…
ＪＶＣｌｏｓｅ

26

ダウンロードダウンロードＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
３．４．２ プロジェクトの作成
まず VisualStudio2019 を起動し、スタートページで「ファイル」タブの「新規作成」⇒「プロジ
ェクト」ボタンをクリックします。

27

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

次 に プ ロ ジ ェ ク ト の テ ン プ レ ー ト か ら 「 Windows フ ォ ー ム ア プ リ ケ ー シ ョ ン (.NET
Framework)」を選択して「次へ」ボタンをクリックします。

28

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

新しいプロジェクトが作成され下の画面になります。

29

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．４．３ ＪＶＬｉｎｋコントロールの追加
この開発環境(VisualStudio 2019)でＪＶ－Ｌｉｎｋを使用できるように設定を行なう必要があります。
メニューバーのツール(T)→ツールボックスアイテムの選択(X)…を選択する。

ツールボックスのアイテム選択ダイアログでＪＶＬｉｎｋ Ｃｌａｓｓにチェックを付け、ＯＫボタンをクリック。

30

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

これによりツールボックスにＪＶＬｉｎｋコントロールが追加されます。

31

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．４．４ フォームの作成
下図のようにボタン２個とテキストボックス、およびＪＶＬｉｎｋコントロールを貼り付け、各プロパティーを設定する。
※このとき JV-Link のコントロールが VisualStudio の背後に隠れてしまう事象がありますが
JV-Link の使用には問題ありません。

コントロール
Button1
Button2
TextBox1

AxJVLink1

プロパティー
Text
Text
Text
ScrollBars
Multiline
Wordwrap
なし

32

選択／設定
“設定“
“今週開催レース”
空白
Both
True
False
なし

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．４．５ 設定ボタンのコーディング（JVSetUIProperties）
ＪＶＬｉｎｋコントロールには動作に関するいくつかのプロパティーを持っています。例えば作業用ディスク領域の場所やＪＲＡ－ＶＡＮサーバーとの通信の際にプロキシを使用するかどうかな
どです。これらの設定は JVSetProperties インターフェースを呼び出すことによって設定する事が可能ですが、呼出側のプログラムで設定用のユーザーインターフェースを用意する必要があります。それに対し JVSetUIProperties インターフェースを使用するとＪＶＬｉｎｋが持つ設定用のダイアログを利用することができます。
ＪＶＳａｍｐｌｅ１では設定ボタンをクリックすることによってこの JVSetUIProperties インターフェー
スを呼び出し、ＪＶＬｉｎｋコントロールが持つ設定ダイアログを利用することにします。
Button1 の Click イベントハンドラに以下のコードを記述します。
サンプルソース１'-------------------------------------------------------------------' 設定ボタンクリック時の処理'-------------------------------------------------------------------Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click'JVSetUIPropertiesの呼出し
If (Me.AxJVLink1.JVSetUIProperties() = -100) Then①
'レジストリへの登録に失敗すると-100が返る
MsgBox("エラーのためＪＶ－Ｌｉｎｋの設定に失敗しました。", MsgBoxStyle.OKOnly)
End IfEnd Sub

サンプルソース１解説①ＪＶＳｅｔＵＩＰｒｏｐｅｒｔｉｅｓを呼び出した結果が-100 の場合は設定が何らかのエラーでレジストリに反映できなかったことを
示します。

33

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

３．４．６ 今週開催レースボタンのコーディング
今週開催レースボタンが押された場合に以下の処理を行います。これがデータ読み出し処理の一般的な流れになります。
処理

内容①ＪＶＬｉｎｋの初期化（ＪＶＩｎｉｔ）②ＪＶＤａｔａのオープン（ＪＶＯｐｅｎ）③ダウンロード中のプログレスバー表示（ＪＶＳｔａｔｕｓ）④ＪＶＤａｔａの読み出し（ＪＶＲｅａｄ）⑤データ内容をテキストボックスに表示⑥ＪＶＤａｔａのクローズ（ＪＶＣｌｏｓｅ）

ＪＶＬｉｎｋの初期化を行います。ＪＶＯｐｅｎを呼び出す前に最低１回呼び出す必要があります。
要求に応じたデータを読み出せるように準備します。必要であればサーバーからデータをダ
ウンロードする処理を起動します。ＪＶＯｐｅｎからの戻りとしてダウンロードを行なう予定ファイル数が返されます。
ＪＶＯｐｅｎはダウンロードスレッドを起動するとダウンロード完了前に呼び出し側に制御を返しますので、呼び出し側はＪＶＳｔａｔｕｓを使ってダウンロード処理の進行状況を監視する必要があります。ＪＶＳｔａｔｕｓはダウンロード済みのファイル数を返しますので、ＪＶＯｐｅｎ時のダウ
ンロード予定ファイル数と一致した場合にダウンロード処理の完了とします。
データを読み出します。ダウンロードスレッドがダウンロード実行中にＪＶＲｅａｄを呼び出すとエラーとなります。
一般の競馬ソフトではこの処理の代わりにデータベースへデータを反映する処理が行なわれます。
ＪＶＯｐｅｎで確保されたリソースを開放します。

Button2 の Click イベントハンドラに以下のコードを記述します。
サンプルソース２'-------------------------------------------------------------------' 今週開催レースボタンクリック時の処理'-------------------------------------------------------------------Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim ReturnCode As Long
Dim Data_Spec As String
Dim From_Time As String
Dim Option_Flag As Integer
Dim ReadCount As Integer
Dim DownloadCount As Integer
Dim LastTime As String
Dim DownloadDialog As Form2'JVLinkからの戻り値'JVOpen データ種別'JVOpen From時刻'JVOpen オプション'データファイルの総読み込み数'データファイルのダウンロード数'データファイルの最終時刻'ダウンロードダイアログ'************' JVInit処理'************
ReturnCode = Me.AxJVLink1.JVInit("UNKNOWN")①
34

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
If (ReturnCode <> 0) Then
MsgBox("JVInitエラー。RC=" & CStr(ReturnCode), MsgBoxStyle.OKOnly)
End If'********************' JVOpen処理'********************②
Data_Spec = "RACE"'データ種別に「レース情報」を設定
From_Time = "20030101000000"'Fromタイムに2003年1月1日を設定
Option_Flag = 2'オプションに「今週データ」を設定
ReturnCode = Me.AxJVLink1.JVOpen(Data_Spec, From_Time, Option_Flag, ReadCount, DownloadCount, LastTime)' JVOpenエラー処理
If (ReturnCode < 0) Then
MsgBox("JVOpenエラー。RC=" & CStr(ReturnCode), MsgBoxStyle.OKOnly)
GoTo Button2_END
End If' 該当データ無し
If (ReadCount = 0) Then
MsgBox("該当するデータがありません。", MsgBoxStyle.OKOnly)
GoTo Button2_END
End If③

If (DownloadCount > 0) Then'*******************************' ダウンロードプログレスバー表示'*******************************
DownloadDialog = New Form2()'Form2からJVStatusを呼ぶためのJVLinkの参照をセット
DownloadDialog.JVLink = Me.AxJVLink1
DownloadDialog.DownloadCount = DownloadCount
DownloadDialog.ShowDialog()④⑤' ダウンロード処理がキャンセルかエラーで終了した場合
If (DownloadDialog.DialogResult <> DialogResult.OK) Then
GoTo Button2_END
End IfEnd If'********************' JVRead処理'********************
Dim RecordSpec As String
Dim Race As JV_RA_RACE' JV-Dataレコード種別ID' JV-Dataレース詳細レコード構造体

Dim buff As String
Dim buffSize As Integer = 1500
Dim fName As String⑥'バッファ領域確保
buff = New String(vbNullChar, buffSize)'該当のデータ（レース情報）が1ファイル以上の場合に読み込み
If (ReadCount > 0) Then
Do
ReturnCode = Me.AxJVLink1.JVRead(buff, buffSize, fName)
Select Case ReturnCode
Case Is > 0 '正常に1レコード読み込み'レコード共通ヘッダ構造体にデータをセット
RecordSpec = Mid(buff , 1 , 2)
If ( RecordSpec= "RA") Then
'レース詳細レコード構造体にデータをセット
Race. SetData (buff)

35

⑦
⑧

⑨

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

Else

Me.TextBox1.AppendText(Race.id.Year + Race.id.MonthDay + " " + _Race.id.JyoCD + " " + _Race.id.Kaiji + " " + _Race.id.Nichiji + " " + _Race.id.RaceNum + " " + _Race.RaceInfo.hondai + _ControlChars.CrLf)'「レース詳細」以外は読み飛ばし
End If
Case -1 'ファイルの切れ目'ファイルの切り替わり時にデータは返されない
Case 0 '全レコード読み込み終了(EOF)
Exit Do
Case Else '読み込みエラー
MsgBox("JVReadエラー。 RC=" + CStr(ReturnCode))
Exit DoEnd SelectLoop
End If
Button2_END:'***************' JVClose処理'***************
If (DownloadCount > 0) Then
DownloadDialog.Dispose()
DownloadDialog = Nothing
End IfReturnCode = Me.AxJVLink1.JVClose()
End Sub

サンプルソース２解説①ＪＶＩｎｉｔにはアプリケーションＩＤを渡します。このアプリケーションＩＤはサーバーとの通信の際にＨＴＴＰヘッダーのＵｓｅｒ－Ａｇｅｎｔとして使用されます。ソフトの名前とバージョン番号を組み合わせてユニークなＩＤを指定して下さい。開発途中
でアプリケーションＩＤを決められない場合には“ＵＮＫＮＯＷＮ”を指定して下さい。
②今週ぶんだけを取得するためオプションに 2 をセットします。
③ＪＶＯｐｅｎにより返された DownloadCount が０である場合はダウンロードが行なわれないことを示していますのですぐに読み込み処理を開始することができます。DownloadCount が０より大きい場合はダウンロードのプログレスバー表
示のためのダイアログを表示します。
④ダイアログ内からＪＶＳｔａｔｕｓを呼ぶためにＪＶＬｉｎｋへの参照をダイアログが持つ変数に渡します。
⑤ダイアログ内でダウンロードの完了を検査するために DounloadCount(ダウンロード予定ファイル数)を必要とするので、ダイアログが持つ変数に DownloadCount を渡します。
⑥データを読み込むためのバッファサイズは該当データのレコード長より大きい値を指定する必要があります。レコード長より小さい値を指定するとバッファに入りきれなかったぶんが切り捨てられます。
⑦ＪＶＯｐｅｎにより返された ReadCount が０である場合は読み込む対象のデータが無いことを示していますので読み込み処理をスキップします。
⑧ＪＶＲｅａｄの戻り値により処理を分岐しハンドリングする必要があります。戻り値が０より大きい場合は正常に読み込み

36ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイドが行なわれています。サンプルプログラムではテキストボックスへの表示を行なっていますが、通常の競馬ソフトはデー
タベースへの取り込み処理を行います。読み込んだデータのデータ種別を判断するにはレコードの先頭にあるデータ種
別フィールドを参照する必要があります。戻り値が－１の場合にはファイルの切れ目を示しています。バッファの中にはデータが格納されていませんので何も処理する必要がありません。あえて実施するなら読み込み済みのファイル数をこのタイミングでカウントし、ReadCount(読み込み予定ファイル数)との比較で読み込み処理の進捗状況を表示するすることが可能です。戻り値が０の場合は全てのファイルを読み終わったことを示しています。
⑨読み込んだレコードのヘッダ部分にあるレコード種別を判定し、処理を分岐する必要があります。サンプルプログラムではデータ種別「レース情報」（”RACE”）の中のレコード種別「レース詳細」(“RA”)だけを読むので、それ以外のレコードを読み飛ばしています。（データ種別およびレコード種別については「ＪＶ－Ｄａｔａ仕様書」を参照して下さい）※JV-Data レース詳細レコード構造体について
レース詳細レコード構造体にデータをセットするためには、SDK に含まれている JV-Data 構造体の「JVData_Structure.vb」をプロジェクトファイルに組み込む必要があります。

１．Visual Studio でプロジェクトを開いた状態で、メニューバーのファイル(F)→既存項目の追加(G)...を選択する。
２．「JRA-VAN SDK」を解凍したディレクトリの下の「\JV-Data 構造体\VB.Net 版」にある「JVData_Structure.vb」を選択して、開く(O)をクリック。

上記の手順で、ソリューションエクスプローラーに「JVData_Structure.vb」が追加されます。

37

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
３．４．７ ダウンロード中プログレスバー表示ダイアログのコーディング
データを読み出すためにＪＶＯｐｅｎインターフェースを呼び出すと必要なデータをサーバーからダウンロードする処理（別スレッド）がスタートします。ダウンロードスレッドがスタートすると呼出側に制御が戻りますがダウンロード処理が完了するまでＪＶＲｅａｄインターフェースでのデータの読み出しは出来ません。したがって呼出側はダウンロードが完了するのを待つ必要があります。通常ダウンロード処理には時間がかかりますので、そのあいだ進行状況を表示するのが望ましいと思われます。サンプルソース３ではその進行状況をプログレスバーを使って表示します。
まずフォーム(Form2)を作成します。タイマー(Timer1)を貼り付けるのを忘れないでください。

コントロール
Form2
Button1
Label1
ProgressBar1
Timer1

プロパティー
Text
Text
Text
なし
なし

選択／設定
“ダウンロード”“キャンセル““”なしなし

フォームの Load イベント、タイマーの Tick イベント、キャンセルボタンの Click イベントのハンドラに以下のコードを記述します。
サンプルソース３
Public JVLink As AxJVDTLabLib.AxJVLink
Public DownloadCount As Integer①'-------------------------------------------------------------------' 初期処理'-------------------------------------------------------------------Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ProgressBar1.Maximum = DownloadCount
Me.ProgressBar1.Minimum = 0
Me.ProgressBar1.Value = 0'プログレスバー最大値'プログレスバー最小値'プログレスバー初期値

38②

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

Me.Timer1.Interval = 10
Me.Timer1.Start()'タイマー間隔'タイマー始動

Me.StartPosition = FormStartPosition.CenterParent
End Sub'-------------------------------------------------------------------' タイマー毎の処理'-------------------------------------------------------------------Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Status As Integer
Dim Count As Integer'進捗度合い'JVStatusの戻り値'******************' JVStatus呼出'******************Count = Me.JVLink.JVStatus()③'エラー判定If (Count < 0) Then
Timer1.Stop()
MsgBox("ダウンロード失敗。RC=" & CStr(Count), MsgBoxStyle.OKOnly)
Me.DialogResult = DialogResult.Abort'終了処理
Me.Close()
Else'プログレスバーを進める
Me.ProgressBar1.Value = Count
Me.Label1.Text = Count & " / " & DownloadCount'全てのデータをダウンロードしたら終了
If (Count = DownloadCount) Then
Me.DialogResult = DialogResult.OK
End IfEnd IfEnd Sub'-------------------------------------------------------------------' キャンセル処理'-------------------------------------------------------------------Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click'*****************' JVCancel'*****************
Me.JVLink.JVCancel()
Me.DialogResult = DialogResult.Cancel④

Timer1.Stop()
Me.Close()
End Sub

サンプルソース３解説①呼び出し元フォームが持っているＪＶＬｉｎｋへの参照および DownloadCount を受け取る変数。
②初期処理（フォームの Load イベント）ではプログレスバーを初期化し、タイマーを起動します。
③ＪＶＳｔａｔｕｓインターフェースはダウンロード処理の進行状況をダウンロードしたファイルの数で返しますので、このインターフェースを使ったプログレスバー表示を行います。ＪＶＯｐｅｎから返されるダウンロード予定ファイル数とＪＶＳｔａｔｕｓが返すダウンロード済みファイル数を使って進捗状況のパーセンテージを求めます 。ＪＶＳｔａｔｕｓの戻り値が39

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
DownloadCount と一致した場合ダウンロード処理の完了を意味し、戻り値が負の値の場合は何らかのエラーが発生したことを意味します。
④ダウンロード中にＪＶＣａｎｃｅｌインターフェースを呼び出すとダウンロード処理を中止することができます。

３．４．９ ビルド＆実行
メニューバーのビルド(B)→ソリューションのビルド(B)を選択する。

以上で JVSample1 の開発は終了です。ビルドによって作成された.exe ファイルをダブルクリック
するかデバッグコマンドにより実行が可能です。

40

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

APPENDIX
Ａ． サンプルプログラム１
ＪＶ－Ｌｉｎｋを利用したサンプルプログラムをご紹介します。
サンプルプログラム１はＪＶ－Ｌｉｎｋ が提供する基本機能を、より一層ご理解頂くためのプログラ
ムです。

NOTE
サンプルプログラム１を実際のソフト製作にそのまま流用されることはお薦めしません。サンプル
プログラム１はあくまでＪＶ－Ｌｉｎｋの各インターフェースの呼び出し方の学習、あるいは動作検証用
途としてご利用下さい。
例えば、サンプルプログラム１では、JVOpen を呼び出す際のパラメータを、エンドユーザーが指定することになっていますが、Data Lab.では極力エンドユーザーの判断無しでデータ取り込み処理を行なえるようなソフトが理想的なソフトと考えています。

Ａ．１ サンプルプログラム１の構成
サンプルプログラム１は以下の開発環境でご利用できます。
・ 『Microsoft Visual Basic 2019』
・ 『Microsoft Visual C++ 2019』
・ 『Borland Delphi 6.0 / 7.0 版共通』

サンプルプログラム１は「ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ． SDK」に含まれます。「ＪＲＡ－ＶＡＮ Ｄ
ａｔａ Ｌａｂ． SDK」を解凍した後、「サンプルプログラム」フォルダを参照して下さい。フォルダ内のファイル構成を下に表します。当ガイドには Microsoft Visual Basic .net 版のソースのみを記載しています。
また、サンプルプログラムをビルドする前にＪＶ－Ｌｉｎｋがインストールされていることを確認して下さい。
※ ＪＶ－Ｌｉｎｋの使用については当ガイドと共にＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ． SDK に収録されている README.TXT も同時に参照下さい。

41ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド① 『Microsoft Visual Basic 2019 版』/sample1_VB2019/---|- JVLinkSample1.sln（ソリューションファイル）|- JVLinkSample1.vbproj（プロジェクトファイル）|- AssemblyInfo.vb（アセンブリに関する一般情報）|- Form1.vb

メイン画面（ソース）|- Form1.resx

メイン画面（テンプレート）|- Form2.vb

データ取込み画面（ソース）|- Form2.resx

データ取込み画面（テンプレート）|- app.config（アプリケーション構成ファイル）② 『Microsoft Visual C++ 2019 版』/sample1_VC2019/--|- sample1.sln（ソリューションファイル）|- sample1.vcxproj（プロジェクトファイル）|- sample1.vcxproj.filters|- jvlink.h（フィルターファイル）（ActiveX コントロールのラッパークラス）|- jvlink.cpp（ActiveX コントロールのラッパークラス）|- ReadMe.txt（各ファイルの概要説明）|- resource.h（リソースファイル）|- sample1.h（インクルードファイル）|- sample1.cpp（ソースファイル）|- sample1.dsp（ビルド用プロジェクトファイル）|- sample1.dsｗ（ワークスペースファイル）|- sample1.rc（Windows リソースファイル）|- sample1.ncb（パーサー情報ファイル）|- sample1Del.h

ファイル削除画面（インクルードファイル）|- sample1Del.cpp

ファイル削除画面ｓ（ソースファイル）|- sample1Dlg1.h

メイン画面（インクルードファイル）|- sample1Dlg1.cpp

メイン画面（ソースファイル）|- sample1Dlg2.h

データ取込み画面（インクルードファイル）|- sample1Dlg2.cpp

データ取込み画面（ソースファイル）42

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド③ 『Borland Delphi 6.0 / 7.0 版共通』
/sample1_DELPHI7/-|- JVLinkSample1.dpr|- JVLinkSample1.Res（プロジェクトファイル）（リソースファイル）|- Unit1.frm（メイン画面フォーム）|- Unit1.pas（メイン画面ソース）|- Unit2.frm（データ取込み画面フォーム）|- Unit2.pas（データ取込み画面ソース）

43

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
Ａ．２ サンプルプログラム１の解説
Ａ．２．１ プログラミングのゴール
サンプルプログラム１は JV-Data を取得するためのプログラムです。取得できるデータ
は、通常データ、今週データ、セットアップデータの 3 種類のデータで速報系データは取得できません。読み込んだデータおよび読み込んだファイルのファイル名をウィンドウに表示します。
このサンプルではＪＶ－Ｌｉｎｋに渡すパラメータをダイアログで指定できますのでパラメー
タの指定と取得されるデータの関係が良くわかるサンプルになっています。しかしながら実際のソフト開発ではパラメータの指定をエンドユーザーに行なわせるやり方は避けるべ
きです。

44

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

Ａ．２．２ 画面構成
サンプルフォームは「メイン画面」と「データ取込み画面」の２画面で構成されています。
「メイン画面」は、「データ取込み画面」の呼出しを行います。ＪＶ－Ｌｉｎｋが取込んだデー
タは、この「メイン画面」に出力表示されます。
「データ取込み画面」はＪＶ－Ｌｉｎｋを実装し、ＪＶ－Ｄａｔａ情報取込みまでの 一連動作を行います。
【画面構成概要図】
JVLink ダイアログ

メインフォーム（ ア プ リ ケー シ ョ ン ソ フ

データ要求

開く
データ取込み

ト）

結果出力
モジュール

JVLink
データ応答

コントロールＡ．２．３ JV-Data 情報を取込むまでの操作手順
JV-Data 情報を取込むまでの各操作を説明します。
①

ＪＶ－Ｌｉｎｋの環境設定を行います。

サンプルプログラム１を起動すると、「メイン画面」が表示されます。はじめに、ＪＶ－
Ｌｉｎｋを設定して下さい。「メイン画面」より、「ＪＶ－Ｌｉｎｋ環境設定」ボタンをクリックし、
サービスキーの設定、データの保存設定フォルダの設定を行います。
②「データ取込み画面」を開きます。

「メイン画面」より、「データ取込み」ボタンをクリックし、「データ取込み画面」を開きます。
③

パラメータを入力し、データを取込みます。

「データ取込み画面」より、ＪＶＯｐｅｎに指定するパラメータを設定します。パラメータはテキストボックス「ファイル識別子」、「データ提供日 FROM」、ラジオボタン「取得データ」に入力し指定します。
パラメータを指定したら「データ取込み開始」ボタンを押して下さい。ＪＶ－ＬｉｎｋがＪＶ－Ｄａｔａ情報を取得します。
45

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

④

出力表示

ＪＶ－Ｌｉｎｋの実行結果（ＪＶＬｉｎｋ戻り値、ＪＶ－Ｄａｔａ情報 等）は、「メイン画面」のテ
キストボックス「出力」に出力表示されます。読込んだファイル名は、「読込みファイル
リスト」に表示されます。
ＪＶ－Ｄａｔａ情報のダウンロードが始まると、プログレスバー「ダウンロード」が表示されます。ダウンロードが終了すると、読込み処理が始まります。読込み処理が始まるとプログレスバー「読込み」が表示されます。途中で処理を停止したい場合は、「取込み中止」ボタンを押して下さい。

46

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
Ａ．２．４ コントロールの構成
各コントロールの構成（配置）とプロパティを下に示します。各コントロールに設定されているプロパティは、下表を参照してください。
①

メイン画面(Form1.frm)

コントロールフォーム

コマンドボタン
コマンドボタン
コマンドボタンリッチテキストボックス

プロパティーName
TextStartPosition
FormBorderStyle
Name
Text
Name
Text
Name
Text
Name
Text
AutoSize
Multiline
ScrollBars

WordWrap
リッチテキストボックス

ActiveXCOM
コントロールName
TextAutoSize
Multiline
ScrollBars

選択／設定
ｆｒｍMain“Sample1 Main Form”
CenterScreen
FixedToolWindow
ｃｍｄJVLinkDialog“データ取込み”
ｃｍｄJVSetUIProperties“JVLink 設定”
ｃｍｄDelete“ファイル削除”
ｔｘｔStatus
空白
False
True
Both
False

WordWrap

ｔｘｔFileList
空白
False
True
Both
False

Name

AxJVLink1

47

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド②

ＪＶ－Ｌｉｎｋコントロールパネル(Form2.frm)

コントロールフォーム

コマンドボタン
コマンドボタンプログレスバー
プログレスバープロパティーName
TextStartPosition
FormBorderStyle
Name
Text
Name
Text
Name
Name

選択／設定
ｆｒｍJVLinkDialog“Sample1 JVLink Dialog”
CenterScreen
FixedToolWindow
ｃｍｄStart“取込み開始”
ｃｍｄCancel“取込み中止”
ProgressBar1
ProgressBar2

Ａ．２．５ 注意事項
・ 各コントロールの役割を明確にするために、ラベル、コマンドボタン等のコントロール名、キャプション名を デフォルトで設定される値から変更しています。
・ 「出力」「読込みファイルリスト」のテキスト出力に、リッチテキストコントロールを使用しています。リッチテキストボックスは、テキストボックスコントロールに比べて、最大文字数の制限に余裕があり、柔軟性に優れています。

48

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

Ａ．３ サンプルソース
Ａ．３．１ サンプルソース『MicrosoftVisualBasic.2019 版』
サンプルプログラム１のソースコードを以下に示します。
【メイン画面： frmSample(Form1.frm)】※Windows フォームデザイナで生成されたコード「#Region」は省略しています。
'========================================================================' ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ． サンプルプログラム１(Form1.vb)''' 作成: JRA-VAN ソフトウェア工房 2003年4月22日''========================================================================' (C) Copyright Turf Media System Co.,Ltd. 2003 All rights reserved'========================================================================
Public Class frmMain
Inherits System.Windows.Forms.Form'-----------------------------------------------------------------------------------------------'
初期化'-----------------------------------------------------------------------------------------------Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles MyBase.Load
Try
Dim sid As String''引数 JVInit:ソフトウェアID
Dim ReturnCode As String
''戻値
'引数設定
sid = "UNKNOWN"'***************'JVLink初期化'***************'※※※ JVInitは JVLinkメソッド使用前(但し、JVSetUIProPertiesを除く)に呼出す
ReturnCode = AxJVLink1.JVInit(sid)'エラー判定If ReturnCode <> 0 Then''エラー
Call PrintOut("JVInitエラー:" & ReturnCode & ControlChars.CrLf)'終了
Exit Sub
Else''正常
Call PrintOut("JVInit正常終了:" & ReturnCode & ControlChars.CrLf)
End IfCatchPrintOut(Err.Description)
End Try
End Sub'-----------------------------------------------------------------------------------------------'
データ取込みボタンクリック時の処理'-----------------------------------------------------------------------------------------------Private Sub cmdJVLinkDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles cmdJVLinkDialog.Click49

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
Try'Form2：JVLinkコントロールパネルを開く
Dim frmDialog As frmJVLinkDialog
frmDialog = New frmJVLinkDialog()
frmDialog.ShowDialog(Me)''オーナーウィンドウに自画面を指定
frmDialog.Dispose()
frmDialog = Nothing'終了
Exit Sub
Catch
PrintOut(Err.Description)
End Try
End Sub'-----------------------------------------------------------------------------------------------'「出力」に処理結果を表示'-----------------------------------------------------------------------------------------------Public Sub PrintOut(ByVal Message As String)
Try'txtOutに文字列を表示し、改行する
txtOut.AppendText(Message)
Catch
Debug.WriteLine(Err.Description)
End Try
End Sub'-----------------------------------------------------------------------------------------------'「ファイルリスト」にダウンロードしたファイルリストを表示'-----------------------------------------------------------------------------------------------Public Sub PrintFilelist(ByVal strMessage As String)
Try'txtFileListに文字列を表示し、改行する
txtFileList.AppendText(strMessage)
Catch
Debug.WriteLine(Err.Description)
End Try
End Sub'-----------------------------------------------------------------------------------------------'JVLink設定ウィンドウ表示'-----------------------------------------------------------------------------------------------Private Sub cmdJVSetUIProperties_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles cmdJVSetUIProperties.Click
Try
Dim ReturnCode As String''戻値'**********************'JVLink設定画面表示'**********************
ReturnCode = AxJVLink1.JVSetUIProperties()'エラー判定If ReturnCode <> 0 Then''エラー
PrintOut("JVSetUIPropertiesエラー:" & ReturnCode & ControlChars.CrLf)
Else
''正常
PrintOut("JVSetUIProperties正常終了:" & ReturnCode & ControlChars.CrLf)
End If'終了
Exit Sub
Catch
PrintOut(Err.Description)50ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
End Try
End Sub'-----------------------------------------------------------------------------------------------'
指定したファイルを削除'-----------------------------------------------------------------------------------------------Private Sub cmdDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles cmdDelete.ClickTry
Dim Message, Title, DefaultValue As String
Dim MyValue As String
Dim ReturnCode As String''戻値'初期値設定Message = "ファイル名を入力して下さい"
Title = "ファイル削除"
DefaultValue = ""''メッセージ''タイトル名''初期値'ファイル名入力
MyValue = InputBox(Message, Title, DefaultValue)'**********************'JVFileDelete'**********************
ReturnCode = AxJVLink1.JVFiledelete(MyValue)'エラー判定If ReturnCode <> 0 Then''エラー
PrintOut("JVFiledeleteエラー:" & ReturnCode & ControlChars.CrLf)
Else
''正常
PrintOut("JVFiledelete正常終了:" & ReturnCode & ControlChars.CrLf)
End If'終了
Exit Sub
Catch
PrintOut(Err.Description)
End Try
End Sub'-----------------------------------------------------------------------------------------------'
表示をクリア'-----------------------------------------------------------------------------------------------Private Sub cmdClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles cmdClear.Click
txtOut.Text = ""txtFileList.Text = ""End Sub
End Class【データ取り込み画面 : frmJVLinkDialog(Form2.frm)】※Windows フォームデザイナで生成されたコード #Region は省略しています。
'========================================================================' ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ． サンプルプログラム１(Form2.vb)''' 作成: JRA-VAN ソフトウェア工房 2003年4月22日''========================================================================' (C) Copyright Turf Media System Co.,Ltd. 2003 All rights reserved'========================================================================51

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド

Public Class frmJVLinkDialog
Inherits System.Windows.Forms.Form
Private frmOwner As frmMain
Private CancelFlag As Boolean
Private ReadCount As Integer
Private DownloadCount As Integer
Private LastFileTimeStamp As String''メインフォーム''キャンセルフラグ''JVOpen:総読込みファイル数''JVOpen:総ダウンロードファイル数''JVOpen:最後にダウンロードしたファイルのタイムスタンプ'-----------------------------------------------------------------------------------------------'
データ取得実行ボタンクリック時の処理'-----------------------------------------------------------------------------------------------Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles cmdStart.ClickTry
Dim DataSpec As String
Dim FromDate As String
Dim DataOption As Integer
Dim ReturnCode As Integer''引数 JVOpen:ファイル識別子''引数 JVOpen:データ提供日付FROM''引数 JVOpen:オプション''JVLink戻値'初期値設定tmrJVStatus.Enabled = False
frmOwner = Owner
CancelFlag = False
progressBar1.Value = 0
progressBar2.Value = 0''タイマー停止''親フォームを指定''キャンセルフラグ初期化''プログレスバー初期化'引数設定
DataSpec = txtDataSpec.Text
FromDate = txtFromDate.Text
If rbtNormal.Checked = True Then
DataOption = 1
ElseIf rbtIsthisweek.Checked = True Then
DataOption = 2
ElseIf rbtSetup.Checked = True Then
DataOption = 3
End IfCursor = Cursors.AppStarting()'**********************'JVLinkダウンロード処理'**********************
ReturnCode = frmOwner.AxJVLink1.JVOpen(DataSpec, _FromDate, _DataOption, _ReadCount, _DownloadCount, _LastFileTimeStamp)'エラー判定If ReturnCode <> 0 Then''エラー
Call frmOwner.PrintOut("JVOpenエラー:" & ReturnCode & ControlChars.CrLf)'終了処理
Call JVClosing()
Else
''正常
Call frmOwner.PrintOut("JVOpen正常終了:" & ReturnCode & ControlChars.CrLf)
Call frmOwner.PrintOut("ReadCount:" & _ReadCount & _" , DownloadCount:" & _DownloadCount & _ControlChars.CrLf)

52

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド'総ダウンロード数をチェック
If DownloadCount = 0 Then''総ダウンロード数=０'プログレスバー100％表示
progressBar1.Maximum = 100''MAXを100に設定
progressBar1.Value = progressBar1.Maximum ''プログレスバー100％表示
Text = "ダウンロード完了"'読込み処理Call JVReading()'終了処理
Call JVClosing()
Else''総ダウンロード数が０以上'初期値設定Text = "ダウンロード中・・・"
progressBar1.Maximum = DownloadCount''プログレスバーのＭＡＸ値設定'タイマー始動：ダウンロード進捗率をプログレスバー表示
tmrJVStatus.Enabled = True''ダウンロードステータスを監視する
End IfEnd If'終了
Exit SubCatch
frmOwner.PrintOut(Err.Description)
End Try
End Sub'-----------------------------------------------------------------------------------------------'
タイマー：ダウンロード状況をプログレスバー表示'-----------------------------------------------------------------------------------------------Private Sub tmrJVStatus_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles tmrJVStatus.Tick
Try
Dim ReturnCode As Integer''JVLink戻値'**********************'JVLinkダウンロード進捗率'**********************
ReturnCode = frmOwner.AxJVLink1.JVStatus''ダウンロード済のファイル数を返す'エラー判定If ReturnCode < 0 Then''エラー
Call frmOwner.PrintOut("JVStatusエラー:" & ReturnCode)'タイマー停止
tmrJVStatus.Enabled = False'終了処理
Call JVClosing()'終了
Exit Sub
ElseIf ReturnCode < DownloadCount Then''ステータス'プログレス表示
Text = "ダウンロード中．
．．(" & ReturnCode & "/" & DownloadCount & ")"progressBar1.Value = ReturnCode
ElseIf ReturnCode = DownloadCount Then''ステータス100％'タイマー停止
tmrJVStatus.Enabled = False'プログレス表示
Text = "ダウンロード完了(" & ReturnCode & "/" & DownloadCount & ")"progressBar1.Value = ReturnCode'読込み処理Call JVReading()'終了処理
Call JVClosing()53

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド'終了
Exit SubEnd IfCatch
frmOwner.PrintOut(Err.Description)
End Try
End Sub'-----------------------------------------------------------------------------------------------'
読込処理'-----------------------------------------------------------------------------------------------Public Sub JVReading()
Try
Dim Buff As String''バッファ
Dim BuffSize As Integer''バッファサイズ
Dim BuffName As String''バッファ名
Dim JVReadingCount As Integer''読込みファイル数
Dim ReturnCode As Integer''JVLink戻値'初期値設定progressBar2.Maximum = ReadCount
JVReadingCount = 0
progressBar2.Value = 0
Text = "データ読込み中．
．．(0/" & ReadCount & ")"'バッファ領域確保
BuffSize = 60000
Buff = New String(vbNullChar, BuffSize)
Do'バックグラウンドでの処理
System.Windows.Forms.Application.DoEvents()'キャンセルが押されたら処理を抜ける
If CancelFlag = True Then Exit Sub'**********************'JVLink読込み処理'**********************
ReturnCode = frmOwner.AxJVLink1.JVRead(Buff, BuffSize, BuffName)'エラー判定Select Case ReturnCode
Case Is > 0''正常Call frmOwner.PrintOut(Buff)
Case -1''ファイルの切れ目'ファイル名表示
Call frmOwner.PrintFilelist(BuffName & ControlChars.CrLf)
Call frmOwner.PrintOut("JVRead File :" & ReturnCode & ControlChars.CrLf)'プログレスバー表示
JVReadingCount = JVReadingCount + 1 ''カウントアップ
progressBar2.Value = JVReadingCount
Text = "データ読込み中．
．．(" & JVReadingCount & "/" & ReadCount & ")"Case 0''全レコード読込み終了(EOF)
Call frmOwner.PrintOut("JVRead EndOfFile :" & ReturnCode & ControlChars.CrLf)
Text = "データ読込み完了(" & JVReadingCount & "/" & ReadCount & ")"'終了
Exit Sub
Case Is < -3''エラー
Call frmOwner.PrintOut("JVReadエラー:" & ReturnCode & ControlChars.CrLf)'終了
Exit SubEnd Select
Loop

54

ＪＲＡ－ＶＡＮ Ｄａｔａ Ｌａｂ．ＳＤＫ 開発ガイド
CatchfrmOwner.PrintOut(Err.Description)
End Try
End Sub'-----------------------------------------------------------------------------------------------'
キャンセルボタンクリック時の処理'-----------------------------------------------------------------------------------------------Private Sub cmdCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles cmdCancel.Click
Try'タイマー停止
tmrJVStatus.Enabled = False'***************'JVLink中止処理'***************
frmOwner.AxJVLink1.JVCancel()'キャンセルフラグをたてる
CancelFlag = True
Call frmOwner.PrintOut("JVCancel:キャンセルされました" & ControlChars.CrLf)
Text = "JVCancel:キャンセルされました"'終了
Exit SubCatch
frmOwner.PrintOut(Err.Description)
End Try
End Sub'-----------------------------------------------------------------------------------------------'
終了処理'-----------------------------------------------------------------------------------------------Private Sub JVClosing()
Try
Dim ReturnCode As Integer''JVLink戻値'***************'JVLink終了処理'***************
ReturnCode = frmOwner.AxJVLink1.JVClose()
Cursor = Cursors.Default()
If ReturnCode <> 0 Then''エラー
Call frmOwner.PrintOut("JVCloseエラー:" & CStr(ReturnCode) & ControlChars.CrLf)
Else
''正常
Call frmOwner.PrintOut("JVClose正常終了:" & CStr(ReturnCode) & ControlChars.CrLf)
End If'終了
Exit SubCatch
frmOwner.PrintOut(Err.Description)
End Try
End Sub
End Class55