ここでは、いくつかの移植ルーチンおよびその使用方法について説明します。
ルーチンの一覧は、『インテル® Fortran ライブラリ・リファレンス』マニュアルの概要の章にある「移植ルーチン」の表を参照してください。
これらのルーチンは、システムのコマンド、コマンドラインからの引数、環境変数、およびプロセスまたはユーザ情報を返します。
グループ、ユーザ、およびプロセス ID は INTEGER(4) の変数です。ログイン名およびホスト名は文字変数です。GETGID および GETUID 関数は、移植性のために提供されていますが、常に 1 を返します。
これらのプロセス制御ルーチンは、プロセスまたはサブプロセスの操作を制御します。SLEEP または ALARM を使用することでサブプロセスの操作が完了するまで待機し、その進行状況を監視して、KILL を経由して信号を送信し、ABORT でプロセスの実行を停止することができます。
KILL は、必ずしもプログラムの実行を停止するわけではありません。その代わりに、信号を確認し、渡されたコードに応じて適切な操作を行うハンドラルーチンを、信号を受信するルーチンに含めることができます。
SYSTEM を使用した場合、コマンドは別のシェルで実行されることに注意してくだい。SYSTEM 関数で設定された、現在の作業ディレクトリまたは環境変数などのデフォルト設定は、呼び出し側のプログラムが実行されている環境には影響しません。
この移植ライブラリには FORK ルーチンは含まれていません。Linux* システムでは、FORK は親プロセスの複製イメージを作成します。子プロセスおよび親プロセスは、それぞれ固有のリソースのコピーを使用し、互いに独立したプロセスになります。
これらの数値および変換ルーチンは、ベッセル関数における演算、データ型の変換、および乱数の生成に利用することができます。
これらの関数のいくつかは、標準の Fortran 95/90 に相当します。データ・オブジェクトの変換は、LONG または SHORT の代わりに INT 組込み関数を使用して行うことができます。RANDOM_NUMBER および RANDOM_SEED 組込みサブルーチンは、数値および変換ルーチンの表に示す乱数関数と同じ関数を実行します。
AND、XOR、OR、LSHIFT、および RSHIFT などの他のビット操作関数は組込み関数です。これらの関数にアクセスするために、IFPORT モジュールを使用する必要はありません。標準の Fortran 95/90 には多くのビット演算ルーチンが含まれています。『Language Reference』(英語) マニュアルの第 9 章「Category Bit」にある表 9-2 に、これらのルーチンのリストが示されています。
移植ライブラリには、ファイルのプロパティを変更し、文字およびバッファの読み書きを行い、ファイルのオフセット位置を変更するルーチンが含まれています。これらの入出力ルーチンは、次の点を考慮した上で READ または WRITE などの標準の Fortran 入出力文で、同じファイルに対して使用することができます。
直接ファイルで使用する場合、FSEEK、GETC、または PUTC 操作を行った後のレコード番号は次のレコード全体の番号となります。そのユニットで次に行われる通常の Fortran I/O は、次のレコード全体に対して行われます。例えば、レコード長が 10 のファイルの絶対位置 1 を検索した場合、INQUIRE によって返された NEXTREC の値は 2 となります。絶対位置 10 を検索した場合でも、NEXTREC の値は 2 となります。
CARRIAGECONTROL='FORTRAN' (デフォルト設定) のユニットでは、PUTC と FPUTC の文字が列 1 に現れる場合、キャリッジ制御文字として処理されます。
シーケンシャルの書式付きユニットでは、C 言語でキャリッジ・リターン/ラインフィードを表す文字列 "\n"c を、ラインフィードまたは CHAR(10) ではなく、CHAR(13) (キャリッジ・リターン) および CHAR(10) (ラインフィード) として記述します。入力時には、10 (ラインフィード) の後に続く 13 (キャリッジ・リターン) は、10 として返されます。(ICHAR('\n'c) で示される ASCII 値が 10 である文字列 "\n"c の長さは 1 文字です。)
直接ファイルでは、読み書きはそのままの形式で行われます。レコード間の分離記号は、読み込みおよび上書きすることができます。したがって、ファイルを直接ファイルとして使用する場合は、慎重に操作を行ってください。
これらのルーチンを使用して発生した I/O エラーは、インテル Fortran のランタイム・エラーの原因となります。
移植ファイル I/O ルーチンのいくつかは、標準 Fortran 95/90 に相当しています。例えば、ACCESS 関数を使用して、名前で指定されたファイルに対し、モードに従った参照が可能かどうかを確認できます。ACCESS 関数は、ファイルが存在するかどうかを確認するとともに、ファイルに対する読み取り許可、書き込み許可、または実行許可があるかどうかをテストします。この関数は、プログラムの OPEN 文で指定されたファイル属性ではなく、ディスク上に存在するファイル属性を使用します。
ACCESS の代わりに、INQUIRE 文で ACTION パラメータを使用することで、同じ情報を取得することができます。ACCESS 関数は、FAT ファイルの読み取り許可には 0 を返します。これは、すべてのファイルに対して読み込み許可があることを示します。
さまざまな日付および時刻ルーチンを使用して、システム時刻を決定したり、時刻を現地時刻、グリニッジ標準時、日付と時刻要素の配列、または ASCII 文字列に変換することができます。
TIME および DATE は、関数またはサブルーチンのどちらとしても使用できます。名前が重複しているため、プログラムに USE IFPORT 文が含まれていない場合、個別にコンパイルされた各プログラムは、これらのバージョンから 1 つしか使用できません。例えば、プログラムが TIME サブルーチンを 1 度呼び出している場合、TIME を関数として使用することはできません。
標準 Fortran 95/90 には、新しい日付と時刻の組込みサブルーチンが含まれています。
エラー処理ルーチンは、エラーを検出して、エラーのレポートを出力します。
IERRNO エラーコードは、UNIX システムの errno と類似しています。IFPORT モジュールは、通常 UNIX システムの errno.h に含まれている多くの UNIX の errno 名のパラメータ定義を提供します。
IERRNO はエラーが発生した場合にのみ更新されます。例えば、GETC 関数の呼び出しによってエラーが発生したが、その後で 2 回呼び出した PUTC が成功した場合、IERRNO を呼び出すと GETC 呼び出しのエラーが返されます。IERRNO は、移植ライブラリ・ルーチンを呼び出した直後に確認してください。その他の標準 Fortran 90 ルーチンによって、値が未定義の値に変更される可能性があります。
アプリケーションがマルチスレッドを使用する場合、IERRNO は各スレッドごとに設定されることに注意してください。
デバイス、ディレクトリ、およびファイルに関する情報は、これらのルーチンで取得することができます。
標準 Fortran 90 は、ファイル名またはユニット番号でファイルの詳細情報を返す INQUIRE 文を提供します。INQUIRE は、FSTAT、LSTAT、または STAT と同じように使用してください。LSTAT および STAT は同じ情報を返します。STAT 関数の使用を推奨します。
移植ルーチンは、プログラムの呼び出しや制御、キーボードやスピーカ、ファイル管理、配列、浮動小数点での照会や制御、および IEEE* 機能などにも使用することができます。詳細は、『インテル® Fortran ライブラリ・リファレンス』マニュアルの概要の章にある「移植ルーチン」の表を参照してください。