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

Conversion of standardized ReadMe file for file /./ftp/cats/II/294 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 2024-Apr-19
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/294       The SDSS Photometric Catalog, Release 7  (Adelman-McCarthy+, 2009)
*================================================================================
*The SDSS Photometric Catalog, Release 7
*     Adelman-McCarthy J.K. et al.
*    <Astrophys. J. Suppl. 182, 543 (2009)>
*    =2009ApJS..182..543A
C=============================================================================

C  Internal variables

      integer*4 i__

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

C  Declarations for 'sdss7.sam'	! *Sample output of the SDSS photometric catalog

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

C  Position composed of: RAdeg DEdeg
      integer*4     mode       (nr__) ! [1,2] 1: primary  (357,175,411 sources),
*                                       2: secondary (96,670,822 sources).
      character*1   q_mode     (nr__) ! [+] '+' indicates clean photometry
*                                         (105,969,748 sources with mode 1+)
      integer*4     cl         (nr__) ! Type (class) of the object (type) (1)
      character*19  SDSS       (nr__) ! Recommended SDSS name, based on J2000 position
      character*1   m_SDSS     (nr__) ! [*] The asterisk indicates that 2 different
*                                     SDSS objects share the same SDSS name
      character*1   R          (nr__) ! [3457] Release inclusion (blank for new,
*                                       3,4,5 when already included in DR3/4/5)
      character*16  SDSS_ID    (nr__) ! [ 0-9.] SDSS object identifier (2)
      integer*8     objID      (nr__) ! SDSS unique object identifier (2)
      integer*8     SpObjID    (nr__) ! Pointer to the spectrum of object, or 0 (7)
      integer*8     parentID   (nr__) ! Pointer to parent (if object deblended)
      integer*4     rerun      (nr__) ! [40,651] Re-run number (2)
      integer*8     flags      (nr__) ! Photo Object Attribute flags (3)
      character*8   Status     (nr__) ! [0-9A-F] Hexadecimal  status (4)
      real*8        RAdeg      (nr__) ! (deg) Right Ascension of the object (ICRS) (ra)
      real*8        DEdeg      (nr__) ! (deg) Declination of the object (ICRS) (dec)
      real*4        e_RAdeg    (nr__) ! (arcsec) Mean error on RAdeg (raErr)
      real*4        e_DEdeg    (nr__) ! (arcsec) Mean error on DEdeg (decErr)
      real*4        ccPos      (nr__) ! Correlation between e_RAdeg/e_DEdeg (raDecCorr)
      real*8        ObsDate    (nr__) ! (yr) Mean Observation date
      integer*4     Q          (nr__) ! Quality of the observation:
*                                 1=bad 2=acceptable 3=good 4=missing 5=hole (6)
      real*8        zsp        (nr__) ! ?=- Spectroscopic redshift (when SpObjID>0) (7)
      real*4        e_zsp      (nr__) ! ?=- Mean error on zsp (7)
      real*4        umag       (nr__) ! (mag) ?=- Model magnitude in u filter (u) (5)
      real*4        e_umag     (nr__) ! (mag) ?=- Mean error on umag (err_u)
      real*4        gmag       (nr__) ! (mag) ?=- Model magnitude in g filter (g) (5)
      real*4        e_gmag     (nr__) ! (mag) ?=- Mean error on gmag (err_g)
      real*4        rmag       (nr__) ! (mag) ?=- Model magnitude in r filter (r) (5)
      real*4        e_rmag     (nr__) ! (mag) ?=- Mean error on rmag (err_r)
      real*4        imag       (nr__) ! (mag) ?=- Model magnitude in i filter (i) (5)
      real*4        e_imag     (nr__) ! (mag) ?=- Mean error on imag (err_i)
      real*4        zmag       (nr__) ! (mag) ?=- Model magnitude in z filter (z) (5)
      real*4        e_zmag     (nr__) ! (mag) ?=- Mean error on zmag (err_z)
*--------------------------------------------------------------------------------
      integer*8     uFlags     (nr__) ! Detection flags, u band (flags_u)(3)
      integer*4     us         (nr__) ! [0,2] 0=notStar, 1=Star in u band (probPSF_u)
      integer*4     uc         (nr__) ! [0,9] Phototype in u band, 6=Star (type_u) (1)
      real*8        uDate      (nr__) ! (yr) Date of observation in u band (6)
      real*4        u_mag      (nr__) ! (mag) ?=- Model magnitude in u filter (= umag) (5)
      real*4        e_u_mag    (nr__) ! (mag) ?=- Mean error on u'mag (= e_umag)
      real*4        upmag      (nr__) ! (mag) ?=- PSF magnitude in u band (psfMag_u)
      real*4        e_upmag    (nr__) ! (mag) ?=- Mean error on upmag (psfMagErr_u)
      real*4        uPmag_1    (nr__) ! (mag) ?=- Petrosian magnitude in u band (petroMag_u)
      real*4        e_uPmag_1  (nr__) ! (mag) ?=- Mean error on uPmag (petroMagErr_u)
      real*8        uPrad      (nr__) ! (arcsec) ? Petrosian radius in u band (petroRad_u)
      real*8        e_uPrad    (nr__) ! (arcsec) ?=- Mean error in uPrad (petroRadErr_u)
      real*4        uoRA       (nr__) ! (arcsec) ? Offset of u position along RA (offsetRa_u)
      real*4        uoDE       (nr__) ! (arcsec) ? Offset of u position along Dec (offsetDec_u)
      real*8        uisoA      (nr__) ! (arcsec) ?=- Isophotal major diameter in u band (isoA_u)
      real*8        uisoB      (nr__) ! (arcsec) ?=- Isophotal minor diameter in u band (isoB_u)
      real*4        uPA        (nr__) ! (deg) ?=- Position angle of uisoA in u band (isoPhi_u)
