2013-07-03 2 views
1

Есть ли функция в Fortran, которая запрашивает тип оперативной системы? и дает этот тип как строку или что-то подобное? В принципе, я хотел бы использовать функцию SYSTEM и запускать мою программу как на Linux, так и на машинах Windows. Моя программа, использующая функцию SYSTEM, хорошо работает на linux, но теперь я хочу сделать ее общей и запустить ее также в окнах. Предположим, что эта функция, которую я ищу, называется INQUIRE_SYSTEM. Моя программа гласит:Функция Fortran, которая проверяет тип оперативной системы

USE IFPORT 

    stringSYSTEM = INQUIRE_SYSTEM() 

    if (TRIM(ADJUSTL(stringSYSTEM).eq.linux)) THEN ! linux systems 
     I = SYSTEM("mv final.out restart.dat") 
     If (I == -1) then 
     errnum = ierrno() 
     print *, 'Error ', errnum 
     end if 
    else !dos systems 
     I = SYSTEM("rename final.out restart.dat") 
     If (I == -1) then 
     errnum = ierrno() 
     print *, 'Error ', errnum 
    end if 

большое спасибо за любую помощь. A.

ответ

1

Один из подходов - проверить макросы препроцессора. Создайте список в зависимости от того, какие ОС вы поддерживаете. См. How do I check OS with a preprocessor directive?.

Многие компиляторы Fortran будут запускать препроцессор, когда тип файла имеет верхний регистр: F90. Или есть опция компилятора. Пример кода:

#ifdef __GFORTRAN__ 
    write (*, '("gfortran")') 
#endif 

Зачем вам нужно знать ОС для программы Fortran?

+0

Мне нужно знать, чтобы использовать правильную команду с внутренней функцией SYSTEM. См. Мой пример выше. Вот помощь для функции.http: //gcc.gnu.org/onlinedocs/gfortran/SYSTEM.html – Lupocci

+0

Система не подходит для этого - вы не можете получить информацию. Использование условной компиляции, как М.С.Б. предлагает, является самым популярным способом делать то, о чем вы просите. –

Смежные вопросы