pack_data_I4_I1 Subroutine

private pure subroutine pack_data_I4_I1(a1, a2, packed)

Arguments

TypeIntentOptionalAttributesName
integer(kind=I4P), intent(in) :: a1(1:)
integer(kind=I1P), intent(in) :: a2(1:)
integer(kind=I1P), intent(inout), allocatable:: packed(:)

Called by

proc~~pack_data_i4_i1~2~~CalledByGraph proc~pack_data_i4_i1~2 pack_data_I4_I1 interface~pack_data~2 pack_data interface~pack_data~2->proc~pack_data_i4_i1~2

Contents

Source Code


Source Code

   pure subroutine pack_data_I4_I1(a1, a2, packed)
   !< Pack different kinds of data into single I1P array.
   !<
   !<```fortran
   !< use befor64
   !< use penf
   !< integer(I4P)              :: a1(1)
   !< integer(I1P)              :: a2(1)
   !< integer(I1P), allocatable :: pack(:)
   !< a1(1) = 0
   !< a2(1) = 1
   !< call pack_data(a1=a1, a2=a2, packed=pack)
   !< print *, pack(5)
   !<```
   !=> 1 <<<
   integer(I4P),              intent(in)    :: a1(1:)    !< First data stream.
   integer(I1P),              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_I4_I1