mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Fortran - 英小文字->英大文字変換!

[ プログラミング ] [ Fortran ]

こんばんは。

今回は、 Fortran95 で英文の小文字を全て大文字に変換する方法についてです。

0. 前提条件

  • LMDE2(Linux Mint Debian Edition 2; 64bit) での作業を想定。
  • GCC 6.3.0 (GFortran) でのコンパイルを想定。
  • Fortran には長けていないので、コードに誤りがあるかもしれない。

1. Fortran コードの作成

to_uppercase.f95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
!****************************************************
! 英小文字->英大文字 変換
! : 入力文字列の英小文字を全て英大文字に変換して出力する
!
! date          name            version
! 2017.05.14    mk-mode.com     1.00 新規作成
!
! Copyright(C) 2017 mk-mode.com All Rights Reserved.
!****************************************************
!
program to_uppercase
  implicit none
  integer i
  character(len=100) line
  print *, "英文を入力してください(100文字超は切り捨て):"
  read '(a)', line
  do i = 1, len_trim(line)
    if (line(i:i) >= 'a' .and. line(i:i) <= 'z') then
      line(i:i) = char(ichar(line(i:i)) - 32)
    end if
  end do
  print '(a)', trim(line)
end program to_uppercase

逆に、英大文字を英小文字に変換するなら if 文の部分を以下のようにすればよい。

1
2
3
if (line(i:i) >= 'A' .and. line(i:i) <= 'Z') then
  line(i:i) = char(ichar(line(i:i)) + 32)
end if

2. コンパイル

1
$ gfortran to_uppercase.f95 -o to_uppercase

3. 実行

1
2
3
4
$ ./to_uppercase
 英文を入力してください(100文字超は切り捨て):
This is a test of Forran95.
THIS IS A TEST OF FORRAN95.

学生時代に使用した Fortran (当時は大文字の FORTRAN77 )を思い出すべく、簡単なコードを書いてみた次第です。(当時覚えたことはほとんど忘れているので、初心者レベル)

少し前に円周率計算を行ったことはありますが、いずれは、他の複雑な計算等も行ってみたいと考えております。

以上。

Comments