祝日判定を高速化する為の『祝日プリマップ』を設定するサブルーチンです。
[kt関数Addin.xla]オープン時に既定で『今年の前後5年間(計11年間)』で設定されています。
Ver 5.40 では 2019年 〜 2021年 施行の全ての祝日改正に対応しています。 詳細は こちら。
Call kt祝日PreMap設定 ( 基準年 )
基準年 ‥‥‥ Integer 型
基準年 ‥‥‥ 西暦で『祝日プリマップ』を作成する基準年を指定します。
この基準年の前後5年間(計11年間)で作成されます。
祝日判定(逆に言えば「この日は祝日ではない」という判定)処理は多くの条件判断
を必要とする為、結構時間の掛かる処理です。「ある1日」に対してだけ判定するなら
微々たるものですが、祝日判定を使って大量のデータに対して「日数計算」を行う場合
等では、非常に莫大な回数の実行となります(平均して1年程度の隔たりのある日数
計算を1000件のデータに対して行なうと ⇒ 365回×1000件≒36万回)。
この祝日判定処理を高速化する為に、予め年間の祝日日付の位置をシリアル値を
基にしてマッピングしてあります(祝日プリマップ期間)。これにより、このマップ期間内
ならば「シリアル値の位置にフラグが立っているか?」という、たった1回の単純な判定
処理で済ます事が出来ます。祝日判定を繰り返す中で日付がマップ期間から外れた
場合は、自動的に通常の判定処理(個々の祝日との比較)に移行するようにしてあり
ますし、マップの作成は[kt関数Addin.xla]オープン時に『今年の前後5年間(計11年
間)』の期間で行なわれますので、ユーザー側では一切意識する必要はありません。
しかしながら、これから処理しようとしているデータが「10年前〜今年」や「今年〜10年
後」というものだった場合には、マップ期間から外れるデータも多くあるので、あまり効果的
ではありません。このような場合は、臨時に祝日プリマップ期間をリセットしてからデータの
処理を行うと高速化できます(処理が終わったら、元に戻しておいて下さい)。
1990〜2000年のデータを処理する場合
Call kt祝日PreMap設定( 1995 )
:
データ処理
:
Call kt祝日PreMap設定( Year(Date) ) ' [本日年]を基準年として元に戻す