<Example Program>

Program mvbits_example
  Implicit None
  Integer,Parameter :: i8 = Selected_Int_Kind(2)
  Integer(i8) :: from = Int(b'10101010',i8)
  Integer(i8) :: initial_to = Int(b'11110000',i8), to
  Integer :: frompos = 5, len = 3
  Integer i
  Do i=0, Bit_Size(to) - len
    to = initial_to
    Call mvbits (from, frompos, len, to, i)
    Print 1, frompos, frompos + len - 1, from, i, initial_to, to
1   Format(1X, 'Moving bits ', I0, ':', I0, ' from ', B8.8, ' to position ', &
           I0, ' in ', B8.8, ' makes ', B8.8)
  End Do
End Program
Note: Execution Results
 Moving bits 5:7 from 10101010 to position 0 in 11110000 makes 11110101
 Moving bits 5:7 from 10101010 to position 1 in 11110000 makes 11111010
 Moving bits 5:7 from 10101010 to position 2 in 11110000 makes 11110100
 Moving bits 5:7 from 10101010 to position 3 in 11110000 makes 11101000
 Moving bits 5:7 from 10101010 to position 4 in 11110000 makes 11010000
 Moving bits 5:7 from 10101010 to position 5 in 11110000 makes 10110000