nAG Fortran コンパイラ 7.2 マニュアル

 
ナビゲーション:前へ   上へ   次へ

7.4 f90_unix_env

このモジュールは ISO/IEC 9945-1:1990 Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language] で詳細に規定される機能に対するFortran APIの一部を提供するものです。

このモジュール中の関数はセクション4 プロセス環境、及び4.3BSDからの gethostnameに由来するものです。

エラー処理についてはF90_UNIX_ERRNOに記述されています。 省略可能なERRNO引数を用いた手続きに対し、エラーが生じERRNO が存在しなかった場合には、プログラムは終了させられる点に注意してください。

このモジュール中のすべての手続きは総称的なものです。いくつかは個別的でもありま す(これは将来リリースで変わる可能性があります)。

7.4.1 パラメータ

INTEGER(int32),PARAMETER :: clock_tick_kind
クロック刻み(TIMES参照)に用いられる整数種別。

INTEGER(int32),PARAMETER :: id_kind
ID(すなわちユーザ(uids)、グループ(gids)、プロセスグループ(pgids)、 プロセス(pids))を表す整数種別。

INTEGER(int32),PARAMETER :: long_kind
Cの型‘long’に対応する整数種別。 これは実際にはこのモジュール中で使用されませんが、SYSCONFからの値 を受け取るための変数を宣言する際に有用です。

INTEGER(int32),PARAMETER :: sc_stdin_unit, sc_stdout_unit, sc_stderr_unit,
    sc_arg_max, sc_child_max, sc_clk_tck, sc_job_control, sc_open_max,
    sc_ngroups_max, sc_saved_ids, sc_stream_max, sc_tzname_max, sc_version
SYSCONFへの引数として用いられる値。 次の表はSYSCONFから返される情報を記載したものです。 これはSC_*定数の値ではありません。
SC_STDIN_UNIT
標準入力(READ *,...)に対する論理装置番号。これは標準組込みモジュール ISO_FORTRAN_ENV中のINPUT_UNITと同じ値です。
SC_STDOUT_UNIT
標準出力(PRINT, WRITE(*,...))に対する論理装置番号。こ れは標準組込みモジュールISO_FORTRAN_ENV中のOUTPUT_UNITと同じ値 です。
SC_STDERR_UNIT
エラーが報告される対象の論理装置番号。これは標準組込みモジュール ISO_FORTRAN_ENV中のERROR_UNITと同じ値です。
SC_ARG_MAX
EXEC関数に対する引数(環境データを含む)の最大長(単位はバイト)。
SC_CHILD_MAX
単一ユーザ当りの同時実行プロセス最大数。
SC_CLK_TCK
1秒当りのクロック刻み数(これはCLK_TCK関数で返される値と同一です)。
SC_JOB_CONTROL
OSによってジョブ制御がサポートされる場合にのみ利用できる値。
SC_NGROUPS_MAX
プロセス当りの同時補助グループID最大数。
SC_OPEN_MAX
単一プロセスによって同時にオープン可能な最大ファイル数。
SC_SAVED_IDS
個々のプロセスがセーブされたset-uidとset-gidを持つ場合にのみ利用できる値。
SC_STREAM_MAX
同時にオープン可能な論理装置の最大数。 常に利用できるとは限りません。
SC_TZNAME_MAX
タイムゾーンの名称に対する最大文字数。
SC_VERSION
Posixバージョン番号。 基盤となるOSのCインタフェースがISO/IEC 9945-1:1990準拠の場合には、これは 199009となります。

INTEGER(int32),PARAMETER :: time_kind
日付/時刻の値(TIME参照)を収容する際に用いられる整数種別。

7.4.2 型

TYPE tms
    INTEGER(clock_tick_kind) utime, stime, cutime, cstime
END TYPE
CPU使用時間(単位はクロック刻み)を保持するための構造型。UTIMESTIMEはプロセスに対するCPUタイム情報を、CUTIMECSTIMEは終了した子プロセスに対するCPUタイム情報を含んでいます。 それぞれはさらにユーザタイム(UTIME, CUTIME)とシステムタ イム(STIME, CSTIME)に区分されます。

