これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド fortc です。
プログラム:
NAME
fortc - fortran 互換の C コードを生成する Unidata ユーティリティ
SYNOPSIS
要塞 [-L リブディレクトリ] [-O 運用システム] file
DESCRIPTION
要塞 ` から C コードを読み取りますfile'、それを FORTRAN 互換コードに変換してから、
結果を標準出力に書き込みます。 変換はオペレーティング システムに依存します
この問題には基準がないからです。
ターゲット オペレーティング システムは、いくつかの方法で指定できます。 ` の場合-O'オプションは
指定された場合、引数で指定されたオペレーティング システムが使用されます。 それ以外の場合、
環境変数 `OS' が存在する場合、その値で指定されたオペレーティング システムは
使用済み; それ以外の場合、インストール時に決定されるデフォルトのオペレーティング システムは次のとおりです。
中古。
関数定義ではないが、両方の C からアクセスできるグローバル名
FORTRAN は ` で囲む必要があります。FC_NAME()' 大きい:
extern int FC_NAME(foo)(void); /* FORTRAN 関数 */
外部構造体 {
フロート f;
int i;
FC_NAME(comblk); /* FORTRAN 共通ブロック */
cfoo()
{
FC_NAME(foo)()を返します; /* FORTRAN 関数を呼び出す */
}
FORTRAN から呼び出される C 関数は次のように記述されます。
int型
/*フォートラン*/
foo(
文字パス名, /* 新しいファイルのファイル名 */
実際の金額、/* によって計算される金額 */
doubleprecision dbl, /* ティズルする量 */
void function errf, /* エラー ルーチン */
整数 rcode /* エラー コードが返されました */)
{
...
または、同等に、
int型
/*フォートラン*/
foo(char* パス名, float* 量, double* dbl,
void (*errf)(), int* rcode)
{
...
FORTRAN 互換関数を記述する際の注意点は次のとおりです。
1. 変換される関数は、前に付けられる ` でマークされます。/*フォートラン*/」というコメント、
関数名の前の行に指定する必要があります。 戻り値の型宣言は次のようにする必要があります。
コメントを続けます。
2. 仮パラメータは関数の括弧内で宣言し、次のように区切る必要があります。
カンマ。
3. 仮パラメータは次のタイプに制限されます。
文字 or char *
Fortran 文字変数の場合。
倍精度 or ダブル*"
倍精度浮動小数点値の場合。
リアル or 浮く*
単精度浮動小数点値の場合。
整数 or int *
整数値の場合。
type function 名 or type (*名)()
型を返す関数の場合 `type'.
4. 同じ行の左中括弧 `{' の後には、重要なことは何もあってはならない。
関数は、正式な関数と同じ名前の変数を使用して作成する必要があります。
パラメータ、および同じセマンティクスを使用します。 型の仮パラメータの場合
`文字' (つまり、Fortran 文字変数)、同じ名前の変数が存在します。
` 型になりますchar *'。 さらに、各文字変数引数に対して、ローカル
整数型の変数が作成され、その値は関連する変数のサイズになります。
文字変数。 この変数の名前は、関連付けられた変数の名前になります。
" を含む文字変数_レン" が追加されました (例 "パス名_len")。これらの長さの変数は、
他の変数と同様に関数内で使用できます。
たとえば、SunOS では、前の関数は次のようになります (関数が
ファイル `foo.src'):
#1行目「foo.src」
unsigned int
#2行目「foo.src」
foo_(パス名、量、errf、rcode、パス名_len)
char *パス名;
int パス名_len;
float *量;
void (*errf)();
int *rcode;
{
#9行目「foo.src」
1) プリプロセッサ行ディレクティブが追加されていることに注意してください。 2) 関数名は
末尾にアンダースコアが付けられます。 3) 仮パラメータ `パス名_len』を作成しました。
UNICOS では、同じファイルは次のようになります。
#含む
#1行目「foo.src」
unsigned int
#2行目「foo.src」
FOO(パス名、量、errf、rcode)
_fcd パス名;
float *量;
void (*errf)();
int *rcode;
{
char *パス名 = _fcdtocp (パス名);
unsigned pathname_len = _fcdlen (パス名);
#9行目「foo.src」
特に追加の `#include に注意してください。 'そして創造と
ローカル変数の初期化 `パス名'と `パス名_len'.
このユーティリティはスクリプトとして実装され、システム提供のユーティリティを使用します。 sed(1)と
m4とします。
OPTIONS
-L リブディレクトリ」
「fortc」ライブラリ ファイルを含むディレクトリを定義します。 デフォルトは
インストール時に決定されます。
-O 運用システム
オペレーティング システムを次のように定義します 運用システム。 既知の値には、「aix」、「convexos」、
`domainos'、`hpux'、`irix'、`msoft'、`next-absoft'、`newsos'、`sunos'、`ultrix'、
「unicos」と「vms」。 柔軟性を高めるために、既知の値には次のような値が含まれる場合があります。
任意のサフィックス (例: `sunos_4.1')。
ENVIRONMENT
OS `-O' オプションが指定されていない場合は、オペレーティング システムを定義します。 既知の値
と同じです -O オプションを選択します。
onworks.net サービスを使用してオンラインで fortc を使用する