特願 2026-046620 (請求項 11 / 14d — レガシー言語方言処理に FORTRAN 77 / 90 fixed-form を含む)

SlimeFORTRAN — FORTRAN → modern FORTRAN bit-exact 変換

NASA・気象庁・JAEA・大学研究室で稼働する FORTRAN 77 資産を、決定論的に modern FORTRAN へ。

HPC 数値計算コードの世代交代 を、人手レビュー前提のリファクタではなく、 bit-exact + 監査チェーン + 改ざん検出 で実行。 SlimeCOBOL / SlimeMUMPS / SlimePL/I / SlimeRPG と同じ S2-S5 / S7-S9 共通基盤、 S1 (FORTRAN FST) と S6 (modern FORTRAN emitter) のみ言語固有。

  • F77 固定形式 (col 1-72) / F90 固定 / F90 自由形式 / IBM VS / DEC/VAX 5 方言 fingerprint 検出
  • S9 bench で 全 5 軸 100% (25/25) + S6 byte-exact regression 25/25 PASS + gfortran compile 25/25 PASS(2026-05-08 実測)
  • HPC F77 の核機能を完備 — SUBROUTINE/typed FUNCTION/RETURN/CALL/COMMON ブロック/SAVE/EXTERNAL/関数引数渡し/PARAMETER
  • 本格ファイル I/O 完備OPEN(UNIT=N, FILE=..., STATUS=...) + WRITE / REWIND / READ / CLOSE + WRITE(unit, label) 形式 + numbered FORMAT 文 (`100 FORMAT('X=', I5, F8.2)`)
  • F66/F77 obsolescent 構文も完全互換 — 算術 IF (IF (X) 10, 20, 30)、計算 GOTO (GOTO (10,20,30) X)、labeled CONTINUE → 構造化 do/end do 自動変換、IMPLICIT NONE 自動付与

HPC 業界が要求する bit-exact + 改ざん即検出 + gfortran で 100% 通る出力 を実装。 「変換が情報を捨てていない」ことを監査人が事後再現できる、
業界初の FORTRAN 77 → modern FORTRAN 決定論的トランスパイラ (弊社調べ) です。

FORTRAN PoC・資料請求 →

主要計測値 (2026-05-08 実測)

25 / 25
gfortran compile + run
全 25 sample で生成 F2018 が clean compile + 期待通り実行
25 / 25
S6 byte-exact regression
expected/.f90 と actual/.f90 が完全一致
100.00 %
S9 全 5 軸
dialect / token / gfortran / mutation / determinism すべて全件 PASS
5 段階
Phase 1-5 機能実装
基本構文 → SUBROUTINE/FUNCTION → CHARACTER/DO WHILE/2D 配列 → COMMON/SAVE/EXTERNAL → ファイル I/O / 算術 IF / 計算 GOTO
5 方言
dialect 自動検出
F77 fixed / F90 fixed / F90 free / IBM VS / DEC VAX
構造化変換
F77 obsolescent → F2018
DO/CONTINUE → do/end do、 IMPLICIT NONE 自動、 識別子 lower-case、 .GT./.LT./.AND. → .gt./.lt./.and.

市場文脈 — 世界に眠る FORTRAN 資産

気象・地球物理ECMWF / 気象庁 / NOAA / NCAR の数値予報モデル (IFS / GFS / WRF)、地震・津波シミュレーション。コア部は 1980-90 年代 F77 で書かれ、保守継続中。
原子力・核物理JAEA / Sandia / Argonne の輸送計算 / 中性子拡散 / モンテカルロ。Fortran 77 + extension が 30 年以上の検証履歴を持つ。
計算化学・量子Gaussian / GAMESS / NWChem / VASP の原子・分子コード。Fortran 77/90 mix、HPC クラスタで OpenMP/MPI 並列。
気候・海洋POP / CCSM / MOM / NEMO 海洋大循環モデル、CESM 気候モデル。研究機関で長期気候予測に使用。
市場規模世界推定 数十億 LOC、HPC TOP500 上位サイトの 60% 以上で稼働。競合 (NAG Fortran Modernization Tool / Plusoft / open-source fixed2free) は per-LOC 課金 数百万〜数千万 USD またはセマンティクス保証なし。SlimeFORTRAN は WASM converter ツール課金のみ、出力 modern FORTRAN は永久無償デプロイ可

サポート機能一覧 (Phase 1-5)