*--------------------------------------------------------------------------------
      integer*8     gFlags     (nr__) ! Detection flags, g band (flags_g)(3)
      integer*4     gs         (nr__) ! [0,2] 0=notStar, 1=Star in g band (probPSF_g)
      integer*4     gc         (nr__) ! [0,9] Phototype in g band, 6=Star (type_g) (1)
      real*8        gDate      (nr__) ! (yr) Date of observation in g band (6)
      real*4        g_mag      (nr__) ! (mag) ?=- Model magnitude in g filter (= gmag) (5)
      real*4        e_g_mag    (nr__) ! (mag) ?=- Mean error on g'mag (= e_gmag)
      real*4        gpmag      (nr__) ! (mag) ?=- PSF magnitude in g band (psfMag_g)
      real*4        e_gpmag    (nr__) ! (mag) ?=- Mean error on gpmag (psfMagErr_g)
      real*4        gPmag_1    (nr__) ! (mag) ?=- Petrosian magnitude in g band (petroMag_g)
      real*4        e_gPmag_1  (nr__) ! (mag) ?=- Mean error on  gPmag (petroMagErr_g)
      real*8        gPrad      (nr__) ! (arcsec) ?=- Petrosian radius in g band (petroMagErr_g)
      real*8        e_gPrad    (nr__) ! (arcsec) ?=- Mean error in gPrad (petroMagErr_g)
      real*4        goRA       (nr__) ! (arcsec) ? Offset of g position along RA (offsetRa_g)
      real*4        goDE       (nr__) ! (arcsec) ? Offset of g position along Dec (offsetDec_g)
      real*8        gisoA      (nr__) ! (arcsec) ?=- Isophotal major diameter in g band (isoA_g)
      real*8        gisoB      (nr__) ! (arcsec) ?=- Isophotal minor diameter in g band (isoB_g)
      real*4        gPA        (nr__) ! (deg) ?=- Position angle of gisoA in g band (isoPhi_g)
*--------------------------------------------------------------------------------
      integer*8     rFlags     (nr__) ! Detection flags, r band (flags_r)(3)
      integer*4     rs         (nr__) ! [0,2] 0=notStar, 1=Star in r band (probPSF_r)
      integer*4     rc         (nr__) ! [0,9] Phototype in r band, 6=Star (type_r) (1)
      real*8        rDate      (nr__) ! (yr) Date of observation in r band (6)
      real*4        r_mag      (nr__) ! (mag) ?=- Model magnitude in r filter (= rmag) (5)
      real*4        e_r_mag    (nr__) ! (mag) ?=- Mean error on r'mag (= e_rmag)
      real*4        rpmag      (nr__) ! (mag) ?=- PSF magnitude in r band (psfMag_r)
      real*4        e_rpmag    (nr__) ! (mag) ?=- Mean error on rpmag (psfMagErr_r)
      real*4        rPmag_1    (nr__) ! (mag) ?=- Petrosian magnitude in r band (petroMag_r)
      real*4        e_rPmag_1  (nr__) ! (mag) ?=- Mean error on  rPmag (petroMagErr_r)
      real*8        rPrad      (nr__) ! (arcsec) ? Petrosian radius in r band (petroMagErr_r)
      real*8        e_rPrad    (nr__) ! (arcsec) ?=- Mean error in rPrad (petroMagErr_r)
      real*4        roRA       (nr__) ! (arcsec) ? Offset of r position along RA (offsetRa_r)
      real*4        roDE       (nr__) ! (arcsec) ? Offset of r position along Dec (offsetDec_r)
      real*8        risoA      (nr__) ! (arcsec) ?=- Isophotal major diameter in r band (isoA_r)
      real*8        risoB      (nr__) ! (arcsec) ?=- Isophotal minor diameter in r band (isoB_r)
      real*4        rPA        (nr__) ! (deg) ?=- Position angle of risoA in r band (isoPhi_r)
