check_endian Subroutine

public subroutine check_endian()

Check the type of bit ordering (big or little endian) of the running architecture.

 use penf
 call check_endian
 print *, endian

Arguments

None

Called by

proc~~check_endian~~CalledByGraph proc~check_endian check_endian proc~penf_init penf_init proc~penf_init->proc~check_endian program~volatile_doctest~95 volatile_doctest program~volatile_doctest~95->proc~check_endian proc~penf_print penf_print proc~penf_print->proc~penf_init program~volatile_doctest~92 volatile_doctest program~volatile_doctest~92->proc~penf_init program~volatile_doctest~96 volatile_doctest program~volatile_doctest~96->proc~penf_print

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