(view source code of yesterday.kix as plain text)
; Yesterday.kix, Version 1.00
; Display today's and yesterday's date in two formats
; Written by Rob van der Woude
; http://www.robvanderwoude.com
; Today's date in YYYYMMDD format
$SortDate = ( 10000 * @YEAR ) + ( 100 * @MONTHNO ) + @MDAYNO
; Calculate yesterday's date
$YesterD = @MDAYNO - 1
$YesterM = @MONTHNO
$YesterY = @YEAR
; It gets tricky when today is the first day of the month
IF $YesterD = 0
GOSUB RollMonth
ENDIF
; Yesterday's date in YYYYMMDD format
$SortYest = ( 10000 * $YesterY ) + ( 100 * $YesterM ) + $YesterD
; Display the results
? "Format: YYYYMMDD (DD/MM/YYYY)"
? "=================================="
? "Today: $SortDate (@MDAYNO/@MONTHNO/@YEAR)"
? "Yesterday: $SortYest ($YesterD/$YesterM/$YesterY)"
?
; Done
EXIT
; * * * * * * * * Subroutines * * * * * * * *
; Subroutine to get yesterday's date if today is the first day of the month
:RollMonth
$YesterM = $YesterM - 1
SELECT
CASE $YesterM = 0 ; Today is January 1st
$YesterD = 31
$YesterM = 12
$YesterY = @YEAR - 1
CASE $YesterM = 1 ; Today is February 1st
$YesterD = 30
CASE $YesterM = 2 ; Today is March 1st
$YesterD = 28
GOSUB LeapYear
CASE $YesterM = 3 ; Today is April 1st
$YesterD = 31
CASE $YesterM = 4 ; Today is May 1st
$YesterD = 30
CASE $YesterM = 5 ; Today is June 1st
$YesterD = 31
CASE $YesterM = 6 ; Today is July 1st
SET YesterD=30
CASE $YesterM = 7 ; Today is August 1st
$YesterD = 31
CASE $YesterM = 8 ; Today is September 1st
$YesterD = 31
CASE $YesterM = 9 ; Today is October 1st
$YesterD = 30
CASE $YesterM = 10 ; Today is November 1st
$YesterD = 31
CASE $YesterM = 11 ; Today is December 1st
$YesterD = 30
ENDSELECT
RETURN
; Subroutine to calculate if this year is a leap year
; (I am not sure if the century calculations are right)
:LeapYear
; If the year divisable by 4 then it is a leap year . . .
$LeapYear = ( @YEAR / 4 ) * 4
IF $LeapYear = @YEAR
$YesterD = 29
ENDIF
; . . . unless it is also divisible by 100 . . .
$LeapYear = ( @YEAR / 100 ) * 100
IF $LeapYear = @YEAR
$YesterD = 28
ENDIF
; . . . but when it is divisible by 400 it is a leap year again (?)
$LeapYear = ( @YEAR / 400 ) * 400
IF $LeapYear = @YEAR
$YesterD = 29
ENDIF
RETURN
page last modified: 2024-04-16; loaded in 0.0071 seconds