FORTRAN Generation
(/./ftp/cats/J/MNRAS/461/136)

Conversion of standardized ReadMe file for file /./ftp/cats/J/MNRAS/461/136 into FORTRAN code for reading data files line by line.

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-Oct-14
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/MNRAS/461/136        MMB Survey ex-OH catalogue                (Avison+, 2016)
*================================================================================
*Excited-state hydroxyl maser catalogue from the methanol multibeam survey.
*I. Positions and variability.
*    Avison A., Quinn L.J., Fuller G.A., Caswell J.L., Green J.A., Breen S.L.,
*    Ellingsen S.P., Gray M.D., Pestalozzi M., Thompson M.A., Voronkov M.A.
*   <Mon. Not. R. Astron. Soc., 461, 136-155 (2016)>
*   =2016MNRAS.461..136A    (SIMBAD/NED BibCode)
C=============================================================================

C  Internal variables

      integer*4 i__

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

C  Declarations for 'table1.dat'	! MMB Survey ex-OH catalogue

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

C  J2000 position composed of: RAh RAm RAs DE- DEd DEm DEs
      real*8        RAdeg       ! (deg) Right Ascension J2000
      real*8        DEdeg       ! (deg)     Declination J2000
C  ---------------------------------- ! (position vector(s) in degrees)

      character*14  MMBOH       ! Name (LLL.lll+BB.bbbA)
*                                   for MMBOH-LLL.lll+BB.bbbA (1)
      integer*4     RAh         ! (h) Right ascension (J2000) (2)
      integer*4     RAm         ! (min) Right ascension (J2000)
      real*4        RAs         ! (s) Right ascension (J2000)
      character*1   DE_         ! Declination sign (J2000) (2)
      integer*4     DEd         ! (deg) Declination (J2000)
      integer*4     DEm         ! (arcmin) Declination (J2000)
      real*4        DEs         ! (arcsec) Declination (J2000)
      integer*4     Trans       ! (MHz) [6030 6035] Transition (3)
      character*21  r_Pos       ! Position reference (4)
      real*4        Speak       ! (Jy) ?=- MX/(ATCA) or LHPC(Stokes (I))
*                                   peak flux density in Trans frequency
      real*8        Vpeak       ! (km/s) ?=- MX/(ATCA) or LHPC(Stokes (I))
*                                   peak velocity in Trans frequency
      character*1   n_Speak     ! [i] i for Speak and Vpeak of
*                                   LHPC(Stokes (I)) (5)
      real*4        b_Vpeak     ! (km/s) ?=- Lower value of Vpeak velocity range (6)
      real*4        B_Vpeak_1   ! (km/s) ?=- Upper value of Vpeak velocity range (6)
      character*1   n_Vpeak     ! [*] Note on Vpeak (7)
      real*4        Speak2      ! (Jy) ?=- MX RHCP  peak flux density in
*                                   Trans frequency
      real*8        Vpeak2      ! (km/s) ?=- MX RHCP peak velocity in Trans frequency
      real*4        b_Vpeak2    ! (km/s) ?=- Lower value of Vpeak2 velocity range (6)
      real*4        B_Vpeak2_1  ! (km/s) ?=- Upper value of Vpeak2 velocity range (6)
*Note (1): Source name, which is defined as the source position in Galactic
*  coordinates (rounded at the third decimal point).
*Note (2): Source position in right ascension and declination (sources with
* positions from MMB observations have three decimal places in RA and two in Dec,
* all previously detected masers have two and one decimal accuracy,
* respectively).
*Note (3): the ex-OH transition for the listed maser, counterpart 6030-MHz masers
* are listed directly below their 6035-MHz partner.
*Note (4): Reference for the position listed, with the following abbreviations:
*   ATCA 09 = our ATCA observation results from 2009
*   ATCA 13 = our ATCA observation results from 2013 October
*   ATCA 14 = our ATCA observation results from 2014 February
*   CV95    = Caswell & Vaile (1995MNRAS.273..328C)
*   C97     = Caswell (1997MNRAS.289..203C)
*   C98     = Caswell (1998MNRAS.297..215C)
*   C03     = Caswell (2003MNRAS.341..551C)
*   C01     = Caswell (2001MNRAS.326..805C)
*   PIGGY   = MMB "piggyback" data
*Note (5): i for values for Stokes I (total intensity) flux density taken from
* the respective ATCA observation as these sources are not present in the nearest
* Parkes MX. As such only columns 7-9 are filled in.
*Note (6): the ex-OH maser minimum-maximum velocity range over which emission is
* seen in the spectrum.
*Note (7): Sources 333.136-0.432 and 333.135-0.431 have a blended spectrum
* preventing a complete velocity range to be estimated from the MX data.

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

C  Loading file 'table1.dat'	! MMB Survey ex-OH catalogue

C  Format for file interpretation

    1 format(
     +  A14,1X,I2,1X,I2,1X,F6.3,1X,A1,I2,1X,I2,1X,F6.3,1X,I4,1X,A21,
     +  F6.2,1X,F7.2,A1,F6.1,2X,F6.1,A1,F6.2,1X,F7.2,1X,F6.1,2X,F6.1)

C  Effective file loading

      open(unit=1,status='old',file=
     +'table1.dat')
      write(6,*) '....Loading file: table1.dat'
      do i__=1,159
        read(1,'(A127)')ar__
        read(ar__,1)
     +  MMBOH,RAh,RAm,RAs,DE_,DEd,DEm,DEs,Trans,r_Pos,Speak,Vpeak,
     +  n_Speak,b_Vpeak,B_Vpeak_1,n_Vpeak,Speak2,Vpeak2,b_Vpeak2,
     +  B_Vpeak2_1
        if (idig(ar__(69:74)).EQ.0) Speak =  rNULL__
        if (idig(ar__(76:82)).EQ.0) Vpeak =  rNULL__
        if (idig(ar__(84:89)).EQ.0) b_Vpeak =  rNULL__
        if (idig(ar__(92:97)).EQ.0) B_Vpeak_1 =  rNULL__
        if (idig(ar__(99:104)).EQ.0) Speak2 =  rNULL__
        if (idig(ar__(106:112)).EQ.0) Vpeak2 =  rNULL__
        if (idig(ar__(114:119)).EQ.0) b_Vpeak2 =  rNULL__
        if (idig(ar__(122:127)).EQ.0) B_Vpeak2_1 =  rNULL__
        RAdeg = rNULL__
        DEdeg = rNULL__
c  Derive coordinates RAdeg and DEdeg from input data
c  (RAdeg and DEdeg are set to rNULL__ when unknown)
        if(RAh .GT. -180) RAdeg=RAh*15.
        if(RAm .GT. -180) RAdeg=RAdeg+RAm/4.
        if(RAs .GT. -180) RAdeg=RAdeg+RAs/240.
        if(DEd .GE. 0) DEdeg=DEd
        if(DEm .GE. 0) DEdeg=DEdeg+DEm/60.
        if(DEs .GE. 0) DEdeg=DEdeg+DEs/3600.
        if(DE_.EQ.'-'.AND.DEdeg.GE.0) DEdeg=-DEdeg
c    ..............Just test output...........
        write(6,1)
     +  MMBOH,RAh,RAm,RAs,DE_,DEd,DEm,DEs,Trans,r_Pos,Speak,Vpeak,
     +  n_Speak,b_Vpeak,B_Vpeak_1,n_Vpeak,Speak2,Vpeak2,b_Vpeak2,
     +  B_Vpeak2_1
        write(6,'(6H Pos: 2F8.4)') RAdeg,DEdeg
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