cnar08@vaxa.strath.ac.uk (04/16/91)
------------- Program starts here -------------------------- C------------------------------------------------------------- C C PRAYER TIME TABLE C ================= C C THIS FORTRAN VERSION IS ADOPTED FROM THE BASIC VERSION C ORIGINALLY PROGRAMMED BY T. DJAMALUDDIN C Dept. of astronomy, kyoto university C Sakyo-ku, kyoto 606, japan C C C------------------------------------------------------------- C C C C 'prayer time table for any region in the world C 'calculated by t. djamaluddin C 'dept. of astronomy, kyoto university C 'sakyo-ku, kyoto 606, japan C '***************************************** C C C input description: C C 1. city's name C C 2. position of the place. we can estimate it from a map. C a. longitude in degrees C east is positive C west is negative C for example : C nagasaki : 129.9 e =+129.9 C rabat(marocco) : 6.9 w =-6.9 C b. latitude in degrees C north is positive C south is negative C for example : C nagasaki : 32.7n =+32.7 C jakarta : 6.2s =-6.2 C C 3. time difference, that is, the difference between standard C time of the place and Greenwich Mean Time (GMT). C for example : C Japan, time difference = +9 C Newyork, time difference = -5 C C---------------------------------------------------------------------- C C Result sample problem for Jakarta: C---------------------------------------------------------------------- C City`s name = JAKARTA C City`s longitude (negative deg. for west) = 106.833 C City`s latitude (negative deg. for south) = -6.183 C Time difference = standard time - ut/gmt, C Time difference (hour); neg. for west = 7 C C C PRAYER TIME TABLE C *********************** C C City : JAKARTA C C C JANUARY C C Date Fajr Sunrise Zuhr `Asr Maghrib Isha C C 1 4:25 5:45 11:56 15: 1 18: 6 19:26 C 2 4:26 5:45 11:56 15: 1 18: 7 19:26 C 3 4:26 5:46 11:57 15: 2 18: 7 19:27 C 4 4:27 5:46 11:57 15: 2 18: 8 19:27 C 5 4:27 5:47 11:57 15: 3 18: 8 19:27 C 6 4:28 5:47 11:58 15: 3 18: 8 19:28 C 7 4:29 5:48 11:58 15: 4 18: 9 19:28 C 8 4:29 5:48 11:59 15: 4 18: 9 19:28 C 9 4:30 5:49 11:59 15: 4 18: 9 19:29 C 10 4:30 5:49 12: 0 15: 5 18:10 19:29 C 11 4:31 5:50 12: 0 15: 5 18:10 19:29 C 12 4:32 5:50 12: 0 15: 5 18:10 19:29 C 13 4:32 5:51 12: 1 15: 6 18:11 19:29 C 14 4:33 5:51 12: 1 15: 6 18:11 19:30 C 15 4:33 5:52 12: 1 15: 6 18:11 19:30 C C C etc..... C C------------------------------------------------------------- C character*80 city dimension t(10),o(10),old(10) common/blk/z,n,a,lamd,rad,x,td,phi,st integer th,tm,t,o real n,m,lh,l,lamd,midday rad = 3.14159/180 C PRINT CITY'S NAME C City`s name = GLASGOW C City`s longitude (negative deg. for west) = -4 LAMD=-4 C City`s latitude (negative deg. for south) = 56 PHI=56 C Time difference = standard time - ut/gmt, C Time difference (hour); neg. for west = 1 TD=1 PRINT*,' NAME OF THE CITY = GLASGOW' PRINT*,' City`s longitude (negative deg. for west) =',LAMD PRINT*,' City`s latitude (negative deg. for south) =',PHI PRINT*,' Time difference = standard time - ut/gmt, ' PRINT*,' Time difference (hour); neg. for west =',TD write(*,*)' ' write(*,*)' ' write(*,*)' GLASGOW PRAYER TIME TABLE ' write(*,*)' ***************************** ' write(*,*)' ' lamd=lamd/360*24 phi=phi*rad n0=0 do 200 i=1,12 write(*,*)' ' write(*,*)' ' if(i.eq.1)then d=31 write(*,*)' JANUARY ' elseif(i.eq.2)then d=28 write(*,*)' FEBRUARY ' elseif(i.eq.3)then d=31 write(*,*)' MARCH ' elseif(i.eq.4)then d=30 write(*,*)' APRIL' elseif(i.eq.5)then d=31 write(*,*)' MAY ' elseif(i.eq.6)then d=30 write(*,*)' JUNE ' elseif(i.eq.7)then d=31 write(*,*)' JULY ' elseif(i.eq.8)then d=31 write(*,*)' AUGUST' elseif(i.eq.9) then d=30 write(*,*)' SEPTEMBER' elseif(i.eq.10) then d=31 write(*,*)' OCTOBER' elseif(i.eq.11) then d=30 write(*,*)' NOVEMBER ' elseif(i.eq.12) then d=31 write(*,*)' DECEMBER ' endif write(*,*)' ' write(*,*)' Date Fajr Sunrise Zuhr `Asr Maghrib Isa' write(*,*)' ' do 210 k=1,d n = n0 + k a = 6 z = 108*rad call calc if(abs(x).gt.1)goto 300 old(1)=st t(1)=int(st) o(1)=int((st-t(1))*60.) 300 z = (90+5/6)*rad call calc old(2)=st t(2)=int(st) o(2)=int((st-t(2))*60.) a = 18 z = (90+5/6)*rad call calc sunset = st old(5) = st + 2/60 st=old(5) t(5)=int(st) o(5)=int((st-t(5))*60.) z = 108*rad call calc if (abs(x).gt.1)goto 370 old(6)=st t(6) = st t(6)=int(st) o(6)=int((st-t(6))*60.) 370 midday = (old(2) + sunset)/2 old(3) = midday + 2/60 st=old(3) t(3)=int(st) o(3)=int((st-t(3))*60.) old(4) = (old(3)+old(5))/2 st=old(4) t(4)=int(st) o(4)=int((st-t(4))*60.) write(*,110)k,(t(ii),o(ii),ii=1,6) 110 format(i4,3x,6(i2,':',i2,3x)) 210 continue n0=n 200 continue stop end c------------------------------------------------------------------ subroutine calc common/blk/z,n,a,lamd,rad,x,td,phi,st real n,m,lh,l,lamd c write(*,*)n,a,lamd,rad,x,st tm = n + (a - lamd)/24 m = (.9856*tm - 3.289)*rad l = m + 1.916*rad*sin(m) + .02*rad*sin(2*m) + 282.634*rad lh = l/3.14159*12 ql = int(lh/6)+1 if(int(ql/2)*2-ql.ne.0)ql=ql-1 ra = atan(.91746*tan(l))/3.14159*12 ra = ra + ql*6 sind = .39782*sin(l) cosd = sqrt(1-sind*sind) x = (cos(z) - sind*sin(phi))/(cosd*cos(phi)) if (abs(x).gt.1) goto 670 atnx = atan(sqrt(1-x*x)/x)/rad if (atnx .lt. 0) atnx = atnx + 180 h = (360-atnx)*24/360 if(a.eq.18) h = 24 - h tloc = h + ra - .06571*tm - 6.622 tloc = tloc + 24 tloc = tloc - int(tloc/24)*24 st = tloc - lamd + td 670 return end C---------------------------------------------------------------