Remove comment from a string (anything after ! or #)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(inout) | :: | buffer |
Input buffer |
||
| integer, | intent(in), | optional | :: | iline |
Line number |
subroutine rm_comments(buffer, iline) !! Remove comment from a string (anything after ! or #) implicit none ! Arguments character(*), intent(inout) :: buffer !! Input buffer integer, optional, intent(in) :: iline !! Line number ! Local variables integer :: lbracket, rbracket, iline_ !! Bracket positions and line number iline_ = 0 if(present(iline)) iline_ = iline if(scan(buffer, '!') .ne. 0) buffer = buffer(:(scan(buffer, '!') - 1)) if(scan(buffer, '#') .ne. 0) buffer = buffer(:(scan(buffer, '#') - 1)) do while(scan(buffer, '(') .ne. 0 .or. scan(buffer, ')') .ne. 0) lbracket = scan(buffer, '(', back = .true.) rbracket = scan(buffer(lbracket:), ')') if(lbracket .eq. 0 .or. rbracket .eq. 0)then write(6, '(A,I0)') & ' NOTE: a bracketing error was encountered on line ', iline_ buffer = "" return end if rbracket = rbracket + lbracket - 1 buffer = buffer(:(lbracket - 1)) // buffer((rbracket + 1):) end do end subroutine rm_comments