Можете ли вы передать значение из одной программы на Фортране в другую программу на Фортране?

У меня есть программа, которая имеет значение в переменной. Как только значение установлено, я хочу вызвать другую программу и использовать значение переменной, чтобы определить, куда идти в новой программе. Кто-нибудь знает, как это сделать?


person Kathy B.    schedule 27.11.2013    source источник
comment
Если вы можете сделать вторую программу подпрограммой, вы можете вызывать ее из первой программы и обмениваться информацией через аргументы. В противном случае следуйте инструкциям Марка.   -  person milancurcic    schedule 27.11.2013
comment
Спасибо, сначала попробую этот метод, а там посмотрим.   -  person Kathy B.    schedule 28.11.2013


Ответы (2)


Если у вас есть компилятор Fortran 2008, у вас будет стандартная подпрограмма execute_command_line. Для этого требуется, среди прочего, строковый аргумент, представляющий команду для выполнения (вместе с любыми аргументами команды), так что вы можете довольно легко выполнить другую программу на Фортране, которая считывает аргумент командной строки. Эта вызываемая программа могла использовать подпрограмму Fortran 2003 get_command_argument для обработки командной строки.

Даже если ваш компилятор не (полностью) совместим с Fortran 2008, вы можете обнаружить, что он либо реализует эту встроенную процедуру, либо предоставляет (нестандартную) альтернативу. Ваша документация по компилятору просветит вас.

person High Performance Mark    schedule 27.11.2013
comment
Мы используем компилятор fortran90... не знаете, как это работает? - person Kathy B.; 27.11.2013
comment
Если ваш компилятор не поддерживает execute_command_line, вы можете попробовать использовать нестандартную подпрограмму system, как в call system('myOtherFortranProgram'). - person milancurcic; 27.11.2013

Я не знаю о фортране. Но я бы сделал это с помощью аргументов командной строки. Не могу придумать язык, который их не принимает. И до тех пор, пока это все ввод и нет вывода, этого должно быть достаточно. Кроме того, вы можете выполнять простые тестовые прогоны программы, которая принимает входные данные, потому что вы можете просто запустить ее с тестовыми входными данными из командной оболочки.

Недостатком является то, что вам нужно преобразовать ваши данные в строки и проанализировать их в другой программе. Это не так важно для простых типов, но может быть неприятно для сложных данных.

Для сложных данных вы можете записать в файл, указать путь к файлу с помощью аргумента командной строки и прочитать файл в другой программе. Файловый подход также позволяет другой программе возвращать обратную связь в том же файле.

Вот поток SO в командных строках в фортране: Fortran: `READ(*,*)` != Аргументы командной строки. Как использовать аргументы командной строки?

Редактировать: я изменил формулировку выходной части с «печатать ваши данные в виде строки» на «преобразовать ваши данные в строки». Эта часть вместе со ссылкой подразумевала предложение вывести данные на экран и прочитать их оттуда в другой программе. Хотя это тоже может быть решением, оно не было задумано.

person No answer    schedule 27.11.2013
comment
У меня есть результат от первой записи программы на экран. Я вижу, что это работает. Второй программе нужно прочитать этот результат с экрана, но она его не читает. Я не уверен, что это то, что вы имели в виду, но похоже, что это должно работать. Кстати, я использую редактор AIX. - person Kathy B.; 27.11.2013
comment
Чтение с экрана - это не то, что я имел в виду. Я предложил то же решение, что и High Performance Mark, но на 4 минуты раньше и с меньшими подробностями. Так как Марк мог перечислить команды Fortran, я добавил ссылку, которая поможет вам их использовать. Связанный поток SO показывает использование get_command_argument. Для получения дополнительной информации вы должны использовать Google execute_command_line Fortran. - person No answer; 03.12.2013