TYPE utsname
    CHARACTER(...) sysname, nodename, release, version, machine
END TYPE
UNAMEによって返されるデータを保持するための構造型。 個々の成分の文字長は固定ですが、それぞれのシステムによって異なる可能性が あるので注意してください。 これら成分中のデータは空白によって埋められたり(短かった場合)、切り取ら れたり(長かった場合)します。 さらなる情報についてはISO/IEC 9945-1:1990を参照ください。

7.4.3 手続き

PURE INTEGER(KIND=clock_tick_kind) FUNCTION clk_tck()
CPUタイム1秒当りのクロック刻み数(TIMES参照)を応答として返します。

PURE SUBROUTINE ctermid(s,lens)
    CHARACTER(*),OPTIONAL,INTENT(OUT) :: s
    INTEGER(int32),OPTIONAL,INTENT(OUT) :: lens
指定された場合には、Sには制御端末のファイル名称がセットされます。 指定された場合には、LENSには制御端末のファイル名称の長さがセットされます。 Sが制御端末のファイル名称よりも長かった場合には空白が追加されます。 Sの方が短かった場合にはそれは切り取られます — そのような切取りが行われ たかどうかを検知するためにLENSの値をチェックすることはユーザの責任です。

制御端末のファイル名称が何らかの理由により決定できない場合には、LENSは0に、 Sには空白がセットされます(共に存在する場合)。

SUBROUTINE getarg(k,arg,lenarg,errno)
    INTEGER(*),INTENT(IN) :: k
    CHARACTER(*),OPTIONAL,INTENT(OUT) :: arg
    INTEGER(int32),OPTIONAL,INTENT(OUT) :: lenarg
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
コマンド行の引数番号Kをアクセスします。ここに引数0はプログラム名です。 ARGが存在する場合、それは引数の文字列を受け取ります(引数の長さが ARGの長さと異なった場合には、空白の追加、あるいは切取りが適宜行われま す)。 LENARGが存在する場合、それは引数の長さを受け取ります。 ERRNOが存在する場合、それはエラーステータスを受け取ります。

Kが0より小さかったり、引数の数(IARGCからの応答)より大きかっ た場合には、エラーEINVALF90_UNIX_ERRNO参照)が発生する点 に注意してください。

この手続きは標準組込み手続きGET_COMMAND_ARGUMENTに非常に近いものです。

  PURE INTEGER(id_kind) FUNCTION getegid()
呼出し元プロセスの実効グループ番号を応答として返します。

SUBROUTINE getenv(name,value,lenvalue,errno)
    CHARACTER(*),INTENT(IN) :: name
    CHARACTER(*),OPTIONAL,INTENT(OUT) :: value
    INTEGER(int32),OPTIONAL,INTENT(OUT) :: lenvalue
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
NAMEで指定された環境変数にアクセスします。 VALUEが存在する場合、それはその変数のテキスト値を受け取ります(値の長 さがVALUEの長さと異なった場合には、空白の追加、あるいは切取りが適宜行 われます)。 LENVALUEが存在する場合、それは値の長さを受け取ります。 ERRNOが存在する場合、それはエラーステータスを受け取ります。

指定されたような環境変数が存在しなかった場合には、エラーEINVALF90_UNIX_ERRNO参照)が発生します。 他の可能性のあるエラーにはENOMEMがあります。

PURE INTEGER(id_kind) FUNCTION geteuid()
呼出し元プロセスの実効ユーザ番号を応答として返します。

PURE INTEGER(id_kind) FUNCTION getgid()
呼出し元プロセスのグループ番号を応答として返します。

