Как получить все файлы в каталоге в Cobol
Я работаю с GnuCOBOL(используя Windows), и мне нужно написать компилятор с ним.
То, что я спрашиваю, - заданный путь к каталогу, могу ли я изменить файлы внутри него, используя COBOL? Важно сказать, что вы не можете знать имена файлов. Вы знаете только путь к каталогу, который содержит их.
1 ответ
Решение
Вот код для систем POSIX
identification division.
program-id. SAMPLE.
environment division.
configuration section.
repository.
function all intrinsic.
data data division.
working-storage section.
01 dir usage pointer.
01 dent usage pointer.
01 dirent based.
05 filler pic x(19). *> HERE BE DRAGONS
05 entname pic x(256).
05 filler pic x(237).
01 sayname pic x(256).
*> ************************************************
code procedure division.
call "opendir" using
by content z"."
returning dir
on exception
display "error: no opendir found" upon syserr end-display
bail stop run returning 1
end-call
if dir not equal null then
call "readdir" using
by value dir
returning dent
end-call
perform until dent equal null
*> set address of the based dirent and pull out the name
set address of dirent to dent
initialize sayname
string entname delimited by x"00" into sayname end-string
display trim(sayname TRAILING) end-display
call "readdir" using
by value dir
returning dent
end-call
end-perform
call "closedir" using by value dir end-call
else
call "perror" using by content z"" returning omitted end-call
bail stop run returning 1
end-if
done goback.
end program SAMPLE.
Первоначально опубликовано в SourceForge, под лицензией GPL. Из-за предположения о размере dirent
Вы бы хотели немного переписать код, прежде чем использовать его при неосторожном обращении.