SUBROUTINE TableWriteToFile &
( tab, file, append )
! Module used:
USE StringManipulation, ONLY: &
! imported routines:
StringCompact
USE Utilities, ONLY: &
!Imported routines:
GetUnit
IMPLICIT NONE
! Function arguments
! Scalar arguments with intent(in):
CHARACTER (LEN = *), INTENT (IN) :: file
LOGICAL, OPTIONAL, INTENT (IN) :: append
! Type defined arguments with intent (in):
TYPE (Table), INTENT (IN) :: tab
!Local variables:
INTEGER (KIND = short) :: iunit
INTEGER (KIND = long) :: i, j
LOGICAL :: fileExists
!------------end of declaration------------------------------------------------
!if append option is present, file already exists
fileExists = .FALSE.
IF ( PRESENT (append) ) THEN
IF (append) THEN
fileExists = .TRUE.
END IF
END IF
!get a free fortran unit
iunit = GetUnit ()
IF (fileExists) THEN
OPEN (UNIT = iunit, FILE = file, STATUS = "old")
!sync to the last line
CALL FileSyncToLastLine ( iunit, 2 )
ELSE
OPEN (UNIT = iunit, FILE = file, STATUS = "unknown")
END IF
!write keyword for start table
WRITE(iunit,'(a)') 'Table Start'
!write title if exists
IF ( StringCompact ( tab % title ) /= '' ) THEN
WRITE(iunit,'(a7)', ADVANCE = 'no') 'Title: '
WRITE(iunit,'(a)') TRIM (tab % title)
END IF
!write id
WRITE(iunit,'(a4)', ADVANCE = 'no') 'Id: '
WRITE(iunit,'(a)') TRIM (tab % id)
!write column headers
WRITE(iunit,'(a9)', ADVANCE = 'no') 'Columns: '
DO i = 1, tab % noCols - 1
WRITE(iunit,'(a1,a,a2)', ADVANCE = 'no') '[', TRIM (tab % col (i) % header ), '] '
END DO
WRITE(iunit,'(a1,a,a1)') '[', TRIM (tab % col (tab % noCols) % header ), ']'
!write column unit
WRITE(iunit,'(a7)', ADVANCE = 'no') 'Units: '
DO i = 1, tab % noCols - 1
WRITE(iunit,'(a1,a,a2)', ADVANCE = 'no') '[', TRIM (tab % col (i) % unit ), '] '
END DO
WRITE(iunit,'(a1,a,a1)') '[', TRIM (tab % col (tab % noCols) % unit ), ']'
!write content
DO i = 1, tab % noRows
DO j = 1, tab % noCols - 1
WRITE(iunit,'(a)', ADVANCE = 'no') TRIM (tab % col (j) % row (i) ) // ' '
END DO
WRITE(iunit,'(a)') TRIM (tab % col (tab % noCols) % row (i) )
END DO
!write keyword for close table
WRITE(iunit,'(a)') 'Table End'
CLOSE (iunit)
END SUBROUTINE TableWriteToFile