'Convert a raw table column of FITS P or Q format descriptors
to a VLA column with the array data returned from the heap.'

def _convert_p(self, column, field, recformat):

    dummy = _VLF(([None] * len(self)), dtype=recformat.dtype)
    raw_data = self._get_raw_data()
    if (raw_data is None):
        raise IOError('Could    not    find    heap    data    for    the    {!r}    variable-length    array    column.'.format(column.name))
    for idx in range(len(self)):
        offset = (field[(idx, 1)] + self._heapoffset)
        count = field[(idx, 0)]
        if (recformat.dtype == 'a'):
            dt = np.dtype((recformat.dtype + str(1)))
            arr_len = (count * dt.itemsize)
            da = raw_data[offset:(offset + arr_len)].view(dt)
            da = np.char.array(da.view(dtype=dt), itemsize=count)
            dummy[idx] = decode_ascii(da)
        else:
            dt = np.dtype(recformat.dtype)
            arr_len = (count * dt.itemsize)
            dummy[idx] = raw_data[offset:(offset + arr_len)].view(dt)
            dummy[idx].dtype = dummy[idx].dtype.newbyteorder('>')
            dummy[idx] = self._convert_other(column, dummy[idx], recformat)
    return dummy
