FORTRAN Generation
(/./ftp/cats/II/156A)

Conversion of standardized ReadMe file for file /./ftp/cats/II/156A 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-Jun-10
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/156A     IRAS Faint Source Catalog, |b| > 10, Version 2.0 (Moshir+ 1989)
*================================================================================
*IRAS Faint Source Catalog, |b| > 10 Degrees, Version 2.0
*    Moshir, M., Copan, G., Conrow, T., McCallon, H., Hacking, P., Gregorich, D.,
*    Rohrbach, G., Melnyk, M., Rice, W., Fullmer, L., and Chester, T.J.
*   <Infrared Processing and Analysis Center (1989)>
*   =1990IRASF.C......0M
C=============================================================================

C  Internal variables

      integer*4 i__

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

C  Declarations for 'main.dat'	! IRAS Faint Sources

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

C  1950.0 position composed of: RAh RAm RAds DE- DEd DEm DEs (Epoch=1983.5)
      real*8        RAdeg       ! (deg) Right Ascension 1950.0, Epoch=1983.5
      real*8        DEdeg       ! (deg)     Declination 1950.0, Epoch=1983.5
C  ---------------------------------- ! (position vector(s) in degrees)

      character*12  IRAS        ! IRAS faint source name (starts by F)
      integer*4     RAh         ! (h) Hours RA, equinox 1950.0, epoch 1983.5
      integer*4     RAm         ! (min) Minutes RA, equinox 1950.0, epoch 1983.5
      integer*4     RAds        ! (0.1s) Deci-seconds RA
      character*1   DE_         ! Sign of DEC, equinox 1950.0, epoch 1983.5
      integer*4     DEd         ! (deg) Degrees Dec, equinox 1950.0, epoch 1983.5
      integer*4     DEm         ! (arcmin) Minutes Dec, equinox 1950.0, epoch 1983.5
      integer*4     DEs         ! (arcsec) Seconds Dec, equinox 1950.0, epoch 1983.5
      integer*4     Major       ! (arcsec) Uncertainty ellipse major axis
      integer*4     Minor       ! (arcsec) Uncertainty ellipse minor axis
      integer*4     PosAng      ! (deg) Uncertainty ellipse position angle
      integer*4     o_Fnu12     ! ? Number of times observed at 12um
      integer*4     o_Fnu25     ! ? Number of times observed at 25um
      integer*4     o_Fnu60     ! ? Number of times observed at 60um
      integer*4     o_Fnu100    ! ? Number of times observed at 100um
      real*4        Fnu12       ! (Jy) Non-color corrected flux density at 12um
      real*4        Fnu25       ! (Jy) Non-color corrected flux density at 25um
      real*4        Fnu60       ! (Jy) Non-color corrected flux density at 60um
      real*4        Fnu100      ! (Jy) Non-color corrected flux density at 100um
      integer*4     q_Fnu12     ! Flux density quality at 12um
      integer*4     q_Fnu25     ! Flux density quality at 25um
      integer*4     q_Fnu60     ! Flux density quality at 60um
      integer*4     q_Fnu100    ! Flux density quality at 100um
      integer*4     e_Fnu12     ! (%) Relative flux density uncertainty at 12um
      integer*4     e_Fnu25     ! (%) Relative flux density uncertainty at 25um
      integer*4     e_Fnu60     ! (%) Relative flux density uncertainty at 60um
      integer*4     e_Fnu100    ! (%) Relative flux density uncertainty at 100um
      integer*4     Rel         ! (%) Percent minimum source reliability
      real*4        SNR12       ! ? Signal/Noise ratio at 12um
      real*4        SNR25       ! ? Signal/Noise ratio at 25um
      real*4        SNR60       ! ? Signal/Noise ratio at 60um
      real*4        SNR100      ! ? Signal/Noise ratio at 100um
      real*4        locSNR12    ! ? Local Signal/Noise ratio at 12um
      real*4        locSNR25    ! ? Local Signal/Noise ratio at 25um
      real*4        locSNR60    ! ? Local Signal/Noise ratio at 60um
      real*4        locSNR100   ! ? Local Signal/Noise ratio at 100um
      integer*4     A12         ! (pix) ? Number of pixels above threshold at 12um
      integer*4     A25         ! (pix) ? Number of pixels above threshold at 25um
      integer*4     A60         ! (pix) ? Number of pixels above threshold at 60um
      integer*4     A100        ! (pix) ? Number of pixels above threshold at 100um
      integer*4     Ncat        ! Number of nearby catalog sources (6')
      integer*4     Nx12        ! Number of nearby extractions at 12 um
      integer*4     Nx25        ! Number of nearby extractions at 25 um
      integer*4     Nx60        ! Number of nearby extractions at 60 um
      integer*4     Nx100       ! Number of nearby extractions at 100 um
      integer*4     Cir1        ! Number of nearby 100 um-only extractions
      integer*4     Conf        ! Confusion flag, 1 per band, bit-encoded (1)
      real*4        NoisC12     ! ? Noise correction factor at 12um
      real*4        NoisC25     ! ? Noise correction factor at 25um
      real*4        NoisC60     ! ? Noise correction factor at 60um
      real*4        NoisC100    ! ? Noise correction factor at 100um
      integer*4     nID         ! ? Number of positional associations
      integer*4     Type        ! ? Type of associated object (G1)
      real*4        NoisR12     ! ? Ratio of 85% to 68% quantiles of flux
*                                    distribution at 12um
      real*4        NoisR25     ! ? Ratio of 85% to 68% quantiles of flux
*                                    distribution at 25um
      real*4        NoisR60     ! ? Ratio of 85% to 68% quantiles of flux
*                                    distribution at 60um
      real*4        NoisR100    ! ? Ratio of 85% to 68% quantiles of flux
*                                    distribution at 100um
*Note (1): corresponding to 12, 25, 60 and 100um from lowest to highest bit.
*     Therefore the confusion flags are set in the bands as follows:
*      1 = confusion in 12um band
*      2 = confusion in 25um band
*      4 = confusion in 60um band
*      8 = confusion in 100um band
*     Confusion in multiple bands are expressed by a sum of the values,
*     e.g. 12 (8+4) means a confusion in 60 and 100{mu}m bands.

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

C  Declarations for 'assoc.dat'	! Associations

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

      character*12  IRAS_1      ! IRAS source name
      integer*4     RecNo       ! Main data table record number for IRAS source
      integer*4     catID       ! Catalog number, details in file "meaning.txt"
      character*15  Source      ! Source identification
      character*5   Type_1      ! Source type or spectral class, or association
*                                  catalog type (G1)
      integer*4     Dist        ! (arcsec) Distance of IRAS source to association
      integer*4     dPA         ! (deg) Position angle from IRAS source to association
      integer*4     dMaj        ! (arcsec) Distance from IRAS source to association
*                                  along major axis of IRAS uncertainty ellipse
      integer*4     dMin        ! (arcsec) Distance from IRAS source to association
*                                  along minor axis of IRAS uncertainty ellipse
      integer*4     Field1      ! ?=-999 Object data field 1, catalog dependent
      integer*4     Field2      ! ?=-999 Object data field 2, catalog dependent
      integer*4     Field3      ! ?=-999 Object data field 3, catalog dependent

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

C  Loading file 'main.dat'	! IRAS Faint Sources

C  Format for file interpretation

    1 format(
     +  A12,I2,I2,I3,A1,I2,I2,I2,I3,I3,I3,I3,I3,I3,I3,E9.3,E9.3,E9.3,
     +  E9.3,I1,I1,I1,I1,I3,I3,I3,I3,I2,E7.1,E7.1,E7.1,E7.1,E7.1,E7.1,
     +  E7.1,E7.1,I3,I3,I3,I3,I2,I2,I2,I2,I2,I2,I2,F5.2,F5.2,F5.2,
     +  F5.2,I2,I2,F5.3,F5.3,F5.3,F5.3)

C  Effective file loading

      open(unit=1,status='old',file=
     +'main.dat')
      write(6,*) '....Loading file: main.dat'
      do i__=1,173044
        read(1,'(A227)')ar__
        read(ar__,1)
     +  IRAS,RAh,RAm,RAds,DE_,DEd,DEm,DEs,Major,Minor,PosAng,o_Fnu12,
     +  o_Fnu25,o_Fnu60,o_Fnu100,Fnu12,Fnu25,Fnu60,Fnu100,q_Fnu12,
     +  q_Fnu25,q_Fnu60,q_Fnu100,e_Fnu12,e_Fnu25,e_Fnu60,e_Fnu100,Rel,
     +  SNR12,SNR25,SNR60,SNR100,locSNR12,locSNR25,locSNR60,locSNR100,
     +  A12,A25,A60,A100,Ncat,Nx12,Nx25,Nx60,Nx100,Cir1,Conf,NoisC12,
     +  NoisC25,NoisC60,NoisC100,nID,Type,NoisR12,NoisR25,NoisR60,
     +  NoisR100
        if(ar__(36:38) .EQ. '') o_Fnu12 = iNULL__
        if(ar__(39:41) .EQ. '') o_Fnu25 = iNULL__
        if(ar__(42:44) .EQ. '') o_Fnu60 = iNULL__
        if(ar__(45:47) .EQ. '') o_Fnu100 = iNULL__
        if(ar__(102:108) .EQ. '') SNR12 = rNULL__
        if(ar__(109:115) .EQ. '') SNR25 = rNULL__
        if(ar__(116:122) .EQ. '') SNR60 = rNULL__
        if(ar__(123:129) .EQ. '') SNR100 = rNULL__
        if(ar__(130:136) .EQ. '') locSNR12 = rNULL__
        if(ar__(137:143) .EQ. '') locSNR25 = rNULL__
        if(ar__(144:150) .EQ. '') locSNR60 = rNULL__
        if(ar__(151:157) .EQ. '') locSNR100 = rNULL__
        if(ar__(158:160) .EQ. '') A12 = iNULL__
        if(ar__(161:163) .EQ. '') A25 = iNULL__
        if(ar__(164:166) .EQ. '') A60 = iNULL__
        if(ar__(167:169) .EQ. '') A100 = iNULL__
        if(ar__(184:188) .EQ. '') NoisC12 = rNULL__
        if(ar__(189:193) .EQ. '') NoisC25 = rNULL__
        if(ar__(194:198) .EQ. '') NoisC60 = rNULL__
        if(ar__(199:203) .EQ. '') NoisC100 = rNULL__
        if(ar__(204:205) .EQ. '') nID = iNULL__
        if(ar__(206:207) .EQ. '') Type = iNULL__
        if(ar__(208:212) .EQ. '') NoisR12 = rNULL__
        if(ar__(213:217) .EQ. '') NoisR25 = rNULL__
        if(ar__(218:222) .EQ. '') NoisR60 = rNULL__
        if(ar__(223:227) .EQ. '') NoisR100 = 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(RAds .GT. -180) RAdeg=RAdeg+RAds/2400.
        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)
     +  IRAS,RAh,RAm,RAds,DE_,DEd,DEm,DEs,Major,Minor,PosAng,o_Fnu12,
     +  o_Fnu25,o_Fnu60,o_Fnu100,Fnu12,Fnu25,Fnu60,Fnu100,q_Fnu12,
     +  q_Fnu25,q_Fnu60,q_Fnu100,e_Fnu12,e_Fnu25,e_Fnu60,e_Fnu100,Rel,
     +  SNR12,SNR25,SNR60,SNR100,locSNR12,locSNR25,locSNR60,locSNR100,
     +  A12,A25,A60,A100,Ncat,Nx12,Nx25,Nx60,Nx100,Cir1,Conf,NoisC12,
     +  NoisC25,NoisC60,NoisC100,nID,Type,NoisR12,NoisR25,NoisR60,
     +  NoisR100
        write(6,'(6H Pos: 2F8.4)') RAdeg,DEdeg
c    .......End.of.Just test output...........
      end do
      close(1)

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

C  Loading file 'assoc.dat'	! Associations

C  Format for file interpretation

    2 format(A12,I6,I2,A15,A5,I3,I3,I3,I3,I4,I4,I4)

C  Effective file loading

      open(unit=1,status='old',file=
     +'assoc.dat')
      write(6,*) '....Loading file: assoc.dat'
      do i__=1,235935
        read(1,'(A64)')ar__1
        read(ar__1,2)
     +  IRAS_1,RecNo,catID,Source,Type_1,Dist,dPA,dMaj,dMin,Field1,
     +  Field2,Field3
c    ..............Just test output...........
        write(6,2)
     +  IRAS_1,RecNo,catID,Source,Type_1,Dist,dPA,dMaj,dMin,Field1,
     +  Field2,Field3
c    .......End.of.Just test output...........
      end do
      close(1)

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