METHOD PUBLIC VOID GetDirList (INPUT cSourceDir AS CHAR,
INPUT cMask AS CHAR,
INPUT lForward AS LOG):
DEF VAR lchrFile AS CHAR NO-UNDO FORMAT "x(50)".
DEF VAR lchrAttr AS CHAR NO-UNDO FORMAT "x(5)".
DEF VAR cFileMask AS CHAR NO-UNDO.
DEF VAR CFileExtentFilter AS CHAR NO-UNDO.
cFileMask = SUBSTRING(cMask,1,INDEX(cMask,".") - 1 ).
IF INDEX(cMask,".") > 0 THEN CFileExtentFilter = SUBSTRING(cMask,INDEX(cMask,".") + 1,LENGTH(cMask)).
IF TRIM(cSourceDir) = "" THEN cSourceDir = "/fiscal/tmp".
INPUT FROM OS-DIR(cSourceDir).
REPEAT:
IMPORT lchrFile ^ lchrAttr.
IF lchrAttr = "F" THEN
DO:
CFileExtent = SUBSTRING(lchrFile,(INDEX(lchrFile,".") + 1),LENGTH(lchrFile)).
IF NOT CAN-DO(CFileExtentFilter,CFileExtent) THEN NEXT.
IF NOT SUBSTRING(lchrFile,1,INDEX(lchrFile,".") - 1 ) MATCHES cFileMask THEN NEXT.
FILE-INFO:FILE-NAME = SUBSTITUTE("&1/&2",cSourceDir,lchrFile).
CREATE FileList.
ASSIGN FileList.FilePath = cSourceDir
FileList.cFileName = lchrFile
FileList.ModDate = FILE-INFO:FILE-MOD-DATE.
END.
IF lchrAttr = "D" AND lchrFile <> "." AND lchrFile <> ".." AND lForward THEN
GetChildListing(cSourceDir + "/" + lchrFile, CFileExtentFilter).
END.
INPUT CLOSE.
END METHOD.
METHOD PRIVATE VOID GetChildListing (INPUT cChildDir AS CHAR,
INPUT cTypeFilter AS CHAR):
DEF VAR cChildFile AS CHARACTER NO-UNDO FORMAT "X(256)".
DEF VAR cChildAttr AS CHARACTER NO-UNDO FORMAT "X(256)".
INPUT FROM OS-DIR(cChildDir).
REPEAT:
IMPORT cChildFile ^ cChildAttr.
IF cChildAttr = "F" THEN
DO:
cFileExtent = SUBSTRING(cChildFile,(INDEX(cChildFile,".") + 1),LENGTH(cChildFile)).
IF NOT CAN-DO(cTypeFilter,CFileExtent) THEN NEXT.
ELSE
DO:
FILE-INFO:FILE-NAME = SUBSTITUTE("&1/&2",cChildDir,cChildFile).
CREATE FileList.
ASSIGN FileList.FilePath = cChildDir
FileList.cFileName = cChildFile
FileList.ModDate = FILE-INFO:FILE-MOD-DATE.
END.
END.
IF cChildAttr = "D" AND cChildFile <> "." AND cChildFile <> ".." THEN
GetChildListing( cChildDir + "/" + cChildFile,cTypeFilter).
END.
INPUT CLOSE.
END METHOD.