※これはコマンドプロンプトアドベントカレンダーの記事ではありません※なんだかシェル芸界隈で流行っているようだったのでBATファイルで参戦

サブルーチン本体

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
:IS_LEAP
	rem 年が400で割り切れると閏年
	set /a rest = %1 %% 400
	if %rest%==0 exit /b 0

	rem 年が100で割り切れると閏年ではない
	set /a rest = %1 %% 100
	if %rest%==0 exit /b 1

	rem 年が4で割りきれると閏年
	set /a rest = %1 %% 4
	if %rest%==0 exit /b 0
exit /b 1

閏年の場合、ERRORLEVELに0を、そうでない場合は1を設定します。

試してみましょう

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@echo off

set YEAR=2000
call :IS_LEAP %YEAR%
if errorlevel 1 (echo %YEAR% is NOT LEAP) else (echo %YEAR% is LEAP)
echo.


set YEAR=2012
call :IS_LEAP %YEAR%
if errorlevel 1 (echo %YEAR% is NOT LEAP) else (echo %YEAR% is LEAP)
echo.


set YEAR=1100
call :IS_LEAP %YEAR%
if errorlevel 1 (echo %YEAR% is NOT LEAP) else (echo %YEAR% is LEAP)
echo.


pause

goto :eof

:IS_LEAP
	rem 年が400で割り切れると閏年
	set /a rest = %1 %% 400
	if %rest%==0 exit /b 0

	rem 年が100で割り切れると閏年ではない
	set /a rest = %1 %% 100
	if %rest%==0 exit /b 1

	rem 年が4で割りきれると閏年
	set /a rest = %1 %% 4
	if %rest%==0 exit /b 0
exit /b 1

出力

1
2
3
4
5
6
7
2000 is LEAP

2012 is LEAP

1100 is NOT LEAP

続行するには何かキーを押してください . . .

こんな感じで。