FORTRAN Generation
(/./ftp/cats/II/378)

Conversion of standardized ReadMe file for file /./ftp/cats/II/378 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-Oct-11
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. II/378  XMM-OM Serendipitous Source Survey Catalogue (XMM-SUSS6.0) (Page+, 2023)
*================================================================================
*XMM-OM Serendipitous Source Survey Catalogue (XMM-SUSS6)
*     Page M.J., Brindle C., Talavera A., Still M., Rosen S.R., Yershov V.N.,
*     Ziaeepour H., Mason K.O., Cropper M.S., Breeveld A.A., Loiseau N.,
*     Mignani R., Smith A., Murdin P.
*    <Mon. Not. R. Astron. Soc. 426, 903 (2012)>
*    =2012MNRAS.426..903P
*    =2023yCat.2378....0P
C=============================================================================

C  Internal variables

      integer*4 i__

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

C  Declarations for 'xmmom6s.dat'	! The XMM-Newton Optical Monitor Serendipitous
                                     Source Survey Catalogue, Version 6.0
                                     (XMM-SUSS6.0) "slim" version

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

C  J2000 position composed of: RAdeg DEdeg
      character*17  XMMOM      (nr__) ! Source name (JHHMMSS.s+DDMMSSa)
*                                      (IAUNAME) (1)
      integer*4     IDsum      (nr__) ! Index in the SUMMARY table for the source
*                                      ObsiD (N_SUMMARY)
      character*10  ObsID      (nr__) ! Source OBSID number (OBSID)
      integer*4     ID         (nr__) ! Source number in this catalogue (SRCNUM)
      real*8        UVW2r      (nr__) ! (arcsec) ?=- Distance to the nearest source,
*                                      UVW2 filter (UVW2_SRCDIST)
      real*8        UVM2r      (nr__) ! (arcsec) ?=- Distance to the nearest source,
*                                      UVM2 filter (UVM2_SRCDIST)
      real*8        UVM1r      (nr__) ! (arcsec) ?=- Distance to the nearest source,
*                                      UVW1 filter (UVW1_SRCDIST)
      real*8        Ur         (nr__) ! (arcsec) ?=- Distance to the nearest source,
*                                      U filter (U_SRCDIST)
      real*8        Br         (nr__) ! (arcsec) ?=- Distance to the nearest source,
*                                      B filter (B_SRCDIST)
      real*8        Vr         (nr__) ! (arcsec) ?=- Distance to the nearest source,
*                                      V filter (V_SRCDIST)
      real*8        RAdeg      (nr__) ! (deg) Source Right Ascension (J2000) (RA)
      real*8        DEdeg      (nr__) ! (deg) Source Declination (J2000) (DEC)
      real*8        ePos       (nr__) ! (arcsec) Source positional error (POSERR)
      integer*4     Nobs       (nr__) ! Number of observation IDs for this source
*                                      (N_OBSID)
      real*8        sig_UVW2   (nr__) ! ?=- Significance in UVW2 (UVW2_SIGNIF)
      real*8        sig_UVM2   (nr__) ! ?=- Significance in UVM2 (UVM2_SIGNIF)
      real*8        sig_UVW1   (nr__) ! ?=- Significance in UVW1 (UVW1_SIGNIF)
      real*8        sig_U      (nr__) ! ?=- Significance in U source (U_SIGNIF)
      real*8        sig_B      (nr__) ! ?=- Significance in B (B_SIGNIF)
      real*8        sig_V      (nr__) ! ?=- Significance in V (V_SIGNIF)
      real*4        F_UVW2     (nr__) ! (cW/m2/nm) ?=- Source flux in XMM-OM/UVW2 filter, in
*                                       erg/cm^2^/s/{AA} (UVW2_AB_FLUX)
      real*4        e_F_UVW2   (nr__) ! (cW/m2/nm) ?=- Error in F(UVW2) (UVW2_AB_FLUX_ERR)
      real*4        F_UVM2     (nr__) ! (cW/m2/nm) ?=- Source flux in XMM-OM/UVM2 filter, in
