7.6 f90_unix_file
このモジュールは ISO/IEC 9945-1:1990 Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language] で詳細に規定される機能に対するFortran APIの一部を提供するものです。
このモジュール中の関数はセクション5.6 ファイルの特徴に由来するものです。
エラー処理についてはF90_UNIX_ERRNOに記述されています。 省略可能なERRNO引数を用いた手続きに対し、エラーが生じERRNO が存在しなかった場合には、プログラムは終了させられる点に注意してください。
このモジュール中のすべての手続きは総称的なものです。いくつかは個別的でもあります が、これは将来のリリースで変わる可能性があります。
7.6.1 パラメータ
INTEGER(int32),PARAMETER :: F_OKファイルが存在するかどうかのチェック(ACCESS参照)を要求するフラグ。
USE F90_UNIX_ENV,ONLY:ID_KINDこのパラメータに関する記述についてはF90_UNIX_ENVの項を参照。
USE F90_UNIX_DIR,ONLY:MODE_KINDこのパラメータに関する記述についてはF90_UNIX_DIRの項を参照。
INTEGER(int32),PARAMETER :: R_OKファイルが読めるかどうかのチェック(ACCESS参照)を要求するフラグ。
INTEGER(MODE_KIND),PARAMETER :: S_IRGRPグループに対する読み取り許可(STAT_T参照)を示すファイルモードビット。
INTEGER(MODE_KIND),PARAMETER :: S_IROTHその他に対する読み取り許可(STAT_T参照)を示すファイルモードビット。
INTEGER(MODE_KIND),PARAMETER :: S_IRUSRユーザに対する読み取り許可(STAT_T参照)を示すファイルモードビット。
INTEGER(MODE_KIND),PARAMETER :: S_IRWXGファイルモードからグループアクセス権限ビットを選択するためのマスク (STAT_T参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IRWXOファイルモードからその他のアクセス権限ビットを選択するためのマスク (STAT_T参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IRWXUファイルモードからユーザアクセス権限ビットを選択するためのマスク (STAT_T参照)。
INTEGER(MODE_KIND),PARAMETER :: S_ISGIDファイルがset-group-ID(STAT_T参照)であることを示すファイルモード ビット。
INTEGER(MODE_KIND),PARAMETER :: S_ISUIDファイルがset-user-ID(STAT_T参照)であることを示すファイルモード ビット。
INTEGER(MODE_KIND),PARAMETER :: S_IWGRPグループの書き込み許可を示すファイルモードビット(STAT_T参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IWOTHその他の書き込み許可を示すファイルモードビット(STAT_T参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IWUSRユーザの書き込み許可を示すファイルモードビット(STAT_T参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IXGRPグループの実行許可を示すファイルモードビット(STAT_T参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IXOTHその他の実行許可を示すファイルモードビット(STAT_T参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IXUSRユーザの実行許可を示すファイルモードビット(STAT_T参照)。
USE F90_UNIX_ENV,ONLY :: TIME_KINDこのパラメータに関する記述についてはF90_UNIX_ENVの項を参照。
INTEGER(int32),PARAMETER :: W_OKファイルが書けるかどうかのチェック(ACCESS参照)を要求するフラグ。
INTEGER(int32),PARAMETER :: X_OKファイルが実行可能かどうかのチェック(ACCESS参照)を要求するフラグ。
7.6.2 型
TYPE stat_t INTEGER(MODE_KIND) st_mode INTEGER(...) st_ino INTEGER(...) st_dev INTEGER(...) st_nlink INTEGER(id_kind) st_uid INTEGER(id_kind) st_gid INTEGER(...) st_size INTEGER(TIME_KIND) st_atime, st_mtime, st_ctime END TYPEファイルの特性を保持している構造体。
- ST_MODE
- ファイルモード(ユーザ/グループ/その他に対する読み取り/書き込み/実行許可、 及びset-group-ID, set-user-IDビット)。
- ST_INO
- ファイルのシリアル番号。
- ST_DEV
- ファイルが存在している装置に対するID。
- ST_NLINK
- ファイルに対するリンク(F90_UNIX_DIR, LINK操作参照)の数。
- ST_UID
- ファイル所有者のユーザ番号。
- ST_GID
- ファイルのグループ番号。
- ST_SIZE
- バイト単位のファイルサイズ(通常ファイルのみ)。
- ST_ATIME
- 最後にアクセスした時刻。
- ST_MTIME
- 最後に変更を加えた時刻。
- ST_CTIME
- 最後にファイル状態が変更された時刻。
TYPE UTIMBUF INTEGER(time_kind) actime, modtime END TYPEUTIMEとの交信用時刻値を保持するためのデータ型。 ACTIMEはST_ATIMEに対する、MODTIMEはST_MTIMEに 対する新たな値を意味しています。
7.6.3 手続き
PURE SUBROUTINE access(path,amode,errno) CHARACTER(*),INTENT(IN) :: path INTEGER(*),INTENT(IN) :: amode INTEGER(error_kind),INTENT(OUT) :: errnoAMODEの値(F_OKか、またはR_OK, W_OK, X_OK の組合せでなくてはなりません)に従ってファイルのアクセス権限ビットをチェック します。後者の場合、値は加算、または組込み関数IORによって結合されます。
アクセス権限ビットのチェック結果はERRNO中に応答として返されます。アク セス可(すなわちファイルがF_OKとして存在している、あるいはR_OK 等の組合せによって要求されたアクセスがすべて許可されている)の場合は0、アク セス不可の場合はその理由を示すエラーコードがセットされます。 アクセス拒否のコードにはEACCES, ENAMETOOLONG, ENOENT, ENOTDIR, EROFSがあります(F90_UNIX_ERRNO参照)。
AMODEの値が不正だった場合にはエラーEINVALが返されます。
ACCESSに関する問合せのほとんどはINQUIRE文と等価です。特に:
- CALL ACCESS(PATH,F_OK,ERRNO)
- は次の場合に限り成功(ERRNO==0)を応答します:
INQUIRE(FILE=PATH,EXIST=LVAR)がLVARに対し.TRUE.をセット する場合。 - CALL ACCESS(PATH,R_OK,ERRNO)
- は次の場合に限り成功(ERRNO==0)を応答します:
INQUIRE(FILE=PATH,READ=CHVAR)がCHVARに対し'YES'をセット する場合。 - CALL ACCESS(PATH,W_OK,ERRNO)
- は次の場合に限り成功(ERRNO==0)を応答します:
INQUIRE(FILE=PATH,WRITE=CHVAR)がCHVARに対し'YES'をセット する場合。 - CALL ACCESS(PATH,IOR(W_OK,R_OK),ERRNO)
- は次の場合に限り成功(ERRNO==0)を応答します:
INQUIRE(FILE=PATH,READWRITE=CHVAR)がCHVARに対し'YES'をセット する場合。
SUBROUTINE CHMOD(PATH,MODE,ERRNO) CHARACTER(*),INTENT(IN) :: PATH INTEGER(*),INTENT(IN) :: MODE INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOファイルモード(ST_MODE)をMODEに設定します。
起りうるエラーにはEACCES, ENAMETOOLONG, ENOTDIR, EPERM, EROFSがあります(F90_UNIX_ERRNO参照)。
SUBROUTINE CHOWN(PATH,OWNER,GROUP,ERRNO) CHARACTER(*),INTENT(IN) :: PATH INTEGER(id_kind),INTENT(IN) :: OWNER, GROUP INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOファイルPATHの所有者(ST_UID)をOWNERに、グループ番号 (ST_GID)をGROUPに変更します。
起りうるエラーにはEACCES, EINVAL, ENAMETOOLONG, ENOTDIR, ENOENT, EPERM, EROFSがあります (F90_UNIX_ERRNO参照)。
SUBROUTINE FSTAT(LUNIT,BUF,ERRNO) INTEGER(*),INTENT(IN) :: LUNIT TYPE(stat_t),INTENT(OUT) :: BUF INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO論理装置LUNITに接続されたファイルの特性がBUFにセットされます。
LUNITが正しい論理装置番号でなかった場合、またはファイルに接続されて いなかった場合、エラーEBADFが発生します(F90_UNIX_ERRNO参照)。
PURE LOGICAL(word) FUNCTION isblk(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルが“ブロックデバイス”であることを示すMODE値である場合に 限り.TRUE.が返されます。
PURE LOGICAL(word) FUNCTION ischr(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルが“キャラクタデバイス”であることを示すMODE値である場合 に限り.TRUE.が返されます。
PURE LOGICAL(word) FUNCTION isdir(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルがディレクトリ(フォルダ)であることを示すMODE値である場合に 限り.TRUE.が返されます。
PURE LOGICAL(word) FUNCTION isfifo(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルが“FIFO”(名前付き、または名前なしパイプ)であることを示す MODE値である場合に限り.TRUE.が返されます。
PURE LOGICAL(word) FUNCTION isreg(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルが“通常”(regular)であることを示すMODE値である場合に 限り.TRUE.が返されます。
SUBROUTINE STAT(PATH,BUF,ERRNO) CHARACTER(*),INTENT(IN) :: PATH TYPE(stat_t),INTENT(OUT) :: BUF INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOファイルPATHの特性がBUFにセットされます。
起りうるエラーにはEACCES, ENAMETOOLONG, ENOENT, ENOTDIRがあります(F90_UNIX_ERRNO参照)。
SUBROUTINE utime(path,times,errno) CHARACTER(*),INTENT(IN) :: path TYPE(utimbuf),OPTIONAL,INTENT(IN) :: times INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
PATHで指定されるファイルのアクセス時刻、変更時刻をそれぞれ、 TIMESのACTIME, MODTIME成分によって指定される値に設定 します。
起りうるエラーにはEACCES, ENAMETOOLONG, ENOENT, ENOTDIR, EPERM, EROFSがあります (F90_UNIX_ERRNO参照)。