SUBROUTINE getgroups(grouplist,ngroups,errno)
    INTEGER(id_kind),OPTIONAL,INTENT(OUT) :: grouplist(:)
    INTEGER(int32),OPTIONAL,INTENT(OUT) :: ngroups
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
呼出し元プロセスに対する補助グループ番号を求めます。 GROUPLISTが存在する場合、それには補助グループ番号がセットされます。 NGROUPSが存在する場合、それは補助グループ番号の数を受け取ります。 ERRNOが存在する場合、それはエラーステータスを受け取ります。

GROUPLISTが存在するものの、補助グループ番号のリスト全体を収納できる 大きさを持たなかった場合、エラーEINVALF90_UNIX_ERRNO参照) が発生します。 補助グループ番号の最大数についてはSYSCONF(問合せコード SC_NGROUPS_MAX)を使って知ることができます。 あるいは‘CALL GETGROUPS(NGROUPS=N)’によって実際に使われている 数を求めることもできます。

PURE SUBROUTINE gethostname(name,lenname)
    CHARACTER(*),OPTIONAL,INTENT(OUT) :: name
    INTEGER(int32),OPTIONAL,INTENT(OUT) :: lenname
これは4.3BSDのgethostname の機能を提供します。 NAMEが存在する場合、現行プロセッサに対する標準ホスト名を文字列で受け取る ことができます(空白の追加、あるいは切取りが適宜行われます)。 LENNAMEが存在する場合、それはホスト名の長さを受け取ります。 ホスト名が得られなかった場合にはLENNAMEは0となります。

PURE SUBROUTINE getlogin(s,lens)
    CHARACTER(*),OPTIONAL,INTENT(OUT) :: s
    INTEGER(int32),OPTIONAL,INTENT(OUT) :: lens
呼出し元プロセスに付随したユーザ名(ログイン名)にアクセスします。 Sが存在する場合、名称を文字列で受け取ることができます(ログイン名の長 さがSの長さと異なった場合には、空白の追加、あるいは切取りが適宜行われ ます)。 LENSが存在する場合、それはログイン名の長さを受け取ります。

PURE INTEGER(id_kind) FUNCTION getpgrp()
呼出し元プロセスのプロセスグループ番号を応答として返します。

PURE INTEGER(id_kind) FUNCTION getpid()
呼出し元プロセスのプロセス番号を応答として返します。

PURE INTEGER(id_kind) FUNCTION getppid()
呼出し元プロセスの親のプロセス番号を応答として返します。

PURE INTEGER(id_kind) FUNCTION getuid()
呼出し元プロセスのユーザ番号を応答として返します。

PURE INTEGER(int32) FUNCTION iargc()

コマンド行引数の数を応答として返します。これは組込み関数 COMMAND_ARGUMENT_COUNTによるものと同じ値ですが、プログラム名称が 得られなかったときにも-1を応答するという点が異なります(組込み関数の方は プログラム名称が得られようが得られまいが同じ値0を応答します)。

SUBROUTINE isatty(lunit,answer,errno)
    INTEGER(*),INTENT(IN) :: lunit
    LOGICAL(*),INTENT(OUT) :: answer
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
LUNITで特定される論理装置が端末と接続されている場合に限り、 ANSWERは値.TRUE.を受け取ります。

LUNITが正しい装置番号ではなかった場合、あるいはどのファイルにも 接続されていなかった場合、エラーEBADFF90_UNIX_ERRNO参照) が発生します。

SUBROUTINE setgid(gid,errno)
    INTEGER(*),INTENT(IN) :: gid
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
呼出し元プロセスのグループ番号をGIDにセットします。 詳細についてはISO/IEC 9945-1:1990のセクション4.2.2をご参照ください。

GIDが正しいグループ番号ではなかった場合、エラーEINVALF90_UNIX_ERRNO参照)が発生します。 プロセスがグループ番号をGIDにセットすることを許されていなかった 場合、エラーEPERMが発生します。

SUBROUTINE setpgid(pid,pgid,errno)
    INTEGER(*),INTENT(IN) :: pid, pgid
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
プロセスPIDPIDが0の場合には呼出し元プロセス)のプロセスグルー プ番号をPGIDにセットします。 詳細についてはISO/IEC 9945-1:1990のセクション4.3.3をご参照ください。

