	PRO OPEN_MSP_FILE, UNIT, FILENAME, ERRMSG=ERRMSG
;+
; Project     :	SOHO - CDS/SUMER
;
; Name        :	OPEN_MSP_FILE
;
; Purpose     :	Opens an Microsoft Project file.
;
; Explanation :	Opens a text file generated by Microsoft Project.
;
; Use         :	OPEN_MSP_FILE, UNIT, FILENAME
;
; Inputs      :	FILENAME = The name of the file to open.
;
; Opt. Inputs :	None.
;
; Outputs     :	UNIT	 = The logical unit that the file is opened with.  If
;			   the open fails, then this is returned as -1.
;
; Opt. Outputs:	None.
;
; Keywords    :	ERRMSG   = If defined and passed, then any error messages 
;                          will be returned to the user in this parameter 
;                          rather than being handled by the IDL MESSAGE 
;                          utility.  If no errors are encountered, then a 
;                          null string is returned.  In order to use this 
;                          feature, the string ERRMSG must be defined first,
;                          e.g.,
;
;				ERRMSG = ''
;				OPEN_MSP_FILE, UNIT, FILENAME, ERRMSG=ERRMSG
;				IF ERRMSG NE '' THEN ...
;
; Calls       :	DATATYPE
;
; Common      :	None.
;
; Restrictions:	None.
;
; Side effects:	None.
;
; Category    :	Planning, science.
;
; Prev. Hist. :	This procedure is based on OPEN_KAP, version 1.
;               Written by William Thompson, GSFC, 31 March 1995
;
; Written     :	Ron Yurow, 17 October 1995
;
; Modified    :	Version 1, 17 October 1995
;
; Version     :	Version 1, 17 October 1995
;-
;
	ON_ERROR, 2
;
;  Make sure that UNIT is initialized to -1 so that errors can be handled
;  correctly.
;
	UNIT = -1
;
;  Check the number of parameters.
;
	IF N_PARAMS() LT 2 THEN BEGIN
		MESSAGE = 'Syntax:  OPEN_MSP_FILE, UNIT, FILENAME'
		GOTO, HANDLE_ERROR
	ENDIF
;
;  Make sure that FILENAME is a character string scalar.
;
	IF N_ELEMENTS(FILENAME) NE 1 THEN BEGIN
		MESSAGE = 'FILENAME must be a scalar'
		GOTO, HANDLE_ERROR
	END ELSE IF DATATYPE(FILENAME,1) NE 'String' THEN BEGIN
		MESSAGE = 'FILENAME must be a character string'
		GOTO, HANDLE_ERROR
	ENDIF
;
;  Find the file, using .TXT as the default.
;
	FILE = FIND_WITH_DEF(FILENAME, '', '.TXT')
	IF FILE EQ '' THEN BEGIN
		MESSAGE = 'No such file as ' + FILENAME
		GOTO, HANDLE_ERROR
	ENDIF
;
;  Open the file.
;
	OPENR, UNIT, FILE, /GET_LUN, ERROR=ERROR
	IF ERROR NE 0 THEN BEGIN
		MESSAGE = !ERR_STRING
		GOTO, HANDLE_ERROR
	ENDIF

;
;  Were done, so lets return.
;

        RETURN

;
;  Error handling point.
;
HANDLE_ERROR:
	IF N_ELEMENTS(ERRMSG) EQ 0 THEN MESSAGE, MESSAGE, /CONTINUE	$
		ELSE ERRMSG = 'OPEN_MSP_FILE: ' + MESSAGE
	IF UNIT GT 0 THEN FREE_LUN, UNIT
	UNIT = -1
	RETURN
	END
