O exemplo abaixo lê uma estrutura de diretórios, através de um diretório raiz, e guarda todos os arquivos encontrados em pastas e subpastas numa temp-table. Código: DEF TEMP-TABLE tt-aux NO-UNDO FIELD nome-relativo AS CHAR FIELD nome-absoluto AS CHAR FIELD atributos AS CHARACTER. DEF TEMP-TABLE tt-arquivos NO-UNDO FIELD nome-relativo AS CHAR FIELD nome-absoluto AS CHAR. /* Objetivo: percorre a partir de um diretório raiz e guarda todos os arquivos encontrados em pastas e subpastas na temp-table passada por parâmetro. */ PROCEDURE pi-percorre-dir: DEF INPUT PARAM c-dir AS CHAR NO-UNDO. /* diretório para busca de arquivos */ DEF INPUT-OUTPUT PARAM TABLE FOR tt-arquivos. /* tt que guardará o nome relativo e absoluto dos arquivos encontrados */ DEF INPUT PARAM TABLE FOR tt-aux. /* tt usada para capturar informações dos arquivos/diretórios através do OS-DIR */ INPUT FROM OS-DIR(c-dir) CONVERT SOURCE "iso8859-1". REPEAT: /* varre o diretório */ EMPTY TEMP-TABLE tt-aux. /* garante que tt terá sempre apenas um registro */ CREATE tt-aux. IMPORT tt-aux. FIND FIRST tt-aux. /* aponta para o registro */ IF TRIM(tt-aux.nome-relativo) <> "" AND TRIM(tt-aux.nome-relativo) <> "." AND TRIM(tt-aux.nome-relativo) <> ".." THEN DO: IF tt-aux.atributos = "D" THEN /* se objeto lido for uma pasta, executa recursivamente a mesma procedure em busca dos arquivos dentro desta pasta */ RUN pi-percorre-dir(INPUT tt-aux.nome-absoluto, INPUT-OUTPUT TABLE tt-arquivos, INPUT TABLE tt-aux). ELSE DO: /* senão, guarda nome absoluto e relativo do arquivo dentro da tt responsável */ CREATE tt-arquivos. ASSIGN tt-arquivos.nome-absoluto = LOWER(tt-aux.nome-absoluto) tt-arquivos.nome-relativo = LOWER(tt-aux.nome-relativo). END. END. END. /* REPEAT */ INPUT CLOSE. EMPTY TEMP-TABLE tt-aux. END. /* PROCEDURE pi-percorre-dir */ RUN pi-percorre-dir(INPUT "c:\pasta_raiz", INPUT-OUTPUT TABLE tt-arquivos, INPUT TABLE tt-aux). FOR EACH tt-arquivos: DISP tt-arquivos.nome-absoluto FORMAT "X(70)". END.