Save data.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(file_ini), | intent(inout) | :: | self | File data. |
||
logical, | intent(in), | optional | :: | retain_comments | Flag for retaining eventual comments. |
|
integer(kind=I4P), | intent(out), | optional | :: | iostat | IO error. |
|
character, | intent(out), | optional | :: | iomsg | IO error message. |
|
character, | intent(in), | optional | :: | filename | File name. |
subroutine save_file_ini(self, retain_comments, iostat, iomsg, filename)
!< Save data.
class(file_ini), intent(inout) :: self !< File data.
logical, optional, intent(in) :: retain_comments !< Flag for retaining eventual comments.
integer(I4P), optional, intent(out) :: iostat !< IO error.
character(*), optional, intent(out) :: iomsg !< IO error message.
character(*), optional, intent(in) :: filename !< File name.
logical :: rt_comm !< Flag for retaining eventual comments.
integer(I4P) :: unit !< Logic unit.
integer(I4P) :: iostatd !< IO error.
character(500) :: iomsgd !< Temporary variable for IO error message.
integer(I4P) :: s !< Counter.
rt_comm = .false. ; if (present(retain_comments)) rt_comm = retain_comments
if (present(filename)) self%filename = filename
if (allocated(self%filename).and.allocated(self%sections)) then
open(newunit=unit, file=self%filename, action='WRITE', iostat=iostatd, iomsg=iomsgd)
do s=1, size(self%sections, dim=1)
call self%sections(s)%save(iostat=iostatd, iomsg=iomsgd, unit=unit, retain_comments=rt_comm)
enddo
close(unit=unit, iostat=iostatd, iomsg=iomsgd)
endif
if (present(iostat)) iostat = iostatd
if (present(iomsg)) iomsg = iomsgd
endsubroutine save_file_ini