FORTRAN Generation
(/./ftp/cats/J/A_A/695/A139)

Conversion of standardized ReadMe file for file /./ftp/cats/J/A_A/695/A139 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-Aug-12
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/695/A139          Spins and shapes of 11 NEAs               (Fatka+, 2025)
*================================================================================
*Spins and shapes of 11 near-Earth asteroids observed within the
*NEOROCKS Project.
*    Fatka P., Pravec P., Scheirich P., Kusnirak P., Hornoch K., Kucakova H.,
*    Ergashev K.E., Souza de Joode M., Burkhonov O.A., Ehgamberdiev S.A.,
*    Galad A., Vilagi J., Reddy V., Dyvig R., Ries J.G., Snodgrass C.,
*    Donaldson A., Peixinho N., Khalouei E.
*    <Astron. Astrophys. 695, A139 (2025)>
*    =2025A&A...695A.139F        (SIMBAD/NED BibCode)
C=============================================================================

C  Internal variables

      integer*4 i__

c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

C  Declarations for 'tablea1.dat'	! Observational circumstances of studied asteroids

      integer*4 nr__
      parameter (nr__=95)	! Number of records
      character*69 ar__   	! Full-size record

      integer*4     Name       (nr__) ! ? Designation number of asteroid (if available)
      character*9   AName      (nr__) ! Alternative/temporary asteroid designation
      character*10  Date_init  (nr__) ! ("date") Beginning of observing run series (DD-MM-YYYY)
      character*10  Date_end   (nr__) ! ("date") End of observing run series (DD-MM-YYYY)
      integer*4     Nsessions  (nr__) ! Number of observing sessions in the date span
      integer*4     PA_init    (nr__) ! (deg) Phase angle corresponding to date_init
      integer*4     PA_end     (nr__) ! (deg) Phase angle corresponding to date_fin
      character*15  Inst       (nr__) ! Instrument
      integer*4     Ref        (nr__) ! ? Source of the data (1)
