レコード番号と参照番号の切り分けという課題はほぼクリアできたのではないかと思う.2021年の末にコラッツ対応版を初めた時期に,「コラッツ対応版応急措置」というのを何件か入れている.この辺りが今どうなっているのかを調べてみよう.作業を開始したのは,2021/12/11だ.この頃は,コラッツ木サンプルのデータ入力をやっている.発生していたエラーには以下のようなものがある.
- 先祖ノード絶対世代番号不一致
- LINKTABLE::MargTakeChild 結婚リンクが消えていない!⇒このエラーは,子ども氏名を消去した時に発生する
- 選択状態が残ってしまう,他のカードを選択しても消えない
- ページ設定パネルが開けない,印刷もできない
- 先祖並び替えが動作しない,ボタンが効かない,ドラッグ移動もできない
- インポート・エクスポートが動作しているバージョン:Ver 2.2.0.030 Rel 2021-03-17
- 最終版からリスタート,2021-04-10
- 氏名欄で左右カーソルキーを押すと入力文字が消える
- カード画面上部ツールバーの氏名欄で名前の後ろに余分な空白が入る
- カード数1000点のコラッツ木のインポートに時間が掛かる,1点処理するのに25秒掛かっている
- CARDLINK::makelinkで時間が掛かっている,UNDOは止めておく
- ZTYW処理が作動している,暫定的にgoodsonを空としている
- 人名枠高の計算がおかしい,フォントサイズを大きくすると人名枠が世代境界を超えてしまう
- コラッツ1000.zelを開くのにかなりの時間が掛かり,マネージド・デバッグ・アシスタントが作動して停止する
- 親の垂線が兄弟連結線から突き出ている
- TOPOLOGY::ClearTableで参照番号不整合が発生したとき ⇒ すでに止めてあるが,「コラッツ対応版応急措置@20211219」というリテラルで明示する
- NAMEBOX::Drawで人名枠高が世代高を超えた ⇒ コラッツ対応版応急措置@20211219」で止める
- MARGBOX::makeGoodSonの冒頭で「つねに中吊りする@20211216」でゼロ復帰 ⇒ コラッツ対応版応急措置@20211219」で対処
- TRIBEBOX::CheckAbsoluteGenerationで系列優先ノードのbreakupがオフという理由でエラーが起きている.「コラッツ対応版応急措置@20211223」で止めておく
- 基準番号を1~1000に振り直すことにした
- 垂直親子連結線が兄弟連結水平線を突き出ている.
Collatz12146.ZELというサンプルを開いてみた.名前の通り,12146点のデータが登録されている.系統並び替えだけ700秒掛かっているので,全体では15分くらい掛かったのではないだろうか?上の方でかなりひどいスプリットが起きている.多分,これが「極小反例の自動生成」ということに取り組むことになった原因だろう.
一番気がかりなところでもあるので,まず,これをシューティングしてしまいたいところだが,その前に,「コラッツ対応版応急措置@20211219」と「コラッツ対応版応急措置@20211223」を解除するところから始めよう.今後の作業の目標は,「コラッツ特注版をノーマライズして公開版に向けて統合する」ことだ.
▲コンパイルエラーが出ている.CARDDATA::refnumが存在しないというエラーだ.CARDTABLE::tablesizeという値でも不在が起きている.前者は多分「setRefnumはCARDBASEで実行する@20230107」に関係しているものだろう.暫定的にrefnumをRefnumに変更している.後者はBASETABLE::tablesizeを暫定的にtablesize2としためだ.元に戻しておこう
▲KAKEIZU::getmarriageでは参照番号を指定してデータの取り出しを実行している.レコード番号でアクセスできるようにした方がよい.⇒KAKEIZU::getmarriage/getcarddataでは,num ないし refnum という語を使っているが,これは参照番号ではなくデータベースのレコード番号である.参照番号はデータベース内部では「登録番号」と呼ばれている.紛らわしいので,引数をrecnのように書き換えておこう.
KAKEIZUのメンバー関数の中でnumないしrefnumを引数とする別の関数がある.これらもチェックしておこう.QUICKDBのcurnumもcurrecnに改めておく.savemarriage,savecarddata,makemargfile@もrecnに変更した.