Как получить все файлы в каталоге в 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 Вы бы хотели немного переписать код, прежде чем использовать его при неосторожном обращении.

Другие вопросы по тегам