Newer
Older
langhist-study / src / fizzbuzz.f
@HIROSE Yuuji HIROSE Yuuji on 31 Oct 2019 931 bytes Add source files initially
!
!  FizzBuzz
!
      PROGRAM main
      INTEGER A, fizzbuzz
      WRITE(*,'(A)', advance='no') 'FizzBuzz to N? : '
      READ(*,*) N
      DO 10 I=1,N
         A=fizzbuzz(I)
         IF (A .EQ. 0) THEN
            WRITE(*,'(I3A)', advance='no') I, ', '
         ELSE IF (A - A/2*2 .NE. 0) THEN	! ビット1が立っているか
            WRITE(*,'(A)', advance='no') 'Fizz'
         ENDIF
         IF (A/2 - A/4*2 .NE. 0) THEN		! ビット2が立っているか
            WRITE(*,'(A)', advance='no') 'Buzz'
         ENDIF
         IF (A .NE. 0) THEN
            WRITE(*, '(A)', advance='no') ', '
         ENDIF
 10   CONTINUE
      END PROGRAM main

      INTEGER FUNCTION fizzbuzz(n)
      INTEGER X, N
      X=0
      IF (N/3*3 .EQ. N) THEN
         X = X + 1		! 0x01 ---> Fizz
      ENDIF
      IF (N/5*5 .EQ. N) THEN
         X = X + 2		! 0x10 ---> Buzz
      ENDIF
      fizzbuzz = X
      END FUNCTION fizzbuzz