nAG Fortran コンパイラ(Fortran Builder)で POSIX を利用する

nAG Fortran コンパイラ(Fortran Builder)では、POSIX 準拠のインターフェースを独自の組込みモジュールで提供しています。必要に応じて、該当のモジュールを use してご利用ください。

※ POSIX は Fortran 標準ではないため、独自の拡張機能として提供しています。

ここでは、よく使われる POSIX 機能に関してプログラム例を紹介します。

その他、利用可能な POSIX 機能の詳細は「nAG Fortran Compiler, Release 7.2 マニュアル - 7 Posix 準拠の Modern Fortran API」をご参照ください。

ファイルの操作 : rename, unlink

rename, unlink は、モジュール f90_unix_dir のサブルーチンとして提供されます。

詳細は「nAG Fortran Compiler, Release 7.2 マニュアル - 7.2 f90_unix_dir」をご参照ください。

[ file_operations.f90 ]

program main
  use f90_unix_dir
  implicit none
  character(16) hello
  write (*, '(a)', advance = 'no') 'Press enter to create old_name.txt: '
  read *
  open (10, file = 'old_name.txt', status = 'new')
  write (10, '(a)') 'Hello World'
  close (10)
  print *
  print *, 'old_name.txt created.'
  print *
  write (*, '(a)', advance = 'no') 'Press enter to rename it to new_name.txt: '
  read *
  call rename('old_name.txt', 'new_name.txt')
  open (10, file = 'new_name.txt', status = 'old')
  print *
  print *, 'Contents of new_name.txt:'
  do
    read (10, '(a)', end = 100) hello
    print *, hello
  end do
  100 continue
  close (10)
  write (*, '(/, a)', advance = 'no') 'Press enter to delete new_name.txt: '
  read *
  call unlink('new_name.txt')
end program

ディレクトリの操作 : chdir, getcwd, mkdir, rmdir

chdir, getcwd, mkdir, rmdir は、モジュール f90_unix_dir のサブルーチンとして提供されます。

詳細は「nAG Fortran Compiler, Release 7.2 マニュアル - 7.2 f90_unix_dir」をご参照ください。

[ directory_operations.f90 ]

program main
  use f90_unix_dir
  use f90_unix_file
  use f90_unix_errno
  implicit none
  character(256) path, answer
  integer mode, ierrno
  call getcwd(path)
  print *, 'Current folder: ', trim(path)
  write (*, '(a)', advance = 'no') 'Press enter to create "test" folder: '
  read *    
  mode = s_irwxu + s_irgrp + s_ixgrp + s_iroth + s_ixoth
  call mkdir('test', mode, ierrno)
  if (ierrno == eexist) then
    print *, '"test" folder already exists, continuing.'
  else if (ierrno /= 0) then
    print *, 'Error creating "test" folder:', ierrno
    stop 'FAILED'
  end if
  call chdir('test')
  call getcwd(path)
  print *, 'Current folder: ', trim(path)
  write (*, '(a)', advance = 'no') 'Remove "test" folder? y or n: '
  read (*, '(a)') answer
  if (answer == 'y' .or. answer == 'Y') then
    call chdir('..')
    call rmdir('test')
    print *, '"test" folder removed.'
  else
    print *, '"test" folder not removed.'
  end if
end program

ディレクトリの読み込み : closedir, opendir, readdir

closedir, opendir, readdir は、モジュール f90_unix_dirent のサブルーチンとして提供されます。

詳細は「nAG Fortran Compiler, Release 7.2 マニュアル - 7.3 f90_unix_dirent」をご参照ください。

[ directory_reading.f90 ]

program main
  use f90_unix_dirent
  implicit none
  integer dirunit, lenname
  character(256) name
  call opendir('.', dirunit)
  do
    call readdir(dirunit, name, lenname)
    if (lenname < 0) exit
    print *, trim(name)
  end do
  call closedir(dirunit)
end program

プロセス : sleep

sleep は、モジュール f90_unix_proc のサブルーチンとして提供されます。

詳細は「nAG Fortran Compiler, Release 7.2 マニュアル - 7.8 f90_unix_proc」をご参照ください。

[ process.f90 ]

program main
  use f90_unix_proc
  implicit none
  integer, parameter :: time = 5
  print *, 'Sleeping for 5 sec ...'
  call sleep(time)
  print *, 'End'
end program
関連情報
MENU
© 日本ニューメリカルアルゴリズムズグループ株式会社 2024
Privacy Policy  /  Trademarks