home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / misc / summertime / Summertime (.txt) < prev   
Encoding:
RISC OS BBC BASIC V Source  |  1995-06-20  |  3.0 KB  |  117 lines

  1.  Summertime  1.1 (20-Jun-95)
  2.  Carlos Michael Santill
  3.  Summertime sets the daylight saving time automatic on or off.
  4.  Public Domain, but make sure, that everyone can change
  5.  the program, so do not use an BASIC-compressor or compiler
  6.  Daylight saving time on: last sunday in March
  7.  Daylight saving time off: till 1995 last sunday in September,
  8.    later then 1995 last suntime day in October
  9.  Attention! In UK and Ireland daylight saving time ends 1995 at
  10.    the last sunday in October, so you have to change in line 62
  11.    the year 1996 to 1995.
  12.  blk% 6
  13.  monlen%(12)
  14.  on$ = "'OK' sets the daylight saving time on."
  15.  off$ = "'OK' sets the daylight saving time off."
  16. *on$ = "'OK' stellt die Sommerzeit an."
  17. ,off$ = "'OK' stellt die Sommerzeit aus."
  18.  --- Read date ---
  19. ?blk% = 1
  20.  "OS_Word", 14, blk%
  21. +yn% = 
  22. (blk%?0 / 16) * 10 + blk%?0 
  23.  yn% < 80 
  24.  yn% += 100
  25. yn% += 1900
  26. +mn% = 
  27. (blk%?1 / 16) * 10 + blk%?1 
  28.  +dn% = 
  29. (blk%?2 / 16) * 10 + blk%?2 
  30.  --- Length of months ---
  31.  i% = 1 
  32.  monlen%(i%)
  33.  yn% 
  34.  4 = 0 
  35.   monlen%(2) = 29
  36.  yn% 
  37.  100 = 0 
  38.     monlen%(2) = 28
  39.  yn% 
  40.  400 = 0 
  41.       monlen%(2) = 29
  42. -        
  43.  --- Number of today since January 1 ---
  44. nn% = 
  45. daynum(dn%, mn%)
  46.  --- Begin of summertime ---
  47.  last sunday in March
  48. mb% = 3
  49. 7"db% = 31 - 
  50. weekday(31, 3) + 1
  51. nb% = 
  52. daynum(db%, mb%)
  53.  --- End of summertime ---
  54.  last sunday in October since 1996
  55.  last sunday in September till 1995
  56.  for UK and Ireland change the year 1996 to 1995
  57.  yn% >= 1996 
  58.   me% = 10
  59. @%  de% = 31 - 
  60. weekday(31, 10) + 1
  61.   me% = 9
  62. C$  de% = 30 - 
  63. weekday(30, 9) + 1
  64. ne% = 
  65. daynum(de%, me%)
  66.  --- Check summertime ---
  67.  "OS_Byte", 161, 220 
  68.  , , cm%
  69.  (cm% 
  70.  128) = 0 
  71.   st% = 0
  72.   st% = -1
  73.  --- Set summertime/wintertime ---
  74.  nn% >= nb% 
  75.  nn% < ne% 
  76.  st% 
  77. message (on$) = 1 
  78. S-      
  79.  "OS_Byte", 162, 220, (cm% 
  80.  128)
  81. T        
  82.  st% 
  83. message (off$) = 1 
  84. Y-      
  85.  "OS_Byte", 162, 220, (cm% 
  86.  128)
  87. Z        
  88.  --- End ---
  89.  --- Day since January 1 ---
  90. daynum(dd%,mm%)
  91.  i%, j%
  92.   j% = 0
  93.   i% = 1
  94.  i% < mm%
  95.     j% += monlen%(i%)
  96.     i% += 1
  97. = j%+dd%
  98.  --- Day of week (sunday = 1) ---
  99. weekday(dd%, mm%)
  100. p;  i = (yn% - 1) * 365 + (yn% - 1) / 4 - (yn% - 1) / 100
  101. q2  i += (yn% - 1) / 400 + 
  102. daynum(dd%, mm%) - 1
  103. (i + 1) 
  104.  7) + 1
  105.  --- Output message ---
  106.  Returns 1 = OK or 2 = Cancel
  107. message(msg$)
  108.  blk%, result%
  109.  blk% 256
  110.   blk%!0 = 999
  111.   $(blk%+4) = msg$ + 
  112.  "Wimp_ReportError", blk%, 19 ,"Summertime" 
  113.  , result%
  114. = result%
  115.  --- Length of months ---
  116.  31,28,31,30,31,30,31,31,30,31,30,31
  117.