*                                       erg/cm^2^/s/{AA} (UVM2_AB_FLUX)
      real*4        e_F_UVM2   (nr__) ! (cW/m2/nm) ?=- Error in F(UVM2) (UVM2_AB_FLUX_ERR)
      real*4        F_UVW1     (nr__) ! (cW/m2/nm) ?=- Source flux in XMM-OM/UVW1 filter, in
*                                       erg/cm^2^/s/{AA} (UVW1_AB_FLUX)
      real*4        e_F_UVW1   (nr__) ! (cW/m2/nm) ?=- Error in F(UVW1) (UVW1_AB_FLUX_ERR)
      real*4        F_U        (nr__) ! (cW/m2/nm) ?=- Source flux in XMM-OM/U filter, in
*                                       erg/cm^2^/s/{AA} (U_AB_FLUX)
      real*4        e_F_U      (nr__) ! (cW/m2/nm) ?=- Error in F(U) (U_AB_FLUX_ERR)
      real*4        F_B        (nr__) ! (cW/m2/nm) ?=- Source flux in XMM-OM/B filter, in
*                                       erg/cm^2^/s/{AA} (B_AB_FLUX)
      real*4        e_F_B      (nr__) ! (cW/m2/nm) ?=- Error in F(B) (B_AB_FLUX_ERR)
      real*4        F_V        (nr__) ! (cW/m2/nm) ?=- Source flux in XMM-OM/V filter, in
*                                       erg/cm^2^/s/{AA} (V_AB_FLUX)
      real*4        e_F_V      (nr__) ! (cW/m2/nm) ?=- Error in F(V) (V_AB_FLUX_ERR)
      real*8        UVW2mAB    (nr__) ! (mag) ?=- Source AB magnitude in XMM-OT/UVW2
*                                      filter (UVW2_AB_MAG)
      real*8        e_UVW2mAB  (nr__) ! (mag) ?=- Error on UVW2mAB (UVW2_AB_MAG_ERR)
      real*8        UVM2mAB    (nr__) ! (mag) ?=- Source AB magnitude in XMM-OT/UVM2
*                                      filter (UVM2_AB_MAG)
      real*8        e_UVM2mAB  (nr__) ! (mag) ?=- Error on UVM2mAB (UVM2_AB_MAG_ERR)
      real*8        UVW1mAB    (nr__) ! (mag) ?=- Source AB magnitude in XMM-OT/UVW1
*                                      filter (UVW1_AB_MAG)
      real*8        e_UVW1mAB  (nr__) ! (mag) ?=- Error on UVW1mAB (UVW1_AB_MAG_ERR)
      real*8        UmAB       (nr__) ! (mag) ?=- Source AB magnitude in XMM-OT/U
*                                      (U_AB_MAG)
      real*8        e_UmAB     (nr__) ! (mag) ?=- Error on UmAB (U_AB_MAG_ERR)
      real*8        BmAB       (nr__) ! (mag) ?=- Source AB magnitude in XMM-OT/B
*                                      (B_AB_MAG)
      real*8        e_BmAB     (nr__) ! (mag) ?=- Error on BmAB (B_AB_MAG_ERR)
      real*8        VmAB       (nr__) ! (mag) ?=- Source AB magnitude in XMM-OT/V
*                                      (V_AB_MAG)
      real*8        e_VmAB     (nr__) ! (mag) ?=- Error on VmAB (V_AB_MAG_ERR)
      character*13  q_UVW2     (nr__) ! [TF] Source quality flag string,
*                                      filter UVW2 (UVW2_QUALITY_FLAG_ST) (2)
      character*13  q_UVM2     (nr__) ! [TF] Source quality flag string,
*                                      filter UVM2 (UVM2_QUALITY_FLAG_ST) (2)
      character*13  q_UVW1     (nr__) ! [TF] Source quality flag string,
*                                      filter UVW1 (UVW1_QUALITY_FLAG_ST) (2)
      character*13  q_U        (nr__) ! [TF] Source quality flag string, filter U
