ヘッダーとプリプロセッサ
!Fortranコードの一部
#include "f_condition_select.h"
#if defined CONDITION_NAME1
print *, "This is condition1."
#elif defined CONDITION_NAME2
print *, "This is condition2."
#else
print *, "Condition is undefined."
#endif
この時、ファイルの拡張子を.F90
とする。.f90
ではプリプロセッサが認識されず、コンパイル時-cpp
オプションを加える必要があると何処かで読んだ。
fortranはC/C++と同様、#ifdef
で一文を区切ることができる。
condition_select.h
/*ヘッダーファイルの一部*/
/* Condition Selection */
/* #define CONDITION_NAME1*/
#define CONDITION_NAME2
/* #define CONDITION_NAME3*/
ヘッダー側でinclude
するマクロを決める。
データを変数に格納
integer :: i
integer :: ios
integer :: nm_data
real(8), allocatable :: sample_data(:) !imported dat file with any row * 1 column array
open(77,file='./input/sample_data.dat') !Any row * 1 column array per dt_sample hours
! Count data number
nm_data = 0
do
read(77,*,iostat=ios)
if(ios==-1) exit
nm_data = nm_data+1
end do
allocate( sample_data(nm_data) )
rewind(77)
! Read data
do i =1, nm_data
read(77,*) sample_data(i)
end do
close(77)
!-----
!sample_dataの使用終了後、
deallocate(sample_data)