初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2018-06-23 23:59:20

Hiro
Member

★★ getHoliday(年)「祝日カレンダー」カスタム関数 を公開 ★★

getHoliday(年)「祝日カレンダー生成」カスタム関数 とその適用例 を改めて公開します。

●関数.txtダウンロード「getHoliday カスタム関数.txt」 → https://yahoo.jp/box/bSRLYuhttps://1drv.ms/t/s!AlaCGhTKTWEO9ENzWFA … L?e=EHeCG7

任意指定された引数(年)の年間「祝日カレンダー」を[日付:祝日名]ハッシュ形式の一覧リストで出力します。

( 2018年度の出力例 )
+++++++++++++++++++++
2018/01/01:元旦
2018/01/08:成人の日
2018/02/11:建国記念の日
2018/02/12:建国記念の日の振替休日
2018/03/21:春分の日
2018/04/29:昭和の日
2018/04/30:昭和の日の振替休日
2018/05/03:憲法記念日
2018/05/04:みどりの日
2018/05/05:こどもの日
2018/07/16:海の日
2018/08/11:山の日
2018/09/17:敬老の日
2018/09/23:秋分の日
2018/09/24:秋分の日の振替休日
2018/10/08:体育の日
2018/11/03:文化の日
2018/11/23:勤労感謝の日
2018/12/23:天皇誕生日
2018/12/24:天皇誕生日の振替休日
+++++++++++++++++++++

この getHoliday()「祝日カレンダー」出力リストの利用見本として、祝日テーブルにレコード展開する
実装例を補足アップしますので、併せてご利用ください。
(※標準版FMPへのカスタム関数の設置方)

●実装サンプル「祝日カレンダー.fmp12」 → https://yahoo.jp/box/Ab4w5bhttps://1drv.ms/u/s!AlaCGhTKTWEO9ESt3Ae … v?e=NqYZFJ



【 getHoliday関数のコード詳細 】
/*=======================================================
++++++++++++++++++++++++++++++
  カスタム関数 getHoliday (<<年>>)
++++++++++++++++++++++++++++++ 
指定された年度の年間祝日の一覧リストを返します。
(日付 +<:>セパレータ + 祝日名 のハッシュ形式のリスト)
(※2018年6月20日現在)
CopyRight©2018,  by Hiro
<https://fm-aid.com/bbs2/profile.php?section=essentials&id=3> 
=======================================================*/