*                                      (U_QUALITY_FLAG_ST) (2)
      character*13  q_B        (nr__) ! [TF] Source quality flag string, filter B
*                                      (B_QUALITY_FLAG_ST) (2)
      character*13  q_V        (nr__) ! [TF] Source quality flag string, filter V
*                                      (V_QUALITY_FLAG_ST) (2)
      integer*4     xUVW2      (nr__) ! [0/1]? Source extended flag in filter UVW2
*                                      (UVW2_EXTENDED_FLAG) (3)
      integer*4     xUVM2      (nr__) ! [0/1]? Source extended flag in filter UVM2
*                                      (UVM2_EXTENDED_FLAG) (3)
      integer*4     xUVW1      (nr__) ! [0/1]? Source extended flag in filter UVW1
*                                      (UVW1_EXTENDED_FLAG) (3)
      integer*4     xU         (nr__) ! [0/1]? Source extended flag in filter U
*                                      (U_EXTENDED_FLAG) (3)
      integer*4     xB         (nr__) ! [0/1]?  Source extended flag in filter B
*                                      (B_EXTENDED_FLAG) (3)
      integer*4     xV         (nr__) ! [0/1]? Source extended flag in filter V
*                                      (V_EXTENDED_FLAG) (3)
      character*3   UVW2img    (nr__) ! [YES] Source detected in stacked images
*                                      filter UVW2 (UVW2_SKY_IMAGE)
      character*3   UVM2img    (nr__) ! [YES] Source detected in stacked images
*                                      filter UVM2 (UVM2_SKY_IMAGE)
      character*3   UVW1img    (nr__) ! [YES] Source detected in stacked images
*                                      filter UVW1 (UVW1_SKY_IMAGE)
      character*3   Uimg       (nr__) ! [YES] Source detected in stacked images
*                                      filter U (U_SKY_IMAGE)
      character*3   Bimg       (nr__) ! [YES] Source detected in stacked images
*                                      filter B (B_SKY_IMAGE)
      character*3   Vimg       (nr__) ! [YES] SoVrce detected in stacked images
*                                      filter U (V_SKY_IMAGE)
*Note (1): Sources are designated as "XMMOM JHHMMSS.s+DDMMSSa", conform to
*     the IAU Working Group on Designations (old IAU Commission 5). There are
*     over 1173 non-unique names. The last character is optional, and only
*     used to distinguish sources which otherwise would have the same name.
*Note (2): the quality flags are as a set of the corresponding T/F (True/False)
*      characters.
*      1 : T = source on a bad pixel
*      2 : T = source on a readout streak
*      3 : T = source on a smoke-ring
*      4 : T = source on a diffraction spike
*      5 : T = source affected by Mod-8 pattern
*      6 : T = source within the central enhancement
*      7 : T = source lies near a bright source
*      8 : T = source near the edge
*      9 : T = point source within an extended source
*     10 : T = very bight pixel within photometry aperture
*     11 : T = multiple exposure values within photometry aperture
*     12 : T = the source is too bright (rate>0.97ct/frame)
*Note (3): the flag is 1 for an extended source and 0 for a point source.

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

C  Loading file 'xmmom6s.dat'	! The XMM-Newton Optical Monitor Serendipitous
*                                     Source Survey Catalogue, Version 6.0
*                                     (XMM-SUSS6.0) "slim" version

