!  Fortran 95

PROGRAM hello
    use omp_lib          ! omp_get_thread_num, omp_get_num_threads

    ! Serial Region  (master thread)
    ! Parameters of the Application
    CHARACTER(30) name

    INTEGER, PARAMETER :: high=8
    REAL (KIND=high) x           ! Fortran 95

    ! OpenMP Parameters
    INTEGER id, nthreads

    ! Master thread obtains information about itself and its environment.
    nthreads = omp_get_num_threads()       ! get number of threads
    id = omp_get_thread_num()              ! get thread
    CALL getenv("HOST",name)               ! get run-host name
    WRITE (*,*) 'SERIAL REGION:     Runhost:', name, '   Thread:', id, ' of ', nthreads, ' thread    hello, world'

    ! Open parallel region.
    ! Each thread obtains information about itself and its environment.
    !$OMP PARALLEL PRIVATE(name,id,nthreads)
        nthreads = omp_get_num_threads()   ! get number of threads
        id = omp_get_thread_num()          ! get thread
        CALL getenv("HOST",name)           ! get run-host name
        WRITE (*,*) 'PARALLEL REGION:   Runhost:', name, '   Thread:', id, ' of ', nthreads, ' threads   hello, world'
    !$OMP END PARALLEL
    ! Close parallel region.

    ! Serial Region  (master thread)
    WRITE (*,*) 'SERIAL REGION:     Runhost:', name, '   Thread:', id, ' of ', nthreads, ' thread    hello, world'
END PROGRAM hello
