	subroutine parse(sid)
	implicit integer (a-z)
	include 'dccom.inc'

	lb = index(fspec(sid),'[')
	if (lb.eq.0) then
	    lb = index(fspec(sid),'<')
	endif
	lbracket(sid) = lb

	rb = index(fspec(sid),']')
	if (rb.eq.0) then
	    rb = index(fspec(sid),'>')
	endif
	rbracket(sid) = rb

	idot = index(fspec(sid)(rb+1:),'.') + rb
	
	if (idot.gt.rb+1) then
	    file(sid) = fspec(sid)(rb+1:idot-1)
	else
	    file(sid) = ' '
	endif

	isemi = index(fspec(sid),';')
	cend(sid) = isemi-1
		
	if (isemi.gt.idot+1) then
	    type(sid) = fspec(sid)(idot+1:isemi-1)
	else
	    type(sid) = ' '
	endif

	if (len(fspec(sid)).gt.isemi) then
	    version(sid) = fspec(sid)(isemi+1:)
	else
	    version(sid) = ' '
	endif

	call lib$movtc(fspec(sid),' ',table,fname(sid))

	return
	end
