を用いて、HR図を描いてみよう。
| 項目 | 格納形式 | 行中の位置 |
| HR番号 | I4 | 1 - 4 |
| 名前 | A7 | 8 - 14 |
| 赤経 (時) | I2 | 74 - 75 |
| 赤経 (分) | I2 | 77 - 78 |
| 赤経 (秒) | F4.1 | 80 - 83 |
| 赤緯 符号 | A1 | 85 |
| 赤緯 (度) | I2 | 86 - 87 |
| 赤緯 (分) | I2 | 89 - 90 |
| 赤緯 (秒) | I2 | 92 - 93 |
| 実視等級 | F5.2 | 109 - 113 |
| スペクトル型 | A2 | 137 - 138 |
| 視差 | F5.3 | 170 - 174 |
| 型 | 表記 | 意味 |
| 文字 | ||
| 整数 | ||
| 実数 | 小数点以下 |
|
| 小数点以下 |
||
| 小数点以下 |
||
| 空白 | ||
| 行替 |
但し、格納形式の
は、
文字分の文字データを意味し、
は、
桁の整数データである事を意味し、
は、小数点以下
桁で且つ小数点と符号も含めて
桁の実数
である事を意味している
。尚、書式としては、他に
を1.25E-08と表すような
という形式がある。整数部は
から
までの整数、仮数部は小数点以下
桁で、且つE-08という表記
も含めて全部で
文字である事を意味している
。
| (5) |
| (6) |
格納形式が決まっているデータの読み込みや、決まった形式での書き込みのために、
FORMAT文なるものが用意されている。
以下に掲げるのは、BSC4カタログをBSC4.DATとして、読み込み、年周視差と
実視等級から絶対等級を求め、また、HR図にグラフ化する際に便利なように
スペクトル型を数値化し
た上で別のカタログに別の様式で格納するためのプログラム
である。
program main
implicit NONE
integer N,m,maxindex
parameter(N=50000,m=7,maxindex=10)
integer j,number_of_stars,jj,jjj
real Vmag,parallax
real Abs_mag(N),Sp_index(N)
character*1 Sp_type,Sp_sub,s(m),sub(maxindex)
data s/'O','B','A','F','G','K','M'/
data sub/'0','1','2','3','4','5','6','7','8','9'/
c-------------------------------------------------------------------------------
number_of_stars=0
open(unit=1,file='BSC4.DAT',status='OLD')
open(unit=2,file='STARS.DAT',status='NEW')
! Read the BSC catalogue:
do j=1,N
read (1,100,end=20) Vmag,Sp_type,Sp_sub,parallax
if(parallax.gt.0.)then
do jj=1,m
if(Sp_type.eq.s(jj))then
do jjj=1,maxindex
if(Sp_sub.eq.sub(jjj))then
number_of_stars=number_of_stars+1
Abs_mag(number_of_stars)=Vmag+5.0
* +5.0*log10(parallax)
Sp_index(number_of_stars)=float(10*(jj-1) + (jjj-1))
write(2,220) j,Vmag,
* Sp_index(number_of_stars),
* Abs_mag(number_of_stars)
end if
end do
end if
end do
end if
end do
20 write(6,131) number_of_stars
close(1)
close(2)
100 format(108x,f5.2,23x,2a1,31x,f5.3)
131 format(////' there are ',i6,' stars in the catalog'//)
220 format(i7,3(3x,f5.2))
stop
end
READ文が今までのようにread(*,*)やread(1,*)ではなく、
read(1,100)となっている事に注目しよう。最初の1は、ユニット番号
1番から読み込む事を意味している事は、もう判ると思う。次の100は、
100番の文番号のついたFORMAT文の形式で読む事を意味している。
100番の文番号の文は、確かにFORMAT文になっており、表5.1の
形式で読み込もうとしている事が判るであろう。
READ文で、end=20とあるのは、データを読み終えたら、20番の
文番号に飛ぶ事を意味している。データを幾つ読むのか、予め定まって
いない場合に、使われる手段であることは以前に説明した。
この100番の文番号のついたFORMAT文では、HR番号や赤経赤緯等、今の目
的に要しないデータを読み飛ばすために、
Xで
個分の空白データを読んで
いる。
WRITE文も、220番のFORMAT文を従えており、実数形式で
実視等級、スペクトル型に対応する数値、絶対等級を書き込もうとしている。
220番のFORMAT文での3xは、
3個の空欄を空ける事を意味している。文番号は、1文字目から5文字目までに書く
事が約束となっている。