http://FMPro.info  FileMaker Pro 関連総合ポータルサイト

workday 関数

カテゴリー : 日付
計算結果のデータタイプ : 数字
対応FileMakerバージョン : 対応 7  対応 8  対応 8.5  対応 9  対応 10  対応 11  未対応 12  未対応 13  未対応 14  未対応 15
作者 : 平松晋介 http://homepage.mac.com/hiramatsu

概要

与えられた日が休日であれば 0 を、それ以外ならば 1 を返します。

構文

workday ( calcdate ; regularHoliday ; halfHoliday ; halfHoliday1 ; halfHoliday2 ; halfHoliday3 ; halfHoliday4 ; halfHoliday5 ; mayDay )

引数

引数名タイプ備考
calcdate日付 2005.01.01
regularHoliday数字各週の休み(日曜日=1;月曜日=2;...土曜日=7)1
halfHoliday数字隔週休み等の設定(日曜日=1;月曜日=2;...土曜日=7)7
halfHoliday1数字第1週のhalfHoliday指定曜日(0=休日;1=出社)1
halfHoliday2数字第2週のhalfHoliday指定曜日(0=休日;1=出社)0
halfHoliday3数字第3週のhalfHoliday指定曜日(0=休日;1=出社)1
halfHoliday4数字第4週のhalfHoliday指定曜日(0=休日;1=出社)0
halfHoliday5数字第5週のhalfHoliday指定曜日(0=休日;1=出社)0
mayDay数字メーデー(5月1日)の設定(0=休日;1=出社)0

別のウィンドウで、引数の値を変更してテストすることが出来ます

workday ( "2005.01.01" ; 1 ; 7 ; 1 ; 0 ; 1 ; 0 ; 0 ; 0 )

結果

0

