3.騎手&厩舎のコード
TARGET を使っていない人、及び殆どの人に必要のない 項かも。
TARGET のインデックスファイルから騎手&厩舎のコードを入手します。
勿論、マスタファイルからは各騎手の戦績も入手できますが、そこまでは、、、
JVData の非蓄積系の騎手マスタでは、今週騎乗する騎手は外していないのです
が短期免許での期限後など、非登録になると抹消して提供されます。
過去の戦績のチェックや、特に騎手名などで表示に欠落が生じることがあるので
少なくとも、騎手名(or 調教師名)とコードくらいは常時準備しておきたいところで
す。必要な人より必要ない人のほうが多いでしょうが、一応スクリプトを
一応、kqcode.pl としてありますが、スクリプト名は好きなように、
コピペして使ってください。
いつも通り、html ファイルのソースでは、< と > を
書き換えてあります。
#!/usr/bin/perl
#
# 騎手&厩舎のコードが必要になることがあります。
# Usage: perl kqcode.pl
# $Id: $
use strict;
my $qsdata = 'h:/DATA/TFJ_CHOK.IDX'; # TARGET 厩舎データ ★
my $ksdata = 'h:/DATA/TFJ_KISI.IDX'; # TARGET 騎手データ ★
my $qscode = '全調教師cd.dat'; # 出力ファイル
my $kscode = '全騎手cd.dat'; # 出力ファイル
my @szok = ( ' ', '東', '西', '地', '外' ) ;
################### ファイル出力・年月日 ###################################
my ( $sec, $min, $hour, $ddl, $mml, $yyl, $rem ) = localtime( time );
my $outtime = (time ) ; # これはエポック数、使ってない
++$mml; $yyl += 1900;
my $ymdd = sprintf "%d.%d.%d %2d:%02d", $yyl, $mml, $ddl, $hour, $min ;
############################################################################
open QD, $qsdata or die " 厩舎データ? $qsdata がない?:$!\n";
open OUQ, ">$qscode" ;
print OUQ "---\[ $ymdd \]\n------------- 調教師コード --------------- \n";
############################################################################
my @data = () ;
while( <QD> ) {
chomp ;
my ( $qcd, $flag, $qna, $kubun ) = unpack
'@11 A5 @16 A1 @105 A8 @194 A1', $_ ;
##### 以下の除外条件は用途によって変更すること #####
next if $flag > 0 ;
next if $kubun == 0 or $kubun > 2 ;
my $szk = $szok[$kubun] ;
my $qdat = join ':', $qna, $qcd ;
# my $qdat = join ': ', $qna, $qcd, $szk ;
print OUQ "$qdat\n" ;
}
close OUQ ;
close QD ;
#######################################################################
open KD, $ksdata or die " 騎手データ? $ksdata がない?:$!\n";
open OUK, ">$kscode" ;
print OUK "---\[ $ymdd \]\n------------- 騎手コード --------------- \n";
while( <KD> ) {
chomp;
my ( $mashou, $masjiki ) = unpack '@16 A1 @25 A4', $_ ;
# 一時免許等で抹消などの例外もあり、2003年以前に抹消された騎手はスキップ
next if $mashou == 1 and $masjiki < 2003 ;
my ( $kscd, $kname, $minar, $szkbun ) =
unpack '@11 A5 @139 A8 @229 A1 @230 A1', $_ ;
$szkbun < 3 or next ;
my $szk = $szok[$szkbun] ;
my $kdat = join ':', $kname, $kscd ;
# my $kdat = join ': ', $kname, $kscd, $szk ;
print OUK "$kdat\n" ;
}
close OUK ;
close KD ;
地方、海外騎手も全て出力するときは、以下の行をコメントアウト。一応、念のため。
# $szkbun < 3 or next ;