/*---------------------------------------------------------------*/ /* Breaks Variable Down into Drive:\Path\filespec.ext components*/ /* T = "D:\PATH1\PATH2\FILESPEC.EXT" */ /* R = XFILESPEC(T,OPTION) */ /* Option Returns */ /* D D: */ /* P \PATH1\PATH2\ */ /* N FILESPEC.EXT */ /* F FILESPEC */ /* E EXT */ /* H D:\PATH1\PATH2\ */ /* M D:\PATH1\PATH2\FILESPEC */ /* W D: \PATH1\PATH2\ FILESPEC EXT */ /* C D:,\PATH1\PATH2\,FILESPEC,EXT */ /* Uses XTRIML */ /*---------------------------------------------------------------*/ XFILESPEC: PROCEDURE PARSE ARG X,OPT XR = "" XDRV = "" XPATH = "" XNAME = "" XSPEC = "" XEXT = "" /* --- Drive Letter Present? ---*/ IF POS(":",X,1) > 0 THEN DO XDRV = LEFT(X,2) /* --- Remove Drive Letter: ---*/ X = XTRIML(X,2) END /* --- Path Present? ---*/ IF POS("\",X,1) > 0 THEN DO SP = POS("\",X,1) EP = LASTPOS("\",X) IF SP <> EP THEN XPATH = SUBSTR(X,SP,EP-SP+1) IF SP = EP THEN XPATH = "\" /* --- Remove Path ---*/ X = XTRIML(X,EP) END /* --- Get File Spec ---*/ XNAME = X SP = POS(".",X,1) IF SP > 0 THEN DO XSPEC = LEFT(X,SP-1) X = XTRIML(X,SP) XEXT = X END IF OPT = "D" THEN XR = STRIP(XDRV) IF OPT = "P" THEN XR = STRIP(XPATH) IF OPT = "N" THEN XR = STRIP(XNAME) IF OPT = "F" THEN XR = STRIP(XSPEC) IF OPT = "E" THEN XR = STRIP(XEXT) IF OPT = "H" THEN XR = STRIP(XDRV""XPATH) IF OPT = "M" THEN XR = STRIP(XDRV""XPATH""XSPEC) IF OPT = "W" THEN XR = STRIP(XDRV" "XPATH" "XSPEC" "XEXT) IF OPT = "C" THEN XR = STRIP(XDRV","XPATH","XSPEC","XEXT) RETURN (XR) /*---------------------------------------------------------------*/