ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: Fortran ユーザーズガイド Oracle Solaris Studio 12.3 Information Library (日本語) |
4. Solaris Studio Fortran の機能および拡張機能
4.3.3 Cray ポインタと Fortran 95 のポインタ
4.4 STRUCTURE および UNION (VAX Fortran)
4.6.10 Fortran 2003 の FLUSH 入出力文
4.6.11 Fortran 2003 POINTER INTENT 機能
4.6.14 その他の Fortran 2003 および Fortran 2008 機能
Fortran コンパイラは言語への拡張子として、新しいデータ型である UNSIGNED を受け入れます。UNSIGNED では、KIND (種別) パラメータに対して指定できる値は 4 つです。パラメータ値、1、2、4、8 はそれぞれ 1、2、4、8 バイトの符号なし整数に対応します。
符号なし整定数は、数字列のあとに大文字または小文字の U が付き、場合によっては下線と種別パラメータが続くという形式です。次の例では、符号なし整定数の最大値が示されています。
255u_1 65535u_2 4294967295U_4 18446744073709551615U_8
種別パラメータが付いていない場合 (12345U) は、デフォルトは基本整数の場合と同じです。この場合、デフォルトは U_4 ですが、-xtypemap オプションを使うとデフォルトの符号なし整数の種別が変更されます。
UNSIGNED 種別指定子を使って、符号なし整変数または配列を宣言します。
UNSIGNED U UNSIGNED(KIND=2) :: A UNSIGNED*8 :: B
+ - * / といった 2 項演算子は、符号あり、符号なしの演算対象をともに指定することはできません。つまり、U が UNSIGNED として宣言され、N が符号ありの INTEGER である場合、U*N は不正です。
2 項演算に符号あり、符号なしの演算対象を混在させる場合は、U*UNSIGNED(N) のように、UNSIGNED 組み込み関数を使用します。
ただし、一方の演算対象が符号なし整数で、もう一方が符号あり整定数式で値が正かゼロである場合は例外で、結果は符号なし整数となります。
このような混在した式の結果の種別は、演算対象の最大種別となります。
符号ありの値のべき乗は符合ありに、符号なしの値のべき乗は符号なしになります。
符号なしの値の単項マイナスは符号なしになります。
符号なし演算対象は、実数と複素数を自由に混在させることができます。符号なし演算対象は、区間演算対象と混在させることはできません。
関係組み込み演算を使用して、符号あり整数と符号なし整数の演算対象を比較できます。結果は演算対象の変更されない値に基づいて決まります。
CASE 構文では符号なし整数が場合式として使用可能です。
符号なし整数は、DO ループ制御変数としても、また、算術 IF 文の制御式中でも使用できません。
符号なし整数は I、B、O、Z の各編集記述子を使用して読み取り、書き込みが可能です。
これらは並び入出力および変数群入出力を使用して読み取り、書き込みが可能です。並び入出力または変数群入出力における符号なし整数の記述形式は、正の符号あり整数について使用される場合と同じです。
符号なし整数は、書式なし入出力によっても読み取り、書き込みできます。
符号なし整数は組み込み関数内で使用できますが、例外として SIGN および ABS 関数では使用できません。
新しい組み込み関数、UNSIGNED は、INT と似ていますが、符号なし型を結果として生成します。形式は次のとおりです。
UNSIGNED(v [,kind] ).
もう 1 つの新しい組み込み関数、SELECTED_UNSIGNED_KIND(var) は、var の種別パラメータを返します。
組み込み関数は、符号あり整数演算対象も符号なし整数演算対象も使用できません。ただし、MAX 関数と MIN 関数では、REAL 型の演算対象が少なくとも 1 つ存在していれば、符号あり整数演算対象と符号なし整数演算対象を使用できます。
符号なし配列は、配列組み込み関数の引数として使えません。