	PROGRAM GET_NFSNAME
	IMPLICIT NONE
C----------------------------------------------------------------------
C ==> Convert Unix filename to VMS file specification
C----------------------------------------------------------------------
C GET_NFSNAME is a program shell around the NFSNAME function call.
C It takes two command line arguments, the Unix filename and the name
C of a DCL symbol, and puts the converted VMS/NFS file specification
C into the symbol.  If no symbol name is given, the converted file
C specification is written to standard output (SYS$OUTPUT).
C
C Written by Michael H. Kelsey  CITHEX::KELSEY
C
C Copyright (c) 1993  Trustees of the California Institute of Technology
C
C This software is provided on an as-is basis, and no warranty is made
C regarting merchantibility, fitness of use, or suitability for a
C particular purpose.
C
C Version 1.00  KELSEY    20 Aug 91  Program Creation Date
C Version 1.01  KELSEY     1 Aug 93  Release as Freeware package
C----------------------------------------------------------------------
	INCLUDE 'NFSNAME.INC'
	INCLUDE '($LIBDEF)'
	INCLUDE '($LIBCLIDEF)'
	INCLUDE '($STRDEF)'
	INCLUDE '($SSDEF)'

C  External routines
	INTEGER LIB$GET_FOREIGN		!Read command line arguments
        INTEGER LIB$SET_SYMBOL		!Assign value to DCL symbol
	INTEGER STR$ELEMENT		!Extract delimited token
	EXTERNAL NFSNAME		!Filename conversion routine

C  Local variables
	CHARACTER*(UNIXMAX+20) CMD	!Command line
	CHARACTER*(UNIXMAX) UNIXNAME	!Full Unix file specification
	CHARACTER*(VMSMAX)  VMSNAME	!VMS/NFS file specification
	INTEGER             LVMSNAME    !Length of VMS filespec

	CHARACTER*12 SYMBOL		!Name of VMS symbol
	INTEGER      ISTAT		!Status flag
	LOGICAL      DEBUG /.FALSE./	!Debugging output flag


C  Get command line arguments and parse
	ISTAT = LIB$GET_FOREIGN(CMD)
	IF (ISTAT.NE.SS$_NORMAL) THEN
	  WRITE (6,*) 'GET_NFSNAME:  LIB$GET_FOREIGN Error.'
	  GOTO 999
	ENDIF

	IF (DEBUG) PRINT *,'GET_NFSNAME:  Comand line = ',CMD

	ISTAT = STR$ELEMENT(UNIXNAME,0,' ',CMD)
	IF (ISTAT.NE.SS$_NORMAL) THEN
	  WRITE (6,*) 'GET_NFSNAME:  STR$ELEMENT(0) Error.'
	  GOTO 999
	ENDIF

	IF (UNIXNAME(1:1).EQ.'"') THEN
	  ISTAT = STR$ELEMENT(UNIXNAME,1,'"',UNIXNAME)
          IF (ISTAT.NE.SS$_NORMAL) GOTO 999
	ENDIF

	IF (DEBUG) PRINT *,'GET_NFSNAME:  UNIXNAME = ',UNIXNAME

	ISTAT = STR$ELEMENT(SYMBOL,1,' ',CMD)
	IF (ISTAT.NE.SS$_NORMAL) SYMBOL = ' '	!Allow SYS$OUTPUT output

	IF (DEBUG) PRINT *,'GET_NFSNAME:  SYMBOL = ',SYMBOL

C  Convert Unix name to VMS and store or display
	CALL NFSNAME(UNIXNAME,VMSNAME,LVMSNAME)

	IF (DEBUG) PRINT *,'GET_NFSNAME:  VMSNAME = ',VMSNAME(:LVMSNAME)

	IF (SYMBOL.NE.' ') THEN			!Fill in symbol if asked
	  ISTAT = LIB$SET_SYMBOL(SYMBOL,VMSNAME(:LVMSNAME))
	  IF (ISTAT.NE.SS$_NORMAL) THEN
	    WRITE (6,*) 'GET_NFSNAME:  LIB$SET_SYMBOL Error.'
	  ENDIF
	ELSE					!Otherwise just print
	  WRITE (6,*) VMSNAME(:LVMSNAME)
	ENDIF

C  Terminate program with last status value
999	CALL EXIT(ISTAT)
	END