制御構造IF/THEN/ELSE/ELSEIF/ENDIF / DO label V=a,b[,step] + label CONTINUE → 構造化 do/end do / DO WHILE (cond) / 算術 IF (IF (X) 10, 20, 30) / 計算 GOTO (GOTO (10,20,30), X) / GOTO label / STOP / RETURN
INTEGER / REAL / DOUBLE PRECISION / CHARACTER*Ncharacter(len=N) / LOGICAL + .TRUE. / .FALSE.
データ構造1D 配列 (INTEGER A(5) / DIMENSION A(5)) / 2D 配列 (INTEGER M(2,3)) / DATA 文初期化 (DATA A /1, 2, 3/) / PARAMETER 定数
プロシージャSUBROUTINE NAME(params) + CALL NAME(args) / typed FUNCTION (INTEGER FUNCTION SQR(X)) / RETURN / 関数引数渡し (EXTERNAL F + F(X)) / INTRINSIC ABS, SQRT
変数共有COMMON ブロック (COMMON /SHARED/ X, Y) / SAVE 属性 (CALL 間状態保持)
演算子算術 (`+ - * / **`) / 関係 (.EQ. .NE. .LT. .GT. .LE. .GE..eq. .ne. .lt. .gt. .le. .ge.) / 論理 (.AND. .OR. .NOT.) / 文字列連結 (//) / 識別子・キーワードを lower-case 自動正規化
I/OPRINT *, / WRITE(*,*) / 装置番号付き WRITE(unit, label) + READ(unit, label) / numbered FORMAT 文 (100 FORMAT('X=', I5)) / OPEN(UNIT=N, FILE='...', STATUS=...) + REWIND + CLOSE
自動正規化IMPLICIT NONE 自動付与 (PROGRAM/SUBROUTINE/FUNCTION 直後) / 固定形式 col 1-72 切詰 + 6 列継続認識 / 識別子 lower-case 化 / 文字列内 case 保持

変換例 — 関数引数渡し (EXTERNAL + 高階関数)

典型的な HPC コードイディオムが、 F77 ソースのまま modern FORTRAN として実走します:

      PROGRAM ETEST
      EXTERNAL DBL
      INTEGER DBL, APPLY, X
      X = APPLY(DBL, 5)
      PRINT *, 'RESULT=', X
      END

      INTEGER FUNCTION APPLY(F, X)
      INTEGER F, X
      EXTERNAL F
      APPLY = F(X)
      RETURN
      END

      INTEGER FUNCTION DBL(N)
      INTEGER N
      DBL = N * 2
      RETURN
      END
! Generated F2018 (deterministic, byte-exact)
program etest
  implicit none
  external dbl
  integer :: dbl, apply, x
  x = apply (dbl, 5)
  print * , 'RESULT=', x
end program
integer function apply(f,x)
  implicit none
  integer :: f, x
  external f
  apply = f (x)
  return
end function
integer function dbl(n)
  implicit none
  integer :: n
  dbl = n * 2
  return
end function

実証された algorithm 一覧 (Phase 1-5)

  • 基本構文Hello World / 算術 (INTEGER 7×6=42) / IF/ELSE 数値判定 / DO ループ累積 (1+2+3+4+5=15) / REAL + SQRT (3-4-5 三角形 hypot=5)
  • 配列・型1D 配列 sum-of-squares (1+4+9+16+25=55) / DOUBLE PRECISION 除算 (1.0D0/3.0D0=0.333..) / 2D 配列 (M(I,J)=I*10+J、M(2,3)=23) / DATA 文初期化 (10+20+30=60) / PARAMETER 定数 (PI×R²=12.566)
  • プロシージャSUBROUTINE PRSUM (Σ i=1..N=10) / typed FUNCTION SQR (7²=49) / 関数引数渡し APPLY(DBL, 5)=10 / SAVE 属性 (3 回 CALL で COUNT=1,2,3)
  • 文字列・論理CHARACTER*20 + 連結 // (`Hello, World`) / DO WHILE 累積 / LOGICAL + .AND. .NOT. 範囲判定 (`in range`)
  • F66/F77 obsolescent算術 IF 3-way 分岐 (X=-5 → `neg`) / 計算 GOTO 3-way (X=2 → `two`) / GOTO + labeled statement / DIMENSION 別行宣言
  • 変数共有 + I/OCOMMON ブロック (X+Y=30) / numbered FORMAT (`X= 42 Y= 3.14`) / OPEN/WRITE/REWIND/READ/CLOSE round-trip (SUM=600) / INTRINSIC ABS+SQRT

監査適合性 (HPC 検証履歴・気象・原子力)

  • Bit-exact同一 F77 ソース → 同一 F2018 sha256。配列・SUBROUTINE・COMMON ブロック・関数引数渡しすべて含めて完全決定論。
  • Byte-exact regressionmake test で actual/.f90 と expected/.f90 を diff、 25/25 PASS(2026-05-08 baseline)。将来の emitter 変更で意図しない出力差分が即検出される regression gate。
  • gfortran compile 100%生成 F2018 を gfortran 13.3 で 25/25 PASS。 構造化変換後も runtime 結果が F77 元コードと bit-identical。
  • Audit chainSlimeNENC 共通基盤 (S7) と統合可能、 SHA-256 monotonic chain。気象・原子力の検証履歴 30 年保存要件に対応。
  • Hallucination 検出trigram + bigram 言語モデル。Axis 2 で全 mutation を 100% reject。
  • Build-time LLMLLM は変換規則の構築段階のみ。ランタイムは決定論ルールベース、99.9995% 主張の根拠。

Multi-target ロードマップ (2026-05-08 改訂)

速度・人材・配列地獄解の 3 軸合致で、ターゲット優先順位を再構築: C++ first → C second → Rust third。 決め手は C++23 std::mdspan による配列地獄の言語標準解 (column/row major + stride + 任意 base が native)。

① modern FORTRANPhase 1-5 で実装済 (F77 fixed → F2018 free)、25/25 byte-exact、HPC 自然移行先。
② C++23 (Phase 7、3-4 ヶ月)主投資ターゲットstd::mdspan + layout_left配列地獄 80% 言語標準解、HPC ecosystem (Eigen/Kokkos/RAJA) 直結。Mode A (column-major maintain) で gfortran 実行と sha256 一致目標。
③ C (Phase 8、1-2 ヶ月)C++ Phase 7 の出力から mdspan#define IDX2D macro へ降格、CUDA 旧版 / RHEL 7 / 古い AIX 等 legacy 環境向け。工数小 (C++ emitter から trivial 派生)。
④ Rust (Phase 9、3-4 ヶ月)ndarray Array2 + Order::ColumnMajor、memory safety プレミアム軸、mission-critical migration (金融 quants、量子化学) 向け。
⑤ CUDA (Phase 10、将来)C++ Phase 7 の subset、GPU offloading、NAS Parallel Benchmarks 1 本変換

「配列地獄」と SlimeFORTRAN の per-array mode 選択

FORTRAN と C/C++/Rust は配列に関する仮定が 6 軸で異なります (index base / memory layout / lower bound / slice 表現 / whole-array ops / shape-knowing)。 単純な A(I,J) の変換ですら、6 軸全てを同時解決しないと動作不変が崩れます。 SlimeFORTRAN は配列ごとに 4 つの変換モードを Slot IR で選択し、用途別に最適化します:

Mode内容bit-exact用途
A: Column-major maintainFORTRAN の column-major + index base を C++/C/Rust 側で維持 (mdspan layout_left / IDX2D macro / Order::ColumnMajor)✅ 完全保証 (memory order 一致 → round-off も一致)数値計算カーネル、BLAS、CFD、信号処理 (主用途)
B: Row-major transpose転置して target 慣行に合わせる❌ 不保証 (cache locality / SIMD reduction 順変化)GUI / I/O / 文字列処理メイン (副用途)
C: Strided descriptormdspan layout_stride で任意 lower bound / stride / layout を runtime 指定✅ 関数 inline 時 (オーバヘッド微)assumed-shape A(:,:) 引数、generic library
D: ISO_C_BINDING + 元 FORTRAN 残存計算本体は元 FORTRAN を gfortran.o 化、薄ラッパで C++/Rust から呼出✅ 完全 (元コード実行)段階移行、UI 部分のみ書換え

変換時に どの array に どの target で どの mode を使ったか は audit chain に記録、監査人が事後再現可能です。

変換例 (Mode A、C++23)

! FORTRAN (column-major、1-indexed)
REAL :: A(M, N)
A(I, J) = 3.14

// C++23 (Mode A、bit-exact、std::mdspan)
#include <mdspan>
std::vector<double> data(M*N);
auto A = std::mdspan<double, std::dextents<size_t,2>, std::layout_left>(data.data(), M, N);
A[i-1, j-1] = 3.14;  // FORTRAN A(I,J) と sha256 一致

License モデル

License モデル

課金対象WASM/WASI converter ツール (開発者側)
非課金変換結果の modern FORTRAN ソース (顧客資産、永久無償デプロイ)
方式Ed25519 署名 144B license + 3-hop air-gap activation (HPC・原子力 audit 対応)
並列化 (PSDP)本製品には含まれません。SlimeNENC 配下の独立 SKU として PSDP を別途。

関連資料

  • 技術解説SlimeNENC Technical Overview (FORTRAN 章を準備中)
  • 出願明細特願 2026-046620 v15b の 請求項 11 / 14d で COBOL / MUMPS / PL/I / RPG / FORTRAN 等のレガシー方言処理を明示射程化
  • 兄弟製品SlimeCOBOL / SlimeMUMPS / SlimePL/I / SlimeRPG / SlimeJCL と同じ S2-S5/S7-S9 共通基盤
  • ベンチマークS9 bench harness (5 軸 correctness)、`s6_modern_emit_fortran/Makefile` の `make test` で byte-exact regression 25/25、`make compile-test` で gfortran compile 25/25

FORTRAN PoC・資料請求 SlimeNENC ファミリーへ戻る SlimeRPG を見る SlimePL/I を見る