Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

FORTRAN 90 Help- reading input in format DDMMYYYY + more

  1. Oct 4, 2011 #1
    1. The problem statement, all variables and given/known data

    This is assignment is on FORTRAN 90:

    In an assignment i have, i am to enter a date in the format DDMMYYYY, and its suppose to compute and display the day of the week that date falls on (based on a given algorithm). I was able to code a program that would give me the right day of the week, however, i was only able to get it to work in the format: date, month, year (with commas separating each of them). How can i get my program to read the date DDMMYYYY, without the commas.

    For part 2, i am to use the program to determine the day of the week my birthday falls on, then i should find the next five times (after 2011) that my birthday falls on that same day of the week.

    3. The attempt at a solution

    For part 1, this is what i did:


    PROGRAM assignment2

    INTEGER:: Day, Month, Year, Century, H

    READ(*,*) Day,Month,Year !to read in format DD,MM,YYYY

    Month = Month -2
    !this accounts for unusual format for months (eg. March=01......February=12)
    If (Month <= 0) Month = Month + 12
    IF (Month >= 11) Year = Year - 1
    Century = INT(Year / 100)
    !eg. 2011 = 20
    Year = MOD(Year, 100)
    !eg. 2011= 11
    H = INT(13 * Month - 1)/5 + Day + Year + &
    (Year / 4) + (Century / 4) - 2*Century
    H = MOD(H,7)
    IF (MOD(H,7) < 0) H = MOD(H,7) + 7
    !this will make sure our day of the week is a positive integer
    write(*,*) 'Day Of the Week :',H

    END PROGRAM assignment2


    For part 2, i am completely lost. I understand that i will need to do a DO LOOP, but have no idea what to do.

    Please help.

  2. jcsd
  3. Oct 5, 2011 #2
    If I am understanding you correctly regarding your comma question, you could use a formatted input.

    integer dd,mm,yyyy

    100 format(2i2,1i4)

    Thus February 4, 1977 would be entered as: 04021977. It would have to be left justified. The 5 in the format statement means it is reading from keyboard input. It won't work unless it is left justified.

    100 format(2i2,1i4)
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook