プログラミング用エディタSciTEのインストールとFortranへの使用方法

Windows用のSciTEを次のURLからダウンロードする.

http://www.scintilla.org/SciTE.html

full download (820K) とsingle file executable called Sc1 (510K)があるが,full download (820K) の方をダウンロードした方がよい(ということがあとで分かる.)

ダウンロードしたファイルを解凍すると,wsciteという名前のフォルダができる.その中にあるSciTE.exeという名前のファイルをダブルクリックするとエディタが起動する.

このエディタはどこにおいてもよいが,wsciteフォルダをデスクトップに置いて,SciTE.exeのショートカットをさらにデスクトップに置いておくとよい.

SciTEのプロパティファイルの設定

SciTEのフォントやフォントサイズなど様々な環境設定は,SciTEGlobal.propertiesというファイルで設定されている.このファイルは,SciTEのOptionsメニューから選択して内容を表示,編集することができる.また,Fortranのファイルを編集するときの設定ファイルは,fortran.propertiesという名前のファイルに記述されており,Optionsメニューから開くことができる.

 

Fortranプログラムを編集するときはLanguageメニューからFortranを選択するが,このときの設定はすべてfortran.propertiesに記述されており,この内容を変更すればコマンドの表示色を変更したりすることができるが,この設定ファイルはそのままにして,利用者固有の環境設定はSciTEUser.propertiesファイルに記述する方がよい.SciTEUser.propertiesの内容は,他の環境設定ファイルの内容に優先される.

SciTEUser.propertiesファイルの設定

まず,SciTEで日本語の表示を行うためには,次の2行を追加する.

code.page=932
character.set=128

フォントやフォントサイズは,SciTEGlobal.propertiesを参考にして,たとえば次のようにする.

font.base=font:MS ゴシック,size:11
font.small=font:MS ゴシック,size:10
font.comment=font:Comic Sans MS,size:11
font.code.comment.box=$(font.comment)
font.code.comment.line=$(font.comment)
font.code.comment.doc=$(font.comment)
font.code.comment.nested=$(font.comment)
font.text=font:Times New Roman,size:11
font.text.comment=font:MS ゴシック,size:11
font.embedded.base=font:MS ゴシック,size:11
font.embedded.comment=font:Comic Sans MS,size:11
font.monospace=font:MS ゴシック,size:11
font.vbs=font:MS ゴシック,size:11

また,次の設定もウィンドウの下部に改行コード棟が表示されて便利.

statusbar.visible=1

フォートランコンパイラの設定は次のように記述する.

fc77=g95
fc90=g95
#fc77=gfortran
#fc90=gfortran
command.compile.*.f=$(fc77) -I.\ -L.\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info
command.compile.*.for=$(fc77) -I.\ -L.\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info
command.compile.*.f90=$(fc90) -I.\ -L.\ $(1) $(2) -o $(FileName).exe $(FileNameExt) $(3) $(4) -info
command.compile.*.f95=$(fc90) -I.\ -L.\ $(1) $(2) -o $(FileName).exe $(FileNameExt) $(3) $(4) -info
command.go.*.f=$(FileName).exe
command.go.*.for=$(FileName).exe
command.go.*.f90=$(FileName).exe
command.go.*.f95=$(FileName).exe
command.build.*.f=make all
command.build.*.for=make all
command.build.*.f90=make all
command.build.*.f95=make all

#で始まる行はコメント行であり,g95の代わりにgfortranを使うときは,最初の2行をコメントアウトして,3行目・4行目の#を削除する.

このようにすると,ToolsメニューからCompileを選択すると,編集中のFortranのソースファイルがコンパイルされる.

たとえば,次のプログラムをex.f90として保存する.

program main
   implicit none
   integer :: i
   i = 999
   write(*,*) i
end program main

Toolsメニューから,Compileを選択するとex.f90がコンパイルされる.さらに,ToolsメニューからGoを選択すると,ex.f90の実行ファイルex.exeが実行される.これらの過程は,次のようにウィンドウの右側のコンソールに表示される.

また,複数のファイルからなるプロジェクトをmakeコマンドでビルドするときは,ToolsメニューからBuildを選択する.この場合は,ソースファイルと同じ場所に次のようなmakefileを作成しておく.

#############################################
# Makefile template for building Fortran90 applications.
# (C) 2008 Toshiro Matsumoto, Nagoya University
# All rights reserved.
#############################################
FFLAGS = \
         -O2 \
         -Werror 
LDFLAGS = \
          -fbounds-check \
             
INCS = \
#		-I/usr/local/include
#
             
LIBS = \
       -L/usr/local/lib/gcc-lib \
FC = g95
LD = g95
TARGET = test
RM = rm -rf
SRCS = face.f90 \
       test.f90
OBJS = face.o\
       test.o
$(OBJS) : $(SRCS)
       $(FC) -c $(FFLAGS) $?
             
all: $(TARGET)
$(TARGET): $(OBJS)
        @echo 'Building target: $@'
        @echo 'Invoking: gfortran linker'
        $(LD) -o $(TARGET) $(OBJS) $(FFLAGS) $(LDFLAGS) $(INCS) $(LIBS)
        @echo ' '
        @echo 'Finishing building target: $@'
help:
        @echo ' '
        @echo 'Usage:'
        @echo 'To build the target:'
        @echo 'make'
        @echo 'To clean all objects, modules, and the target:'
        @echo 'make clean'
        @echo ' '
clean:
        $(RM) $(OBJS) *.mod
             
targetclean:
        $(RM) $(TARGET).exe

この場合のソースコードは,次のtest.f90とface.f90である.

test.f90

program main
   use face
    implicit none
    integer :: i, j
    i = 999
    j = f(i)
    write(*,*) j
end program main

 

face.f90

module face
   implicit none
   real :: a(10)


   contains


   function f(i)
      implicit none
      integer, intent(in) :: i
      real :: f
      f = float(i)+1
      return
   end function f


end module face

次のウィンドウに実行の様子を示す.

makefileを使ったビルドはもちろんCygwinウィンドウからも次のように実行可能である.