C  Format for file interpretation

    1 format(
     +  6X,A17,I5,1X,A10,1X,I7,1X,F10.6,1X,F11.6,1X,F10.6,1X,F10.6,1X,
     +  F10.6,1X,F10.6,1X,F10.6,1X,F10.6,1X,F8.6,1X,I3,1X,F8.2,1X,
     +  F8.2,1X,F8.2,1X,F8.2,1X,F8.2,1X,F8.2,1X,E12.6,1X,E12.6,1X,
     +  E12.6,1X,E12.6,1X,E12.6,1X,E12.6,1X,E12.6,1X,E12.6,1X,E12.6,
     +  1X,E12.6,1X,E12.6,1X,E12.6,1X,F8.5,1X,F8.6,1X,F7.4,1X,F8.6,1X,
     +  F7.4,1X,F8.6,1X,F7.4,1X,F8.6,1X,F7.4,1X,F8.6,1X,F7.4,1X,F8.6,
     +  1X,A13,1X,A13,1X,A13,1X,A13,1X,A13,1X,A13,1X,I1,1X,I1,1X,I1,
     +  1X,I1,1X,I1,1X,I1,1X,A3,1X,A3,1X,A3,1X,A3,1X,A3,1X,A3)

C  Effective file loading

      open(unit=1,status='old',file=
     +'xmmom6s.dat')
      write(6,*) '....Loading file: xmmom6s.dat'
      do i__=1,9920390
        read(1,'(A582)')ar__
        read(ar__,1)
     +  XMMOM(i__),IDsum(i__),ObsID(i__),ID(i__),UVW2r(i__),
     +  UVM2r(i__),UVM1r(i__),Ur(i__),Br(i__),Vr(i__),RAdeg(i__),
     +  DEdeg(i__),ePos(i__),Nobs(i__),sig_UVW2(i__),sig_UVM2(i__),
     +  sig_UVW1(i__),sig_U(i__),sig_B(i__),sig_V(i__),F_UVW2(i__),
     +  e_F_UVW2(i__),F_UVM2(i__),e_F_UVM2(i__),F_UVW1(i__),
     +  e_F_UVW1(i__),F_U(i__),e_F_U(i__),F_B(i__),e_F_B(i__),
     +  F_V(i__),e_F_V(i__),UVW2mAB(i__),e_UVW2mAB(i__),UVM2mAB(i__),
     +  e_UVM2mAB(i__),UVW1mAB(i__),e_UVW1mAB(i__),UmAB(i__),
     +  e_UmAB(i__),BmAB(i__),e_BmAB(i__),VmAB(i__),e_VmAB(i__),
     +  q_UVW2(i__),q_UVM2(i__),q_UVW1(i__),q_U(i__),q_B(i__),
     +  q_V(i__),xUVW2(i__),xUVM2(i__),xUVW1(i__),xU(i__),xB(i__),
     +  xV(i__),UVW2img(i__),UVM2img(i__),UVW1img(i__),Uimg(i__),
     +  Bimg(i__),Vimg(i__)
        if (idig(ar__(49:58)).EQ.0) UVW2r(i__) =  rNULL__
        if (idig(ar__(60:70)).EQ.0) UVM2r(i__) =  rNULL__
        if (idig(ar__(72:81)).EQ.0) UVM1r(i__) =  rNULL__
        if (idig(ar__(83:92)).EQ.0) Ur(i__) =  rNULL__
        if (idig(ar__(94:103)).EQ.0) Br(i__) =  rNULL__
        if (idig(ar__(105:114)).EQ.0) Vr(i__) =  rNULL__
        if (idig(ar__(151:158)).EQ.0) sig_UVW2(i__) =  rNULL__
        if (idig(ar__(160:167)).EQ.0) sig_UVM2(i__) =  rNULL__
        if (idig(ar__(169:176)).EQ.0) sig_UVW1(i__) =  rNULL__
        if (idig(ar__(178:185)).EQ.0) sig_U(i__) =  rNULL__
        if (idig(ar__(187:194)).EQ.0) sig_B(i__) =  rNULL__
        if (idig(ar__(196:203)).EQ.0) sig_V(i__) =  rNULL__
        if (idig(ar__(205:216)).EQ.0) F_UVW2(i__) =  rNULL__
        if (idig(ar__(218:229)).EQ.0) e_F_UVW2(i__) =  rNULL__
        if (idig(ar__(231:242)).EQ.0) F_UVM2(i__) =  rNULL__
        if (idig(ar__(244:255)).EQ.0) e_F_UVM2(i__) =  rNULL__
        if (idig(ar__(257:268)).EQ.0) F_UVW1(i__) =  rNULL__
        if (idig(ar__(270:281)).EQ.0) e_F_UVW1(i__) =  rNULL__
        if (idig(ar__(283:294)).EQ.0) F_U(i__) =  rNULL__
        if (idig(ar__(296:307)).EQ.0) e_F_U(i__) =  rNULL__
        if (idig(ar__(309:320)).EQ.0) F_B(i__) =  rNULL__
        if (idig(ar__(322:333)).EQ.0) e_F_B(i__) =  rNULL__
        if (idig(ar__(335:346)).EQ.0) F_V(i__) =  rNULL__
        if (idig(ar__(348:359)).EQ.0) e_F_V(i__) =  rNULL__
        if (idig(ar__(361:368)).EQ.0) UVW2mAB(i__) =  rNULL__
        if (idig(ar__(370:377)).EQ.0) e_UVW2mAB(i__) =  rNULL__
        if (idig(ar__(379:385)).EQ.0) UVM2mAB(i__) =  rNULL__
        if (idig(ar__(387:394)).EQ.0) e_UVM2mAB(i__) =  rNULL__
        if (idig(ar__(396:402)).EQ.0) UVW1mAB(i__) =  rNULL__
        if (idig(ar__(404:411)).EQ.0) e_UVW1mAB(i__) =  rNULL__
        if (idig(ar__(413:419)).EQ.0) UmAB(i__) =  rNULL__
        if (idig(ar__(421:428)).EQ.0) e_UmAB(i__) =  rNULL__
        if (idig(ar__(430:436)).EQ.0) BmAB(i__) =  rNULL__
        if (idig(ar__(438:445)).EQ.0) e_BmAB(i__) =  rNULL__
        if (idig(ar__(447:453)).EQ.0) VmAB(i__) =  rNULL__
        if (idig(ar__(455:462)).EQ.0) e_VmAB(i__) =  rNULL__
        if(ar__(548:548) .EQ. '') xUVW2(i__) = iNULL__
        if(ar__(550:550) .EQ. '') xUVM2(i__) = iNULL__
        if(ar__(552:552) .EQ. '') xUVW1(i__) = iNULL__
        if(ar__(554:554) .EQ. '') xU(i__) = iNULL__
        if(ar__(556:556) .EQ. '') xB(i__) = iNULL__
        if(ar__(558:558) .EQ. '') xV(i__) = iNULL__
