program simple_hash
    implicit none
    
    ! 入力データ用の変数定義
    character(len=9) :: student_id = "202301107"
    character(len=12) :: student_name = "飯村翔哉" ! UTF-8環境を想定（3バイト×4文字）
    
    ! ハッシュ計算用の変数（大きな数を取り扱えるよう4バイト整数を指定）
    integer(4) :: hash_value
    integer :: i
    
    ! 初期ハッシュ値（任意のプライム数）
    hash_value = 5381
    
    ! 1. 学籍番号のハッシュ計算（ループ処理）
    do i = 1, len(student_id)
        ! hash_value = hash_value * 33 + char_code
        hash_value = hash_value * 33 + ichar(student_id(i:i))
    end do
    
    ! 2. 氏名のハッシュ計算（ループ処理）
    do i = 1, len(student_name)
        hash_value = hash_value * 33 + ichar(student_name(i:i))
    end do
    
    ! 結果の出力（負の数になるのを防ぐため、絶対値にするか、またはそのまま出力）
    print *, "--- Hash Result ---"
    print *, "Input ID  : ", student_id
    print *, "Input Name: ", student_name
    print *, "Hash Value: ", abs(hash_value)
    print *, "-------------------"

end program simple_hash