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) :: ERRNOOPENDIRによってオープンされたディレクトリストリームをクローズします。
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への次のコールが発行された場合には、ディレクトリ中の最初のファ イル名が応答として返されることになります。