Pack different kinds of data into single I1P array.
use befor64 use penf integer(I1P) :: a1(1) integer(I2P) :: a2(1) integer(I1P), allocatable :: pack(:) a1(1) = 0 a2(1) = 1 call pack_data(a1=a1, a2=a2, packed=pack) print *, pack(2)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=I1P), | intent(in) | :: | a1(1:) | First data stream. |
||
integer(kind=I2P), | intent(in) | :: | a2(1:) | Second data stream. |
||
integer(kind=I1P), | intent(inout), | allocatable | :: | packed(:) | Packed data into I1P array. |
pure subroutine pack_data_I1_I2(a1, a2, packed)
!< Pack different kinds of data into single I1P array.
!<
!<```fortran
!< use befor64
!< use penf
!< integer(I1P) :: a1(1)
!< integer(I2P) :: a2(1)
!< integer(I1P), allocatable :: pack(:)
!< a1(1) = 0
!< a2(1) = 1
!< call pack_data(a1=a1, a2=a2, packed=pack)
!< print *, pack(2)
!<```
!=> 1 <<<
integer(I1P), intent(in) :: a1(1:) !< First data stream.
integer(I2P), 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_I1_I2