check_endian Subroutine

public subroutine check_endian()

Arguments

None

Called by

proc~~check_endian~3~~CalledByGraph proc~check_endian~3 check_endian proc~penf_init~3 penf_init proc~penf_init~3->proc~check_endian~3 proc~penf_print~3 penf_print proc~penf_print~3->proc~penf_init~3

Contents

Source Code


Source Code

   subroutine check_endian()
   !< Check the type of bit ordering (big or little endian) of the running architecture.
   !<
   !> @note The result is stored into the *endian* global variable.
   !<
   !<```fortran
   !< use penf
   !< call check_endian
   !< print *, endian
   !<```
   !=> 1 <<<
   if (is_little_endian()) then
      endian = endianL
   else
      endian = endianB
   endif
   contains
      pure function is_little_endian() result(is_little)
      !< Check if the type of the bit ordering of the running architecture is little endian.
      logical      :: is_little !< Logical output: true is the running architecture uses little endian ordering, false otherwise.
      integer(I1P) :: int1(1:4) !< One byte integer array for casting 4 bytes integer.

      int1 = transfer(1_I4P, int1)
      is_little = (int1(1)==1_I1P)
      endfunction is_little_endian
   endsubroutine check_endian