7.3 f90_unix_dirent
このモジュールは ISO/IEC 9945-1:1990 Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language] で詳細に規定される機能に対するFortran APIの一部を提供するものです。
このモジュール中の関数はセクション 5.1.2 ディレクトリ操作 に由来するものです。
エラー処理についてはF90_UNIX_ERRNOに記述されています。
省略可能なERRNO引数を用いた手続きに対し、エラーが生じERRNO
が存在しなかった場合には、プログラムは終了させられる点に注意してください。
このモジュール中のすべての手続きは個別であり、総称的なものではありません。
7.3.1 手続き
個々の手続きの記述において、KINDが‘*’と表記されている引数はその
種別の任意の値を受け入れることができます。
他のKIND表示にはF90_KINDまたはF90_UNIX_ERRNOモジュールで
規定されている名前付きパラメータが使用されています。しかしこれらの名前付きパラ
メータはF90_UNIX_DIRENTからエクスポートされていません。
SUBROUTINE CLOSEDIR(DIRUNIT,ERRNO) INTEGER(*),INTENT(IN) :: DIRUNIT INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO
OPENDIRによってオープンされたディレクトリストリームをクローズします。
DIRUNITがオープンされているディレクトリストリームを参照していない場
合には、エラーEBADF(F90_UNIX_ERRNO参照)が発生します。
SUBROUTINE OPENDIR(DIRNAME,DIRUNIT,ERRNO) CHARACTER(*),INTENT(IN) :: DIRNAME INTEGER(*),INTENT(OUT) :: DIRUNIT INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOディレクトリストリームをオープンし、それに対するハンドルを
DIRUNIT中
に返します。
起りうるエラーにはEACCES, ENAMETOOLONG, ENOENT,
ENOTDIR, EMFILE, ENFILEがあります
(F90_UNIX_ERRNO参照)。
SUBROUTINE READDIR(DIRUNIT,NAME,LENNAME,ERRNO) INTEGER(*),INTENT(IN) :: DIRUNIT CHARACTER(*),INTENT(OUT) :: NAME INTEGER(int32 or int64),INTENT(OUT) :: LENNAME INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO
最初の/次のディレクトリエントリを読みます。
ファイルの名称はNAME中にセットされます。その際、ファイル名称の長さが
LEN(NAME)と異なった場合には、空白の追加、あるいは切取りが適宜行われま
す。
ファイル名称の長さはLEN(NAME)中にセットされます。
ディレクトリエントリがそれ以上なくなった場合にはNAMEの内容は変わらず、
LENNAMEの値が負となります。
DIRUNITがOPENDIRによって生成されたディレクトリストリームハンド
ルでない場合、あるいはCLOSEDIRによってクローズされてしまっている場合、
エラーEBADF(F90_UNIX_ERRNO参照)が発生します。
SUBROUTINE REWINDDIR(DIRUNIT,ERRNO) INTEGER(*),INTENT(IN) :: DIRUNIT INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOディレクトリストリームをリワインドします。従ってそのストリーム上で
READDIRへの次のコールが発行された場合には、ディレクトリ中の最初のファ
イル名が応答として返されることになります。
