Conversion of standardized ReadMe file for
file /./ftp/cats/J/A_A/584/A73 into FORTRAN code for loading all data files into arrays.
Note that special values are assigned to unknown or unspecified
numbers (also called NULL numbers);
when necessary, the coordinate components making up the right ascension
and declination are converted into floating-point numbers
representing these angles in degrees.
program load_ReadMe
C=============================================================================
C F77-compliant program generated by readme2f_1.81 (2015-09-23), on 2026-Jul-13
C=============================================================================
* This code was generated from the ReadMe file documenting a catalogue
* according to the "Standard for Documentation of Astronomical Catalogues"
* currently in use by the Astronomical Data Centers (CDS, ADC, A&A)
* (see full documentation at URL http://vizier.u-strasbg.fr/doc/catstd.htx)
* Please report problems or questions to
C=============================================================================
implicit none
* Unspecified or NULL values, generally corresponding to blank columns,
* are assigned one of the following special values:
* rNULL__ for unknown or NULL floating-point values
* iNULL__ for unknown or NULL integer values
real*4 rNULL__
integer*4 iNULL__
parameter (rNULL__=--2147483648.) ! NULL real number
parameter (iNULL__=(-2147483647-1)) ! NULL int number
integer idig ! testing NULL number
C=============================================================================
Cat. J/A+A/584/A73 Sunspot areas and tilt angles (Senthamizh Pavai+, 2015)
*================================================================================
*Sunspot areas and tilt angles for solar cycles 7-10.
* Senthamizh Pavai V., Arlt R., Dasi-Espuig M., Krivova N., Solanki S.
* <Astron. Astrophys. 584, A73 (2015)>
* =2015A&A...584A..73S (SIMBAD/NED BibCode)
C=============================================================================
C Internal variables
integer*4 i__
c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
C Declarations for 'table3.dat' ! Sunspot positions and areas
integer*4 nr__
parameter (nr__=135921) ! Number of records
character*106 ar__ ! Full-size record
integer*4 Obs_Y (nr__) ! (yr) Observation date (YYY)
integer*4 Obs_M (nr__) ! ("month") Observation date (MM)
integer*4 Obs_D (nr__) ! (d) Observation date, day referring to the German
* civil calendar running from midnight to
* midnight (DD)
integer*4 Obs_h (nr__) ! (h) Observation time in mean local time
* in Dessau, Germany (HH)
integer*4 Obs_m_1 (nr__) ! (min) Observation time, typically accurate
* to 15 minutes (MI)
integer*4 T (nr__) ! [0/1] Indicates how accurate the time is (1)
real*4 HLON0 (nr__) ! (deg) Heliographic longitude of apparent disk centre
* seen from Dessau (L0)
real*4 HLAT0 (nr__) ! (deg) Heliographic latitude of apparent disk centre
* seen from Dessau (B0)
real*4 CMD (nr__) ! (deg) ? Central meridian distance, difference in
* longitude from disk centre
character*1 n_CMD (nr__) ! [n-] Note for no data (2)
real*4 HLON (nr__) ! (deg) ? Heliographic longitude in the Carrington
* rotation frame (LLL.L)
character*1 n_HLON (nr__) ! [n-] Note for no data (2)
real*4 HLAT (nr__) ! (deg) ? Heliographic latitude,
* southern latitudes are negative (BBB.B)
character*1 n_HLAT (nr__) ! [n-] Note for no data (2)
character*1 M (nr__) ! [CHQ-01] Method of determining the
* orientation (3)
integer*4 Q (nr__) ! [0/4] Subjective quality (4)
integer*4 SS (nr__) ! Size estimate in 12 classes running from 1 to
* 12; a spotless day is indicated with 0
character*8 Group (nr__) ! Group designation based on Schwabe,
* but modified by our regrouping
character*10 Measurer (nr__) ! Last name of person who obtained position
real*4 HLONM (nr__) ! (deg) ?=- Model longitude from rotational matching
* (only spots used for matching have this)
* (MOD_L)
real*4 HLATM (nr__) ! (deg) ?=- Model latitude from rotational matching
* (only spots used for matching have this)
* (MOD_B)
real*4 Sigma (nr__) ! (deg) ?=- Total residual of model positions compared
* with measurements of reference spots in
* rotational matching (only spots used for the
* matching have this), holds for entire day
real*4 delta (nr__) ! (deg) ? Heliocentric angle between the spot and the
* apparent disk centre in degrees
* (disk-centre distance)
character*1 n_delta (nr__) ! [n-] Note for no data (2)
integer*4 Umb (nr__) ! ? Inferred umbral area in millionths of the
* solar hemisphere (MSH)
character*1 n_Umb (nr__) ! [n] Note for no data (5)
character*1 A (nr__) ! [!U-] Flag for area mapping (6)
*Note (1): Timeflag as follows:
* 0 = time has been inferred by the measurer (in most cases to be 12h local time)
* 1 = the time is as given by the observer
*Note (2): Code for no data as follows:
* - = indicates spotless day
* n = position of spot could not be measured
*Note (3): Method of determining the orientation as follows:
* C = horizontal pencil line parallel to celestial equator
* H = book aligned with azimuth-elevation
* Q = rotational matching with other drawings (spot used for the matching have
* MHLON, HLAT and sigma {diff} "-")
*Note (4): Subjective quality as follows:
* 1 = all observations with coordinate system drawn by Schwabe
* 2 = Positions derived from rotational matching with the probability
* distributions fixing the position angle of the drawing were not very sharp
* 3 = Positions derived from rotational matching with the probability
* distributions fixing the position angle of the drawing were broad and
* asymmetric
* 0 = spotless day
* 4 = spots for which no position could be derived, but have sizes
*Note (5): Note for umbral no data:
* Umb=0 for spotless days
* n_Umb=n if spot position could not be derived or Delta>85deg
*Note (6): Flag as follows:
* U = area mapping is based on umbral area
* ! = area mapping is based on penumbral area (less certain than from umbral)
* (actual area given in Umb is always umbral)
* - = spotless day
c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
C Declarations for 'table4.dat' ! Tilt angles of the sunspot groups with two or
more spots
integer*4 nr__1
parameter (nr__1=23141) ! Number of records
character*108 ar__1 ! Full-size record
integer*4 Obs_Y_1 (nr__1) ! (yr) Observation date (YYY)
integer*4 Obs_M_2 (nr__1) ! ("month") Observation date (MM)
integer*4 Obs_D_1 (nr__1) ! (d) Observation date, day referring to the German
* civil calendar running from midnight to
* midnight (DD)
integer*4 Obs_h_1 (nr__1) ! (h) Observation time in mean local time
* in Dessau, Germany (HH)
integer*4 Obs_m_3 (nr__1) ! (min) Observation time, typically accurate
* to 15 minutes (MI)
character*8 Group_1 (nr__1) ! Group name based on Schwabe, but modified
* by our regrouping
integer*4 SP (nr__1) ! Number of spots in a group
integer*4 ARA (nr__1) ! Sum of umbral area of all spots in a group,
* in millionths of the solar hemisphere (MSH)
real*4 HLONA (nr__1) ! (deg) Area-weighted heliographic longitude of the
* group (AWL.L)
real*4 HLATA (nr__1) ! (deg) Area-weighted heliographic latitude of the
* group (AWB.B)
real*4 TiltAn (nr__1) ! (deg) Tilt angle of the group (1)
real*4 TiltHo (nr__1) ! (deg) Tilt angle computed as in Howard (1991,
* Sol. Phys., 136, 251) for compatibility
* reasons (2)
real*4 PolSP (nr__1) ! (deg) Polarity separation of the group in degrees on
* the solar sphere (3)
integer*4 FN (nr__1) ! Number of spots in the following polarity
integer*4 LN (nr__1) ! Number of spots in the leading polarity
integer*4 FAR (nr__1) ! Umbral area of the following polarity, in MSH
integer*4 LAR (nr__1) ! Umbral area of the leading polarity, in MSH
real*4 HLONF (nr__1) ! (deg) Area-weighted longitude of the following
* polarity (FLL.L) (3)
real*4 HLATF (nr__1) ! (deg) Area-weighted latitude of the following
* polarity (FBB.B) (3)
real*4 HLONL (nr__1) ! (deg) Area-weighted longitude of the leading
* polarity (LLL.L) (3)
real*4 HLATL (nr__1) ! (deg) Area-weighted latitude of the leading
* polarity (BBB.B) (3)
real*4 GFC (nr__1) ! (deg) Heliocentric distance of the group from the
* disk centre in degrees
*Note (1): Tilt angle of the group ; positive sign means leading polarity closer
* to equator in either hemisphere. This tilt angle was found using an isotropic
* search for the most likely dividing line between the polarities.
*Note (2): It is based on a fixed vertical dividing line between the polarities
* and an approximative formula for the tilt angle.
*Note (3): based on the polarity definition for TiltAn.
C=============================================================================
C Loading file 'table3.dat' ! Sunspot positions and areas
C Format for file interpretation
1 format(
+ I4,1X,I2,1X,I2,1X,I2,1X,I2,1X,I1,1X,F5.1,1X,F5.1,1X,F5.1,A1,
+ F5.1,A1,F5.1,A1,1X,A1,1X,I1,1X,I2,1X,A8,1X,A10,1X,F5.1,1X,
+ F5.1,1X,F5.3,1X,F4.1,A1,I4,A1,A1)
C Effective file loading
open(unit=1,status='old',file=
+'table3.dat')
write(6,*) '....Loading file: table3.dat'
do i__=1,135921
read(1,'(A106)')ar__
read(ar__,1)
+ Obs_Y(i__),Obs_M(i__),Obs_D(i__),Obs_h(i__),Obs_m_1(i__),
+ T(i__),HLON0(i__),HLAT0(i__),CMD(i__),n_CMD(i__),HLON(i__),
+ n_HLON(i__),HLAT(i__),n_HLAT(i__),M(i__),Q(i__),SS(i__),
+ Group(i__),Measurer(i__),HLONM(i__),HLATM(i__),Sigma(i__),
+ delta(i__),n_delta(i__),Umb(i__),n_Umb(i__),A(i__)
if(ar__(32:36) .EQ. '') CMD(i__) = rNULL__
if(ar__(38:42) .EQ. '') HLON(i__) = rNULL__
if(ar__(44:48) .EQ. '') HLAT(i__) = rNULL__
if (idig(ar__(78:82)).EQ.0) HLONM(i__) = rNULL__
if (idig(ar__(84:88)).EQ.0) HLATM(i__) = rNULL__
if (idig(ar__(90:94)).EQ.0) Sigma(i__) = rNULL__
if(ar__(96:99) .EQ. '') delta(i__) = rNULL__
if(ar__(101:104) .EQ. '') Umb(i__) = iNULL__
c ..............Just test output...........
write(6,1)
+ Obs_Y(i__),Obs_M(i__),Obs_D(i__),Obs_h(i__),Obs_m_1(i__),
+ T(i__),HLON0(i__),HLAT0(i__),CMD(i__),n_CMD(i__),HLON(i__),
+ n_HLON(i__),HLAT(i__),n_HLAT(i__),M(i__),Q(i__),SS(i__),
+ Group(i__),Measurer(i__),HLONM(i__),HLATM(i__),Sigma(i__),
+ delta(i__),n_delta(i__),Umb(i__),n_Umb(i__),A(i__)
c .......End.of.Just test output...........
end do
close(1)
C=============================================================================
C Loading file 'table4.dat' ! Tilt angles of the sunspot groups with two or
* more spots
C Format for file interpretation
2 format(
+ I4,1X,I2,1X,I2,1X,I2,1X,I2,1X,A8,1X,I2,1X,I3,1X,F5.1,1X,F5.1,
+ 1X,F6.2,1X,F6.2,1X,F5.2,1X,I2,1X,I2,1X,I3,1X,I3,1X,F5.1,1X,
+ F5.1,1X,F5.1,1X,F5.1,1X,F5.1)
C Effective file loading
open(unit=1,status='old',file=
+'table4.dat')
write(6,*) '....Loading file: table4.dat'
do i__=1,23141
read(1,'(A108)')ar__1
read(ar__1,2)
+ Obs_Y_1(i__),Obs_M_2(i__),Obs_D_1(i__),Obs_h_1(i__),
+ Obs_m_3(i__),Group_1(i__),SP(i__),ARA(i__),HLONA(i__),
+ HLATA(i__),TiltAn(i__),TiltHo(i__),PolSP(i__),FN(i__),LN(i__),
+ FAR(i__),LAR(i__),HLONF(i__),HLATF(i__),HLONL(i__),HLATL(i__),
+ GFC(i__)
c ..............Just test output...........
write(6,2)
+ Obs_Y_1(i__),Obs_M_2(i__),Obs_D_1(i__),Obs_h_1(i__),
+ Obs_m_3(i__),Group_1(i__),SP(i__),ARA(i__),HLONA(i__),
+ HLATA(i__),TiltAn(i__),TiltHo(i__),PolSP(i__),FN(i__),LN(i__),
+ FAR(i__),LAR(i__),HLONF(i__),HLATF(i__),HLONL(i__),HLATL(i__),
+ GFC(i__)
c .......End.of.Just test output...........
end do
close(1)
C=============================================================================
stop
end
C Locate position of first digit in string; or return 0
integer function idig(c)
character*(*) c
character*1 c1
integer lc,i
lc=len(c)
idig=0
do i=1,lc
if(c(i:i).ne.' ') go to 1
end do
1 if(i.gt.lc) return
c1=c(i:i)
if(c1.eq.'.'.or.c1.eq.'-'.or.c1.eq.'+') i=i+1
if(i.gt.lc) return
c1=c(i:i)
if(c1.ge.'0'.and.c1.le.'9') idig=i
return
end