*Note (1): References as follows:
*     1 = Oey (2020, Minor Planet Bull., 47, 136)
*     2 = ATLAS, Tonry et al., 2018PASP..130f4505T
*     3 = Warner (2018, Minor Planet Bull., 45, 138)
*     4 = Warner & Stephens (2019, Minor Planet Bull., 46, 304)
*     5 = Warner et al. (2021, Minor Planet Bull., 48, 337)
*     6 = Pravec et al. (1996, Icarus, 124, 471)
*     7 = Waszczak et al. (2015AJ....150...75W, Cat. J/5AJ/150/75)
*     8 = Warner & Stephens (2020, Minor Planet Bull., 47, 290)
*     9 = Schmalz et al. (2023, Minor Planet Bull., 50, 43)
*    10 = Warner & Stephens (2022, Minor Planet Bull., 49, 274)
*    11 = Krugly et al. (2002, Icarus, 158, 294)
*    12 = Pravec et al. (1998, Icarus, 136, 124)
*    13 = Franco et al. (2022, Minor Planet Bull., 49, 200)
*    14 = Warner & Stephens (2020, Minor Planet Bul., 47, 200)
*    15 = Warner (2015, Minor Planet Bull., 42, 172)
*    16 = Warner & Stephens (2022, Minor Planet Bull., 49, 176)
*    17 = Polishook (2012, Minor Planet Bull., 39, 187)
*    18 = Polishook & Brosch (2008, Icarus, 194, 111)
*    19 = Ries & Varadi (2007, in AAS/Division for Planetary Sciences Meeting 6
*          Abstracts, 39, AAS/Division for Planetary sciences Meeting Abstracts
*          #39, 35.16)
*    20 = Warner (2013, Minor Planet Bull., 40, 137)
*    21 = Carbognani (2014, Minor Planet Bull., 41, 4)
*    22 = Warner & Stephens (2020, Minor Planet Bull., 47, 105)
*    23 = Benishek (2021, Minor Planet Bull., 48, 77)
*    24 = Carbognani (2008, Minor Planet Bull., 35, 109)
*    25 = Warner (2014, Minor Planet Bull., 41, 41)
*    26 = Vaduvescu et al. (2022, Earth, Moon and Planets, 126, 6)
*    27 = Warner & Stephens (2019, Minor Planet Bull., 46, 144)
*    28 = Thirouin et al. (2016AJ....152..163T, Cat. J/AJ/152/163)

c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

C  Declarations for 'tablea2.dat'	! Overview of the modelling results

      integer*4 nr__1
      parameter (nr__1=22)	! Number of records
      character*75 ar__1  	! Full-size record

      integer*4     Name_1     (nr__1) ! ? Designation number of asteroid (if available)
      character*9   AName_1    (nr__1) ! Alternative/temporary name of asteroid
      integer*4     Nper       (nr__1) ! Number of possible sidereal periods
      integer*4     Npole      (nr__1) ! ?=- Number of possible rotational pole
*                                  directions
      real*8        Psid       (nr__1) ! (h) Best-fit sidereal period
      real*8        E_Psid     (nr__1) ! (h) Upper uncertainty of Psid (3 sigma)
      real*8        e_Psid_1   (nr__1) ! (h) Lower uncertainty of Psid (3 sigma)
      integer*4     lambda     (nr__1) ! (deg) ?=- Ecliptic longitude
      integer*4     beta       (nr__1) ! (deg) ?=- Ecliptic latitude
      integer*4     e_rpole    (nr__1) ! (deg) ?=- Radius of pole uncertainty
      integer*4     epsilon    (nr__1) ! (deg) ?=- Obliquity
      real*4        a_b        (nr__1) ! (deg) ?=- a/b axis ratios of surface-fit ellipsoids
      real*4        a_c        (nr__1) ! (deg) ?=- a/c axis ratios of surface-fit ellipsoids

c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

C  Declarations for 'tablea3.dat'	! Summary of asteroids observation circumstances
                                 and success rate in modelling

      integer*4 nr__2
      parameter (nr__2=17)	! Number of records
      character*128 ar__2  	! Full-size record

      integer*4     Name_2     (nr__2) ! ? Designation number of asteroid (if available)
      character*9   AName_2    (nr__2) ! Alternative/temporary name of asteroid
      real*4        Psid_1     (nr__2) ! (h) Rough best-fit sidereal period
      integer*4     Nper_1     (nr__2) ! Number of possible sidereal periods
      integer*4     Npole_1    (nr__2) ! ?=- Number of possible rotational pole
*                                  directions
      real*4        App_gap12  (nr__2) ! (yr) Gaps between apparitions 1 and 2
      real*4        App_gap23  (nr__2) ! (yr) ? Gaps between apparitions 2 and 3
      real*4        App_gap34  (nr__2) ! (yr) ? Gaps between apparitions 3 and 4
      real*4        App_gap45  (nr__2) ! (yr) ? Gaps between apparitions 4 and 5
      real*4        App_gap56  (nr__2) ! (yr) ? Gaps between apparitions 5 and 6
      integer*4     App_pts1   (nr__2) ! Number of data points for apparition 1
      integer*4     App_pts2   (nr__2) ! Number of data points for apparition 2
      integer*4     App_pts3   (nr__2) ! ? Number of data points for apparition 3
      integer*4     App_pts4   (nr__2) ! ? Number of data points for apparition 4
      integer*4     App_pts5   (nr__2) ! ? Number of data points for apparition 5
      integer*4     App_pts6   (nr__2) ! ? Number of data points for apparition 6
      integer*4     PABcov     (nr__2) ! (%) Phase angle bi-sector coverage
      real*4        lcampl     (nr__2) ! (mag) Observed lightcurve amplitude
      integer*4     Rating     (nr__2) ! [0/2] Rating of model successfulness (1)
      character*29  Comment    (nr__2) ! Brief evaluation of model successfulness
      character*8   FileName   (nr__2) ! Name of the directory with light curves
      integer*4     Nfiles     (nr__2) ! Number of files in the subdirectory
*Note (1): Rating model code as follows:
*           0 = full model, period, pole and shape well constrained
*           1 = partially successfully model, ambiguity in period or pole
*           2 = unsuccessful model, too many period aliases
*--------------------------------------------------------------------------------
*
* Byte-by-byte Description of file: lcs/*/*
*--------------------------------------------------------------------------------
*   Bytes Format Units   Label     Explanations
*--------------------------------------------------------------------------------
*   1- 13  F13.5 d       JD        Julian date (UT), no light-time correction
*  15- 20  F6.3  mag     mag       Relative brightness of target
*  22- 27  F6.3  mag   e_mag       ?=- Formal uncertainty of asteroid brightness

C=============================================================================

C  Loading file 'tablea1.dat'	! Observational circumstances of studied asteroids

C  Format for file interpretation

    1 format(I6,1X,A9,1X,A10,1X,A10,1X,I2,1X,I3,1X,I3,1X,A15,2X,I2)

C  Effective file loading

      open(unit=1,status='old',file=
     +'tablea1.dat')
      write(6,*) '....Loading file: tablea1.dat'
      do i__=1,95
        read(1,'(A69)')ar__
        read(ar__,1)
     +  Name(i__),AName(i__),Date_init(i__),Date_end(i__),
     +  Nsessions(i__),PA_init(i__),PA_end(i__),Inst(i__),Ref(i__)
        if(ar__(1:6) .EQ. '') Name(i__) = iNULL__
        if(ar__(68:69) .EQ. '') Ref(i__) = iNULL__
c    ..............Just test output...........
        write(6,1)
     +  Name(i__),AName(i__),Date_init(i__),Date_end(i__),
     +  Nsessions(i__),PA_init(i__),PA_end(i__),Inst(i__),Ref(i__)
c    .......End.of.Just test output...........
      end do
      close(1)

C=============================================================================

C  Loading file 'tablea2.dat'	! Overview of the modelling results

C  Format for file interpretation

    2 format(
     +  I6,1X,A9,1X,I3,1X,I1,1X,F9.6,1X,F8.6,1X,F8.6,1X,I3,1X,I3,1X,
     +  I2,1X,I3,1X,F4.2,1X,F4.2)

C  Effective file loading

      open(unit=1,status='old',file=
     +'tablea2.dat')
      write(6,*) '....Loading file: tablea2.dat'
      do i__=1,22
        read(1,'(A75)')ar__1
        read(ar__1,2)
     +  Name_1(i__),AName_1(i__),Nper(i__),Npole(i__),Psid(i__),
     +  E_Psid(i__),e_Psid_1(i__),lambda(i__),beta(i__),e_rpole(i__),
     +  epsilon(i__),a_b(i__),a_c(i__)
        if(ar__1(1:6) .EQ. '') Name_1(i__) = iNULL__
        if (Npole(i__) .EQ. 45) Npole(i__) =  iNULL__
        if (lambda(i__) .EQ. 45) lambda(i__) =  iNULL__
        if (beta(i__) .EQ. 45) beta(i__) =  iNULL__
        if (e_rpole(i__) .EQ. 45) e_rpole(i__) =  iNULL__
        if (epsilon(i__) .EQ. 45) epsilon(i__) =  iNULL__
        if (idig(ar__1(67:70)).EQ.0) a_b(i__) =  rNULL__
        if (idig(ar__1(72:75)).EQ.0) a_c(i__) =  rNULL__
c    ..............Just test output...........
        write(6,2)
     +  Name_1(i__),AName_1(i__),Nper(i__),Npole(i__),Psid(i__),
     +  E_Psid(i__),e_Psid_1(i__),lambda(i__),beta(i__),e_rpole(i__),
     +  epsilon(i__),a_b(i__),a_c(i__)
c    .......End.of.Just test output...........
      end do
      close(1)

C=============================================================================

C  Loading file 'tablea3.dat'	! Summary of asteroids observation circumstances
*                                 and success rate in modelling

C  Format for file interpretation

    3 format(
     +  I6,1X,A9,1X,F5.2,1X,I3,1X,I1,1X,F4.1,1X,F4.1,1X,F3.1,1X,F3.1,
     +  1X,F3.1,1X,I4,1X,I4,1X,I3,1X,I3,1X,I3,1X,I3,1X,I2,1X,F4.2,1X,
     +  I1,1X,A29,1X,A8,1X,I2)

C  Effective file loading

      open(unit=1,status='old',file=
     +'tablea3.dat')
      write(6,*) '....Loading file: tablea3.dat'
      do i__=1,17
        read(1,'(A128)')ar__2
        read(ar__2,3)
     +  Name_2(i__),AName_2(i__),Psid_1(i__),Nper_1(i__),Npole_1(i__),
     +  App_gap12(i__),App_gap23(i__),App_gap34(i__),App_gap45(i__),
     +  App_gap56(i__),App_pts1(i__),App_pts2(i__),App_pts3(i__),
     +  App_pts4(i__),App_pts5(i__),App_pts6(i__),PABcov(i__),
     +  lcampl(i__),Rating(i__),Comment(i__),FileName(i__),Nfiles(i__)
        if(ar__2(1:6) .EQ. '') Name_2(i__) = iNULL__
        if (Npole_1(i__) .EQ. 45) Npole_1(i__) =  iNULL__
        if(ar__2(35:38) .EQ. '') App_gap23(i__) = rNULL__
        if(ar__2(40:42) .EQ. '') App_gap34(i__) = rNULL__
        if(ar__2(44:46) .EQ. '') App_gap45(i__) = rNULL__
        if(ar__2(48:50) .EQ. '') App_gap56(i__) = rNULL__
        if(ar__2(62:64) .EQ. '') App_pts3(i__) = iNULL__
        if(ar__2(66:68) .EQ. '') App_pts4(i__) = iNULL__
        if(ar__2(70:72) .EQ. '') App_pts5(i__) = iNULL__
        if(ar__2(74:76) .EQ. '') App_pts6(i__) = iNULL__
c    ..............Just test output...........
        write(6,3)
     +  Name_2(i__),AName_2(i__),Psid_1(i__),Nper_1(i__),Npole_1(i__),
     +  App_gap12(i__),App_gap23(i__),App_gap34(i__),App_gap45(i__),
     +  App_gap56(i__),App_pts1(i__),App_pts2(i__),App_pts3(i__),
     +  App_pts4(i__),App_pts5(i__),App_pts6(i__),PABcov(i__),
     +  lcampl(i__),Rating(i__),Comment(i__),FileName(i__),Nfiles(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