5.5 A Test Program For Parallel Temporary Files

Following is a test program for the module parallel_temporary_files . Notice that parallel_read is called only if the return status in the variable ok is true.

PROGRAM main
  USE parallel_temporary_files
  INTEGER, PARAMETER    :: n=12
  INTEGER               :: temp_unit
  LOGICAL               :: ok
  INTEGER, DIMENSION(n) :: DATA
    !HPF$ DISTRIBUTE data(BLOCK)
  INTEGER, DIMENSION(n) :: b
    !HPF$ ALIGN b(:) WITH data(:)

  FORALL (i=1:n) data(i) = i

  DO i=1,2
    b = 0
    CALL parallel_open(temp_unit, ok)
    PRINT *, "in main:", "open", temp_unit
    CALL parallel_write(temp_unit, data, ok)
    PRINT *, "in main:", "write", temp_unit, ok
    CALL parallel_rewind(temp_unit, ok)
    PRINT *, "in main:", "rewind", temp_unit, ok
    IF (ok) CALL parallel_read(temp_unit, b)
    CALL parallel_close(temp_unit)
    IF(ANY(b /= (/ (i, i=1,n ) /))) THEN
      PRINT *, 'Error'
    ELSE
      PRINT *, 'Ok!!!'
    ENDIF
  ENDDO

END PROGRAM main