*--------------------------------------------------------------------------------
      integer*8     iFlags     (nr__) ! Detection flags, i band (flags_i)(3)
      integer*4     is         (nr__) ! [0,2] 0=notStar, 1=Star in i band (probPSF_i)
      integer*4     ic         (nr__) ! [0,9] Phototype in i band, 6=Star (type_i) (1)
      real*8        iDate      (nr__) ! (yr) Date of observation in i band (6)
      real*4        i_mag      (nr__) ! (mag) ?=- Model magnitude in i filter (= imag) (5)
      real*4        e_i_mag    (nr__) ! (mag) ?=- Mean error on i'mag (= e_imag)
      real*4        ipmag      (nr__) ! (mag) ?=- PSF magnitude in i band (psfMag_i)
      real*4        e_ipmag    (nr__) ! (mag) ?=- Mean error on ipmag (psfMagErr_i)
      real*4        iPmag_1    (nr__) ! (mag) ?=- Petrosian magnitude in i band (petroMag_i)
      real*4        e_iPmag_1  (nr__) ! (mag) ?=- Mean error on  iPmag (petroMagErr_i)
      real*8        iPrad      (nr__) ! (arcsec) ? Petrosian radius in i band (petroMagErr_i)
      real*8        e_iPrad    (nr__) ! (arcsec) ?=- Mean error in iPrad (petroMagErr_i)
      real*4        ioRA       (nr__) ! (arcsec) ? Offset of i position along RA (offsetRa_i)
      real*4        ioDE       (nr__) ! (arcsec) ? Offset of i position along Dec (offsetDec_i)
      real*8        iisoA      (nr__) ! (arcsec) ?=- Isophotal major diameter in i band (isoA_i)
      real*8        iisoB      (nr__) ! (arcsec) ?=- Isophotal minor diameter in i band (isoB_i)
      real*4        iPA        (nr__) ! (deg) ?=- Position angle of iisoA in i band (isoPhi_i)
*--------------------------------------------------------------------------------
      integer*8     zFlags     (nr__) ! Detection flags, z band (flags_z)(3)
      integer*4     zs         (nr__) ! [0,2] 0=notStar, 1=Star in z band (probPSF_z)
      integer*4     zc         (nr__) ! [0,9] Phototype in z band, 6=Star (type_z) (1)
      real*8        zDate      (nr__) ! (yr) Date of observation in z band (6)
      real*4        z_mag      (nr__) ! (mag) ?=- Model magnitude in z filter (= zmag) (5)
      real*4        e_z_mag    (nr__) ! (mag) ?=- Mean error on z'mag (= e_zmag)
      real*4        zpmag      (nr__) ! (mag) ?=- PSF magnitude in z band (psfMag_z)
      real*4        e_zpmag    (nr__) ! (mag) ?=- Mean error on zpmag (psfMagErr_z)
      real*4        zPmag_1    (nr__) ! (mag) ?=- Petrosian magnitude in z band (petroMag_z)
      real*4        e_zPmag_1  (nr__) ! (mag) ?=- Mean error on  zPmag (petroMagErr_z)
      real*8        zPrad      (nr__) ! (arcsec) ?=- Petrosian radius in z band (petroMagErr_z)
      real*8        e_zPrad    (nr__) ! (arcsec) ?=- Mean error in zPrad (petroMagErr_z)
      real*4        zoRA       (nr__) ! (arcsec) ? Offset of z position along RA (offsetRa_z)
      real*4        zoDE       (nr__) ! (arcsec) ? Offset of z position along Dec (offsetDec_z)
      real*8        zisoA      (nr__) ! (arcsec) ?=- Isophotal major diameter in z band (isoA_z)
      real*8        zisoB      (nr__) ! (arcsec) ?=- Isophotal minor diameter in z band (isoB_z)
      real*4        zPA        (nr__) ! (deg) ?=- Position angle of zisoA in z band (isoPhi_z)
*--------------------------------------------------------------------------------
      integer*4     pmRA       (nr__) ! (mas/yr) ?=- Proper motion along RightAscension (pmRa) (8)
      integer*4     e_pmRA     (nr__) ! (mas/yr) ?=- Mean error on pmRA (pmRaErr) (8)
      integer*4     pmDE       (nr__) ! (mas/yr) ?=- Proper motion along Declination (pmDec) (8)
      integer*4     e_pmDE     (nr__) ! (mas/yr) ?=- Mean error on pmDE (pmDecErr) (8)
      real*4        sigRA      (nr__) ! (arcsec) ?=- RMS residual of proper motion fit in RA (8)
      real*4        sigDE      (nr__) ! (arcsec) ?=- RMS residual of proper motion fit in Dec (8)
      integer*4     M          (nr__) ! Number of USNO-B objects matched
*                                   within 1arcsec (match) (8)
      integer*4     N          (nr__) ! Number of detections used in the pm fit,
*                                   including SDSS (nFit) (8)
      real*4        g_O        (nr__) ! (mag) ?=- Magnitude from O plate recalibrated to g (8)
      real*4        r_E        (nr__) ! (mag) ?=- Magnitude from E plate recalibrated to r (8)
      real*4        g_J        (nr__) ! (mag) ?=- Magnitude from J plate recalibrated to g (8)
      real*4        r_F        (nr__) ! (mag) ?=- Magnitude from F plate recalibrated to r (8)
      real*4        i_N        (nr__) ! (mag) ?=- Magnitude from N plate recalibrated to i (8)
