Dit is het commandofortc dat kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
fortc - Unidata-hulpprogramma om fortran-compatibele C-code te genereren
KORTE INHOUD
fort [-L LibDir] [-O OpSys] filet
PRODUCTBESCHRIJVING
fort Leest C-code van `filet', transformeert het in FORTRAN-compatibele code, en vervolgens
schrijft het resultaat naar standaarduitvoer. De transformatie is afhankelijk van het besturingssysteem
omdat er geen normen op dit gebied bestaan.
Het doelbesturingssysteem kan op verschillende manieren worden gespecificeerd. Als de `-O' optie is
gegeven, dan wordt het besturingssysteem gebruikt dat door het argument wordt gespecificeerd; anders, als de
omgevingsvariabele `OS' bestaat, dan is het besturingssysteem gespecificeerd door de waarde ervan
gebruikt; anders is het standaardbesturingssysteem (bepaald tijdens de installatie).
gebruikt.
Globale namen die geen functiedefinities zijn, maar die toegankelijk moeten zijn vanuit zowel C
en FORTRAN moeten worden omsloten door de `FC_NAME()'macro:
extern int FC_NAME(foo)(ongeldig); /* FORTRAN-functie */
externe structuur {
zweven f;
int i;
} FC_NAME(comblk); /* FORTRAN gemeenschappelijk blok */
cfo()
{
return FC_NAME(foo)(); /* bel FORTRAN-functie */
}
C-functies die vanuit FORTRAN moeten worden aangeroepen, worden als volgt geschreven:
int
/*FORTRAN*/
foe (
tekenpadnaam, /* bestandsnaam van nieuw bestand */
reëel bedrag, /* bedrag om te frobdiceren door */
dubbele precisie dbl, /* bedrag om te sissen met */
ongeldige functie errf, /* foutroutine */
geheel getal rcode /* retourneerde foutcode */)
{
...
of, equivalent,
int
/*FORTRAN*/
foo(char* padnaam, float* bedrag, double* dbl,
ongeldig (*errf)(), int* rcode)
{
...
De punten waarmee u rekening moet houden bij het schrijven van FORTRAN-compatibele functies zijn:
1. Functies die moeten worden getransformeerd, worden gemarkeerd door een procedure `/*FORTRAN*/' opmerking, die
moet op de regel vóór de functienaam verschijnen. Eventuele aangiften van het retourtype moeten
ga verder met de opmerking.
2. De formele parameters moeten tussen functiehaakjes worden gedeclareerd en worden gescheiden door
komma's.
3. De formele parameters zijn beperkt tot de volgende typen:
karakter or teken*
Voor Fortran-tekenvariabelen.
dubbele precisie or dubbele*"
Voor drijvende-kommawaarden met dubbele precisie.
vast or vlot*
Voor drijvende-kommawaarden met enkele precisie.
geheel getal or int *
Voor gehele waarden.
type dan: functie naam or type dan: (*naam)()
Voor functies die terugkeren type ` type dan: '.
4. Er mag niets belangrijks staan na de openingsaccolade, `{', en op dezelfde regel.
De functies moeten worden geschreven met variabelen met dezelfde naam als de formele
parameters, en met dezelfde semantiek. In het geval van formele parameters van type
`karakter' (dwz Fortran-tekenvariabelen), zal er een variabele met dezelfde naam bestaan
en zal van het type ` zijnteken*'. Bovendien wordt voor elk tekenvariabele-argument een local
Er wordt een variabele van het integrale type gemaakt en de waarde ervan is de grootte van de bijbehorende variabele
karakter-variabele. De naam van deze variabele is de naam van de bijbehorende variabele
tekenvariabele met "_len" toegevoegd (bijv. "padnaam_len"). Deze lengtevariabelen kunnen dat wel zijn
in de functie worden gebruikt, net als elke andere variabele.
Onder SunOS zou de vorige functie bijvoorbeeld worden (als deze is opgenomen in de
bestand `foo.src'):
#regel 1 "foo.src"
niet aangemeld
#regel 2 "foo.src"
foo_(padnaam, bedrag, errf, rcode, padnaam_len)
char *padnaam;
int padnaam_len;
vlotter *bedrag;
leegte (*errf)();
int *rcode;
{
#regel 9 "foo.src"
Merk op dat 1) preprocessorlijnrichtlijnen zijn toegevoegd; 2) de functienaam is geweest
voorzien van een onderstrepingsteken; en 3) een formele parameter, `padnaam_len', Is gemaakt.
Onder UNICOS zou hetzelfde bestand
#erbij betrekken
#regel 1 "foo.src"
niet aangemeld
#regel 2 "foo.src"
FOO(padnaam, bedrag, errf, rcode)
_fcd padnaam;
vlotter *bedrag;
leegte (*errf)();
int *rcode;
{
char *padnaam = _fcdtocp (padnaam);
unsigned pathname_len = _fcdlen (padnaam);
#regel 9 "foo.src"
Let vooral op de extra `#include ' en de creatie en
initialisatie van de lokale variabelen `padnaam' en `padnaam_len'.
Dit hulpprogramma is geïmplementeerd als een script en maakt gebruik van de door het systeem geleverde hulpprogramma's dorst(1) en
m4(1).
OPTIES
-L LibDir"
Definieert de map die de `fortc'-bibliotheekbestanden bevat. De standaardwaarde is
bepaald tijdens de installatie.
-O OpSys
Definieert het besturingssysteem als OpSys. Bekende waarden zijn onder meer `aix', `convexos',
`domainos', `hpux', `irix', `msoft', `next-absoft', `newsos', `sunos', `ultrix',
'unicos' en 'vms'. Om een grotere flexibiliteit mogelijk te maken, kunnen de bekende waarden gelden
elk achtervoegsel (bijvoorbeeld `sunos_4.1').
MILIEU
OS Definieert het besturingssysteem als de optie `-O' niet is opgegeven. Bekende waarden
zijn hetzelfde als de -O optie.
Gebruik fortc online met behulp van onworks.net-services