オリエンテーリング大会スタートリスト作成プログラムの使い方 Stella  V1.06版 更新中 2001. 1. 9 加藤 kato@orienteering.com PAF01157@nifty.com ※ このファイルに記述された機能・画面表示は、Ver 1.06を基にしています ※ 【起動方法】 ■ このプログラムは以下のファイルを使用します。   プログラム名 Stella.exe   申込み者データファイル REQUEST.IN 引数で変更可 スタートリスト作成の 元になるファイル   参加者データファイル名 ENTRY.IN 引数で変更可 作成されたスタート データを格納する Freya 2.55 - 2.78 の 形式に一致   スタートリストファイル名 START.LST スタートリストを格納 するファイル名 無指定の場合、無し   作業ファイルファイル名 STELLA.TMP 作業用に作成する ファイル名 プログラムが正常終了 したときに削除される 環境変数 TMPが 設定されていると そのディレクトリに 作成される。 ■ スタートリストは、引数で指定無い場合、出力されず、参加者データファイルのみ 作成されます。 Stella [-R 申込み者ファイル] [-E 参加者データファイル名] [-L [スタートリストファイル名]] [-N] [-V] [-S] ■ オプションスイッチ オプションスイッチの指定は、空白で区切って、半角ハイフン('-')に続 けて、半角英数字で指定します。(大文字小文字を区別しません) 引数を持つ場合は、各スイッチの後ろに指定します。 オプションスイッチとその引数の間の空白は無くてもかまいません。 -R : 競技者データファイルの指定(Request) "-R"に続けてファイル名 例えば、"stella -R MYREQ.IN"とすると、"MYREQ.IN" を競技者データファイルとして読み込みます。 初期設定は、"REQUEST.IN" -E : 参加者データファイルの指定(Entry) "-E"に続けてファイル名 例えば、"stella -E MYENTRY.IN"とすると、"MYENTRY.IN" を参加者データファイルとして作成します。 初期設定は、"ENTRY.IN" -L : スタートリストファイル名の指定(List) "-L"に続けてファイル名 例えば、"Stella -L MYSTART"とすると、"MYSTART"を スタートリストファイルとします。 ファイル名を指定しない場合、"START.LST"がスタート リストファイルとなります。 -N : PC98xxシリーズの指定 -V : AT互換機(DOS/V)の指定 "stella -N"または、"stella -V"とします。 初期設定は、DOS/V互換機 (WindowsのDOS窓)です。(Ver. 1.06以降) 誤った指定を行った場合、マシンがハング・暴走する場合があるので 注意してください。 -H : 簡易メッセージの出力(Help) "stella -H"とします。 Stella起動時に使用出来る引数の一覧が表示される。 この場合、プログラムはすぐに終了します。 -S : 読み込み時のメッセージを寡黙にする。(Silent) "stella -S"とします。 データ読み込み時の表示を省略します。 この指定がない場合、データ読み込みを確認する意味で、読み 込み時のデータを表示します。 これ以外のオプションが指定された場合、オプション一覧が表示されて 終了します。 【実行例】 A> Stella (リターン) 入力ファイル(標準で REQUEST.IN)から、データを読み込み、 乱数により、各クラスのスタート時刻を決定し、スタート時刻編集画面に なります。ここで、必要な編集を行った後、[ESC]キーまたは、"Q"で 編集を終了すると、出力ファイル(標準で、ENTRY.IN)に書込みます。 また、スタートリストファイルを指定すると、スタートをリストを出力 します。 【データファイル】 データファイルは、行単位で処理されます。 行の先頭が "!"の場合、その行はコメントとします。 何も書かれていない行も無視されます。 データは、クラスに関する情報と参加者に関するデータです。 クラスに関するデータは、"@"か直接、クラス名(半角英字)から始め、 参加者に関するデータは、"#"か直接、エントリ番号(半角数字)で始めます。 (先頭の "@", "#"は以前との互換性のためで、無くても可) これらのデータは、まず、クラスデータを置き、次に参加者データの順に なります。 競技時間が、8時〜16時の間にない場合は、基準時刻の変更を行う必要が あります。基準時刻の変更は、上記のクラスデータに先立って指定し、 "&BASE_TIME=xx"(xxは、基準時刻:単位は、時)で行います。 各々のデータは半角のカンマで区切ります。 【編集画面(クラス選択)】 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ スタートリスト編集<クラス選択> ┃ ┃ ┃ ┃ クラス コース スタート 間隔 参加者数 シード ┃ ┃ M21E 1 9:30 2 50 5 ┃ ┃ W21E 2 9:31 2 50 5 ┃ ┃ M21A 3 9:30 1 150 0 ┃ ┃ M18A ┃ ┃ ______ ┃ ┃ ______ ┃ 〜 〜 〜 〜 ┃ ______ ┃ ┃ ______ ┃ ┃ ______ ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ここでは、スタート時刻の編集を行いたいクラスを矢印キーを使って 選択します。(青の反転表示を希望のクラスに移動し、リターンキーを押す) クラス名を選択すると次の編集画面(クラス内)に移ります。 なお、多数のクラスがある場合には、[ROLL UP], [ROLL DOWN]キーで、 画面単位で、移動することもできます。 この画面を終了する場合は、[ESC]キーまたは、"Q"を押します。 【編集画面(クラス内)】 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ スタートリスト編集 ┃ ┃ クラス : M21A ┃ ┃ Start Name Club Pre-No. Entry ┃ ┃ 10:31:00 加藤 隆幸 多摩OL 123456 123456 シード ┃ ┃ ______ ┃ ┃ ______ ┃ ┃ ______ ┃ ┃ ______ ┃ 〜 〜 〜 〜 ┃ ______ ┃ ┃ ______ ┃ ┃ ______ ┃ ┃ ______ ┃ ┃ ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ここでは、指定した2人の参加者のスタート時刻を交換することができます。 まず、上下の矢印キーで選択します。(青の反転表示を指定する参加者の行 に移動し、リターンキーまたは、スペースキーを押します) 選択された参加者のデータは黄色の反転表示されると共に、再下行にも黄色 の反転表示されます。さらに、スタート時刻を交換したい参加者を選択する と、"スタート時刻を交換します (Y/N) : " と聞いてくるので、"Y"を入力す る事により、2人のスタート時刻を交換します。 なお、多数の参加者がある場合には、[ROLL UP], [ROLL DOWN]キーで、 画面単位で、移動できます。(AT互換機の場合、[PageUP], [PageDown]) この画面を終了する場合は、[ESC]キーまたは、"Q"を押します。 ■ 競技者データファイルの形式(初期設定で、ファイル名:REQUEST.IN) ! !基準時刻の設定 &Base_time=8 ! 時で指定します。 ! 指定がない場合は、8時となり、8時〜16時の間の処理となります。 ! ! !---*++++1----*++++2----*++++3----*++++4----*++++5----*++++6----*++++7----* !クラス名 コース番号 スタート時刻 スタート間隔 シード開始時刻 シード間隔 ! Vacant開始時刻 Vacant間隔 本番号開始 ! @M21E,1,9:00:00,2:00,9:30:00,20:00,,,1001 @M21A,3,9:01:00,1:00,9:30:00,20:00,9:40:00,30:00,2001 !クラス名は半角、開始時刻は、時分秒。間隔は、時分の指定で行います。 !シード、バカントの指定を行わない場合は、0または、","(カンマ)のみとします。 !この時、スタート間隔も同様の指定を行わない場合、エラーとなるので注意のこと。 !【本番号開始】に0以外を数字を指定するとそのクラスの参加者に対して、その番号 !より始まるエントリ番号を付加する。(スタート順) !最初の指定クラスに本番号があり、次にない場合は、前の番号に引続き指定する。 !参加者に関するデータ !---*++++1----*++++2----*++++3----*++++4----*++++5----*++++6----*++++7----* !エントリ番号 名前 ふりがな クラス シード 年齢 所属クラブ 県名 #123,加藤 隆幸,かとう たかゆき,M21A,,29,多摩OL,東京都 !番号,名前,ふりがな,クラス,シードの有無,年齢,クラブ名 !番号はエントリ番号で、データの入力などはこの番号で行うことになります。 !名前・ふりがなは混在が可能です。 !クラス名は半角で上記で指定したもののみ有効です。 !シードの有無は、"1"を指定するとシードの対象です。 【制限事項】   ・ 同一クラス内で、同一クラブ名が連続しない処理を入れましたが、 完全なものではありません。特にシードの指定がある場合の処理は、 連続する場合があります。ご注意ください。 また、以下の事は検討中です。注意してください。   ・ データファイル中をエントリ番号を仮エントリとし、本エントリ番号を 付加することが可能ですが、番号の重複はチェックしていません。   ・ コース番号はデータとして保持するのみです。当面、使用予定はありません。   ・ 同一コース内でスタート時刻を連続する処理は行っていません。 【参考】 ■ 参加者データの出力 参加者データファイル(初期設定 ENTRY.IN)の出力は、エントリ番号(本,仮)順   に出力されます。 【注意事項】 以下のことに注意して使用してください。   ・ 現在、処理できる最大のデータ数は、2998人で、 1400人程度 まで動作の確認を行なっています。   ・ Vacantの指定ができますが、この指定をしたスタート時刻に設定され ないのみで、スタートリスト等に "VACANT"のデータは入りません。注意して ください。   ・ Vacantの指定時刻とシードの指定時刻が重なった場合、シードの指定 が優先します。   ・ シードの指定者数が、該当クラスの最終スタート時刻に満たないで、その時刻 空く場合は、非シード者が入ります。 【付記】 ■ 使用・再配布・変更について  このプログラムは著作権を放棄していませんが、以下の条件のもとで、   ご自由に使用してください。(その他は使用者の良識に任せます)   1.変更を加えたときには、変更が加えられていることを明示してください。   2.このプログラムを使用したことによって生じた損害は、保証しません。   3.このプログラムに不備があっても、それを訂正する義務を負いません。   4.ソースリスト、このドキュメントを含むプログラムの全部、または一部を 無断で商品化することを禁じます。 ■ お願い 上記に示したように、このプログラムの使用は自由ですが、以下の事をお願 いしたいと思います。 ・このプログラムに変更を加えられた場合、変更箇所をソースを含めて公開 してください。可能な限り新しいバージョンに反映し、機能の向上を計り たいと思います。 ■ バージョンアップ 私の関心と新しい要望が続く限り、バージョンアップは続きます。 ただし、次のバージョンの時期と内容については保証できません。 ★★★★【番外】★★★★ ------------------------------------------------------------------------------ 【プログラム内部設定】 ■ 処理可能データ 参加者数 3000名 [Stella.h : ENTRY_MAX] クラス数 80クラス [Stella.h : CLASS_MAX] ただし、ダミーがあるので各々2づつ引くこと。 スモールモデルで作成しているため、ENTRY_MAXの値を変更する際は注意。 ■ 時刻の扱い 内部では16bit符号付きの整数で処理する。(Freyaと異なる) 時刻は全て8時間のゲタ[Stella.h : Base_time] を履かせており、 8時より16時まで利用可能。(8時間を越えるものはエラーとしている) [K_tool.c : check_time()] なお、この Base_timeは、データファイルの指定で変更可能で、0時から、 17時までとしている。[Data_cnt.c : change_base_time()] 最後の 4096(0x1000)秒分は途中の計算のために用いている。 [Form.h] 0 - 0x6FFF : 実際の時間 0x7000 - 0x7FFF : 計算のためのダミー領域 ■ スタート時刻の設定 まず、スタート時刻の項目に乱数値を設定し、クラス別にスタート時刻で ソートする。ここで、同一クラブの連続のチェックをし、連続する場合は、 入れ替えを試みる。次にソートされた先頭から、スタート時刻を設定する。 ■ 同一クラブの連続チェック クラブ名で同一クラブかどうかの判定を行えば、良いがメモリの関係(ス モールモデル)で、同一クラブの判定に以下の方法を用いた。 クラブ名をバイト列(上位ビットは0にする)とし、バイト単位でビット シフトと加算を行う(4バイト整数とし、桁あふれを無視)。この結果得 られた数値の比較で、同一クラブの判定を行う。 [End of Stella.doc]