*Note (1): the type (class) is numbered as follows:
*      0 = Unknown: Object type is not known.
*      1 = Cosmic-ray track (not used).
*      2 = Defect (not used)
*      3 = Galaxy: An extended object composed of many stars and other matter.
*      4 = Ghost: Object created by reflected or refracted light. (not used)
*      5 = KnownObject: Object came from some other catalog (not yet used)
*      6 = Star: A a self-luminous gaseous celestial body.
*      7 = Trail: A satellite or asteroid or meteor trail. (not yet used)
*      8 = Sky: Blank sky spectrogram (no objects in this arcsecond area).
*      9 = NotAType
*Note (2): the SDSS identifier is composed of the skyVersion number,
*      run, rerun, camcol, field and object number. The SDSS-ID
*      is written run.cam.field.obj (4 numbers and 3 separator dots).
*      The objID is also combined from these numbers (the <<n operator
*      represent the left shift of n bits, i.e. a multiplication by 2^n^):
*      objID = skyVersion<<59 + rerun<<48 + run<<32
*            + camcol<<29 + field<<16 + obj
*Note (3): flags written in hexadecimal, full description available at
*      http://cas.sdss.org/astro/en/help/browser/enum.asp?n=PhotoFlags
* ------------------------------------------------------------------------------
* 0000000000000001 = CANONICAL_CENTER   Measurements used the center in r*
* 0000000000000002 = BRIGHT             Object detected in bright object-finding
* 0000000000000004 = EDGE               Object is too close to edge of frame
* 0000000000000008 = BLENDED            Multiple peaks detected
* 0000000000000010 = CHILD              Product of deblending a BLENDED object.
* 0000000000000020 = PEAKCENTER         Position of peak pixel rather than ML
* 0000000000000040 = NODEBLEND          No deblending attempted on BLENDED object
* 0000000000000080 = NOPROFILE          Radial profile could not be estimated
* 0000000000000100 = NOPETRO            No valid Petrosian radius found
* 0000000000000200 = MANYPETRO          More than one Petrosian radius found.
* 0000000000000400 = NOPETRO_BIG        Petrosian radius beyond radial profile.
* 0000000000000800 = DEBLEND_TOO_MANY_PEAKS More than 25 peaks in this object
* 0000000000001000 = COSMIC_RAY         Contains a pixel part of a cosmic ray.
* 0000000000002000 = MANYR50            More than one 50% light radius.
* 0000000000004000 = MANYR90            More than one 90% light radius.
* 0000000000008000 = BAD_RADIAL         Some points in radial profile S/N<0
* 0000000000010000 = INCOMPLETE_PROFILE Petrosian radius intersects frame edge
* 0000000000020000 = INTERP             Pixel(s) determined by interpolation.
* 0000000000040000 = SATURATED          Saturated pixel(s)
* 0000000000080000 = NOTCHECKED         Not checked for local peaks
* 0000000000100000 = SUBTRACTED         BRIGHT object, wings subtracted
* 0000000000200000 = NOSTOKES           No measured Stokes params
* 0000000000400000 = BADSKY             Sky level so bad that highest pixel <0.
* 0000000000800000 = PETROFAINT         Petrosian radius(es) rejected for low SB
* 0000000001000000 = TOO_LARGE          Object too large to measure its profile
* 0000000002000000 = DEBLENDED_AS_PSF   Deblender treated obj as PSF
* 0000000004000000 = DEBLEND_PRUNED     At least one child was removed
* 0000000008000000 = ELLIPFAINT         Object center fainter than the isophote
* 0000000010000000 = BINNED1            Object detected in 1x1 binned image
* 0000000020000000 = BINNED2            Object detected in 2x2 binned image
* 0000000040000000 = BINNED4            Object detected in 4x4 binned image
* 0000000080000000 = MOVED              Possibly moving object
* 0000000100000000 = DEBLENDED_AS_MOVING A MOVED object treated as moving.
* 0000000200000000 = NODEBLEND_MOVING    A MOVED object not treated as moving.
* 0000000400000000 = TOO_FEW_DETECTIONS Too few detections to deblend as moving.
* 0000000800000000 = BAD_MOVING_FIT     Moving fit too poor to be believable.
* 0000001000000000 = STATIONARY         Object consistent with being stationary.
* 0000002000000000 = PEAKS_TOO_CLOSE    Some peaks merged into a single peak.
* 0000004000000000 = MEDIAN_CENTER      Center given is of median-smoothed image.
* 0000008000000000 = LOCAL_EDGE         Center too close to an edge.
* 0000010000000000 = BAD_COUNTS_ERROR   Too few good pixels, error underestimated
* 0000020000000000 = BAD_MOVING_FIT_CHILD Moving child's velocity fit too poor
* 0000040000000000 = DEBLEND_UNASSIGNED_FLUX  After deblending flux not assigned
* 0000080000000000 = SATUR_CENTER        Center is close to saturated pixel(s)
* 0000100000000000 = INTERP_CENTER       Center is close to interpolated pixel(s)
* 0000200000000000 = DEBLENDED_AT_EDGE   Object close to edge was deblended
* 0000400000000000 = DEBLEND_NOPEAK      No detected peak within this child
* 0000800000000000 = PSF_FLUX_INTERP     PSF flux from interpolated pixels > 20%
* 0001000000000000 = TOO_FEW_GOOD_DETECTIONS Too few good detections
* 0002000000000000 = CENTER_OFF_AIMAGE   At least one peak's center lay off image
* 0004000000000000 = DEBLEND_DEGENERATE  Identical candidate children, 1 retained
* 0008000000000000 = BRIGHTEST_GALAXY_CHILD Brightest member classified as galaxy
* 0010000000000000 = CANONICAL_BAND       Band chosen as 'Canonical', generally r
* 0020000000000000 = AMOMENT_FAINT        Object too faint to measure moments
* 0040000000000000 = AMOMENT_SHIFT        Centroid shift too large
* 0080000000000000 = AMOMENT_MAXITER      Maximum number of iterations exceeded
* 0100000000000000 = MAYBE_CR             Object could actually be a cosmic ray
* 0200000000000000 = MAYBE_EGHOST         Object could actually be a ghost
* 0400000000000000 = NOTCHECKED_CENTER    Object center in a region not searched
* 0800000000000000 = OBJECT2_HAS_SATUR_DN Trails included in estimated flux.
* 1000000000000044 = OBJECT2_DEBLEND_PEEPHOLE Deblend modified by peephole
* 2000000000000044 = GROWN_MERGED         Growing led to a merger
* 4000000000000044 = HAS_CENTER           Object has a canonical center
* 8000000000000044 = RESERVED             Not used
* ------------------------------------------------------------------------------
*Note (4): status flags written in hexadecimal, full description available at
* http://cas.sdss.org/astro/en/help/browser/enum.asp?n=PhotoStatus
* ------------------------------------------------------------------------------
* 00000001 = SET         Object status has been set in reference to its own run
* 00000002 = GOOD        Object is good -- absence implies bad.
* 00000004 = DUPLICATE   Duplicate detections in an adjacent field
* 00000010 = OK_RUN      Object is usable
* 00000020 = RESOLVED    Object has been resolved against other runs.
* 00000040 = PSEGMENT    Object Belongs to a PRIMARY segment.
* 00000100 = FIRST_FIELD Object belongs to the first field in its segment.
* 00000200 = OK_SCANLINE Object lies within valid nu range for its scanline.
* 00000400 = OK_STRIPE   Object lies within valid eta range for its stripe.
* 00001000 = SECONDARY   This is a secondary survey object.
* 00002000 = PRIMARY     This is a primary survey object.
* 00004000 = TARGET      This is a spectroscopic target.
* ------------------------------------------------------------------------------
*Note (5):
*     The response curves of the SDSS filters (u g r i z) can be found on
*     the SDSS pages: http://www.sdss.org/dr5/instruments/imager/index.html
*     The central wavelength and FWHM are:
*     -----------------------------------------------
*      (nm)      u'      g'      r'      i'      z'
*     -----------------------------------------------
*     lambda   354.3    477.0   623.1   762.5   913.4
*     FWHM      56.7    138.7   137.3   152.6    95.0
*     -----------------------------------------------
*Note (6): column from the "Fields" table.
*     Dates of the observations for each colour, and their average.
*Note (7): column from the "SpecObjAll" table (see also Cat. III/255).
*     The "SpObjID" is composed of plate + mjd + fiber with formula
*     (the <<n operator represent the left shift of n bits, i.e. a
*     multiplication by 2^n^):
*       SpObjID = (plate<<48) + (mjd<<32) + (fiber<<22)
*Note (8): column from the "ProperMotions" table.

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

