program ZEL_CMJD ; {$IFNDEF ver70} uses SysUtils ; {$ENDIF} { Program is Pascal-compatible, any version should do } function ZelCMJD(Y, M, D : longint) : longint ; begin { Fast. y += 7e8, result -= ..., 153 = 13 + 5*28 } if M<3 then begin Inc(M, 12) ; Dec(Y) end ; ZelCMJD := -678973 + D + (M*153-2) div 5 + Y*365 + Y div 4 - Y div 100 + Y div 400 end {ZelCMJD} ; var J, K : longint ; Y, M, D : word ; BEGIN ; Writeln(' ZEL_CMJD Pascal/Delphi (c) www.merlyn.demon.co.uk >= 2004-05-14') ; Writeln(' ZelCMJD(1858, 11, 17) = ', ZelCMJD(1858, 11, 17)) ; Writeln(' ZelCMJD(1995, 10, 10) = ', ZelCMJD(1995, 10, 10)) ; {$IFNDEF ver70 } Writeln ; for J := 0 to 150000 { > 400 years } do begin if J mod 256 = 0 then Write(#13, J) ; DecodeDate(J-15018, Y, M, D) ; K := ZelCMJD(Y, M, D) ; if J<>K then writeln(J:12, Y:8, M:3, D:3, K:10) ; end ; Writeln(#13' Test complete') ; {$ENDIF} END.