Case (

Year ( calcdate ) < 1948 ; "" ;

Year ( calcdate )
2100 ; "" ;



/*元日と3が日*/



Month ( calcdate ) = 1 and
Day ( calcdate ) = 1 ; 0 ;

Month ( calcdate ) = 1 and
Day ( calcdate ) = 2 ; 0 ;

Month ( calcdate ) = 1 and
Day ( calcdate ) = 3 ; 0 ;



/*成人の日*/



Month ( calcdate ) = 1 and
Year ( calcdate ) < 2000 and Day ( calcdate ) = 15 ; 0 ;

Month ( calcdate ) = 1 and
Year ( calcdate ) > 1973 and Year ( calcdate ) < 2000 and Day ( calcdate ) = 16 and DayOfWeek ( calcdate ) = 2 ; 0 ;

Month ( calcdate ) = 1 and
Year ( calcdate ) > 1999 and Int ( ( Day ( calcdate ) + 6 ) / 7 ) = 2 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*建国記念の日*/



Month ( calcdate ) = 2 and
Day ( calcdate ) = 11 and Year ( calcdate ) 1966 ; 0 ;

Month ( calcdate ) = 2 and
Day ( calcdate ) = 12 and Year ( calcdate ) 1974 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*昭和天皇の大喪の礼*/



Month ( calcdate ) = 2 and
Day ( calcdate ) = 24 and Year ( calcdate ) = 1989 ; 0 ;



/*春分の日*/



Month ( calcdate ) = 3 and
Year ( calcdate ) < 1980 and Day ( calcdate ) = Int ( 20.8357 + .242194* ( Year ( calcdate ) - 1980 ) - Int ( ( Year ( calcdate ) - 1983 ) / 4 ) ) ; 0 ;

Month ( calcdate ) = 3 and
Year ( calcdate ) < 1979 and Year ( calcdate ) > 1973 and Day ( calcdate ) = Int ( 20.8357 + .242194* ( Year ( calcdate ) - 1980 ) - Int ( ( Year ( calcdate ) - 1983 ) / 4 ) ) + 1 and DayOfWeek ( calcdate ) = 2 ; 0 ;

Month ( calcdate ) = 3 and
Year ( calcdate ) < 2100 and Day ( calcdate )  = Int ( 20.8431 + .242194* ( Year ( calcdate ) - 1980 ) - Int ( ( Year ( calcdate ) - 1980 ) / 4 ) ) ; 0 ;

Month ( calcdate ) = 3 and
Year ( calcdate ) < 2100 and Year ( calcdate ) > 1973 and Day ( calcdate ) = Int ( 20.8431 + .242194* ( Year ( calcdate ) - 1980 ) - Int ( ( Year ( calcdate ) - 1980 ) / 4 ) ) + 1 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*天皇誕生日 (昭和天皇)、みどりの日、昭和の日*/



Month ( calcdate ) = 4 and
Day ( calcdate ) = 29 ; 0 ;

Month ( calcdate ) = 4 and
Day ( calcdate ) = 30 and Year ( calcdate ) > 1972 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*メーデー*/



Month ( calcdate ) = 5 and
Day ( calcdate ) = 1 and mayDay = 0 ; 0 ;



/*文化の日*/



Month ( calcdate ) = 5 and
Day ( calcdate ) = 3 ; 0 ;



/*休日、みどりの日*/



Month ( calcdate ) = 5 and
Year ( calcdate ) > 1984 and Day ( calcdate ) = 4 ; 0 ;

Month ( calcdate ) = 5 and
Year ( calcdate ) > 1972 and Day ( calcdate ) = 4 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*こどもの日*/



Month ( calcdate ) = 5 and
Day ( calcdate ) = 5 ; 0 ;

Month ( calcdate ) = 5 and
Year ( calcdate ) > 1972 and Day ( calcdate ) = 6 and DayOfWeek ( calcdate ) = 2 ; 0 ;

Month ( calcdate ) = 5 and
Year ( calcdate ) > 2005 and Day ( calcdate ) = 6 and DayOfWeek ( calcdate ) = 3 ; 0 ;

Month ( calcdate ) = 5 and
Year ( calcdate ) > 2005 and Day ( calcdate ) = 6 and DayOfWeek ( calcdate ) = 4 ; 0 ;



/*皇太子徳仁親王の結婚の儀*/



Month ( calcdate ) = 6 and
Day ( calcdate ) = 9 and Year ( calcdate ) = 1993 ; 0 ;



/*海の日*/



Month ( calcdate ) = 7 and
Day ( calcdate ) = 20 and Year ( calcdate ) 1996 and Year ( calcdate ) < 2003 ; 0 ;

Month ( calcdate ) = 7 and
Int ( ( Day ( calcdate ) + 6 ) / 7 ) = 3 and Year ( calcdate ) > 2002 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*敬老の日*/



Month ( calcdate ) = 9 and
Year ( calcdate ) < 2003 and Day ( calcdate ) = 15 ; 0 ;

Month ( calcdate ) = 9 and
Year ( calcdate ) > 1972 and Year ( calcdate ) < 2003 and Day ( calcdate ) = 16 and DayOfWeek ( calcdate ) = 2 ; 0 ;

Month ( calcdate ) = 9 and
Year ( calcdate ) > 2002 and Int ( ( Day ( calcdate ) + 6 ) / 7 ) = 3 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*秋分の日*/



Month ( calcdate ) = 9 and
Year ( calcdate ) < 1980 and Day ( calcdate ) = Int ( 23.2588 + .242194* ( Year ( calcdate ) - 1980 ) - Int ( ( Year ( calcdate ) - 1983 ) / 4 ) ) ; 0 ;

Month ( calcdate ) = 9 and
Year ( calcdate ) < 1980 and Year ( calcdate ) > 1973 and Day ( calcdate ) = Int ( 23.2588 + .242194* ( Year ( calcdate ) - 1980 ) - Int ( ( Year ( calcdate ) - 1983 ) / 4 ) ) + 1 and DayOfWeek ( calcdate ) = 2 ; 0 ;

Month ( calcdate ) = 9 and
Year ( calcdate ) < 2100 and Day ( calcdate ) = Int ( 23.2488 + .242194* ( Year ( calcdate ) - 1980 ) - Int ( ( Year ( calcdate ) - 1980 ) / 4 ) ) ; 0 ;

Month ( calcdate ) = 9 and
Year ( calcdate ) < 2100 and Year ( calcdate ) > 1973 and Day ( calcdate ) = Int ( 23.2488 + .242194* ( Year ( calcdate ) - 1980 ) - Int ( ( Year ( calcdate ) - 1980 ) / 4 ) ) + 1 and DayOfWeek ( calcdate ) = 2 ; 0 ;

Month ( calcdate ) = 9 and
Year ( calcdate ) < 2100 and Year ( calcdate ) > 1984 and Day ( calcdate ) = Int ( 23.2488 + .242194* ( Year ( calcdate ) - 1980 ) - Int ( ( Year ( calcdate ) - 1980 ) / 4 ) ) - 1 and DayOfWeek ( calcdate ) = 3 ; 0 ;



/*体育の日*/



Month ( calcdate ) = 10 and
Year ( calcdate ) < 2000 and Day ( calcdate ) = 10 ; 0 ;

Month ( calcdate ) = 10 and
Year ( calcdate ) > 1972 and Year ( calcdate ) < 2000 and Day ( calcdate ) = 11 and DayOfWeek ( calcdate ) = 2 ; 0 ;

Month ( calcdate ) = 10 and
Year ( calcdate ) > 1999 and Int ( ( Day ( calcdate ) + 6 ) / 7 ) = 2 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*憲法記念日*/



Month ( calcdate ) = 11 and
Day ( calcdate ) = 3 ; 0 ;

Month ( calcdate ) = 11 and
Year ( calcdate ) > 1972 and Day ( calcdate ) = 4 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*即位礼正殿の儀*/



Month ( calcdate ) = 11 and
Year ( calcdate ) = 1990 and Day ( calcdate ) = 12 ; 0 ;



/*勤労感謝の日*/



Month ( calcdate ) = 11 and
Day ( calcdate ) = 23 ; 0 ;

Month ( calcdate ) = 11 and
Year ( calcdate ) > 1972 and Day ( calcdate ) = 24 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*天皇誕生日*/



Month ( calcdate ) = 12 and
Year ( calcdate ) > 1988 and Day ( calcdate ) = 23 ; 0 ;

Month ( calcdate ) = 12 and
Year ( calcdate ) > 1988 and Day ( calcdate ) = 24 and DayOfWeek ( calcdate ) = 2 ; 0 ;



/*年末休暇*/



Month ( calcdate ) = 12 and
Day ( calcdate ) = 29 ; 0 ;

Month ( calcdate ) = 12 and
Day ( calcdate ) = 30 ; 0 ;

Month ( calcdate ) = 12 and
Day ( calcdate ) = 31 ; 0 ;



/*定休日*/



DayOfWeek ( calcdate ) = regularHoliday ; 0 ;



/*半ドン*/



DayOfWeek ( calcdate ) = halfHoliday ;

Case (

Day ( calcdate )
  7 ; halfHoliday1 ;

Day ( calcdate )
14 ; halfHoliday2 ;

Day ( calcdate )
21 ; halfHoliday3 ;

Day ( calcdate )
28 ; halfHoliday4 ;

halfHoliday5

) ;

1

)