C  Loading file 'sdss7.sam'	! *Sample output of the SDSS photometric catalog

C  Format for file interpretation

    1 format(
     +  I1,A1,I1,1X,A19,A1,1X,A1,1X,A16,I18,1X,I18,1X,I18,I3,1X,I20,
     +  1X,A8,2X,F10.6,F10.6,1X,F5.3,1X,F5.3,1X,F5.2,1X,F9.4,1X,I1,1X,
     +  F7.5,1X,F6.5,1X,F6.3,1X,F5.3,1X,F6.3,1X,F5.3,1X,F6.3,1X,F5.3,
     +  1X,F6.3,1X,F5.3,1X,F6.3,1X,F5.3,1X,I20,1X,I1,1X,I1,1X,F9.4,1X,
     +  F6.3,1X,F6.3,1X,F6.3,1X,F6.3,1X,F6.3,1X,F6.3,1X,F7.3,1X,F7.3,
     +  2X,F6.2,1X,F6.2,1X,F7.3,1X,F7.3,1X,F5.1,1X,I20,1X,I1,1X,I1,1X,
     +  F9.4,1X,F6.3,1X,F6.3,1X,F6.3,1X,F6.3,1X,F6.3,1X,F6.3,1X,F7.3,
     +  1X,F7.3,2X,F6.2,1X,F6.2,1X,F7.3,1X,F7.3,1X,F5.1,1X,I20,1X,I1,
     +  1X,I1,1X,F9.4,1X,F6.3,1X,F6.3,1X,F6.3,1X,F6.3,1X,F6.3,1X,F6.3,
     +  1X,F7.3,1X,F7.3,2X,F6.2,1X,F6.2,1X,F7.3,1X,F7.3,1X,F5.1,1X,
     +  I20,1X,I1,1X,I1,1X,F9.4,1X,F6.3,1X,F6.3,1X,F6.3,1X,F6.3,1X,
     +  F6.3,1X,F6.3,1X,F7.3,1X,F7.3,2X,F6.2,1X,F6.2,1X,F7.3,1X,F7.3,
     +  1X,F5.1,1X,I20,1X,I1,1X,I1,1X,F9.4,1X,F6.3,1X,F6.3,1X,F6.3,1X,
     +  F6.3,1X,F6.3,1X,F6.3,1X,F7.3,1X,F7.3,2X,F6.2,1X,F6.2,1X,F7.3,
     +  1X,F7.3,1X,F5.1,1X,I6,1X,I3,1X,I6,1X,I3,1X,F5.3,1X,F5.3,1X,I1,
     +  1X,I1,1X,F4.1,1X,F4.1,1X,F4.1,1X,F4.1,1X,F4.1)

