以下の議論は、可能性の議論であって実装をするという話ではありませんので、
コードをくれと言われても何も出ません
Fortran2008規格には、I/Oの encodingという概念が導入されているようで、
gfortran 4.4では UTF-8 encodingのサポートが実装されました。これに伴い、
内部encodingとしてUCS-4(kind = 4なcharacter)が使用可能になっています。
従って、
* 8倍精度浮動小数点(kind = 32 real)
* 128bit整数(kind = 16 integer)
* UCS-4文字(kind = 4 character)
を組み合わせると、real = 2*integer = 8*characterの関係を維持したまま、
LP128環境をサポート可能になるはずです。
問題は、8倍精度浮動小数点なんてものをハードウェアで実装した計算機が手軽に入手できない点にあります。
文字列格納の効率は1/4になりますが、その代わりにI18Nな文字列操作を自然に実装可能になります。
SunのSPARCやIBMのPOWERでは、IEEE754rのドラフトベースで4倍精度浮動小数点を
ハードウェアで実装しているらしいので、次のような実装で 64bitネイティブなSADを構築できる
可能性があります。
1. 8倍精度realを 4倍精度complexに置き換える
複素数絡みのコードは、実数絡みのコードに比べれば局所的であり
複素数は実数の自然な拡張になっている(可換体という意味で)
* 4倍精度複素浮動小数点(kind = 16 complex)
* 128bit整数(kind = 16 integer)
* UCS-4文字(kind = 4 character)
問題: INF * 1などで内部的に複素数として計算するとINF+NAN Iになってしまう点など...
2. コンパイラに手を入れてUCS-2文字(kind = 2 character)をサポートする
* 4倍精度浮動小数点(kind = 16 real)
* 64bit整数(kind = 8 integer)
* UCS-2文字(kind = 2 character)
問題: UCS-2では、Unicodeの全ての文字を使おうとするとサロゲートペアが必要になり
可変長encodingになってしまう
注意点: 新しい規格を使う話なので、Fortran77/90/77/2003コンパイラな
環境を切り捨てる必要があります。