FastRS V02.13 (17 Mar 96) Copyright © 1993-96 by William K. Walker
"Fundware" from North Valley Digital. (FastRS runs under MS-DOS. A Windows version is "pending.")

FastRS produces a listing of the sunrise/sunset times for the Bahá'í Fast. It needs to know your location name, latitude, longitude, year and time zone (EST = 5, PST = 8, etc.). Here is an example for Kalispell, Montana, USA:

Location: Kalispell, MT
Latitude: 48 11 45 N
Longitude: 114 18 47 W
Time Zone: 7
Year: 1995

FastRS will create a file named FASTyyy.LST ("yyy" is the Bahá'í year) containing the sunrise/sunset table. In the example above, the file would be named FAST151.LST.

If you want times in 24-hour format, type FASTRS /24.

See the program documentation for more details.

(Do you want to know when this page is updated? You can register for automatic update notification via email.)


Download FastRS from this site. (fastrs21.zip; 40,305 bytes)
Download FastRS from the BCCA archives. (fastrs21.exe; self-extracting executable; 55,654 bytes)

Return to NVDi Home Page
Go to Bill Walker's Home Page


Top

FastRS Program Documentation (also included in the FastRS distribution):

Overview and Introduction
Installation
Running the Program
Money
Credits
Author! Author!
Tech Notes and Other Goodies


Top or Table of Contents

                              F A S T R S

     A program to calculate sunrise and sunset for the Bahá'í Fast
              Copyright (c) 1993 - 96 by William K. Walker
                         V02.13, 17 March 1996


Overview and Introduction
=========================

FASTRS is a fairly simple program that calculates sunrise and sunset 
times for the period of the Bahá'í Fast. Once you have entered the 
necessary information, FASTRS writes the sunrise/sunset table to a file. 
At that point, you can print it out or you can use your favorite text 
editor or viewer to browse it.

FASTRS asks for the following information in order to calculate sunrise 
and sunset for your location:

     o  a location description,
     o  the local latitude and longitude,
     o  the year and
     o  the time zone.

The location description is just that: a short description of the 
location for which you are calculating the sunrise and sunset times. 
(Example: Kalispell, MT)

Latitude and longitude are the map coordinates that tell FASTRS where 
you are on the globe. Latitude describes your distance from the Equator. 
You must enter four pieces of information to specify your latitude: 
degrees, minutes, seconds and direction (north or south) from the 
Equator. Longitude works like latitude, except it tells FASTRS how far 
you are to the east or west of the Prime Meridian, a north-south line 
running through the Greenwich Observatory in London, England. So, 
longitude is also entered as degrees, minutes and seconds, but the 
direction is either east or west. For example, my home in Kalispell, MT 
is north of the Equator and west of London, so its latitude and 
longitude look like this when I enter them into the FASTRS program:

             48 11 45 N
            114 18 47 W

See the "Tech Notes" section for suggestions on how to find your local 
map coordinates.

The year can be entered as the 4-digit Julian year or the 3-digit Bahá'í
year. In either case, the range is limited to a 100-year span from
1980/136BE through 2080/236BE. Thus, if you wanted sunrise and sunset 
times for 1995, you would enter either 1995 or 151.

The time zone is the number of hours that need to be added to your local 
time to convert it to Greenwich Mean Time (GMT). GMT is also known as 
Universal Coordinated Time. In either case, it means the time at the 
Greenwich Observatory in London. For example, if you live in the United 
States Mountain Standard Time Zone (MST), you must add 7 hours to your 
local time to convert it to GMT. Thus, you would enter 7 when FASTRS 
asks for the time zone. If you live on the West Coast, you would add 8 
hours; if you live in Darwin, Australia, you would subtract 9.5 hours 
(i.e., you would enter -9.5); and so forth.

Once you've figured all this stuff out and given it to the program, 
FASTRS will produce an output file named FASTyyy.LST. The "yyy" part is 
the Bahá'í year. If you entered 1995 (or 151) as the year, the file 
would be named FAST151.LST.


Top or Table of Contents

Installation
============

If You Received FASTRS On Diskette
----------------------------------
The easiest way to install FASTRS is to create a directory for it and 
dump all the program files into it. If you received FASTRS on diskette, 
something like the following commands ought to do the trick (assuming C 
is your hard drive and A is your diskette):

          md c:\fastrs
          copy a:\*.* c:\fastrs\*.*

If You Downloaded FASTRS From Another Computer
----------------------------------------------
First, create a directory for the FASTRS distribution files, then copy 
the FASTRS archive file into the directory you just created and expand 
the archive. If the archive is "self-extracting" (FAST21.EXE or 
FASTRS21.EXE), the command sequence should look something like this 
(assuming your hard drive is drive C):

          md c:\fastrs
          copy fastrs21.exe c:\fastrs\*.*
          cd c:\fastrs
          fastrs21

Once this is done, you may delete the original archive file if you wish.

If the BBS repackaged the FASTRS files into a different type of archive 
file, you may need to run a separate archiving program to retrieve the 
files. In this case, the archive will be named something like 
FASTRS21.ZIP or FASTRS21.ARC. The command sequence to create a directory 
and retrieve the files is very similar to the example above. Here is a 
typical set of commands for a ZIP archive:

          md c:\fastrs
          copy fastrs21.zip c:\fastrs\*.*
          cd c:\fastrs
          pkunzip fastrs21

Once this is done, you may delete the original archive file if you wish.


Top or Table of Contents

Running the Program
===================

To run FASTRS, switch to the directory containing it, and type the 
program's name. For example:

          cd c:\fastrs
          fastrs

Or, if you want the times to come out in 24-hour format (e.g., 18:00 
instead of 6:00PM), type

          fastrs /24

and answer the prompts. The information FASTRS needs is described in the 
"Introduction and Overview" section above.

Here's what a program run looks like for my place in Kalispell, Montana:


       FASTRS V02.13  -- Calculates sunrise/sunset for Bahá'í Fast
       Type FASTRS ? for help.


     Location: Kalispell, MT
     Latitude: 48 11 45 N
     Longitude: 114 18 47 W
     Year: 151
     Time Zone: 7

     Working...
     Writing sunrise/sunset times to FAST151.LST...


Note: It could take a while for FASTRS to compute all the sunrise/sunset 
times. It finishes almost instantly on my big development system, but it 
takes about 20 seconds on the old AT clone in the other room. (For you 
propeller-heads out there, the "slow" machine is a 10MHz 80286; the fast 
one is a 120Mhz 80486.) Beta tester Mark Foster reported 24 seconds on 
his AT-class machine.

Anyway, once FASTRS is done, it writes the sunrise/sunset times to a 
table in a file. In the example above, the file is named FAST151.LST. At 
this point, I could print it out by typing

          copy fast151.lst prn

Top or Table of Contents

Here's what the printout would look like:


  FASTRS   V02.13    Copyright (c) 1993-96 by William K. Walker

   Location: Kalispell, MT
   Latitude:  48° 11' 45.00" N
  Longitude: 114° 18' 47.00" W
  Time Zone: GMT-7




             Sunrise/Sunset Times, Bahá'í Fast -- 151BE (1995)


                  `Alá      March     Sunrise     Sunset
                  ----      -----     -------     ------

                    1   Thu   2        7:17AM     6:23PM

                    2   Fri   3        7:15AM     6:24PM

                    3   Sat   4        7:13AM     6:26PM

                    4   Sun   5        7:11AM     6:27PM

                    5   Mon   6        7:09AM     6:29PM

                    6   Tue   7        7:07AM     6:30PM

                    7   Wed   8        7:05AM     6:32PM

                    8   Thu   9        7:03AM     6:33PM

                    9   Fri  10        7:01AM     6:35PM

                   10   Sat  11        6:59AM     6:36PM

                   11   Sun  12        6:57AM     6:38PM

                   12   Mon  13        6:55AM     6:39PM

                   13   Tue  14        6:53AM     6:41PM

                   14   Wed  15        6:51AM     6:42PM

                   15   Thu  16        6:49AM     6:44PM

                   16   Fri  17        6:47AM     6:45PM

                   17   Sat  18        6:45AM     6:47PM

                   18   Sun  19        6:43AM     6:48PM

                   19   Mon  20        6:41AM     6:50PM


Top or Table of Contents

Money
=====

This software is (ahem) "fundware." If you find it useful, send a 
contribution to one of the Bahá'í Funds when you get a chance, or add a 
little to your normal contribution. I don't care which fund gets the 
money, or how much you send -- your judgment is as good as mine, 
possibly better. Also, it would really make my day if you send me a note 
telling me that this program has generated a little extra revenue for 
the Faith.

Non-Bahá'ís should note that the Bahá'í Faith does not accept 
contributions from non-members. If you are not a Bahá'í and you insist 
on sending some money to someone, send it to Hospice -- they are good 
folks, and they can use it.


Top or Table of Contents

Credits
=======

The nasty math that does the sun elevation and azimuth calculations was 
written originally by Bob Walraven in January, 1985. It was part of a 
FORTRAN program named FRESNO.

Significant "sanity-check" and field test assistance was contributed by 
Mark A. Foster, Olathe, KS. Nice guy that he is, he made some time for 
me in the midst of grading final exams. A round of applause, please, for 
the gentleman in the front row.

Thanks are due, also, to my wife, Lois, who reviewed the documentation 
and made several helpful suggestions, including the addition of a day-
of-the-week column to the listing.


Top or Table of Contents

Author! Author!
===============

Bug reports and suggestions should be sent to the author:

         William K. Walker
         North Valley Digital
         390 S. Tyndall Pkwy, Ste 149
         Parker, FL  32404
         +1 (850) 647-9614 (voice)
         +1 (850) 647-9615 (fax)

         wkwalker@nvdi.com
         http://www.nvdi.com/


Top or Table of Contents

Tech Notes And Other Goodies
============================

This section contains all the stuff you don't absolutely need to know to 
run FASTRS. Nevertheless, you may find some interesting goodies here. It 
wouldn't hurt to at least scan the topics in case something catches your 
eye.

How To Find Your Latitude And Longitude
---------------------------------------
In the first place, you don't need to be exact to the nearest fraction 
of a second. Getting the degrees and minutes part more-or-less correct 
will probably be good enough. Actually, the nearest 1/4 degree (15 
minutes) will do the trick.

If you live in the United States, The Old Farmer's Almanac is a useful 
reference. Their "Time Correction Tables" list the geographic 
coordinates of over 250 U.S. cities.

If you have a regular, commercial airport nearby, you might try calling 
the weather people there. They should know their global coordinates. 
Sometimes the weather person at one of the local TV stations will know 
this sort of thing, too.

A library is another good place to look. So are colleges and 
universities. If they have any detailed maps on file -- topographic maps 
are best -- you can often use them to obtain your longitude and 
latitude. A good atlas might also provide the necessary information.

Or, send me a note and I'll pull your coordinates from my database.

Entering Decimal Degrees
------------------------
Sometimes it's easier to figure coordinates as decimal degrees instead 
of degrees, minutes and seconds. This is especially true when you are 
taking measurements from a map. If, for example, you wish to use 81.4 
degrees west instead of 84 degrees, 24 minutes, 0 seconds west, you can 
do so. When you run FASTRS, just enter the minutes and seconds as 0. 
E.g., 81.4 0 0 W instead of 81 24 0 W.

Using I/O Redirection
---------------------
You can use a trick called I/O redirection to feed pre-typed responses 
to FASTRS from a data file. For instance, the FASTRS distribution 
includes a file called KALISPEL.DAT which can be used to reproduce the 
example listing shown earlier in this document. To do this, you would 
type
                    fastrs <kalispel.dat

The "<" tells MS-DOS to provide input to FASTRS from KALISPEL.DAT 
instead of from the keyboard.

Just to show how things work, I've included data files for a few other 
places, too. Also, once you have figured out your local coordinates and 
time zone, you can create your own data file. Just use any plain text 
editor such as the MS-DOS EDIT or (yech!) EDLIN program to create a file 
containing the responses you would normally type when you run FASTRS. 
You can use the data files I supplied as a model. When it's time to run 
FASTRS next year, all you need to do is change the year entry in your 
data file and you're ready to go.

If you don't have a decent text editor, I have included a very simple 
one called TED (Tiny EDitor) as part of the FASTRS distribution. TED's 
documentation is in TED.TXT.

Command Line Switches
---------------------
FASTRS recognizes two command line switches: /24 and ?.

The "/24" switch causes the sunrise/sunset times to be output in 24-hour 
format instead of "AM/PM style." Actually, you can enter "/24" or "24" 
or (if you are undergoing UNIX withdrawal) "-24" and FASTRS will accept 
it.

Entering "?" or any invalid command line character produces the program 
name, program release date and version, the copyright notice, and a 
short block of help text.

Using The TZ Environment Variable
---------------------------------
A lot of people don't know this, but there is an MS-DOS environment 
variable called "TZ" that can be used to tell programs about your time 
zone. The command syntax looks like this:

          set TZ=SSShh:mm:ssDDD

where

          SSS      is the three-letter designation for standard
                   time in your time zone (example, MST);

          hh:mm:ss is the amount of time to add to your local
                   time to get Greenwich Mean Time (GMT -- see
                   the discussion in the "Overview" section)
                   expressed as hours, minutes and seconds; and

          DDD      is the designation for daylight savings time,
                   if your area uses it (example: MDT).

Thus, if you lived in the U.S. Mountain Time Zone and your area used 
daylight savings time part of the year, you would enter:

          set TZ=MST7MDT

If you added the above line to your AUTOEXEC.BAT file, TZ would get set 
each time you booted your computer.

FASTRS understands TZ. If, when you run FASTRS, you just press the Enter 
key when you see the "TimeZone:" prompt, FASTRS will check to see if the 
TZ variable is set. If it is, FASTRS will use the information supplied 
by TZ; if not, FASTRS will insist that you type in your zone 
information.

One nice side-effect: FASTRS will use TZ's three-letter time zone 
designation. Thus, if you set TZ to "MST7MDT" before running the 
"KALISPEL" example earlier in this document, and if you just press Enter 
when FASTRS asks for the time zone, the listing will show the time zone 
as "MST" instead of "GMT-7."


Sunrise/Sunset Calculation
--------------------------
Sunrise and sunset are calculated as the time when the edge of the sun
just appears or disappears, given the normal index of atmospheric
refraction. This is 2 or 3 minutes before or after the sun actually
clears the horizon, because the atmosphere bends the sun's light
slightly.

In case you were wondering why the last two or three days of the Fast 
are more than 12 hours long, now you know. The atmosphere, acting like a 
lens, lets us peek just a little bit beyond the horizon. (It seems 
poetically appropriate, doesn't it?)

Although FASTRS gives pretty good results anywhere on the globe, I did 
not attempt to make the output meaningful for locations extremely close 
to the poles. I.e., I did not make a distinction between "sun visible 
all day" and "sun not visible all day"; I just flag sunrise and sunset 
as "none."

Distribution Files
------------------
ted.com        -  a simple text editor
kalispel.dat   -  Kalispell, MT data file
wilmette.dat   -  Wilmette, IL data
haifa.dat      -  Haifa, Israel data
file_id.diz    -  program description for BBS uploads
fastrs.exe     -  the FASTRS program
fastrs.ico     -  Windows icon for FASTRS
fastrs.pif     -  Windows Program Information File for FASTRS
fastrs.txt     -  FASTRS documentation
files.txt      -  list of distribution files
readme.txt     -  quick start "read me" file
ted.txt        -  TED editor documentation

Portability Notes
-----------------
If you wish to adapt FASTRS to other environments, get in touch with me. 
I will make the sources available to anyone with a specific project in 
mind although I would prefer not to hand them out to the idly curious.

FASTRS is written in C. The code should be reasonably portable. I kept 
away from pointless trickiness, avoiding the constant temptation to 
generate "elegant" code at the expense of clarity.

The program should be ANSI C compatible, or very close to it.

FASTRS does use a few 8-bit characters to generate things like the 
degree symbol and the accents in the word "Bahá'í". These are defined in 
FASTRS.H and would, of course, need to be modified for output to non-IBM 
style displays and printers.

You will probably need to remove the "#pragma page()" statements if you 
are not working with the Microsoft C compiler.

The TZCHEK routine is Microsoft-specific. It should be customized for 
your target system, or modified always to return a zero value.

Edit History
------------
1991 -                  Various early versions written in FORTRAN and C
 Nov 1993

14 Dec 93      Y02.00   First V02.00 public beta test
W. K. Walker

15 Dec 93      Y02.00a  Second V02.00 beta; modified to support TZ
W. K. Walker            environment variable; added support for non-
                        integer time zone offsets; updated doc

16 Dec 93      V02.00   Official public release
W. K. Walker

10 Mar 94      V02.10   Added day-of-week column to listing
W. K. Walker

17 Aug 95      V02.11   Updated to reflect new address; fixed TZ
W. K. Walker            handling bug

23 Feb 96      V02.12   Minor documentation updates
W. K. Walker

17 Mar 96      V02.13   Fixed erroneous release date in source code;
W. K. Walker            doc updates

Top or Table of Contents


Return to NVDi Home Page
Go to Bill Walker's Home Page



Maintained by William K. Walker
Copyright © 1996-1999 by William K. Walker
Last update: 2 Mar 1999