C  Effective file loading

      open(unit=1,status='old',file=
     +'sdss7.sam')
      write(6,*) '....Loading file: sdss7.sam'
      do i__=1,100
        read(1,'(A978)')ar__
        read(ar__,1)
     +  mode(i__),q_mode(i__),cl(i__),SDSS(i__),m_SDSS(i__),R(i__),
     +  SDSS_ID(i__),objID(i__),SpObjID(i__),parentID(i__),rerun(i__),
     +  flags(i__),Status(i__),RAdeg(i__),DEdeg(i__),e_RAdeg(i__),
     +  e_DEdeg(i__),ccPos(i__),ObsDate(i__),Q(i__),zsp(i__),
     +  e_zsp(i__),umag(i__),e_umag(i__),gmag(i__),e_gmag(i__),
     +  rmag(i__),e_rmag(i__),imag(i__),e_imag(i__),zmag(i__),
     +  e_zmag(i__),uFlags(i__),us(i__),uc(i__),uDate(i__),u_mag(i__),
     +  e_u_mag(i__),upmag(i__),e_upmag(i__),uPmag_1(i__),
     +  e_uPmag_1(i__),uPrad(i__),e_uPrad(i__),uoRA(i__),uoDE(i__),
     +  uisoA(i__),uisoB(i__),uPA(i__),gFlags(i__),gs(i__),gc(i__),
     +  gDate(i__),g_mag(i__),e_g_mag(i__),gpmag(i__),e_gpmag(i__),
     +  gPmag_1(i__),e_gPmag_1(i__),gPrad(i__),e_gPrad(i__),goRA(i__),
     +  goDE(i__),gisoA(i__),gisoB(i__),gPA(i__),rFlags(i__),rs(i__),
     +  rc(i__),rDate(i__),r_mag(i__),e_r_mag(i__),rpmag(i__),
     +  e_rpmag(i__),rPmag_1(i__),e_rPmag_1(i__),rPrad(i__),
     +  e_rPrad(i__),roRA(i__),roDE(i__),risoA(i__),risoB(i__),
     +  rPA(i__),iFlags(i__),is(i__),ic(i__),iDate(i__),i_mag(i__),
     +  e_i_mag(i__),ipmag(i__),e_ipmag(i__),iPmag_1(i__),
     +  e_iPmag_1(i__),iPrad(i__),e_iPrad(i__),ioRA(i__),ioDE(i__),
     +  iisoA(i__),iisoB(i__),iPA(i__),zFlags(i__),zs(i__),zc(i__),
     +  zDate(i__),z_mag(i__),e_z_mag(i__),zpmag(i__),e_zpmag(i__),
     +  zPmag_1(i__),e_zPmag_1(i__),zPrad(i__),e_zPrad(i__),zoRA(i__),
     +  zoDE(i__),zisoA(i__),zisoB(i__),zPA(i__),pmRA(i__),
     +  e_pmRA(i__),pmDE(i__),e_pmDE(i__),sigRA(i__),sigDE(i__),
     +  M(i__),N(i__),g_O(i__),r_E(i__),g_J(i__),r_F(i__),i_N(i__)
        if (idig(ar__(186:192)).EQ.0) zsp(i__) =  rNULL__
        if (idig(ar__(194:199)).EQ.0) e_zsp(i__) =  rNULL__
        if (idig(ar__(201:206)).EQ.0) umag(i__) =  rNULL__
        if (idig(ar__(208:212)).EQ.0) e_umag(i__) =  rNULL__
        if (idig(ar__(214:219)).EQ.0) gmag(i__) =  rNULL__
        if (idig(ar__(221:225)).EQ.0) e_gmag(i__) =  rNULL__
        if (idig(ar__(227:232)).EQ.0) rmag(i__) =  rNULL__
        if (idig(ar__(234:238)).EQ.0) e_rmag(i__) =  rNULL__
        if (idig(ar__(240:245)).EQ.0) imag(i__) =  rNULL__
        if (idig(ar__(247:251)).EQ.0) e_imag(i__) =  rNULL__
        if (idig(ar__(253:258)).EQ.0) zmag(i__) =  rNULL__
        if (idig(ar__(260:264)).EQ.0) e_zmag(i__) =  rNULL__
        if (idig(ar__(301:306)).EQ.0) u_mag(i__) =  rNULL__
        if (idig(ar__(308:313)).EQ.0) e_u_mag(i__) =  rNULL__
        if (idig(ar__(315:320)).EQ.0) upmag(i__) =  rNULL__
        if (idig(ar__(322:327)).EQ.0) e_upmag(i__) =  rNULL__
        if (idig(ar__(329:334)).EQ.0) uPmag_1(i__) =  rNULL__
        if (idig(ar__(336:341)).EQ.0) e_uPmag_1(i__) =  rNULL__
        if(ar__(343:349) .EQ. '') uPrad(i__) = rNULL__
        if (idig(ar__(351:357)).EQ.0) e_uPrad(i__) =  rNULL__
        if(ar__(360:365) .EQ. '') uoRA(i__) = rNULL__
        if(ar__(367:372) .EQ. '') uoDE(i__) = rNULL__
        if (idig(ar__(374:380)).EQ.0) uisoA(i__) =  rNULL__
        if (idig(ar__(382:388)).EQ.0) uisoB(i__) =  rNULL__
        if (idig(ar__(390:394)).EQ.0) uPA(i__) =  rNULL__
        if (idig(ar__(431:436)).EQ.0) g_mag(i__) =  rNULL__
        if (idig(ar__(438:443)).EQ.0) e_g_mag(i__) =  rNULL__
        if (idig(ar__(445:450)).EQ.0) gpmag(i__) =  rNULL__
        if (idig(ar__(452:457)).EQ.0) e_gpmag(i__) =  rNULL__
        if (idig(ar__(459:464)).EQ.0) gPmag_1(i__) =  rNULL__
        if (idig(ar__(466:471)).EQ.0) e_gPmag_1(i__) =  rNULL__
        if (idig(ar__(473:479)).EQ.0) gPrad(i__) =  rNULL__
        if (idig(ar__(481:487)).EQ.0) e_gPrad(i__) =  rNULL__
        if(ar__(490:495) .EQ. '') goRA(i__) = rNULL__
        if(ar__(497:502) .EQ. '') goDE(i__) = rNULL__
        if (idig(ar__(504:510)).EQ.0) gisoA(i__) =  rNULL__
        if (idig(ar__(512:518)).EQ.0) gisoB(i__) =  rNULL__
        if (idig(ar__(520:524)).EQ.0) gPA(i__) =  rNULL__
        if (idig(ar__(561:566)).EQ.0) r_mag(i__) =  rNULL__
        if (idig(ar__(568:573)).EQ.0) e_r_mag(i__) =  rNULL__
        if (idig(ar__(575:580)).EQ.0) rpmag(i__) =  rNULL__
        if (idig(ar__(582:587)).EQ.0) e_rpmag(i__) =  rNULL__
        if (idig(ar__(589:594)).EQ.0) rPmag_1(i__) =  rNULL__
        if (idig(ar__(596:601)).EQ.0) e_rPmag_1(i__) =  rNULL__
        if(ar__(603:609) .EQ. '') rPrad(i__) = rNULL__
        if (idig(ar__(611:617)).EQ.0) e_rPrad(i__) =  rNULL__
        if(ar__(620:625) .EQ. '') roRA(i__) = rNULL__
        if(ar__(627:632) .EQ. '') roDE(i__) = rNULL__
        if (idig(ar__(634:640)).EQ.0) risoA(i__) =  rNULL__
        if (idig(ar__(642:648)).EQ.0) risoB(i__) =  rNULL__
        if (idig(ar__(650:654)).EQ.0) rPA(i__) =  rNULL__
        if (idig(ar__(691:696)).EQ.0) i_mag(i__) =  rNULL__
        if (idig(ar__(698:703)).EQ.0) e_i_mag(i__) =  rNULL__
        if (idig(ar__(705:710)).EQ.0) ipmag(i__) =  rNULL__
        if (idig(ar__(712:717)).EQ.0) e_ipmag(i__) =  rNULL__
        if (idig(ar__(719:724)).EQ.0) iPmag_1(i__) =  rNULL__
        if (idig(ar__(726:731)).EQ.0) e_iPmag_1(i__) =  rNULL__
        if(ar__(733:739) .EQ. '') iPrad(i__) = rNULL__
        if (idig(ar__(741:747)).EQ.0) e_iPrad(i__) =  rNULL__
        if(ar__(750:755) .EQ. '') ioRA(i__) = rNULL__
        if(ar__(757:762) .EQ. '') ioDE(i__) = rNULL__
        if (idig(ar__(764:770)).EQ.0) iisoA(i__) =  rNULL__
        if (idig(ar__(772:778)).EQ.0) iisoB(i__) =  rNULL__
        if (idig(ar__(780:784)).EQ.0) iPA(i__) =  rNULL__
        if (idig(ar__(821:826)).EQ.0) z_mag(i__) =  rNULL__
        if (idig(ar__(828:833)).EQ.0) e_z_mag(i__) =  rNULL__
        if (idig(ar__(835:840)).EQ.0) zpmag(i__) =  rNULL__
        if (idig(ar__(842:847)).EQ.0) e_zpmag(i__) =  rNULL__
        if (idig(ar__(849:854)).EQ.0) zPmag_1(i__) =  rNULL__
        if (idig(ar__(856:861)).EQ.0) e_zPmag_1(i__) =  rNULL__
        if (idig(ar__(863:869)).EQ.0) zPrad(i__) =  rNULL__
        if (idig(ar__(871:877)).EQ.0) e_zPrad(i__) =  rNULL__
        if(ar__(880:885) .EQ. '') zoRA(i__) = rNULL__
        if(ar__(887:892) .EQ. '') zoDE(i__) = rNULL__
        if (idig(ar__(894:900)).EQ.0) zisoA(i__) =  rNULL__
        if (idig(ar__(902:908)).EQ.0) zisoB(i__) =  rNULL__
        if (idig(ar__(910:914)).EQ.0) zPA(i__) =  rNULL__
        if (pmRA(i__) .EQ. 45) pmRA(i__) =  iNULL__
        if (e_pmRA(i__) .EQ. 45) e_pmRA(i__) =  iNULL__
        if (pmDE(i__) .EQ. 45) pmDE(i__) =  iNULL__
        if (e_pmDE(i__) .EQ. 45) e_pmDE(i__) =  iNULL__
        if (idig(ar__(938:942)).EQ.0) sigRA(i__) =  rNULL__
        if (idig(ar__(944:948)).EQ.0) sigDE(i__) =  rNULL__
        if (idig(ar__(954:957)).EQ.0) g_O(i__) =  rNULL__
        if (idig(ar__(959:962)).EQ.0) r_E(i__) =  rNULL__
        if (idig(ar__(964:967)).EQ.0) g_J(i__) =  rNULL__
        if (idig(ar__(969:972)).EQ.0) r_F(i__) =  rNULL__
        if (idig(ar__(974:977)).EQ.0) i_N(i__) =  rNULL__
