{
This sample code is presented as is.
Although every reasonable effort has been
made to insure the soundness of the example
below, Idioma Software inc. makes no warranty
of any kind with regard to this program sample
either implicitly or explicitly.
This program example may be freely distributed for the
use of writing computer programs only. Any other use of
this material requires written permission from Idioma Software inc.
(c) 1997 Idioma Software inc. All rights reserved.
}
{
This example shows how to use the Mod operator.
}
Procedure ModEx;
{Author Jon Vote 11/97}
var i,j : integer;
year : word;
isLeapYear : boolean;
begin
{
The modulo (Mod) operator returns the remainder when divided by.
This can be used to repeat a range of numbers over and over or to map
a large number within a range of smaller numbers:
}
for i := 1 to 1000 do
j := ( i mod 60); {j will go from 0 to 59, 0 to 59 - etc.}
{
Add a constant to range between something other than 0
}
for i := 1 to 1000 do
j := (i mod 12) + 1; {j will go from 1 to 12, 1 to 12 - etc.}
{
You can map numbers to a range - for example
convert a number greater than 360 to an angle in degrees
}
for i := 360 to 10000 do
j := i mod 360; {j will always be a valid angle}
{
Perhaps the most common use is determining leap year.
A leap year is any year divisible by 4 except for years divisible by
100 and not by 400.
}
year := 2024; {put whatever value you like here}
{If year mod 4 is 0, the year is divisible by 4}
if year mod 4 = 0 then {might be a leap year}
{if year mod 100 is 0, the year is divisible by 100}
if year mod 100 = 0 then
{if year mod 400 is 0, the year is divisible by 400}
if year mod 400 = 0 then
isLeapYear := true {This is a millennium leap year}
else {Wasn't divisible by 400 here - not a leap year}
isLeapYear := false
else {was divisible by 4 but not 100. It's as leap year as apple pie.}
isLeapYear := true
else {year mod 4 was not 0 - Can't be a leap year}
isLeapYear := false;
if isLeapYear then
ShowMessage(IntToStr(year) + ' it''s a leap year mattie.')
else
ShowMessage(IntToStr(year) + ' ain''t no leap year me bucko.');
end;