********
FUNCTION JUSTDRIVE && X:
PARAMETER in_mystr
RETURN IIF(LEN(in_mystr)>1.AND.SUBSTR(in_mystr,2,1)=":",LEFT(in_mystr,2),"")
********
FUNCTION JUSTPATH && DRIVE:\FULL\PATH (INCLUDE X:\ BUT NOT "\" AFTER PATH)
PARAMETER in_mystr && BLANK IF NO "\" IN STRING
RETURN IIF("\"$in_mystr,SUBSTR(in_mystr,1, ;
MAX(MAX(AT(":",in_mystr),RAT("\",in_mystr)-1), ;
IIF(LEN(in_mystr)>2.AND.SUBSTR(in_mystr,2,2)=":\",3,0))),"")
********
FUNCTION JUSTFNAME && FILE.NAME.EXT (CALLS JUSTPATH())
PARAMETER in_mystr
PRIVATE c_talk, n_lenpath
IF SET("TALK")="ON"
SET TALK OFF
c_talk="ON"
ELSE
c_talk="OFF"
ENDIF
* JUSTPATH() IS EMPTY DRIVE SPECIFIED BUT NOT PATH SO TEST FOR ":"
n_lenpath=MAX(LEN(JUSTPATH(in_mystr)),IIF(":"$in_mystr,2,0))
IF c_talk="ON"
SET TALK ON
ENDIF
RETURN IIF(LEN(in_mystr)>n_lenpath,STRTRAN(SUBSTR(in_mystr,n_lenpath+1),"\"),"")
********
FUNCTION JUSTSTEM && FILE.NAME WITHOUT .EXT (CALLS JUSTFNAME(),JUSTPATH())
PARAMETER in_mystr
PRIVATE c_talk, cfname
IF SET("TALK")="ON"
SET TALK OFF
c_talk="ON"
ELSE
c_talk="OFF"
ENDIF
cfname=JUSTFNAME(in_mystr)
IF c_talk="ON"
SET TALK ON
ENDIF
RETURN IIF("."$cfname,SUBSTR(cfname,1,RAT(".",cfname)-1),cfname)
********
FUNCTION JUSTEXT && EXT (AFTER RIGHTMOST ".")
PARAMETER in_mystr
RETURN IIF("."$in_mystr.AND.RIGHT(in_mystr,1)<>".", ;
SUBSTR(in_mystr,RAT(".",in_mystr)+1),"")