DEC社 の Windows 95/NT4 対応の Fortran90 コンパイラ。Microsoft は Fortran 言語開発から撤退するにあたり、引継ぎを DEC に任せました。バージョンが5から始まるのは、MS-FPS4 の後を継いだためだと思われます。MS-FPS4 からは優待割引の upgrade path が用意されていました。
当時の DEC はαプロセッサのワークステーション(WS)を出しており、ダウンサイジングでミニコン事業がお先真っ暗ながらまだ元気がありました。売りは、 DEC のブランド力と Fortran コンパイラのフロントエンド部分を VAX や α-WS 用と共通化したことによる信頼性でした。MS-FPS4 とは全くの独立開発なコンパイラですと宣伝していました。(当時 α-WS を使うようになっていたので、フロントエンドの共通化は確かに有難かったです。)
バグ対応のパッチも定期的に出て最終的に 5.0D まで update されました。現在 DEC 社が消滅した関係で、パッチは公式には配られていませんが、DVF-X86-50D でググると引っかかります。Newsletter も充実していてサポートの安心感がありました。
ただトレースバック機能がなかったため、実行時エラーが起きた時のデバッグが面倒でした。
- 実行例 Sort二題
Shell sort と Quick sort でソートを行います。
VMWare NT4 上にて
MODULE m_sort IMPLICIT NONE CONTAINS !--------------------------------------- FUNCTION shell(x) RESULT(res) ! Shell Sort REAL, INTENT(IN) :: x(:) REAL :: res( SIZE(x) ), tmp INTEGER :: i, j, igap res = x igap = SIZE(x) DO WHILE(igap > 0) DO i = igap, SIZE(x) DO j = i - igap, 1, -igap IF ( res(j) < res(j + igap) ) THEN tmp = res(j) res(j) = res(j + igap) res(j + igap) = tmp ELSE EXIT END IF END DO END DO igap = igap / 2 END DO RETURN END FUNCTION shell !--------------------------------------- RECURSIVE FUNCTION qsort(x) RESULT(res) ! Quick Sort REAL, INTENT(IN) :: x(:) REAL :: res( SIZE(x) ) IF ( SIZE(x) > 1 ) THEN res = (/ qsort(PACK( x(2:), x(2:) > x(1) )), x(1), qsort(PACK( x(2:), x(2:) <= x(1) )) /) ELSE res = x END IF RETURN END FUNCTION qsort !--------------------------------------- END MODULE m_sort !=========================================== PROGRAM test USE m_sort IMPLICIT NONE REAL :: x(10000) CALL RANDOM_SEED() CALL RANDOM_NUMBER(x) PRINT *, shell(x) - qsort(x) STOP END PROGRAM test
追記:H22-2-24 Shell SortでIF-THEN-ELSEのELSE節が抜け落ちていたので訂正しました。
Version 6 用だった気もしますが・・