c    ..............Just test output...........
        write(6,1)
     +  mode(i__),q_mode(i__),cl(i__),SDSS(i__),m_SDSS(i__),R(i__),
     +  SDSS_ID(i__),objID(i__),SpObjID(i__),parentID(i__),rerun(i__),
     +  flags(i__),Status(i__),RAdeg(i__),DEdeg(i__),e_RAdeg(i__),
     +  e_DEdeg(i__),ccPos(i__),ObsDate(i__),Q(i__),zsp(i__),
     +  e_zsp(i__),umag(i__),e_umag(i__),gmag(i__),e_gmag(i__),
     +  rmag(i__),e_rmag(i__),imag(i__),e_imag(i__),zmag(i__),
     +  e_zmag(i__),uFlags(i__),us(i__),uc(i__),uDate(i__),u_mag(i__),
     +  e_u_mag(i__),upmag(i__),e_upmag(i__),uPmag_1(i__),
     +  e_uPmag_1(i__),uPrad(i__),e_uPrad(i__),uoRA(i__),uoDE(i__),
     +  uisoA(i__),uisoB(i__),uPA(i__),gFlags(i__),gs(i__),gc(i__),
     +  gDate(i__),g_mag(i__),e_g_mag(i__),gpmag(i__),e_gpmag(i__),
     +  gPmag_1(i__),e_gPmag_1(i__),gPrad(i__),e_gPrad(i__),goRA(i__),
     +  goDE(i__),gisoA(i__),gisoB(i__),gPA(i__),rFlags(i__),rs(i__),
     +  rc(i__),rDate(i__),r_mag(i__),e_r_mag(i__),rpmag(i__),
     +  e_rpmag(i__),rPmag_1(i__),e_rPmag_1(i__),rPrad(i__),
     +  e_rPrad(i__),roRA(i__),roDE(i__),risoA(i__),risoB(i__),
     +  rPA(i__),iFlags(i__),is(i__),ic(i__),iDate(i__),i_mag(i__),
     +  e_i_mag(i__),ipmag(i__),e_ipmag(i__),iPmag_1(i__),
     +  e_iPmag_1(i__),iPrad(i__),e_iPrad(i__),ioRA(i__),ioDE(i__),
     +  iisoA(i__),iisoB(i__),iPA(i__),zFlags(i__),zs(i__),zc(i__),
     +  zDate(i__),z_mag(i__),e_z_mag(i__),zpmag(i__),e_zpmag(i__),
     +  zPmag_1(i__),e_zPmag_1(i__),zPrad(i__),e_zPrad(i__),zoRA(i__),
     +  zoDE(i__),zisoA(i__),zisoB(i__),zPA(i__),pmRA(i__),
     +  e_pmRA(i__),pmDE(i__),e_pmDE(i__),sigRA(i__),sigDE(i__),
     +  M(i__),N(i__),g_O(i__),r_E(i__),g_J(i__),r_F(i__),i_N(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