Let ( [  // === Let start ===

//+++++++++++++++++++++++++
// 「$year 年度」<<年>>パラメータ引数 を定義
//+++++++++++++++++++++++++
$year = <<年>> ;

// 「$getFurikae 振替休日」サブ関数を定義
// 日付:振替休日名 のハッシュ形式
// Evaluate($getFurikae) で実行
//+++++++++++++++++++++++++
// 2005.05.20 の法改正で
// 「国民の祝日」が日曜日に当たるときは、
// その日後においてその日に最も近い「国民の祝日」でない日を休日とする、と
// 振替休日の定義が変更になっている。			
// 5月3日、5月4日が日曜日の場合は5月6日は振替休日
// 振り替え休日(1973(昭和48)年4月12日施行)
// 祝日が日曜日の時は、翌月曜日が振替休日とする。
$getFurikae =
"Case(
 $theDate>=Date(1;1;2007) and 
  DayOfWeek ($theDate)=1 and
   ($theDate=Date(5;3;$year) or $theDate=Date(5;4;$year))
 ; Date(5;6;$year) & \":\" & $hName & \"の振替休日\"
; 
 $theDate>=Date(4;12;1973) and 
  DayOfWeek($theDate)=1
 ; Date(Month($theDate); Day($theDate+1); $year) & \":\" & $hName & \"の振替休日\"
)";

// 「#getHoliday 祝日及び振替休日」サブ関数を定義
// 日付:祝日名 のハッシュ配列形式のリスト
// Evaluate(#getHoliday) で実行
// +++++++++++++++++++++++++
#getHoliday =
"List($theDate &\":\"& $hName; Evaluate($getFurikae))" ;

// 「#shunbun 春分」変数を定義
// +++++++++++++++++++++++++
#shunbun =
Case(
 $year<=1899 and $year>=1851;
  Date(3;Int(19.8277+.242194*($year-1980)-Int(($year-1983)/4));$year);
 $year<=1979;
  Date(3;Int(20.8357+.242194*($year-1980)-Int(($year-1983)/4));$year);
 $year<=2099;
  Date(3;Int(20.8431+.242194*($year-1980)-Int(($year-1980)/4));$year);
 $year<=2150;
  Date(3;Int(21.851+.242194*($year-1980)-Int(($year-1980)/4));$year)
);

// 「#shuubun 秋分」変数を定義
// +++++++++++++++++++++++++
#shuubun =
Case(
 $year<=1899 and $year>=1851;
  Date(9;Int(22.2588+.242194*($year-1980)-Int(($year-1983)/4));$year);
 $year<=1979;
  Date(9;Int(23.2588+.242194*($year-1980)-Int(($year-1983)/4));$year);
 $year<=2099;
  Date(9;Int(23.2488+.242194*($year-1980)-Int(($year-1980)/4));$year);
 $year<=2150;
  Date(9;Int(24.2488+.242194*($year-1980)-Int(($year-1980)/4));$year)
);

// +++++++++++++++++++++++++
// === Holiday List start  ===
// +++++++++++++++++++++++++
#holidayList = 

// 祝日の算出範囲の定義
// +++++++++++++++++++++++++
// === <適用範囲> ===
// 国民の祝日に関する法律(祝日法)の施行された1948(昭和23)年7月20日以降
// (振替休日は1973(昭和48)年4月12日制定・施行)
// 春分・秋分の簡易計算の出来る範囲(1851〜2150)
// 春分・秋分の日の計算は「新こよみの便利帳 」(恒星社厚生閣刊) による
// 祝日としての春分・秋分の日は閣議で決定され前年の2月の官報に公示される。
Case (
 $year>=1948 and $year<=2150 ; 

// === List() start
// +++++++++++++++++++++++++
List(   

// ● 元旦
// 元旦(1月1日)1948.07.20制定
Case($year>=1949;
 Let([
  $theDate=Date(1;1;$year);
  $hName="元旦"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 成人の日
// 成人の日(1月15日)1948.07.20制定
// 成人の日(1月第2月曜)1998.10.21制定 2000.01.01施行
Case(
$year>=2000;
 Let([
  $theDate=Date(1;15 - DayOfWeek(Date(1;6;$year));$year);
  $hName="成人の日"
 ];
  Evaluate(#getHoliday)
 )
;
$year>=1949;
 Let([
  $theDate=Date(1;15;$year);
  $hName="成人の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 建国記念の日
// 建国記念の日(2月11日)1966.6.25制定
Case($year>=1967;
 Let([
  $theDate=Date(2;11;$year);
  $hName="建国記念の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 春分の日
// 春分の日(春分日)1948.07.20制定
Case($year>=1967;
 Let([
  $theDate=#shunbun;
  $hName="春分の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 天皇誕生日
// 天皇誕生日(4月29日)1948.07.20制定
Case($year>=1949 and $year<=1988;
 Let([
  $theDate=Date(4;29;$year);
  $hName="天皇誕生日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● みどりの日
// みどりの日(4月29日)1989.02.17制定
Case($year>=1989 and $year<=2006;
 Let([
  $theDate=Date(4;29;$year);
  $hName="みどりの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 昭和の日
// 昭和の日(4月29日)2005.05.20制定 2007.01.01施行
Case($year>=2007;
 Let([
  $theDate=Date(4;29;$year);
  $hName="昭和の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 即位礼正殿の儀(仮称)
// 2019年以降の5月1日は即位礼正殿の儀を祝して定例化、2019年以降の呼称は未定
Case($year>=2019;
 Let([
  $theDate=Date(5;1;$year);
  $hName="即位礼正殿の儀(仮称)"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 憲法記念日
// 憲法記念日(5月3日)1948.07.20制定
Case($year>=1949;
 Let([
  $theDate=Date(5;3;$year);
  $hName="憲法記念日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 国民の休日
// 国民の休日 1985.12.27制定
// 国民の祝日に関する法律 第3条3項(1985.12.27施行)
// その前日及び翌日が「国民の祝日」である日は、休日とする。
// (日曜日にあたる日及び前項に規定する休日にあたる日を除く。)
// 「国民の休日」は通称名
// ※振り替え休日が優先されるので国民の休日が月曜日になることはない。
Case($year>=1986 and $year<=2006 and DayOfWeek(Date(5;4;$year))>=3;
 Let([
  $theDate=Date(5;4;$year);
  $hName="国民の休日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● みどりの日
// みどりの日(5月4日)2005.05.20制定 2007.01.01施行
Case($year>=2007;
 Let([
  $theDate=Date(5;4;$year);
  $hName="みどりの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● こどもの日
// こどもの日(5月5日)1948.07.20制定
Case($year>=1949;
 Let([
  $theDate=Date(5;5;$year);
  $hName="こどもの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 海の日
// 海の日(7月20日)1995.03.08制定 1996.01.01施行
// 海の日(7月第3月曜日)2001.06.22制定 2003.01.01施行
Case(
$year>=2003;
 Let([
  $theDate=Date(7;22 - DayOfWeek(Date(7;6;$year));$year);
  $hName="海の日"
 ];
  Evaluate(#getHoliday)
 )
;
$year>=1996;
 Let([
  $theDate=Date(7;20;$year);
  $hName="海の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● スポーツの日(旧名:体育の日)
// 体育の日(10月10日)1966.06.25制定
// ※Tokyoオリンピックの2020年は、7月24日へ日付変更
// 2020年以降 体育の日は、スポーツの日 に改名
Case($year=2020;
 Let([
  $theDate=Date(7;24;$year);
  $hName="スポーツの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 山の日
// 山の日(8月11日)2014.05.23制定
Case($year>=2016;
 Let([
  $theDate=Date(8;11;$year);
  $hName="山の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 敬老の日
// 敬老の日(9月15日)1966.06.25制定
// 敬老の日(9月第3月曜日)2001.06.22制定 2003.01.01施行
Case(
$year>=2003;
 Let([
  $theDate=Date(9;22 - DayOfWeek(Date(9;6;$year));$year);
  $hName="敬老の日"
 ];
  Evaluate(#getHoliday)
 )
;
$year>=1966;
 Let([
  $theDate=Date(9;15;$year);
  $hName="敬老の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 国民の休日
// 敬老の日が第3月曜日に改正されたことにより派生
// 秋分の日が水曜日になる年
// 2009,2015,2026,2032,2037,2043,2049,2054,2060,2071,2077,
// 2088,2094,2099,2105,2111,2116,2122,2133,2139,2150...
Case(
$year>=2003 and #shuubun-2=Date(9;22-DayOfWeek(Date(9;6;$year));$year);
 Let([
  $theDate=#shuubun -1;
  $hName="国民の休日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 秋分の日
// 秋分の日(秋分日)1948.07.20制定
Let([
 $theDate=#shuubun;
 $hName="秋分の日"
];
 Evaluate(#getHoliday)
) ;

// ● 体育の日
// 体育の日(10月10日)1966.06.25制定
// 体育の日(10月第2月曜日)1998.10.21制定 2000.01.01施行
// Tokyoオリンピックの2020年以降は、スポーツの日 に変更され廃止
Case(
$year>=2000 and $year<2020 ;
 Let([
  $theDate=Date(10;15 - DayOfWeek(Date(10;6;$year));$year);
  $hName="体育の日"
 ];
  Evaluate(#getHoliday)
 )
;
$year>=1966 and $year<2000;
 Let([
  $theDate=Date(10;10;$year);
 $hName="体育の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● スポーツの日(旧名:体育の日)
// 体育の日(10月10日)1966.06.25制定
// 体育の日(10月第2月曜日)1998.10.21制定 2000.01.01施行
// ※Tokyoオリンピックの2020年は、7月24日へ日付変更
// 2020年以降 体育の日は、スポーツの日 に改名
Case(
$year=2020; ""    // 7月の位置へ移動してある。
;
$year>=2020 ;
 Let([
  $theDate=Date(10;15 - DayOfWeek(Date(10;6;$year));$year);
  $hName="スポーツの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 文化の日
// 文化の日(11月3日)1948.07.20制定
Case($year>=1948;
 Let([
  $theDate=Date(11;3;$year);
  $hName="文化の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 勤労感謝の日
// 勤労感謝の日(11月23日)1948.07.20制定
Case($year>=1948;
 Let([
  $theDate=Date(11;23;$year);
  $hName="勤労感謝の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 天皇誕生日
// 天皇誕生日(12月23日)1989.02.17制定
// 2019年以降は天皇譲位に伴い廃止
Case($year>=1989 and $year<2019;
 Let([
  $theDate=Date(12;23;$year);
  $hName="天皇誕生日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 皇太子明仁親王の結婚の儀
// 皇太子明仁親王の結婚の儀(昭和34年4月10日)
Case($year=1959;
 Let([
  $theDate=Date(4;10;$year);
  $hName="皇太子明仁親王の結婚の儀"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 昭和天皇の大喪の礼
// 昭和天皇の大喪の礼(平成元年2月24日)
Case($year=1989;
 Let([
  $theDate=Date(2;24;$year);
  $hName="昭和天皇の大喪の礼"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 即位礼正殿の儀
// 即位礼正殿の儀(平成2年11月12日)
Case($year=1990;
 Let([
  $theDate=Date(11;12;$year);
  $hName="即位礼正殿の儀"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 皇太子徳仁親王の結婚の儀
// 皇太子徳仁親王の結婚の儀(平成5年6月9日)
Case($year=1993;
 Let([
  $theDate=Date(6;9;$year);
  $hName="天皇誕生日"
 ];
  Evaluate(#getHoliday)
 )
) 

)   // === List() end ===

)    // === Holiday List end ===

] ;  // === Let end ===

 #holidayList      // 最終結果リスト
) 

/*=======================================================
CopyRight©2018 by Hiro
<https://fm-aid.com/bbs2/profile.php?section=essentials&id=3> 
=======================================================*/
▼2020年(令和2年現在)修正式▼
/*=======================================================
++++++++++++++++++++++++++++++
  カスタム関数 getHoliday (<<年>>)
++++++++++++++++++++++++++++++ 
指定された年度の年間祝日の一覧リストを返します。
(日付 +< : >セパレータ + 祝日名 のハッシュ形式のリスト)
(※2020年10月1日現在)
CopyRight©2020,  by Hiro
<https://fm-aid.com/bbs2/profile.php?section=essentials&id=3> 
=======================================================*/

Let ( [  // === Let start ===

//+++++++++++++++++++++++++
// 「$year 年度」<<年>>パラメータ引数 を定義
//+++++++++++++++++++++++++
$year = <<年>> ;

// 「$getFurikae 振替休日」サブ関数を定義
// 日付:振替休日名 のハッシュ形式
// Evaluate($getFurikae) で実行
//+++++++++++++++++++++++++
// 2005.05.20 の法改正で
// 「国民の祝日」が日曜日に当たるときは、
// その日後においてその日に最も近い「国民の祝日」でない日を休日とする、と
// 振替休日の定義が変更になっている。			
// 5月3日、5月4日が日曜日の場合は5月6日は振替休日
// 振り替え休日(1973(昭和48)年4月12日施行)
// 祝日が日曜日の時は、翌月曜日が振替休日とする。
$getFurikae =
"Case(
 $theDate>=Date(1;1;2007) and 
  DayOfWeek ($theDate)=1 and
   ($theDate=Date(5;3;$year) or $theDate=Date(5;4;$year))
 ; Date(5;6;$year) & \":\" & $hName & \"の振替休日\"
; 
 $theDate>=Date(4;12;1973) and 
  DayOfWeek($theDate)=1
 ; Date(Month($theDate); Day($theDate+1); $year) & \":\" & $hName & \"の振替休日\"
)";

// 「#getHoliday 祝日及び振替休日」サブ関数を定義
// 日付:祝日名 のハッシュ配列形式のリスト
// Evaluate(#getHoliday) で実行
// +++++++++++++++++++++++++
#getHoliday =
"List($theDate &\":\"& $hName; Evaluate($getFurikae))" ;

// 「#shunbun 春分」変数を定義
// +++++++++++++++++++++++++
#shunbun =
Case(
 $year<=1899 and $year>=1851;
  Date(3;Int(19.8277+.242194*($year-1980)-Int(($year-1983)/4));$year);
 $year<=1979;
  Date(3;Int(20.8357+.242194*($year-1980)-Int(($year-1983)/4));$year);
 $year<=2099;
  Date(3;Int(20.8431+.242194*($year-1980)-Int(($year-1980)/4));$year);
 $year<=2150;
  Date(3;Int(21.851+.242194*($year-1980)-Int(($year-1980)/4));$year)
);

// 「#shuubun 秋分」変数を定義
// +++++++++++++++++++++++++
#shuubun =
Case(
 $year<=1899 and $year>=1851;
  Date(9;Int(22.2588+.242194*($year-1980)-Int(($year-1983)/4));$year);
 $year<=1979;
  Date(9;Int(23.2588+.242194*($year-1980)-Int(($year-1983)/4));$year);
 $year<=2099;
  Date(9;Int(23.2488+.242194*($year-1980)-Int(($year-1980)/4));$year);
 $year<=2150;
  Date(9;Int(24.2488+.242194*($year-1980)-Int(($year-1980)/4));$year)
);

// +++++++++++++++++++++++++
// === Holiday List start  ===
// +++++++++++++++++++++++++
#holidayList = 

// 祝日の算出範囲の定義
// +++++++++++++++++++++++++
// === <適用範囲> ===
// 国民の祝日に関する法律(祝日法)の施行された1948(昭和23)年7月20日以降
// (振替休日は1973(昭和48)年4月12日制定・施行)
// 春分・秋分の簡易計算の出来る範囲(1851〜2150)
// 春分・秋分の日の計算は「新こよみの便利帳 」(恒星社厚生閣刊) による
// 祝日としての春分・秋分の日は閣議で決定され前年の2月の官報に公示される。
Case (
 $year>=1948 and $year<=2150 ; 

// === List() start
// +++++++++++++++++++++++++
List(   

// ● 元旦
// 元旦(1月1日)1948.07.20制定
Case($year>=1949;
 Let([
  $theDate=Date(1;1;$year);
  $hName="元旦"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 成人の日
// 成人の日(1月15日)1948.07.20制定
// 成人の日(1月第2月曜)1998.10.21制定 2000.01.01施行
Case(
$year>=2000;
 Let([
  $theDate=Date(1;15 - DayOfWeek(Date(1;6;$year));$year);
  $hName="成人の日"
 ];
  Evaluate(#getHoliday)
 )
;
$year>=1949;
 Let([
  $theDate=Date(1;15;$year);
  $hName="成人の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 建国記念の日
// 建国記念の日(2月11日)1966.6.25制定
Case($year>=1967;
 Let([
  $theDate=Date(2;11;$year);
  $hName="建国記念の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 天皇誕生日
// 令和天皇誕生日(2月23日)2019.5.1制定
// 平成天皇譲位により、2020年以降は2月23日へ変更
Case($year>2019;
   Let([
      $theDate=Date(2;23;$year);
      $hName="天皇誕生日"
   ];
      Evaluate(#getHoliday)
   )
) ;

// ● 春分の日
// 春分の日(春分日)1948.07.20制定
Case($year>=1967;
 Let([
  $theDate=#shunbun;
  $hName="春分の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 天皇誕生日
// 昭和天皇誕生日(4月29日)1948.07.20制定
Case($year>=1949 and $year<=1988;
 Let([
  $theDate=Date(4;29;$year);
  $hName="天皇誕生日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● みどりの日
// みどりの日(4月29日)1989.02.17制定
Case($year>=1989 and $year<=2006;
 Let([
  $theDate=Date(4;29;$year);
  $hName="みどりの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 昭和の日
// 昭和の日(4月29日)2005.05.20制定 2007.01.01施行
Case($year>=2007;
 Let([
  $theDate=Date(4;29;$year);
  $hName="昭和の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 即位礼正殿の儀
// 2019年以降の5月1日は即位礼正殿の儀を祝して定例化、2019年以降の呼称は未定
Case($year=2019;
 Let([
  $theDate=Date(5;1;$year);
  $hName="即位礼正殿の儀"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 憲法記念日
// 憲法記念日(5月3日)1948.07.20制定
Case($year>=1949;
 Let([
  $theDate=Date(5;3;$year);
  $hName="憲法記念日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 国民の休日
// 国民の休日 1985.12.27制定
// 国民の祝日に関する法律 第3条3項(1985.12.27施行)
// その前日及び翌日が「国民の祝日」である日は、休日とする。
// (日曜日にあたる日及び前項に規定する休日にあたる日を除く。)
// 「国民の休日」は通称名
// ※振り替え休日が優先されるので国民の休日が月曜日になることはない。
Case($year>=1986 and $year<=2006 and DayOfWeek(Date(5;4;$year))>=3;
 Let([
  $theDate=Date(5;4;$year);
  $hName="国民の休日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● みどりの日
// みどりの日(5月4日)2005.05.20制定 2007.01.01施行
Case($year>=2007;
 Let([
  $theDate=Date(5;4;$year);
  $hName="みどりの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● こどもの日
// こどもの日(5月5日)1948.07.20制定
Case($year>=1949;
 Let([
  $theDate=Date(5;5;$year);
  $hName="こどもの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 海の日
// 海の日(7月20日)1995.03.08制定 1996.01.01施行
// 海の日(7月第3月曜日)2001.06.22制定 2003.01.01施行
// 2020年と2021年は東京五輪のため日程変更
Case(
$year=2020 or $year=2021;
 Let([
  $theDate=Date(7;23-($year=2021);$year);
  $hName="海の日"
 ];
  Evaluate(#getHoliday)
 )
;
$year>=2003;
 Let([
  $theDate=Date(7;22 - DayOfWeek(Date(7;6;$year));$year);
  $hName="海の日"
 ];
  Evaluate(#getHoliday)
 )
;
$year>=1996;
 Let([
  $theDate=Date(7;20;$year);
  $hName="海の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● スポーツの日(旧名:体育の日)
// 体育の日(10月10日)1966.06.25制定
// ※Tokyoオリンピックの2020年は、7月24日へ日付変更
// 2020年以降 体育の日は、スポーツの日 に改名
Case($year=2020 or $year=2021;
 Let([
  $theDate=Date(7;24-($year=2021);$year);
  $hName="スポーツの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 山の日
// 山の日(8月11日)2014.05.23制定
Case($year>=2016;
 Let([
  $theDate=Date(8;11;$year);
  $hName="山の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 敬老の日
// 敬老の日(9月15日)1966.06.25制定
// 敬老の日(9月第3月曜日)2001.06.22制定 2003.01.01施行
Case(
$year>=2003;
 Let([
  $theDate=Date(9;22 - DayOfWeek(Date(9;6;$year));$year);
  $hName="敬老の日"
 ];
  Evaluate(#getHoliday)
 )
;
$year>=1966;
 Let([
  $theDate=Date(9;15;$year);
  $hName="敬老の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 国民の休日
// 敬老の日が第3月曜日に改正されたことにより派生
// 秋分の日が水曜日になる年
// 2009,2015,2026,2032,2037,2043,2049,2054,2060,2071,2077,
// 2088,2094,2099,2105,2111,2116,2122,2133,2139,2150...
Case(
$year>=2003 and #shuubun-2=Date(9;22-DayOfWeek(Date(9;6;$year));$year);
 Let([
  $theDate=#shuubun -1;
  $hName="国民の休日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 秋分の日
// 秋分の日(秋分日)1948.07.20制定
Let([
 $theDate=#shuubun;
 $hName="秋分の日"
];
 Evaluate(#getHoliday)
) ;

// ● 体育の日
// 体育の日(10月10日)1966.06.25制定
// 体育の日(10月第2月曜日)1998.10.21制定 2000.01.01施行
// Tokyoオリンピックの2020年以降は、スポーツの日 に変更され廃止
Case(
$year>=2000 and $year<2020 ;
 Let([
  $theDate=Date(10;15 - DayOfWeek(Date(10;6;$year));$year);
  $hName="体育の日"
 ];
  Evaluate(#getHoliday)
 )
;
$year>=1966 and $year<2000;
 Let([
  $theDate=Date(10;10;$year);
    $hName="体育の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● スポーツの日(旧名:体育の日)
// 体育の日(10月10日)1966.06.25制定
// 体育の日(10月第2月曜日)1998.10.21制定 2000.01.01施行
// ※Tokyoオリンピックの2020年は、7月24日へ日付変更
// 2020年以降 体育の日は、スポーツの日 に改名
Case(
$year=2020 or $year=2021; ""    // 7月の位置へ移動してある。
;
$year>=2020 ;
 Let([
  $theDate=Date(10;15 - DayOfWeek(Date(10;6;$year));$year);
  $hName="スポーツの日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 文化の日
// 文化の日(11月3日)1948.07.20制定
Case($year>=1948;
 Let([
  $theDate=Date(11;3;$year);
  $hName="文化の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 勤労感謝の日
// 勤労感謝の日(11月23日)1948.07.20制定
Case($year>=1948;
 Let([
  $theDate=Date(11;23;$year);
  $hName="勤労感謝の日"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 天皇誕生日
// 平成天皇誕生日(12月23日)1989.02.17制定
// 2019年以降は天皇譲位に伴い廃止
Case($year>=1989 and $year<2019;
   Let([
      $theDate=Date(12;23;$year);
      $hName="天皇誕生日"
   ];
      Evaluate(#getHoliday)
   )
) ;

// ● 皇太子明仁親王の結婚の儀
// 皇太子明仁親王の結婚の儀(昭和34年4月10日)
Case($year=1959;
 Let([
  $theDate=Date(4;10;$year);
  $hName="皇太子明仁親王の結婚の儀"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 昭和天皇の大喪の礼
// 昭和天皇の大喪の礼(平成元年2月24日)
Case($year=1989;
 Let([
  $theDate=Date(2;24;$year);
  $hName="昭和天皇の大喪の礼"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 即位礼正殿の儀
// 即位礼正殿の儀(平成2年11月12日)
Case($year=1990;
 Let([
  $theDate=Date(11;12;$year);
  $hName="即位礼正殿の儀"
 ];
  Evaluate(#getHoliday)
 )
) ;

// ● 皇太子徳仁親王の結婚の儀
// 皇太子徳仁親王の結婚の儀(平成5年6月9日)
Case($year=1993;
 Let([
  $theDate=Date(6;9;$year);
  $hName="皇太子徳仁親王の結婚の儀"
 ];
  Evaluate(#getHoliday)
 )
) 

)   // === List() end ===

)    // === Holiday List end ===

] ;  // === Let end ===

 #holidayList      // 最終結果リスト
) 

/*=======================================================
CopyRight©2020 by Hiro
<https://fm-aid.com/bbs2/profile.php?section=essentials&id=3> 
=======================================================*/

Last edited by Hiro (2020-10-06 04:19:17)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 604.46 KiB (Peak: 687.15 KiB) ]