Shareef Siddeek wrote:
> The DATA module is a set of input fixed values to the program.
> Generally it is placed above the main program source codes. It looks
> like this:
>
> module moddata
> implicit none
> save
> !
> real, parameter::A =0.18
> real, dimension(2,18)::B = reshape((/0.000, 0.003, 0.171,
> 0.508, 0.271, 0.047, 0.001, 0.000, 0.000, 0.000,
> 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
> 0.000,&
> 0.000, 0.000, 0.003, 0.171, 0.508, 0.271, 0.047,
> 0.001, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
> 0.000, 0.000, 0.000, 0.000),(/2,18/))
> ....................................... etc.
> !
> end module moddata
This is one of the few cases where the DATA statement is
appropriate. It allows you to initialize a large array using
multiple statements instead of trying to do it all in a single
initialization expression. So:
real :: X(100,18)
data (X(1,J), J=1,18) / 0.000, ... total of 18 values /
data (X(2,J), J=1,18) / 0.000, ... 18 more values /
... total of 100 statements ...
Note that with the implied loops you can initialize in any
order you like. This one was just more convenient to initialize
row-wise.
The DATA statement is the only really convenient way to
initialize with really large amounts of information. Other ideas
are suggested to the committee from time to time, but none
have been more than curiosities.
--
J. Giles
"I conclude that there are two ways of constructing a software
design: One way is to make it so simple that there are obviously
no deficiencies and the other way is to make it so complicated
that there are no obvious deficiencies." -- C. A. R. Hoare
|