BATファイルのサブルーチンで閏年を判定する
※これはコマンドプロンプトアドベントカレンダーの記事ではありません
※なんだかシェル芸界隈で流行っているようだったのでBATファイルで参戦
サブルーチン本体
: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を設定します。
試してみましょう
@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
出力
2000 is LEAP 2012 is LEAP 1100 is NOT LEAP 続行するには何かキーを押してください . . .
こんな感じで。