XMM-Newton SAS Home Page
XMM-Newton Science Analysis System


ssclib (ssclib-4.36.1) [xmmsas_20230412_1735-21.0.0]

readColDataToPtr

These are exactly the same as those routines described in subsection 7.4, except that now the argument `colData' is a pointer array. This allows the calling routine to avoid having to size it before the call to readColDataToPtr, on the other hand `colData' should now be DEALLOCATED by the calling program after use. As with readArrayData (subsection 7.2), there is no association between `colData' and the dataset pointers opened within the subroutine, which are either disassociated within the subroutine (if readColDataToPtr was called with the column name) or at the time the calling program releases the dataset (if readColDataToPtr was called with the column pointer).

  interface readColDataToPtr
    subroutine readColToPtrName2dReal32(tab, colName, colData)
      type(TableT), intent(in) :: tab
      character(*), intent(in) :: colName
      real(single), pointer    :: colData(:,:)
    end subroutine readColToPtrName2dReal32

    subroutine readColToPtrName2dReal64(tab, colName, colData)
      type(TableT), intent(in) :: tab
      character(*), intent(in) :: colName
      real(double), pointer    :: colData(:,:)
    end subroutine readColToPtrName2dReal64

    subroutine readColToPtrNameReal32(tab, colName, colData)
      type(TableT), intent(in) :: tab
      character(*), intent(in) :: colName
      real(single), pointer    :: colData(:)
    end subroutine readColToPtrNameReal32

    subroutine readColToPtrNameReal64(tab, colName, colData)
      type(TableT), intent(in) :: tab
      character(*), intent(in) :: colName
      real(double), pointer    :: colData(:)
    end subroutine readColToPtrNameReal64

    subroutine readColToPtrNameInt8(tab, colName, colData)
      type(TableT),  intent(in) :: tab
      character(*),  intent(in) :: colName
      integer(int8), pointer    :: colData(:)
    end subroutine readColToPtrNameInt8

    subroutine readColToPtrNameInt16(tab, colName, colData)
      type(TableT),   intent(in) :: tab
      character(*),   intent(in) :: colName
      integer(int16), pointer    :: colData(:)
    end subroutine readColToPtrNameInt16

    subroutine readColToPtrNameInt32(tab, colName, colData)
      type(TableT),   intent(in) :: tab
      character(*),   intent(in) :: colName
      integer(int32), pointer    :: colData(:)
    end subroutine readColToPtrNameInt32

    subroutine readColToPtrColReal32(col, colData)
      type(ColumnT), intent(in) :: col
      real(single),  pointer    :: colData(:)
    end subroutine readColToPtrColReal32

    subroutine readColToPtrColReal64(col, colData)
      type(ColumnT), intent(in) :: col
      real(double),  pointer    :: colData(:)
    end subroutine readColToPtrColReal64

    subroutine readColToPtrColInt8(col, colData)
      type(ColumnT), intent(in) :: col
      integer(int8), pointer    :: colData(:)
    end subroutine readColToPtrColInt8

    subroutine readColToPtrColInt16(col, colData)
      type(ColumnT),  intent(in) :: col
      integer(int16), pointer    :: colData(:)
    end subroutine readColToPtrColInt16

    subroutine readColToPtrColInt32(col, colData)
      type(ColumnT),  intent(in) :: col
      integer(int32), pointer    :: colData(:)
    end subroutine readColToPtrColInt32
  end interface

The rules for conversion between datatypes are the same as for readArrayData (subsection 7.2). There is at present no conversion between non-string data and a string-valued `colData' argument.



XMM-Newton SOC -- 2023-04-16