エンコードは Unicode (UTF-8)、改行タイプは LF (Unix) 形式のテキストとして保存します。
テキストエディタで正常に開かない場合は、エンコードを指定してファイルを開くようにしてください。

詳細説明

1949年より2099年までの、与えられた日が休日であれば 0 を、それ以外ならば 1 を返します。
1948年以前、2100年以降は、null が返ります。

regularHoliday : 各週の休みを設定します。 日曜日=1 月曜日=2 ... 土曜日=7
halfHoliday : 隔週休み等の設定を行います。 (日曜日=1 月曜日=2 ... 土曜日=7) どの週を休みに設定するかは、次の引数で設定します。
halfHoliday1 : 数値 第1週のhalfHoliday指定曜日 出社=1 休日=0
halfHoliday2 : 数値 第2週のhalfHoliday指定曜日 出社=1 休日=0
halfHoliday3 : 数値 第3週のhalfHoliday指定曜日 出社=1 休日=0
halfHoliday4 : 数値 第4週のhalfHoliday指定曜日 出社=1 休日=0
halfHoliday5 : 数値 第5週のhalfHoliday指定曜日 出社=1 休日=0
  上記の設定例では、第1第3土曜日は仕事日、第2第4第5土曜日は休日です。

mayDay:メーデー(5月1日)の設定を行います。メーデーが休日でしたら、0 を設定してください。5月1日が休日でなければ、1 を設定してください。

また、年末年始は、官公庁に合わせ、12月29日より1月3日までが休日になります。
Month(calcdate) = 1 and Day(calcdate) = 1; 0;
Month(calcdate) = 1 and Day(calcdate) = 2; 0;
Month(calcdate) = 1 and Day(calcdate) = 3; 0;
Month(calcdate) = 12 and Day(calcdate) = 29; 0;
Month(calcdate) = 12 and Day(calcdate) = 30; 0;
Month(calcdate) = 12 and Day(calcdate) = 31; 0;
の各行を、必要に合わせて変更してください。

祝日は、2005年末現在の祝日法を参考にしています。今後の法律改正により、休日が変更される事があります。

春分の日、秋分の日は、2099年まで、天文学上の春分日・秋分日として計算していますが、法律上は官報(前年の2月1日発行)で広報され、公式な休日となります。必ず確認してください。

この関数が使用する他のカスタム関数

この関数を使用する他のカスタム関数

注意:ここで紹介されているカスタム関数をご自分のシステムに組み込んだ場合に発生した問題についてはFMPro.infoは責任を負いません。

Copyright © 2004-2009 FMPro.info All Rights Reserved.