/* PROGRAM NAME: DirList.p AUTHOR: Speedy Mercer DATE WRITTEN: 04-08-2004 DESCRIPTION: Returns a Temp Table of Files and Directories. USAGE SYNTAX: RUN DirList.p (INPUT DirectoryNameToList), INPUT ShowSubs-Logical, INPUT-OUTPUT TABLE tt-File). */ DEFINE TEMP-TABLE tt-File NO-UNDO FIELD fcPathName AS CHARACTER FIELD fcFileName AS CHARACTER INDEX tt-File-prim AS PRIMARY UNIQUE fcPathName fcFileName. DEFINE INPUT PARAMETER pcDir AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER plRecursive AS LOGICAL NO-UNDO. DEFINE INPUT-OUTPUT PARAMETER TABLE FOR tt-File. DEFINE VARIABLE vcFile AS CHARACTER NO-UNDO EXTENT 3. INPUT FROM OS-DIR(pcDir). REPEAT: IMPORT vcFile. /* Skip current and parent dir */ IF vcFile[1] EQ '.':U OR vcFile[1] EQ '..':U THEN NEXT. /* We only want to store files in the TT, not dirs */ IF vcFile[3] BEGINS 'F':U THEN DO: CREATE tt-File. ASSIGN tt-File.fcPathName = REPLACE(vcFile[2],vcFile[1],'') tt-File.fcFileName = vcFile[1]. END. /* Recursive read - USE WITH CAUTION! ADDS LOTS OF RUN TIME! */ IF vcFile[3] BEGINS 'D':U AND plRecursive THEN RUN DirList.p (INPUT vcFile[2], INPUT yes, INPUT-OUTPUT TABLE tt-File). END. INPUT CLOSE.