FORTRAN Generation
(/./ftp/cats/IX/25)

Conversion of standardized ReadMe file for file /./ftp/cats/IX/25 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 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. IX/25           Einstein Observatory IPC Parameters       (HEAO-2, 1978-1981)
*================================================================================
*Einstein Observatory Imaging Proportional Counter (IPC) Parameters
*     Giacconi et al.
*    <Einstein Observatory (HEAO-2), 1978-1981>
C=============================================================================

C  Internal variables

      integer*4 i__

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

C  Declarations for 'ipcfield.dat'	! Field Parameters for the IPC

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

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

      integer*4     IPCseq      ! IPC Sequence number (1)
      character*84  ObsTitle    ! Title of the observation (1)
      integer*4     RAh         ! (h) Right Ascension (B1950) (hour)
      integer*4     RAm         ! (min) Right Ascension (B1950) (min)
      integer*4     RAs         ! (s) Right Ascension (B1950) (sec)
      character*1   DE_         ! Declination sign (B1950)
      integer*4     DEd         ! (deg) Declination (B1950) (deg)
      integer*4     DEm         ! (arcmin) Declination (B1950) (arcmin)
      integer*4     DEs         ! (arcsec) Declination (B1950) (arcsec)
      integer*4     RA2000h     ! (h) Right Ascension (J2000) (hour)
      integer*4     RA2000m     ! (min) Right Ascension (J2000) (min)
      integer*4     RA2000s     ! (s) Right Ascension (J2000) (sec)
      character*1   DE2000_     ! Declination sign (J2000)
      integer*4     DE2000d     ! (deg) Declination (J2000) (deg)
      integer*4     DE2000m     ! (arcmin) Declination (J2000) (arcmin)
      integer*4     DE2000s     ! (arcsec) Declination (J2000) (arcsec)
      real*8        GLON        ! (rad) Galactic longitude of field center
      real*8        GLAT        ! (rad) Galactic latitude of field center
      real*8        livetime    ! (s) Live time of observation (2)
      integer*4     strt_Y      ! (yr) Start date (year) of data (3)
      integer*4     strt_D      ! (d) Start date (day) (3)
      integer*4     stop_Y      ! (yr) Stop date (year) (3)
      integer*4     stop_D      ! (d) Stop date (day) (3)
      real*4        nH          ! (cm-2) Column Density (4)
      real*8        rollang     ! (rad) Average roll angle of instrument (5)
      integer*4     f_rollang   ! [0 1] Flag for bad roll angle 0=good; 1=bad (5)
      character*3   refid       ! Field identification (6)
      character*3   fldflag     ! Concatenation of all field flags (7)
      character*12  fitsfile    ! Name of fits file from EOSCAT (8)
      character*27  comment     ! Reason field not included in EOSCAT if no
