Как создать несколько каталогов в программе на фортране

Я пытаюсь разработать программу fortran77, которая создает 17 каталогов в Unix, а затем выполняет различные другие действия, но создание каталогов было самой большой проблемой, поэтому это все, на чем я хотел бы сосредоточиться в данный момент.

Например:

do i=1,17
cmd="mkdir" ,i
call system(cmd)

call chdir("i")
end do

Из этой части кода я хочу, чтобы команда «mkdir» создала 17 отдельных каталогов в unix с именами от 1 до 17, но когда я пытаюсь скомпилировать программу, я получаю сообщение об ошибке «недопустимый спецификатор системы счисления», фокусируясь на второй строке код я указал.

Другая ошибка также возникает, если сосредоточиться на той же строке кода. «Оператор конкатенации в (^) должен работать с двумя подвыражениями символьного типа, но подвыражение в (^) не является символьным типом.

Есть ли способ преобразовать целые числа в строки?

Вся помощь будет оценена по достоинству.


person P1255    schedule 01.07.2015    source источник
comment
И я бы предпочел не делать cmd=mkdir 1 2 3 4 5... 17 Позже я должен назначить входные файлы для всех каталогов из того же кода.   -  person P1255    schedule 01.07.2015


Ответы (1)


Чтобы ответить на один из ваших вопросов, вы можете преобразовать целое число в строку, написав ему. Рассмотрим пример кода:

program main
integer :: i
character(len=80) :: cmd

do i=1,4
   write(cmd,'(a,i0.2)') 'mkdir Directory_', i
   write(*,*) 'calling "', trim(cmd), '"'
   call system(cmd)
enddo

end program main

который дает вывод

mach5% pgfortran main.f90; ./a.out 
 calling "mkdir Directory_01"
 calling "mkdir Directory_02"
 calling "mkdir Directory_03"
 calling "mkdir Directory_04"
mach5% ls
total 860
-rwx------ 1 chaud106 806765 Jul  1 15:37 a.out*
drwx------ 2 chaud106   4096 Jul  1 15:37 Directory_01/
drwx------ 2 chaud106   4096 Jul  1 15:37 Directory_02/
drwx------ 2 chaud106   4096 Jul  1 15:37 Directory_03/
drwx------ 2 chaud106   4096 Jul  1 15:37 Directory_04/
-rw------- 1 chaud106    195 Jul  1 15:37 main.f90
person Ross    schedule 01.07.2015