c    ..............Just test output...........
        write(6,1)
     +  XMMOM(i__),IDsum(i__),ObsID(i__),ID(i__),UVW2r(i__),
     +  UVM2r(i__),UVM1r(i__),Ur(i__),Br(i__),Vr(i__),RAdeg(i__),
     +  DEdeg(i__),ePos(i__),Nobs(i__),sig_UVW2(i__),sig_UVM2(i__),
     +  sig_UVW1(i__),sig_U(i__),sig_B(i__),sig_V(i__),F_UVW2(i__),
     +  e_F_UVW2(i__),F_UVM2(i__),e_F_UVM2(i__),F_UVW1(i__),
     +  e_F_UVW1(i__),F_U(i__),e_F_U(i__),F_B(i__),e_F_B(i__),
     +  F_V(i__),e_F_V(i__),UVW2mAB(i__),e_UVW2mAB(i__),UVM2mAB(i__),
     +  e_UVM2mAB(i__),UVW1mAB(i__),e_UVW1mAB(i__),UmAB(i__),
     +  e_UmAB(i__),BmAB(i__),e_BmAB(i__),VmAB(i__),e_VmAB(i__),
     +  q_UVW2(i__),q_UVM2(i__),q_UVW1(i__),q_U(i__),q_B(i__),
     +  q_V(i__),xUVW2(i__),xUVM2(i__),xUVW1(i__),xU(i__),xB(i__),
     +  xV(i__),UVW2img(i__),UVM2img(i__),UVW1img(i__),Uimg(i__),
     +  Bimg(i__),Vimg(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