	function name_extract,INPUT

;+
;	Function NAME_EXTRACT returns the string-type 6-dimen-
;	sional array containing extracted file name from the
;	input full path name; file name without extension;
;	extension and lengthes of all of these values
;	correspondingly. All the output values are of lower
;	case.
;
;	EXAMPLE:
;		If INPUT is file C:\DATA\TEST1.DAT:
;			A=NAME_EXTRACT(INPUT)
;			PRINT,A
;	IDL prints: test1.dat  test1  dat  9  5  3
;
;		To extract, e.g., the extension only, you
;	can print such a statement:
;		PRINT,(NAME_EXTRACT(INPUT))(2)
;	IDL prints: dat
;
;	INPUT ARGUMENT:	INPUT - scalar string.
;
;-

	CASE !version.OS OF

'windows':	Delim='\'

'Win32':	Delim='\'

ELSE:		Delim='/'

	ENDCASE


arr=strarr(6)
sz=size(INPUT)

	if (sz(0) gt 0 ) or sz(1) ne 7 then begin
print,'Invalid input argument'
goto,exit
	endif

full_name_length=strlen(INPUT)

a=strpos(INPUT,Delim)

	IF a GE 0 THEN BEGIN

		i=-1
	repeat begin
i=i+1
a=strpos(INPUT,Delim,full_name_length-i)
	endrep until a ge 0

name_ext_length=i-1

	ENDIF ELSE name_ext_length=full_name_length

name_ext=strmid(INPUT, $
	full_name_length-name_ext_length, name_ext_length)

    if strpos(name_ext,'.') lt 0 then ext_length=0 else $
ext_length=name_ext_length-strpos(name_ext,'.')-1

name_length=name_ext_length-ext_length-(ext_length gt 0)
name=strmid(name_ext,0,name_length)
ext=strmid(name_ext, name_length+1, ext_length)

length=[string(name_ext_length),string(name_length), $
	string(ext_length)]
arr=[name_ext,name,ext,length]

exit:
	return,arr

	end
