! generating a hexadecimal expression FUNCTION hex( n ) IMPLICIT NONE INTEGER, INTENT(IN) :: n INTEGER :: j, nn, nin CHARACTER(LEN=8) :: hex CHARACTER(LEN=1) :: h(0:15) = (/ '0', '1', '2', '3', '4', '5', & '6', '7', '8', '9', 'a', 'b', & 'c', 'd', 'e', 'f' /) nin = n hex = ' ' DO j = 8, 1, -1 nn = nin / 16 hex(j:j) = h(nin-16*nn) ! (j:j)は引数ではなく文字部分列の記号 IF ( nn == 0 ) EXIT nin = nn END DO END FUNCTION hex ! main PROGRAM ex8_3 IMPLICIT NONE INTEGER :: i CHARACTER(LEN=8) :: hex PRINT '(1X, A)', 'Input a positive integer or negative one to stop: ' DO READ *, i IF ( i < 0 ) EXIT PRINT '(1X, A8)', hex(i) END DO END PROGRAM ex8_3