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
# 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}, allocatable, dimension(${2::}) :: $0
snippet intent
	${1:type}, intent(inout) :: $0
# Array
snippet /
	(/ $1 /) ${2:,&} $0
snippet if
	if (${1:condition}) then
		$2
	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}
		$4
	end do
snippet dow
	do while (${1:condition})
		$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 read
	read( unit = ${1:fp}, file = ${2:filename}${3:, iostat = IERR }) $0
snippet write
	write( unit = ${1:fp}, file = ${2:filename}${3:, iostat = IERR }) $0
snippet open
	open (unit = ${1:fp}, file = ${2:filename}, status = unknown${3:, iostat = IERR }) $0
snippet close
	close ( unit = ${1:fp} ) $0
