かなり目鼻がついてきた?

時間軸水平の処理方式から、時間軸垂直の処理方式への切り替えは、まー、道半ばぐらい。垂直にするにあたって、水平処理が前提になってるコードを、先週まででかなりクラスの中に閉じ込めたと思っていたんだけど、結構漏れがあってその対応で今日一日は終了。動き出しはしたけど、まだ奇妙な挙動を示すのでまだまだバグを内在していそうな感じるのは確実だ。あとは、SQLPerl DBIなのか、MySQLのDBDなのかはわからん)のバグっぽい挙動の部分にちょっとムカつく。まあでもあれは、仕様なのかな。INで有効な値を列挙するWHERE句だったんだけど、INの値のところを、こんな風に書いていた。

$sth = $dbh->prepare("SELECT A,B,C FROM A_TABLE WHERE A IN(?)") ;
$sth->execute('1000,2000,3000') ;

これで返ってくるのがA IN (1000)の結果だけ。結局クエリを文字列で持っておいて、自力で値の列挙の部分を置換したら欲しいものがとれた。修正後はこんな感じ。

$query = "SELECT A,B,C FROM A_TABLE WHERE A IN(A_ENUM)" ;
$query =~ s/A_ENUM/'1000,2000,3000'/g ;
$sth = $dbh->prepare($query) ;
$sth->execute() ;

ま、いろいろ勉強しながらやってるけど、これが終われば、車で言うところの台車部分ができたようなモンだと思う。上に乗せる部品をあとから組み替えられる仕組みだ。これができたら、あとはエンジン、トランスミッション、タイヤを装着すれば基本メカニズムは出来上がる。今、台車の構造を試験する為に使っているエンジンはそこらに乗り捨てられた原付から取ってきてつけたような超借り物だけど、一応軽クラスぐらいのエンジンのアテはある。なんとかこの軽エンジンと、台車だけでも今年中に完成させて、来年から運用を開始したいなー。