Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=I8P), | intent(in) | :: | a1(1:) | |||
real(kind=R4P), | intent(in) | :: | a2(1:) | |||
integer(kind=I1P), | intent(inout), | allocatable | :: | packed(:) |
pure subroutine pack_data_I8_R4(a1, a2, packed)
!< Pack different kinds of data into single I1P array.
!<
!<```fortran
!< use befor64
!< use penf
!< integer(I8P) :: a1(1)
!< real(R4P) :: a2(1)
!< integer(I1P), allocatable :: pack(:)
!< a1(1) = 0
!< a2(1) = 1
!< call pack_data(a1=a1, a2=a2, packed=pack)
!< print *, pack(size(pack, dim=1))
!<```
!=> 63 <<<
integer(I8P), intent(in) :: a1(1:) !< First data stream.
real(R4P), intent(in) :: a2(1:) !< Second data stream.
integer(I1P), allocatable, intent(inout) :: packed(:) !< Packed data into I1P array.
integer(I1P), allocatable :: p1(:) !< Temporary packed data of first stream.
integer(I1P), allocatable :: p2(:) !< Temporary packed data of second stream.
p1 = transfer(a1,p1)
p2 = transfer(a2,p2)
packed = [p1,p2]
endsubroutine pack_data_I8_R4