*                                 fitsfile (9)
*Note (1):  These  columns  give the sequence  number and the  title of the
*    observation.  The  sequence number is a  unique numeric identifier for
*    each observation which was  allocated  sequentially  at  the  time  of
*    proposal submission.  It is an internal  index  used  to  key  on  all
*    references to  an observation.  Observation titles  are,  for the most
*    part, from the "Yellow Book" (Seward and Martenis 1986,  Cat.  IX/27).
*    Several observations have  been  given  new  titles  in  this  catalog
*    because of  misnaming or mispointing errors  discovered since the last
*    revision of the "Yellow Book."
*Note (2):  The live time (given in seconds)  is a measure of the effective
*    exposure  time at the field center.  It is the total number of seconds
*    during  which the  detectors gathered  data.  The  live time  has been
*    corrected for intervals  lost because  of Earth  occultation,  passage
*    through the South Atlantic Anomaly, unacceptable aspect solution,  and
*    detector dead time.
*Note (3):  These columns give the start and stop date of the observation.
*    The year is given  as a four  digit number and  the day is  given as a
*    number  between 1 and 365 (note that 1980 was a leap year).  These two
*    dates bound the observation, but their difference is not the observing
*    time because of inter-observation gaps, Earth occultation, etc.
*Note (4):  This column  gives the  column density  of neutral  hydrogen in
*    atoms per cm^2^, integrated along the line of sight through our Galaxy
*    in the direction of the field center of the observation.  Specified in
*    exponential notation,  NH values are  obtained  from  sky  surveys  of
*    neutral  hydrogen using  21 cm  radio observations.   For declinations
*    north  of -40 deg,  they are from the Bell Lab survey of Stark et al.,
*    private communication.  For fields south of -40 degrees they come from
*    Heiles and Cleary (1979AuJPA..47....1H) and Cleary, Heiles, and Haslam
*    (1979A&AS...36...95C).
*Note (5):  The 'rollang'  column gives the angle in radians which measures
*    the roll  of the spacecraft about the  axis pointing towards the field
*    center.  It provides  the  angular  orientation  of  the  focal  plane
*    detectors with  respect to the celestial  coordinate grid.  A positive
*    value of  the  roll  angle  indicates  a  clockwise  rotation  of  the
*    (detector's  projected)  field when viewing the celestial sphere.  The
*    'f_rollang' column (int)  is a flag which is either 0 or 1,  depending
*    on whether the roll angle given is meaningful. A "0"  indicates a good
*    roll angle; a "1" indicates there is no unique roll angle which can be
*    ascribed to the observation.
*
*    The algorithms in  Rev 1B  took the  nominal roll  angle of  the first
*    observation  interval ("HUT",  which stands for "HEAO Universal Time",
*    and is used to name data segments which make up an observation) as the
*    nominal  roll angle for the observation.  For normal observations this
*    procedure was satisfactory,  since  the  aspect  solution  compensated
*    subsequent  HUTs for any differences,  which were usually quite small.
*    However, there are occasions for which the first HUT had zero exposure
*    time, and/or subsequent HUTs were obtained with roll angles which were
*    significantly different from the nominal value for the first HUT. This
*    led to erroneous  roll  angle  labels,   even  though  the  data  were
*    correctly handled.
*
*    In  order to correct this problem,  we have calculated a time-averaged
*    roll angle for each field by using the nominal roll angle for each HUT
*    together with the small offset from that value derived from the aspect
*    solution.  Occasionally small data segments had roll angles which were
*    grossly different from the average.  If any HUT had a roll angle which
*    differed  from the average for the observation by more than 4 degrees,
*    it was considered  to  be  "discrepant".   If  the  exposure  time  of
*    discrepant HUTs  was less than 5%  of  the total exposure,  these HUTs
*    were ignored  in calculating the  final average roll  angle.  The roll
*    angle given in this column is this new average, not the Rev 1B value.
*
*    However,  if discrepant HUTs contributed more than 5%  of the exposure
*    time, the concept of a unique roll angle for the observation loses its
*    significance, and the "bad aspect flag"  is set to 1 because the given
*    roll angle is  not  an  accurate  description  of  the  angle  of  the
*    instrument  during the entire  observation.  The bad  aspect flag will
*    also  be set if HUTs comprising more than 5%  of the exposure time had
*    pointing offsets which differed  from  the  average  by  more  than  2
*    arcmin.
*Note (6):  This  column gives the  identification for the  field which has
*    been taken from published papers which discuss Einstein data. In order
*    to reference papers which contain results on a particular field, or on
*    field  sources which were not detected by Rev 1B processing or did not
*    pass our selection criteria, we provide a reference and identification
*    flag for  the  field  similar  to  that  used  for  the  sources  (see
*    <IX/23/srcids.dat>). This facilitates identification of parts of large
*    angular  diameter sources (e.g.,  the Cygnus  Loop)  when there are no
*    discrete sources detected,   and also  accommodates papers  which give
*    source names but no positions.
*
*    Our list  of papers is based on  a bibliography of articles maintained
*    by F.D.  Seward,  Guest Observer Coordinator for the Einstein project,
*    rather  than on a  systematic literature search,   and contains papers
*    published prior to January, 1988. We apologize to authors whose papers
*    may  have been omitted.  It should be noted that field identifications
*    have been transcribed from the references without evaluation; the user
*    should  consult the references (see the tables <IX/23/srcids.dat>  and
*    <IX/23/reflist.dat>)   and use  his or  her own  judgment as  to their
*    accuracy.
*
*    The  main difference between the Ref/ID flags for fields and those for
*    sources is the  addition of a  new,  nonspecific flag,   "!",  and the
*    omission of the "+" flag, germane only for sources.
*
*    The "!"   flag is used  to alert users  that there are  entries in the
*    source  identifications  table  (<IX/23/srcids.dat>)  which  refer  to
*    sources  in  the  field  which   are   not   in   the   source   table
*    (<IX/23/source.dat>).   These sources may be at the field center,  but
*    more often are  either  large  extended  features  such  as  parts  of
*    supernova  remnants or off-axis sources which were not detected with a
*    signal-to-noise ratio greater than 3.5. This type of entry pertains to
*    a source,  but can only be tied to the field,  since the source is not
*    "officially"  in  the catalog.  When  this happens,  the  entry in the
*    <IX/23/srcids.dat> table will have an "S" in the position code and may
*    be much more than 100 arcsec from the field center.
*
*    The Ref/ID flags for fields are listed below:
*
*          -------------------------------------------------------------------
*           Flag             Meaning
*          -------------------------------------------------------------------
*           AGN              Active galactic nucleus
*           BL               BL Lac object
*           CLG              Cluster (or group) of galaxies
*           CV               Cataclysmic variable
*           G                Galaxy
*           GLB              Globular cluster
*           P                Pulsar
*           Q                Quasar
*           RS               Radio source
*           S                Star
*           SNR              Supernova remnant
*           SY               Seyfert galaxy
*           *                Nonspecific indicator for separations < 100"
*           !                Nonspecific indicator for a source within the
*                             field, but not contained in the source table
*          -------------------------------------------------------------------
*Note (7):   This column gives the field  flag,  an indicator which denotes
*    observations  which have additional information available,  which have
*    been  processed in a slightly nonstandard way,  or which were found to
*    have a peculiarity.  The format will  be  a  string,   of  1  or  more
*    characters,  which indicates where to find ancillary information.  The
*    flags  which are  defined,  and  the number  of occurrences  is listed
*    below:
*
*    ---------------------------------------------------------------------------
*    Flag   Meaning             #  Description
*    ---------------------------------------------------------------------------
*     B     Background suspect  4  An extremely rare flag, indicating that
*                                  a poor Mdetect background map may have
*                                  affected the reliability of M detect
*                                  sources (and the values of sizcor given
*                                  in <IX/23/source.dat>). Not a reference to
*                                  further information.
*
*     C     Combined field    451  The current observation is one of two or
*                                  more pointings that have been combined
*                                  to form a new sequence number.  The
*                                  results of the analysis of the merged
*                                  data appear only in Appendix J of the
*                                  catalog, not in the source table.
*
*     D     Deleted sources   139  Detected sources have occasionally been
*                                  deleted from the catalog because they
*                                  were judged to be spurious. For the most
*                                  part this occurred for detections within
*                                  extended emission such as supernova
*                                  remnants and clusters.  This flag
*                                  indicates that one or more deletions
*                                  have been made from this field.
*                                  Approximately 470 sources were deleted
*                                  through this process.  For those cases
*                                  where discrete sources were expected a
*                                  priori to be embedded in extended
*                                  emission (e.g.  M31, Orion), deletions
*                                  were not made.
*
*     G     Ghost image         3  Ghost Image from strong source just
*                                  outside the field of view.  For details
*                                  see the description of the IPC instrument
*                                  under "Additional Information" section below.
*
*     L     Ldetect only      965  Indicates that Mdetect was not run. No
*                                  reference to further information.
*
*     P     Particle            1  Background contaminated by particle
*           contamination          events.
*
*     S     Sources missed    257  Known sources were missed by the
*                                  detection algorithms. This flag
*                                  indicates that there are one or
*                                  more entries in the missed source
*                                  list (Appendix G of the Catalog,
*                                  see <IX/23/missedsrc.dat> table)
*                                  which pertain to this field.
*
*     T     Time correction    82  Rev 1B was redone to correct faulty
*                                  dead-time corrections.  This condition
*                                  exists whenever the dead-time correction
*                                  used in Rev 1B was in error by 3% or
*                                  more.
*    ---------------------------------------------------------------------------
*Note (8):  The  'fitsfile'  column gives the name of the FITS file of this
*    field from the FITS version of  the  catalog.   The  FITS  version  is
*    available  on-line at the Center for Astrophysics through einline,  or
*    from  cdroms   and  tapes  distributed   throughout  the  astronomical
*    community.   For more information,   contact   An
*    example of a FITS filename is I0458N41.XIA, where I indicates IPC, the
*    next four digits indicate the  right  ascension,   N41  describes  the
*    declination (41 degrees  north),   XI  indicates  this  is  the  X-ray
*    intensity version  of the  map,  and  the last  digit is  a sequential
*    lettering for pointings close enough  that  the  right  ascension  and
*    declination  would not distinguish them.  For instance,  if there were
*    two pointings at this right ascension and declination,  the other FITS
*    file would be called I0458N41.XIB.
*Note (9):  The comment column provides the explanation as to why the field
*    was not included in the Catalog, when there is no FITS filename given.
*    This is usually because the exposure time was less than 300 seconds.

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

C  Declarations for 'ipcihut.dat'	! Component Huts for IPC Sequences

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

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

      integer*4     IPCseq_1    ! IPC Sequence Number (1)
      integer*4     fieldno     ! IPC hut number relative to field (1)
      integer*4     MinFno      ! Minor frame number (2)
      integer*4     MajFno      ! Absolute hut number (minor frame / 128) (2)
      integer*4     RAh_1       ! (h) Right Ascension (B1950) (hour)
      integer*4     RAm_1       ! (min) Right Ascension (B1950) (min)
      integer*4     RAs_1       ! (s) Right Ascension (B1950) (sec)
      character*1   DE__1       ! Declination sign (B1950)
      integer*4     DEd_1       ! (deg) Declination (B1950) (deg)
      integer*4     DEm_1       ! (arcmin) Declination (B1950) (arcmin)
      integer*4     DEs_1       ! (arcsec) Declination (B1950) (arcsec)
      real*4        hutroll     ! (rad) Hut - nominal roll angle (3)
      real*8        aspyoff     ! Aspect Y offset in pixels (4)
      real*8        aspzoff     ! Aspect Z offset in pixels (4)
      real*4        asprot      ! (rad) Aspect rotation (4)
      real*8        livetime_1  ! (s) Livetime (5)
      real*4        avgbal      ! Time-averaged BAL (6)
      real*4        ustartim    ! (us) Start time (7)
      integer*4     astartday   ! Absolute start day (offset from 1978.0) (7)
      integer*4     start_Y     ! (yr) Start year (8)
      integer*4     start_D     ! (d) Start day of start year (8)
      integer*4     starttime   ! (ms) Start time (8)
      integer*4     stop_Y_1    ! (yr) Stop year  (8)
      integer*4     stop_D_1    ! (d) Stop day   (8)
      integer*4     stoptime    ! (ms) Stop time  (8)
*Note (1): The  IPCseq column gives the sequence number of the observation,
*    a  unique numeric identifier  which was allocated  sequentially at the
*    time  of proposal submission.  It is an  internal index used to key on
*    all references  to an  observation.  The  'fieldno'  column  gives the
*    sequential  number of the HUT in this  field.  There will be one entry
*    for every hut in an observation.
*Note (2):  These  columns list the minor  frame number and the major frame
*    number  of the beginning  of the HUT.   The major frame  number is the
*    absolute HUT number (+/-) one,  and is equal to the minor frame number
*    divided by 128.  The major frame duration is 40.96 seconds;  the major
*    frame counter was started somewhat prior to launch.
*Note (3):  The 'hutroll'  column gives the angle in radians which measures
*    the roll  of the spacecraft about the  axis pointing towards the field
*    center for a  given hut.  It  provides the angular  orientation of the
*    focal plane detectors with respect to the celestial coordinate grid. A
*    positive value of the roll angle indicates a clockwise rotation of the
*    (detector's projected) field when viewing the celestial sphere.
*Note (4): The first two columns give the aspect offset, (in pixels), which
*    is  the average offset in Y and Z from the nominal values given in the
*    columns hutrarad and hutdecrad.  The 'asprot'  column gives the aspect
*    offset (in radians) of the roll angle from the nominal values given in
*    the column hutrollrad.
*Note (5):  This  column gives the livetime,  in seconds,  a measure of the
*    effective  exposure time at the field center  for each hut.  It is the
*    total number of seconds during which the detectors gathered data.  The
*    live time has been corrected  for  intervals  lost  because  of  Earth
*    occultation, passage through the South Atlantic Anomaly,  unacceptable
*    aspect solution, and detector dead time.
*Note (6):  This  column contains the time-averaged  BAL for the hut of the
*    given observation.   The BAL is a measure of  the gain of the IPC;  it
*    gives the  pulse height  (out of  32)  where  the aluminum  (1.49 keV)
*    calibration signal peaks.  The  centroid  of  the  count  distribution
*    across the pulse height channels  from  the  on-board  AL  calibration
*    source (1.49 keV) is used to specify the IPC gain.
*Note (7): The 'ustartim'  (microstartime)  column gives the start time (in
*    microseconds)   of the observation.  The 'astartday'  column gives the
*    absolute  day during which  the observation started,   offset from the
*    first day of 1978.
*Note (8): These columns give the start (and stop) year,  day,  and time of
*    each observation. The year will be between 1978 and 1981; the day will
*    be  the day number of that year (1 to 365)  (note that 1980 was a leap
*    year); and the time will be the start and stop times (in milliseconds)
*    of that day.

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

C  Loading file 'ipcfield.dat'	! Field Parameters for the IPC

C  Format for file interpretation

    1 format(
     +  1X,I5,1X,A84,1X,I2,1X,I2,1X,I2,1X,A1,I2,1X,I2,1X,I2,1X,I2,1X,
     +  I2,1X,I2,1X,A1,I2,1X,I2,1X,I2,1X,F7.5,1X,F8.5,1X,F8.2,1X,I4,
     +  1X,I3,1X,I4,1X,I3,1X,E9.4,1X,F8.5,1X,I1,1X,A3,1X,A3,1X,A12,1X,
     +  A27)

C  Effective file loading

      open(unit=1,status='old',file=
     +'ipcfield.dat')
      write(6,*) '....Loading file: ipcfield.dat'
      do i__=1,4295
        read(1,'(A243)')ar__
        read(ar__,1)
     +  IPCseq,ObsTitle,RAh,RAm,RAs,DE_,DEd,DEm,DEs,RA2000h,RA2000m,
     +  RA2000s,DE2000_,DE2000d,DE2000m,DE2000s,GLON,GLAT,livetime,
     +  strt_Y,strt_D,stop_Y,stop_D,nH,rollang,f_rollang,refid,
     +  fldflag,fitsfile,comment
        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)
     +  IPCseq,ObsTitle,RAh,RAm,RAs,DE_,DEd,DEm,DEs,RA2000h,RA2000m,
     +  RA2000s,DE2000_,DE2000d,DE2000m,DE2000s,GLON,GLAT,livetime,
     +  strt_Y,strt_D,stop_Y,stop_D,nH,rollang,f_rollang,refid,
     +  fldflag,fitsfile,comment
        write(6,'(6H Pos: 2F8.4)') RAdeg,DEdeg
c    .......End.of.Just test output...........
      end do
      close(1)

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

C  Loading file 'ipcihut.dat'	! Component Huts for IPC Sequences

C  Format for file interpretation

    2 format(
     +  1X,I5,1X,I2,1X,I9,1X,I7,1X,I2,1X,I2,1X,I2,1X,A1,I2,1X,I2,1X,
     +  I2,1X,F6.3,1X,F8.3,1X,F8.3,1X,E11.5,1X,F8.3,1X,F5.2,1X,E13.8,
     +  1X,I4,1X,I4,1X,I3,1X,I8,1X,I4,1X,I3,1X,I8)

C  Effective file loading

      open(unit=1,status='old',file=
     +'ipcihut.dat')
      write(6,*) '....Loading file: ipcihut.dat'
      do i__=1,13265
        read(1,'(A153)')ar__1
        read(ar__1,2)
     +  IPCseq_1,fieldno,MinFno,MajFno,RAh_1,RAm_1,RAs_1,DE__1,DEd_1,
     +  DEm_1,DEs_1,hutroll,aspyoff,aspzoff,asprot,livetime_1,avgbal,
     +  ustartim,astartday,start_Y,start_D,starttime,stop_Y_1,
     +  stop_D_1,stoptime
        RAdeg_1 = rNULL__
        DEdeg_1 = rNULL__
c  Derive coordinates RAdeg_1 and DEdeg_1 from input data
c  (RAdeg_1 and DEdeg_1 are set to rNULL__ when unknown)
        if(RAh_1 .GT. -180) RAdeg_1=RAh_1*15.
        if(RAm_1 .GT. -180) RAdeg_1=RAdeg_1+RAm_1/4.
        if(RAs_1 .GT. -180) RAdeg_1=RAdeg_1+RAs_1/240.
        if(DEd_1 .GE. 0) DEdeg_1=DEd_1
        if(DEm_1 .GE. 0) DEdeg_1=DEdeg_1+DEm_1/60.
        if(DEs_1 .GE. 0) DEdeg_1=DEdeg_1+DEs_1/3600.
        if(DE__1.EQ.'-'.AND.DEdeg_1.GE.0) DEdeg_1=-DEdeg_1
c    ..............Just test output...........
        write(6,2)
     +  IPCseq_1,fieldno,MinFno,MajFno,RAh_1,RAm_1,RAs_1,DE__1,DEd_1,
     +  DEm_1,DEs_1,hutroll,aspyoff,aspzoff,asprot,livetime_1,avgbal,
     +  ustartim,astartday,start_Y,start_D,starttime,stop_Y_1,
     +  stop_D_1,stoptime
        write(6,'(6H Pos: 2F8.4)') RAdeg_1,DEdeg_1
c    .......End.of.Just test output...........
      end do
      close(1)

C=============================================================================
      stop
      end