Это команда fortc, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
fortc - Утилита Unidata для генерации кода C, совместимого с fortran
СИНТАКСИС
Fortc [-Л LibDir] [-О ОпСис] файл
ОПИСАНИЕ
Fortc Читает код C из `файл', преобразует его в код, совместимый с FORTRAN, а затем
записывает результат в стандартный вывод. Преобразование зависит от операционной системы.
потому что в этом вопросе нет стандартов.
Целевая операционная система может быть указана несколькими способами. Если `-Oвариант
задано, то используется операционная система, указанная его аргументом; в противном случае, если
переменная окружения `OS'существует, то операционная система, указанная в его значении,
использовал; в противном случае операционная система по умолчанию, определенная во время установки, является
используемый.
Глобальные имена, которые не являются определениями функций, но которые должны быть доступны как из C
и FORTRAN должны быть заключены в `FC_NAME ()'макрос:
extern int FC_NAME (foo) (недействительно); / * Функция FORTRAN * /
внешняя структура {
поплавок ф;
инт я;
} FC_NAME (гребешок); / * Общий блок FORTRAN * /
cfoo ()
{
return FC_NAME (foo) (); / * вызов функции FORTRAN * /
}
Функции C, которые должны вызываться из FORTRAN, записываются следующим образом:
Int
/ * ФОРТРАН * /
фу (
путь к символу, / * имя нового файла * /
реальная сумма, / * сумма для замораживания * /
doubleprecision dbl, / * количество звонков * /
void function errf, / * процедура ошибки * /
целое число rcode / * вернул код ошибки * /)
{
...
или, что эквивалентно,
Int
/ * ФОРТРАН * /
foo (char * pathname, float * amount, double * dbl,
void (* errf) (), int * rcode)
{
...
При написании совместимых с FORTRAN функций следует отметить следующие моменты:
1. Преобразуемые функции помечаются символом "/ * ФОРТРАН * /комментарий, который
должно появиться в строке перед именем функции. Любые объявления возвращаемого типа должны
продолжить комментарий.
2. Формальные параметры должны быть объявлены в скобках функций и разделены знаком.
запятые.
3. Формальные параметры ограничены следующими типами:
персонаж or символ *
Для символьных переменных Фортрана.
двойная точность or двойной*"
Для значений с плавающей запятой двойной точности.
реальные or плавать*
Для значений с плавающей запятой одинарной точности.
целое or int *
Для целочисленных значений.
напишите функция имя or напишите (*имя) ()
Для функций, возвращающих тип `напишите'.
4. После открывающей фигурной скобки "{" и в той же строке не должно быть ничего важного.
Функции должны быть написаны с использованием переменных с теми же именами, что и формальные
параметры и с той же семантикой. В случае формальных параметров типа
`персонаж'(т.е. символьные переменные Fortran), переменная с таким же именем будет существовать
и будет типа `символ *'. Кроме того, для каждого аргумента символьной переменной локальный
будет создана переменная целочисленного типа, значением которой будет размер связанного
символьная переменная. Имя этой переменной будет именем связанного
символьная переменная с "_лен"добавлено (например,"путь_len"). Эти переменные длины могут
использоваться в функции как любая другая переменная.
Например, под SunOS предыдущая функция могла бы стать (если она содержится в
файл `foo.src'):
# строка 1 "foo.src"
без знака int
# строка 2 "foo.src"
foo_ (путь, количество, errf, rcode, pathname_len)
char * путь;
интервал_имя_пути;
float * количество;
void (* errf) ();
int * rcode;
{
# строка 9 "foo.src"
Обратите внимание, что 1) добавлены строковые директивы препроцессора; 2) имя функции было
с суффиксом подчеркивания; и 3) формальный параметр:путь_len', был создан.
В UNICOS этот же файл станет
#включают
# строка 1 "foo.src"
без знака int
# строка 2 "foo.src"
FOO (имя пути, количество, ошибка, код ошибки)
_fcd path named;
float * количество;
void (* errf) ();
int * rcode;
{
char * pathname = _fcdtocp (имя пути);
беззнаковый pathname_len = _fcdlen (имя пути);
# строка 9 "foo.src"
Обратите внимание, в частности, на дополнительный `#include 'и создание и
инициализация локальных переменных `пути'и `путь_len'.
Эта утилита реализована в виде скрипта и использует системные утилиты. СЕПГ(1) и
m4(1).
ДОПОЛНИТЕЛЬНЫЕ УСЛУГИ, НЕ ВКЛЮЧЕННЫЕ В ПАКЕТ
-L LibDir "
Определяет каталог, содержащий файлы библиотеки `fortc '. По умолчанию
определяется во время установки.
-O ОпСис
Определяет операционную систему как ОпСис. Известные значения включают aix, convxos,
domainos, hpux, irix, msoft, next-absoft, newsos, sunos, ultrix,
unicos и vms. Чтобы обеспечить большую гибкость, известные значения могут иметь
любой суффикс (например, sunos_4.1).
ОКРУЖАЮЩАЯ СРЕДА
OS Определяет операционную систему, если опция -O не указана. Известные ценности
такие же как -O опцию.
Используйте fortc онлайн с помощью сервисов onworks.net