snippet impl
	implicit none
		${0}
snippet prog
	program ${1:main}
		${0}
	end program $1
snippet mod
	module ${1:modulename}
		${0}
	end module $1
snippet proc
	procedure ${1:name}
		${0}
	end procedure $1
snippet iface
	interface ${1:name}
		${0}
	end interface $1
snippet doc
	! """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
	! File: ${2:`vim_snippets#Filename('$1')`}
	! Author: `g:snips_author`
	! Email: `g:snips_email`
	! Github: `g:snips_github`
	! Description: $1
	! """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
	${0}
snippet dox
	!> @brief ${1}
	!!
	!> ${2}
	!> @author `g:snips_author`
	${0}
snippet doxp
	!> @param[${1}]${0}
# Variables definitions
# Boolean
snippet bool
	logical :: ${0}
# Integer
snippet int
	integer :: ${0}
snippet real
	real :: ${0}
# Double Precision
snippet double
	double precision :: ${0}
# Char
snippet str
	character(len=${1:*}) :: ${0:}
# Types
snippet type
	type(${1:name})
		${0}
	end type
snippet const
	${1:type}, parameter :: $2 = ${0}
snippet arr
	${1:type}, ${2:allocatable, }dimension(${3::}) :: ${0}
snippet intent
	${1:type}, intent(inout) :: ${0}
# Array
snippet /
	(/ $1 /) ${2:,&} ${0}
snippet if
	if ($1) then
		${0}
	end if
snippet case
	select case (${1:expr})
		case ($2)
		case default
			$3
	end select ${0}
snippet do
	do ${1:i} = ${2:start}, ${3:end}, ${4:incr}
		${0}
	end do
snippet dow
	do while ($1)
		$2
	end do
snippet sub
	subroutine ${1:name}($2)
		${0}
	end subroutine $1
snippet func
	function ${1:name}($2) result($3)
		${0}
	end function $1
snippet pr
	write(*,*) ${0}
snippet dpr
	write(*,*) '$1 = ', $1
snippet read
	read(unit = ${1:fp}, file = ${2:filename}, iostat = ${3:ierr}) ${0}
snippet write
	write(unit = ${1:fp}, file = ${2:filename}, iostat = ${3:ierr}) ${0}
snippet open
	open(unit = ${1:fp}, file = ${2:filename}, status = ${3:unknown}, iostat = ${4:ierr}) ${0}
snippet close
	close(unit = ${1:fp}) ${0}