いいのです。よくあることなのです。
マニュアルにも書いてありました。12月の次が1月であるという保証はない、と。
しかし動いていたんです。v13.3までは。
Date(‘2014/13/1″)
v13.3までは、このコードは2015年1月1日を返してくれていました。それがv13.4でDate関数が大幅に変更になりました。このとき動きがマニュアル通りになりました。13月という月は無いのだと。プログラマが制御せよと。
問題はその月の最後の日を返すところで起こりました。次の月の1日から1日引いて求めます。正解は次です。
C_LONGINT($1;$year)
$year:=$1
C_LONGINT($2;$month)
$month:=$2
C_DATE($0;$date)
$date:=Date(String($year)+”/”+String($month)+”/”+String(1)) //当月の1日
$date:=Add to date($date;0;1;0) //翌月の1日
$date:=Add to date($date;0;0;-1) //当月の末日
$0:=$date