У меня есть код FORTRAN, который создает .dll, который вызывается из нескольких разных проектов. В некоторых случаях я хочу записать вывод в файл .txt, а в других случаях вывод передается из .dll, в зависимости от проекта, который его вызывает. То, что я ищу, - это способ обработать инструкцию WRITE
то же самое в любом случае. То есть, я искал что-то вродеНазначение номера модуля ввода/вывода переменной строки
SUBROUTINE MYPROGRAM(PROJECTFLAG,MYSTRING)
IF (PROJECTFLAG.EQ.1) THEN
OPEN(1,FILE='RESULTS.TXT')
ELSEIF (PROJECTFLAG.EQ.2) THEN
OPEN(1,MYSTRING) !THIS SYNTAX DOES NOT WORK
ENDIF
...
WRITE (1,*) OUTPUTDATA
END SUBROUTINE
Как я уже отмечал, синтаксис, который у меня выше, не работает. Возможно ли использовать OPEN
переменную для WRITE
, например, или вы можете только OPEN
файлов?
Я знаю, что я мог пошевелить, если блок вниз, и сделать что-то вроде
IF (PROJECTFLAG.EQ.1) THEN
WRITE(1,*) OUTPUTDATA
ELSEIF (PROJECTFLAG.EQ.2) THEN
WRITE(MYSTRING,*) OUTPUTDATA
ENDIF
но код в реальном проекте, очевидно, гораздо более сложным, и моя цель состоит в том, чтобы иметь такое же WRITE
заявления используется , независимо от того, где я хочу записать данные.
Спасибо. Я провел еще несколько исследований после того, как разместил Q, и нашел [этот сайт для компиляторов Intel] (https://software.intel.com/sites/products/documentation/doclib/stdxe/2013/composerxe/compiler/fortran -mac/GUID-A4E25114-C10A-486E-B835-DEA35B371472.htm), в котором точно указано, что у вас есть. Написание общей функции может работать, я буду смотреть на это. – GeneralMike