@@ -323,22 +323,35 @@ end subroutine read_csv_file
323
323
!
324
324
! Use `initialize` to set options for the CSV file.
325
325
326
- subroutine open_csv_file (me ,filename ,n_cols ,status_ok )
326
+ subroutine open_csv_file (me ,filename ,n_cols ,status_ok , append )
327
327
328
328
implicit none
329
329
330
330
class(csv_file),intent (inout ) :: me
331
331
character (len=* ),intent (in ) :: filename ! ! the CSV file to open
332
332
integer ,intent (in ) :: n_cols ! ! number of columns in the file
333
333
logical ,intent (out ) :: status_ok ! ! status flag
334
+ logical ,intent (in ),optional :: append ! ! Append if file exists
334
335
335
336
integer :: istat ! ! open `iostat` flag
337
+ logical :: append_flag = .false.
338
+ logical :: file_exists
336
339
337
340
call me% destroy()
338
341
339
342
me% n_cols = n_cols
340
343
341
- open (newunit= me% iunit,file= filename,status= ' REPLACE' ,iostat= istat)
344
+ if (present (append)) append_flag = append
345
+ if (append_flag) then
346
+ inquire (file= filename, exist= file_exists)
347
+ if (file_exists) then
348
+ open (newunit= me% iunit,file= filename,status= ' OLD' ,position= ' APPEND' ,iostat= istat)
349
+ else
350
+ open (newunit= me% iunit,file= filename,status= ' REPLACE' ,iostat= istat)
351
+ end if
352
+ else
353
+ open (newunit= me% iunit,file= filename,status= ' REPLACE' ,iostat= istat)
354
+ end if
342
355
if (istat== 0 ) then
343
356
status_ok = .true.
344
357
else
0 commit comments