項目 | 格納形式 | 行中の位置 |
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文字目までに書く 事が約束となっている。