From a9e0e93213314d18300935a8e6fad6b4caa9d945 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Fri, 5 Jun 2020 13:38:40 +0200 Subject: [PATCH] need to handle case of zero length file when splitting --- src/IO.f90 | 4 ++-- src/grid/DAMASK_grid.f90 | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/IO.f90 b/src/IO.f90 index e6e3d4a60..8d56bdd70 100644 --- a/src/IO.f90 +++ b/src/IO.f90 @@ -11,7 +11,6 @@ module IO implicit none private character(len=*), parameter, public :: & - IO_EOF = '#EOF#', & !< end of file string IO_WHITESPACE = achar(44)//achar(32)//achar(9)//achar(10)//achar(13) !< whitespace characters character, parameter, public :: & IO_EOL = new_line('DAMASK'), & !< end of line character @@ -86,6 +85,7 @@ function IO_readlines(fileName) result(fileContent) do l=1, len(rawData) if (rawData(l:l) == IO_EOL) N_lines = N_lines+1 enddo + if (l>1) then; if(rawData(l-1:l-1) /= IO_EOL) N_lines = N_lines+1; endif ! no EOL@EOF, need exception for empty file allocate(fileContent(N_lines)) !-------------------------------------------------------------------------------------------------- @@ -94,7 +94,7 @@ function IO_readlines(fileName) result(fileContent) startPos = 1 l = 1 do while (l <= N_lines) - endPos = startPos + scan(rawData(startPos:),IO_EOL) - 2 + endPos = merge(startPos + scan(rawData(startPos:),IO_EOL) - 2,len(rawData),l /= N_lines) if (endPos - startPos > pStringLen-1) then line = rawData(startPos:startPos+pStringLen-1) if (.not. warned) then diff --git a/src/grid/DAMASK_grid.f90 b/src/grid/DAMASK_grid.f90 index 7b3265740..8e57a56af 100644 --- a/src/grid/DAMASK_grid.f90 +++ b/src/grid/DAMASK_grid.f90 @@ -140,7 +140,8 @@ program DAMASK_grid !-------------------------------------------------------------------------------------------------- ! reading information from load case file and to sanity checks - fileContent = IO_read_ASCII(trim(loadCaseFile)) + fileContent = IO_readlines(trim(loadCaseFile)) + if(size(fileContent) == 0) call IO_error(307,ext_msg='No load case specified') allocate (loadCases(0)) ! array of load cases do currentLoadCase = 1, size(fileContent)