起りうるエラーにはEACCES, EINVAL, ENOSYS, EPERM, ESRCHがあります(F90_UNIX_ERRNO参照)。

SUBROUTINE setsid(sid,errno)
    INTEGER(id_kind),OPTIONAL,INTENT(OUT) :: sid
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
セッションを作成し、呼出し元プロセスのプロセスグループ番号をセットします。 詳細についてはISO/IEC 9945-1:1990のセクション4.3.2をご参照ください。 SIDが存在する場合、それは新たなセッションID(プロセスIDに等しい) を受け取ります。エラーが生じた場合には-1がセットされます。

起りうるエラーにはEPERMがあります(F90_UNIX_ERRNO参照)。

SUBROUTINE setuid(uid,errno)
    INTEGER(*),INTENT(IN) :: uid
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
呼出し元プロセスのユーザ番号をUIDにセットします。 詳細についてはISO/IEC 9945-1:1990のセクション4.2.2をご参照ください。

UIDが正しいユーザ番号ではなかった場合、エラーEINVALF90_UNIX_ERRNO参照)が発生します。 プロセスがユーザ番号をUIDにセットすることを許されていなかった 場合、エラーEPERMが発生します。

SUBROUTINE sysconf(name,val,errno)
    INTEGER(*),INTENT(IN) :: name
    INTEGER(*),INTENT(OUT) :: val
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
システム構成変数の値を応答として返します。 変数名はこのモジュール中で定義される整数パラメータ(セクション“パラメータ” の項を参照)によって指定します。

NAMEが正しい構成変数の名前でなかった場合、エラーEINVALF90_UNIX_ERRNO参照)が発生します。 VALが結果を収容するには余りに小さな整数種別であった場合、エラー ERANGEが発生します。種別LONG_KINDであればすべての値に 対応できるだけの大きさが保証されています。

SUBROUTINE time(itime,errno)
    INTEGER(time_kind),INTENT(OUT) :: itime
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
ITIMEはEpochを起点とする日付/時刻(秒単位)を受け取ります。

INTEGER(KIND=clock_tick_kind) FUNCTION times(buffer)
    TYPE(tms),INTENT(OUT) :: buffer
この関数は過去の任意の時点からの経過実時間(単位はクロック刻み)を応答として 返します。関数が使用できない場合には-1が応答となります。 BUFFERには呼出し元プロセスとすべての終了した子プロセスに対するCPUタイ ム情報がセットされます。

この関数が0を応答した場合には、BUFFER中の値は正しいですが、経過時間 タイマは利用できなかったことを意味します。

SUBROUTINE ttyname(lunit,s,lens,errno)
    INTEGER(*),INTENT(IN) :: lunit
    CHARACTER(*),OPTIONAL,INTENT(OUT) :: s
    INTEGER(int32),OPTIONAL,INTENT(OUT) :: lens
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
LUNITで特定される論理装置に接続された端末の名称をアクセスします。 Sが存在する場合、それは端末名の文字列を受け取ります(端末名の長さが Sの長さと異なった場合には、空白の追加、あるいは切取りが適宜行われま す)。 LENSが存在する場合、それは端末名の長さを受け取ります。 ERRNOが存在する場合、それはエラーステータスを受け取ります。

LUNITが正しい論理装置番号でなかった場合、あるいは接続されていなかっ た場合、エラーEBADFF90_UNIX_ERRNO参照)が発生します。

SUBROUTINE uname(name,errno)
    TYPE(UTSNAME),INTENT(OUT) :: name
    INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
OSに関する情報をNAME中にセットします。
© 譌・譛ャ繝九Η繝シ繝。繝ェ繧ォ繝ォ繧「繝ォ繧エ繝ェ繧コ繝�繧コ繧ー繝ォ繝シ繝玲�ェ蠑丈シ夂、セ 2024
Privacy Policy  /  Trademarks