Conversion of standardized ReadMe file for
file /./ftp/cats/II/378 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-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 ! Source name (JHHMMSS.s+DDMMSSa)
* (IAUNAME) (1)
integer*4 IDsum ! Index in the SUMMARY table for the source
* ObsiD (N_SUMMARY)
character*10 ObsID ! Source OBSID number (OBSID)
integer*4 ID ! Source number in this catalogue (SRCNUM)
real*8 UVW2r ! (arcsec) ?=- Distance to the nearest source,
* UVW2 filter (UVW2_SRCDIST)
real*8 UVM2r ! (arcsec) ?=- Distance to the nearest source,
* UVM2 filter (UVM2_SRCDIST)
real*8 UVM1r ! (arcsec) ?=- Distance to the nearest source,
* UVW1 filter (UVW1_SRCDIST)
real*8 Ur ! (arcsec) ?=- Distance to the nearest source,
* U filter (U_SRCDIST)
real*8 Br ! (arcsec) ?=- Distance to the nearest source,
* B filter (B_SRCDIST)
real*8 Vr ! (arcsec) ?=- Distance to the nearest source,
* V filter (V_SRCDIST)
real*8 RAdeg ! (deg) Source Right Ascension (J2000) (RA)
real*8 DEdeg ! (deg) Source Declination (J2000) (DEC)
real*8 ePos ! (arcsec) Source positional error (POSERR)
integer*4 Nobs ! Number of observation IDs for this source
* (N_OBSID)
real*8 sig_UVW2 ! ?=- Significance in UVW2 (UVW2_SIGNIF)
real*8 sig_UVM2 ! ?=- Significance in UVM2 (UVM2_SIGNIF)
real*8 sig_UVW1 ! ?=- Significance in UVW1 (UVW1_SIGNIF)
real*8 sig_U ! ?=- Significance in U source (U_SIGNIF)
real*8 sig_B ! ?=- Significance in B (B_SIGNIF)
real*8 sig_V ! ?=- Significance in V (V_SIGNIF)
real*4 F_UVW2 ! (cW/m2/nm) ?=- Source flux in XMM-OM/UVW2 filter, in
* erg/cm^2^/s/{AA} (UVW2_AB_FLUX)
real*4 e_F_UVW2 ! (cW/m2/nm) ?=- Error in F(UVW2) (UVW2_AB_FLUX_ERR)
real*4 F_UVM2 ! (cW/m2/nm) ?=- Source flux in XMM-OM/UVM2 filter, in
* erg/cm^2^/s/{AA} (UVM2_AB_FLUX)
real*4 e_F_UVM2 ! (cW/m2/nm) ?=- Error in F(UVM2) (UVM2_AB_FLUX_ERR)
real*4 F_UVW1 ! (cW/m2/nm) ?=- Source flux in XMM-OM/UVW1 filter, in
* erg/cm^2^/s/{AA} (UVW1_AB_FLUX)
real*4 e_F_UVW1 ! (cW/m2/nm) ?=- Error in F(UVW1) (UVW1_AB_FLUX_ERR)
real*4 F_U ! (cW/m2/nm) ?=- Source flux in XMM-OM/U filter, in
* erg/cm^2^/s/{AA} (U_AB_FLUX)
real*4 e_F_U ! (cW/m2/nm) ?=- Error in F(U) (U_AB_FLUX_ERR)
real*4 F_B ! (cW/m2/nm) ?=- Source flux in XMM-OM/B filter, in
* erg/cm^2^/s/{AA} (B_AB_FLUX)
real*4 e_F_B ! (cW/m2/nm) ?=- Error in F(B) (B_AB_FLUX_ERR)
real*4 F_V ! (cW/m2/nm) ?=- Source flux in XMM-OM/V filter, in
* erg/cm^2^/s/{AA} (V_AB_FLUX)
real*4 e_F_V ! (cW/m2/nm) ?=- Error in F(V) (V_AB_FLUX_ERR)
real*8 UVW2mAB ! (mag) ?=- Source AB magnitude in XMM-OT/UVW2
* filter (UVW2_AB_MAG)
real*8 e_UVW2mAB ! (mag) ?=- Error on UVW2mAB (UVW2_AB_MAG_ERR)
real*8 UVM2mAB ! (mag) ?=- Source AB magnitude in XMM-OT/UVM2
* filter (UVM2_AB_MAG)
real*8 e_UVM2mAB ! (mag) ?=- Error on UVM2mAB (UVM2_AB_MAG_ERR)
real*8 UVW1mAB ! (mag) ?=- Source AB magnitude in XMM-OT/UVW1
* filter (UVW1_AB_MAG)
real*8 e_UVW1mAB ! (mag) ?=- Error on UVW1mAB (UVW1_AB_MAG_ERR)
real*8 UmAB ! (mag) ?=- Source AB magnitude in XMM-OT/U
* (U_AB_MAG)
real*8 e_UmAB ! (mag) ?=- Error on UmAB (U_AB_MAG_ERR)
real*8 BmAB ! (mag) ?=- Source AB magnitude in XMM-OT/B
* (B_AB_MAG)
real*8 e_BmAB ! (mag) ?=- Error on BmAB (B_AB_MAG_ERR)
real*8 VmAB ! (mag) ?=- Source AB magnitude in XMM-OT/V
* (V_AB_MAG)
real*8 e_VmAB ! (mag) ?=- Error on VmAB (V_AB_MAG_ERR)
character*13 q_UVW2 ! [TF] Source quality flag string,
* filter UVW2 (UVW2_QUALITY_FLAG_ST) (2)
character*13 q_UVM2 ! [TF] Source quality flag string,
* filter UVM2 (UVM2_QUALITY_FLAG_ST) (2)
character*13 q_UVW1 ! [TF] Source quality flag string,
* filter UVW1 (UVW1_QUALITY_FLAG_ST) (2)
character*13 q_U ! [TF] Source quality flag string, filter U
* (U_QUALITY_FLAG_ST) (2)
character*13 q_B ! [TF] Source quality flag string, filter B
* (B_QUALITY_FLAG_ST) (2)
character*13 q_V ! [TF] Source quality flag string, filter V
* (V_QUALITY_FLAG_ST) (2)
integer*4 xUVW2 ! [0/1]? Source extended flag in filter UVW2
* (UVW2_EXTENDED_FLAG) (3)
integer*4 xUVM2 ! [0/1]? Source extended flag in filter UVM2
* (UVM2_EXTENDED_FLAG) (3)
integer*4 xUVW1 ! [0/1]? Source extended flag in filter UVW1
* (UVW1_EXTENDED_FLAG) (3)
integer*4 xU ! [0/1]? Source extended flag in filter U
* (U_EXTENDED_FLAG) (3)
integer*4 xB ! [0/1]? Source extended flag in filter B
* (B_EXTENDED_FLAG) (3)
integer*4 xV ! [0/1]? Source extended flag in filter V
* (V_EXTENDED_FLAG) (3)
character*3 UVW2img ! [YES] Source detected in stacked images
* filter UVW2 (UVW2_SKY_IMAGE)
character*3 UVM2img ! [YES] Source detected in stacked images
* filter UVM2 (UVM2_SKY_IMAGE)
character*3 UVW1img ! [YES] Source detected in stacked images
* filter UVW1 (UVW1_SKY_IMAGE)
character*3 Uimg ! [YES] Source detected in stacked images
* filter U (U_SKY_IMAGE)
character*3 Bimg ! [YES] Source detected in stacked images
* filter B (B_SKY_IMAGE)
character*3 Vimg ! [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,IDsum,ObsID,ID,UVW2r,UVM2r,UVM1r,Ur,Br,Vr,RAdeg,DEdeg,
+ ePos,Nobs,sig_UVW2,sig_UVM2,sig_UVW1,sig_U,sig_B,sig_V,F_UVW2,
+ e_F_UVW2,F_UVM2,e_F_UVM2,F_UVW1,e_F_UVW1,F_U,e_F_U,F_B,e_F_B,
+ F_V,e_F_V,UVW2mAB,e_UVW2mAB,UVM2mAB,e_UVM2mAB,UVW1mAB,
+ e_UVW1mAB,UmAB,e_UmAB,BmAB,e_BmAB,VmAB,e_VmAB,q_UVW2,q_UVM2,
+ q_UVW1,q_U,q_B,q_V,xUVW2,xUVM2,xUVW1,xU,xB,xV,UVW2img,UVM2img,
+ UVW1img,Uimg,Bimg,Vimg
if (idig(ar__(49:58)).EQ.0) UVW2r = rNULL__
if (idig(ar__(60:70)).EQ.0) UVM2r = rNULL__
if (idig(ar__(72:81)).EQ.0) UVM1r = rNULL__
if (idig(ar__(83:92)).EQ.0) Ur = rNULL__
if (idig(ar__(94:103)).EQ.0) Br = rNULL__
if (idig(ar__(105:114)).EQ.0) Vr = rNULL__
if (idig(ar__(151:158)).EQ.0) sig_UVW2 = rNULL__
if (idig(ar__(160:167)).EQ.0) sig_UVM2 = rNULL__
if (idig(ar__(169:176)).EQ.0) sig_UVW1 = rNULL__
if (idig(ar__(178:185)).EQ.0) sig_U = rNULL__
if (idig(ar__(187:194)).EQ.0) sig_B = rNULL__
if (idig(ar__(196:203)).EQ.0) sig_V = rNULL__
if (idig(ar__(205:216)).EQ.0) F_UVW2 = rNULL__
if (idig(ar__(218:229)).EQ.0) e_F_UVW2 = rNULL__
if (idig(ar__(231:242)).EQ.0) F_UVM2 = rNULL__
if (idig(ar__(244:255)).EQ.0) e_F_UVM2 = rNULL__
if (idig(ar__(257:268)).EQ.0) F_UVW1 = rNULL__
if (idig(ar__(270:281)).EQ.0) e_F_UVW1 = rNULL__
if (idig(ar__(283:294)).EQ.0) F_U = rNULL__
if (idig(ar__(296:307)).EQ.0) e_F_U = rNULL__
if (idig(ar__(309:320)).EQ.0) F_B = rNULL__
if (idig(ar__(322:333)).EQ.0) e_F_B = rNULL__
if (idig(ar__(335:346)).EQ.0) F_V = rNULL__
if (idig(ar__(348:359)).EQ.0) e_F_V = rNULL__
if (idig(ar__(361:368)).EQ.0) UVW2mAB = rNULL__
if (idig(ar__(370:377)).EQ.0) e_UVW2mAB = rNULL__
if (idig(ar__(379:385)).EQ.0) UVM2mAB = rNULL__
if (idig(ar__(387:394)).EQ.0) e_UVM2mAB = rNULL__
if (idig(ar__(396:402)).EQ.0) UVW1mAB = rNULL__
if (idig(ar__(404:411)).EQ.0) e_UVW1mAB = rNULL__
if (idig(ar__(413:419)).EQ.0) UmAB = rNULL__
if (idig(ar__(421:428)).EQ.0) e_UmAB = rNULL__
if (idig(ar__(430:436)).EQ.0) BmAB = rNULL__
if (idig(ar__(438:445)).EQ.0) e_BmAB = rNULL__
if (idig(ar__(447:453)).EQ.0) VmAB = rNULL__
if (idig(ar__(455:462)).EQ.0) e_VmAB = rNULL__
if(ar__(548:548) .EQ. '') xUVW2 = iNULL__
if(ar__(550:550) .EQ. '') xUVM2 = iNULL__
if(ar__(552:552) .EQ. '') xUVW1 = iNULL__
if(ar__(554:554) .EQ. '') xU = iNULL__
if(ar__(556:556) .EQ. '') xB = iNULL__
if(ar__(558:558) .EQ. '') xV = iNULL__
c ..............Just test output...........
write(6,1)
+ XMMOM,IDsum,ObsID,ID,UVW2r,UVM2r,UVM1r,Ur,Br,Vr,RAdeg,DEdeg,
+ ePos,Nobs,sig_UVW2,sig_UVM2,sig_UVW1,sig_U,sig_B,sig_V,F_UVW2,
+ e_F_UVW2,F_UVM2,e_F_UVM2,F_UVW1,e_F_UVW1,F_U,e_F_U,F_B,e_F_B,
+ F_V,e_F_V,UVW2mAB,e_UVW2mAB,UVM2mAB,e_UVM2mAB,UVW1mAB,
+ e_UVW1mAB,UmAB,e_UmAB,BmAB,e_BmAB,VmAB,e_VmAB,q_UVW2,q_UVM2,
+ q_UVW1,q_U,q_B,q_V,xUVW2,xUVM2,xUVW1,xU,xB,xV,UVW2img,UVM2img,
+ UVW1img,Uimg,Bimg,Vimg
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