Jest to polecenie fortc, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS
PROGRAM:
IMIĘ
fortc – narzędzie Unidata do generowania kodu C kompatybilnego z fortranem
STRESZCZENIE
fort [-L LibDir] [-O OpSys] filet
OPIS
fort Odczytuje kod C z `filet', przekształca go w kod zgodny z FORTRAN, a następnie
zapisuje wynik na standardowe wyjście. Transformacja zależy od systemu operacyjnego
bo nie ma żadnych standardów w tej kwestii.
Docelowy system operacyjny można określić na kilka sposobów. Jeśli `-OOpcja jest
dany, wówczas używany jest system operacyjny określony w jego argumencie; w przeciwnym razie, jeśli
zmienna środowiskowa `OS' istnieje, to istnieje system operacyjny określony przez jego wartość
używany; w przeciwnym razie domyślnym systemem operacyjnym – określonym w czasie instalacji – jest
używany.
Nazwy globalne, które nie są definicjami funkcji, ale mają być dostępne zarówno z języka C
i FORTRAN powinny być ujęte w `FC_NAME()' makro:
extern int FC_NAME(foo)(void); /* Funkcja FORTRAN */
struktura zewnętrzna {
pływak f;
wew;
} FC_NAME(comblk); /* Wspólny blok FORTRAN */
cfoo()
{
zwróć FC_NAME(foo)(); /* wywołaj funkcję FORTRAN */
}
Funkcje C, które mają być wywoływane z języka FORTRAN, zapisuje się następująco:
int
/*FORTRAN*/
bla(
znakowa nazwa ścieżki, /* nazwa nowego pliku */
kwota rzeczywista, /* kwota do pobrania przez */
doubleprecision dbl, /* ilość do tizzle o */
funkcja pusta errf, /* procedura błędu */
liczba całkowita rcode /* zwrócony kod błędu */)
{
...
lub równoważnie
int
/*FORTRAN*/
foo(char* ścieżka, float* ilość, double* dbl,
void (*errf)(), int* rcode)
{
...
Punkty, na które należy zwrócić uwagę podczas pisania funkcji zgodnych z FORTRAN to:
1. Funkcje, które mają zostać przekształcone, oznaczone są znakiem `/*FORTRAN*/komentarz, który
musi pojawić się w linii przed nazwą funkcji. Wszelkie deklaracje typu return muszą
kontynuuj komentarz.
2. Parametry formalne należy zadeklarować w nawiasach funkcyjnych i oddzielić znakiem
przecinki.
3. Parametry formalne ograniczają się do następujących typów:
charakter or zwęglać*
Dla zmiennych znakowych Fortran.
podwójna precyzja or podwójnie*"
Dla wartości zmiennoprzecinkowych o podwójnej precyzji.
real or platforma*
Dla wartości zmiennoprzecinkowych o pojedynczej precyzji.
liczba całkowita or int *
Dla wartości całkowitych.
rodzaj funkcjonować Nazwa or rodzaj (*Nazwa)()
Dla funkcji zwracających typ `rodzaj'.
4. Po nawiasie otwierającym `{' i w tym samym wierszu nie może znajdować się nic ważnego.
Funkcje należy pisać przy użyciu zmiennych o takich samych nazwach jak funkcje formalne
parametrów i przy tej samej semantyce. W przypadku parametrów formalnych typu
`charakter' (tj. zmienne znakowe w języku Fortran), będzie istnieć zmienna o tej samej nazwie
i będzie typu `zwęglać*'. Dodatkowo dla każdego argumentu zmiennej znakowej wartość lokalna
Zostanie utworzona zmienna typu integralnego, a jej wartością będzie wielkość powiązanej
zmienna znakowa. Nazwa tej zmiennej będzie nazwą powiązanej
zmienna znakowa z „_len„dołączony (np.”nazwa_ścieżki"). Te zmienne długości mogą
być używana w funkcji tak samo jak każda inna zmienna.
Na przykład w systemie SunOS poprzednia funkcja miałaby postać (jeśli jest zawarta w pliku
plik `foo.src'):
#linia 1 „foo.src”
niepodpisany
#linia 2 „foo.src”
foo_(nazwa ścieżki, ilość, errf, rcode, nazwa_ścieżki)
char *nazwa ścieżki;
int nazwa_ścieżki;
liczba zmiennoprzecinkowa *kwota;
nieważne (*errf)();
int *rkod;
{
#linia 9 „foo.src”
Należy zauważyć, że 1) dodano dyrektywy linii preprocesora; 2) nazwa funkcji została
z przyrostkiem podkreślenia; oraz 3) parametr formalny, `nazwa_ścieżki', został stworzony.
W UNICOS ten sam plik stałby się
#włączać
#linia 1 „foo.src”
niepodpisany
#linia 2 „foo.src”
FOO(nazwa ścieżki, ilość, errf, rcode)
_fcd nazwa ścieżki;
liczba zmiennoprzecinkowa *kwota;
nieważne (*errf)();
int *rkod;
{
char *nazwa ścieżki = _fcdtocp (nazwa ścieżki);
unsigned nazwa_ścieżki = _fcdlen (nazwa ścieżki);
#linia 9 „foo.src”
Zwróć w szczególności uwagę na dodatkowe `#include ' i stworzenie i
inicjalizacja zmiennych lokalnych `nazwa ścieżki' i `nazwa_ścieżki'.
Narzędzie to jest zaimplementowane jako skrypt i korzysta z narzędzi dostarczonych przez system sed(1) i
m4(1).
OPCJE
-L LibDir”
Definiuje katalog zawierający pliki biblioteki `fortc'. Wartość domyślna to
ustalane w momencie montażu.
-O OpSys
Definiuje system operacyjny jako OpSys. Znane wartości to `aix', `convexos',
`domainos', `hpux', `irix', `msoft', `next-absoft', `newsos', `sunos', `ultrix',
„unicos” i „vms”. Aby zapewnić większą elastyczność, mogą mieć znane wartości
dowolny przyrostek (np. `sunos_4.1').
ŚRODOWISKO
OS Definiuje system operacyjny, jeśli nie określono opcji `-O'. Znane wartości
są takie same jak -O opcja.
Korzystaj z fortc online, korzystając z usług onworks.net