Professional Documents
Culture Documents
2 Simple
1. PROGRAM date_type
IMPLICIT NONE
TYPE date
INTEGER :: day
INTEGER :: month
INTEGER :: year
END TYPE date
TYPE (date) :: birthday
birthday = date(2,12,2000)
PRINT *, birthday
PRINT *, birthday%day, birthday%month, birthday%year
2. PROGRAM person
IMPLICIT NONE
TYPE name
CHARACTER (LEN=20) :: first
CHARACTER (LEN=20) :: middle
CHARACTER (LEN=20) :: last
END TYPE name
TYPE (name) :: myname
PRINT *, myname
PRINT *, myname%first, myname%middle, myname%last
1
PRINT *, TRIM(myname%first), ’ ’, TRIM(myname%last)
ELSE
PRINT *, TRIM(myname%first), ’ ’, TRIM(myname%middle), ’ ’, &
TRIM(myname%last)
END IF
END PROGRAM person
4 Difficult
PROGRAM person_type
IMPLICIT NONE
TYPE date
INTEGER :: day
INTEGER :: month
INTEGER :: year
END TYPE date
TYPE name
CHARACTER (LEN=20) :: first
CHARACTER (LEN=20) :: middle
CHARACTER (LEN=20) :: last
END TYPE name
CHARACTER(LEN=3)::print_month
DO
PRINT *, ’First name?’
READ (*,*) friend%human%first
IF (friend%human%first == ’nobody’) EXIT
PRINT *, ’Middle name?’
READ (*,*) friend%human%middle
PRINT *, ’Surname?’
READ (*,*) friend%human%last
! This should show that we can read them in in this way.
PRINT *, ’DOB? Please enter 3 numbers on the one line’
READ (*,*) friend%birthday
2
IF (today%month > friend%birthday%month) THEN
age = today%year - friend%birthday%year
ELSE IF (today%month < friend%birthday%month) THEN
age = today%year - friend%birthday%year - 1
ELSE
IF (today%day >= friend%birthday%day) THEN
age = today%year - friend%birthday%year
ELSE
age = today%year - friend%birthday%year - 1
END IF
END IF
IF ( friend%human%middle==’.’) THEN
PRINT *, TRIM(friend%human%first), ’ ’, TRIM(friend%human%last)
ELSE
PRINT *, TRIM(friend%human%first), ’ ’, TRIM(friend%human%middle), &
’ ’, TRIM(friend%human%last)
END IF
3
CASE DEFAULT
print_month=’???’
END SELECT
END DO