あなたがFortranプログラマーなら、おそらく10/15引数を受け入れるサブルーチンを見たことがあるでしょう。あなたがそれについて考えるならば、それは正気ではなく(それらは多すぎる、あなたはそれらを交換するリスクを冒します)、そしてあなたはすぐにいくつかの議論が常に一緒に伝わることに気づきます。独立したエンティティとしてではなく、全体としてすべてを運ぶ単一のエンティティの下にそれらをパックすることは理にかなっています。これにより、引数の数が大幅に減り、適切な関連付けを見つける負担だけが与えられます。この単一のエンティティがタイプです。
あなたのコードでは、銀行はそれらの情報の集合体であると言います。これで、そのタイプの具象変数を宣言できます。これにより、単一の変数acNumber、acChecksなどを表し、それらへのアクセスが提供されます。そのためには、%記号を使用する必要があります。したがって、銀行変数がbと呼ばれる場合、たとえば次のように言うことができます。
b%acNumber = 5
bは、さまざまな棚を含むクローゼットとして想像できます。閉じたものを移動すると、すべての棚とその内容が一緒に移動します。
配列は、同じタイプ(整数、Character(len = 1024)、またはBankなど)のエンティティのグループであり、次々に存在するため、数値インデックスを使用して各エンティティにアクセスできます。別に指定されていない限り、Fortranの配列インデックスは1から始まることに注意してください(他のすべての主要言語では、最初のインデックスは代わりにゼロです)
あなたのコードに関しては、私はあなたに次のことを提案します:
書きます
INTEGER, DIMENSION(MaxRow:MaxColum) :: AccountData
なので
INTEGER :: AccountData(MaxRow,MaxColum)
それは同じですが、あなたはより少なく書きます。:と、の使用には違いがあることにも注意してください。2次元配列である行列(あなたの場合)を定義したい場合は、コンマを使用する必要があります。あなたが書いたことは間違っています。
文字列については、
CHARACTER :: acType*1, acLName*15, acFName*15
なので
CHARACTER(LEN=1) :: acType
CHARACTER(LEN=15) :: acLName
CHARACTER(LEN=15) :: acFName
この場合、さらに記述しますが、構文は非推奨になります(ただし、間違っている可能性があります)。また、型の1行に1つのメンバー変数を記述した方がよいことを覚えておいてください。好みの問題ですが、メンバー変数ごとに1行を設定して、型のフルサイズを確認することをお勧めします。
MaxRowsとMaxColumnsの場合、MAX_ROWSとMAX_COLUMNSと記述します。伝統によって非常に一定しているパラメータやものは、すべて大文字で識別され、主要な言語ではアンダースコアで区切られています。
編集:あなたのコメントに答えるために、これは配列の使用例です
$ more foo.f90
program test
integer :: myarray(10)
myarray = 0 ! equivalent to zeroing the single elements one by one
myarray(2) = 5
myarray(7) = 10
print *, myarray
end program
$ g95 foo.f90 -o foo
$ ./foo
0 5 0 0 0 0 10 0 0 0
配列は、インデックスで識別される同じ名前の複数の変数のようなものです。ベクトルまたは行列を表現するのに非常に便利です。もちろん、事前定義された型(整数など)の代わりに、定義した集約型の配列を実行することもできます。