Supported Features in FTN95 for .NET
The following table provides a list of supported features in FTN95 for
Microsoft .NET
Data Types
Operators
Arrays
Program units
Arguments and Interfaces
Declaration of Program Units, Variables and Attributes
Executable Statements
Numeric Intrinsic Procedures
Mathematical Intrinsic Procedures
Character Intrinsic Procedures
Bit Manipulation Intrinsic
Procedures
Inquiry Intrinsic Intrinsic Procedures
Data and Time Intrinsic Procedures
Array Intrinsic Procedures
Other Intrinsic Procedures
.NET Extensions
Data Types
1 byte INTEGER |
Yes |
2 byte INTEGER |
Yes |
4 byte INTEGER |
Yes |
8 byte INTEGER |
Yes |
4 byte REAL |
Yes |
8 byte REAL |
Yes |
16/10 byte REAL |
NoSS2 |
8 byte COMPLEX |
Yes |
16 byte COMPLEX |
Yes |
32/20 byte COMPLEX |
NoSS2 |
1 byte LOGICAL |
Yes |
2 byte LOGICAL |
Yes |
4 byte LOGICAL |
Yes |
8 byte LOGICAL |
Yes |
1 byte CHARACTER |
Yes |
Derived type |
Yes |
1 byte INTEGER |
Yes |
2 byte INTEGER |
Yes |
4 byte INTEGER |
Yes |
8 byte INTEGER |
Yes |
4 byte REAL |
Yes |
8 byte REAL |
Yes |
16 byte REAL |
NoSS2 |
8 byte COMPLEX |
Yes |
16 byte COMPLEX |
Yes |
32/20 byte COMPLEX |
NoSS2 |
1 byte LOGICAL |
Yes |
2 byte LOGICAL |
Yes |
4 byte LOGICAL |
Yes |
8 byte LOGICAL |
Yes |
1 byte CHARACTER |
Yes |
Binary |
Yes |
Octal |
Yes |
Hexadecimal |
Yes |
Array component |
Yes |
ALLOCATABLE component |
NoSS1 |
POINTER component |
Yes |
Component has derived type |
Yes |
Default initialise |
Yes |
Structure constructors |
Yes |
Example code
Operators
+,-,*,/ |
Yes |
** |
Yes |
==,/=,.EQ.,.NE. |
Yes |
>,>=,<,<= |
Yes |
.NOT. |
Yes |
.OR.,.AND. |
Yes |
.EQV.,.NEQV. |
Yes |
// |
Yes |
Example code
Arrays
Explicit shape arrays |
Yes |
Allocatable arrays |
Yes |
Array pointers |
Yes |
Assumed-shape arrays |
Yes |
Assumed-size arrays |
Yes |
Automatic and adjustable arrays |
Yes |
Whole array |
Yes |
Subscript triplets |
Yes |
Vector subscripts |
Yes |
Array constructors |
Yes |
Example code
Program Units
Main program |
Yes |
Modules |
Yes |
Module procedures |
Yes |
Using modules |
Yes |
Block data program units |
Yes |
Function subprogram |
Yes |
Subroutine subprogram |
Yes |
Recursive procedures |
Yes |
Pure procedures |
Yes |
Elemental procedures |
Yes |
Internal procedure |
Yes |
Example code
Arguments and Interfaces
Intent |
Yes |
Keywords |
Yes |
Optional |
Yes |
Dummy procedures |
Yes |
Procedure arguments |
Yes |
Alternate returns |
Yes |
Call by value |
Yes |
Call by address |
Yes |
Generic Names |
Yes |
Defined Operations |
Yes |
Defined Assignment |
Yes |
Example code
Declaration of Program Units, Variables, and Attributes
PROGRAM Statement |
Yes |
FUNCTION Statement |
Yes |
SUBROUTINE Statement |
Yes |
ENTRY Statement |
Yes |
MODULE Statement |
Yes |
END MODULE Statement |
Yes |
BLOCK DATA Statement |
Yes |
END BLOCK DATA Statement |
Yes |
CONTAINS Statement |
Yes |
INTEGER Statement |
Yes |
REAL Statement |
Yes |
DOUBLE PRECISION Statement |
Yes |
COMPLEX Statement |
Yes |
LOGICAL Statement |
Yes |
CHARACTER Statement |
Yes |
TYPE Statement |
Yes |
CLASS Statement (F2003) |
NoSS4 |
Initialisation |
Yes |
PARAMETER Statement |
Yes |
PUBLIC Statement |
Yes |
PRIVATE Statement |
Yes |
DIMENSION Statement |
Yes |
ALLOCATABLE Statement |
Yes |
SAVE Statement |
Yes |
INTENT Statement |
Yes |
OPTIONAL Statement |
Yes |
POINTER Statement |
Yes |
TARGET Statement |
Yes |
INTRINSIC Statement |
Yes |
EXTERNAL Statement |
Yes |
DATA Statement |
Yes |
COMMON Statement |
Yes |
EQUIVALENCE Statement |
Yes |
IMPLICIT Statement |
Yes |
NAMELIST Statement |
Yes |
TYPE Statement |
Yes |
SEQUENCE Statement |
Yes |
END TYPE Statement |
Yes |
UNION Statement |
Yes |
END UNION Statement |
Yes |
MAP Statement |
Yes |
END MAP Statement |
Yes |
INTERFACE Statement |
Yes |
END INTERFACE Statement |
Yes |
MODULE PROCEDURE Statement |
Yes |
USE Statement |
Yes |
FORMAT Statement |
Yes |
Statement Function Statement |
Yes |
PROCEDURE statement (F2003) |
NoSS4 |
GENERIC statement (F2003) |
NoSS4 |
TYPEALIAS statement (F2003) |
Yes |
Example code
Executable Statements
IF Construct |
Yes |
IF THEN Statement |
Yes |
ELSE IF Statement |
Yes |
ELSE Statement |
Yes |
END IF Statement |
Yes |
CASE Construct |
Yes |
SELECT CASE Statement |
Yes |
CASE Statement |
Yes |
END SELECT Statement |
Yes |
DO Construct |
Yes |
DO Statement |
Yes |
END DO Statement |
Yes |
CYCLE Statement |
Yes |
EXIT Statement |
Yes |
CONTINUE Statement |
Yes |
FORALL Construct |
Yes |
FORALL Construct Statement |
Yes |
END FORALL Statement |
Yes |
FORALL Statement |
Yes |
WHERE Construct |
Yes |
WHERE Construct Statement |
Yes |
ELSEWHERE Statement |
Yes |
END WHERE Statement |
Yes |
WHERE Statement |
Yes |
IF Statement |
Yes |
Arithmetic IF Statement |
Yes |
Assignment Statement |
Yes |
Pointer Assignment Statement |
Yes |
ALLOCATE Statement |
Yes |
DEALLOCATE Statement |
Yes |
NULLIFY Statement |
Yes |
END Statement |
Yes |
END FUNCTION Statement |
Yes |
END PROGRAM Statement |
Yes |
END SUBROUTINE Statement |
Yes |
CALL Statement |
Yes |
GO TO Statement |
Yes |
RETURN Statement |
Yes |
STOP Statement |
Yes |
PAUSE Statement |
Yes |
Computed GO TO Statement |
Yes |
ASSIGN Statement |
Yes |
Assigned GO TO Statement |
Yes |
OPEN Statement |
Yes |
CLOSE Statement |
Yes |
READ Statement |
Yes |
PRINT Statement |
Yes |
WRITE Statement |
Yes |
BACKSPACE Statement |
Yes |
ENDFILE Statement |
Yes |
REWIND Statement |
Yes |
INQUIRE Statement |
Yes |
Example code
Numeric Intrinsic Procedures
INT |
Yes |
REAL |
Yes |
DBLE |
Yes |
CMPLX |
Yes |
AINT |
Yes |
ANINT |
Yes |
NINT |
Yes |
ABS |
Yes |
MOD |
Yes |
SIGN |
Yes |
DIM |
Yes |
DPROD |
Yes |
MAX |
Yes |
MIN |
Yes |
AIMAG |
Yes |
CONJG |
Yes |
MODULO |
Yes |
CEILING |
Yes |
FLOOR |
Yes |
EXPONENT |
Yes |
FRACTION |
Yes |
NEAREST |
Yes |
RRSPACING |
Yes |
SPACING |
Yes |
SCALE |
Yes |
SET_EXPONENT |
Yes |
MERGE |
Yes |
LOGICAL |
Yes |
Example code
Mathematical Intrinsic Procedures
SQRT |
Yes |
EXP |
Yes |
LOG |
Yes |
LOG10 |
Yes |
LOG2 |
Yes |
SIN |
Yes |
COS |
Yes |
TAN |
Yes |
ASIN |
Yes |
ACOS |
Yes |
ATAN |
Yes |
ATAN2 |
Yes |
SINH |
Yes |
COSH |
Yes |
TANH |
Yes |
Example code
Character Intrinsic Procedures
ACHAR |
Yes |
ADJUSTL |
Yes |
ADJUSTR |
Yes |
CHAR |
Yes |
ICHAR |
Yes |
INDEX |
Yes |
LGE |
Yes |
LGT |
Yes |
LLE |
Yes |
LLT |
Yes |
IACHAR |
Yes |
LEN_TRIM |
Yes |
REPEAT |
Yes |
SCAN |
Yes |
TRIM |
Yes |
VERIFY |
Yes |
Example code
Bit Manipulation Intrinsic Procedures
NOT |
Yes |
IAND |
Yes |
AND |
Yes |
IOR |
Yes |
OR |
Yes |
IEOR |
Yes |
XOR |
Yes |
ISHFT |
Yes |
ISHFTC |
Yes |
IBSET |
Yes |
IBCLR |
Yes |
BTEST |
Yes |
IBITS |
Yes |
MVBITS |
Yes |
Example code
Inquiry Intrinsic Procedures
LEN |
Yes |
ALLOCATED |
Yes |
BIT_SIZE |
Yes |
DIGITS |
Yes |
EPSILON |
Yes |
RADIX |
Yes |
TINY |
Yes |
HUGE |
Yes |
MAXEXPONENT |
Yes |
MINEXPONENT |
Yes |
KIND |
Yes |
PRESENT |
Yes |
PRECISION |
Yes |
RANGE |
Yes |
ASSOCIATED |
Yes |
LBOUND |
Yes |
UBOUND |
Yes |
SHAPE |
Yes |
SIZE |
Yes |
Example code
Date and Time Intrinsic Procedures
CPU_TIME |
Yes |
DATE_AND_TIME |
Yes |
SYSTEM_CLOCK |
Yes |
Example code
Array Intrinsic Procedures
DOT_PRODUCT |
Yes |
MATMUL |
Yes |
ALL |
Yes |
ANY |
Yes |
COUNT |
Yes |
MAXVAL |
Yes |
MINVAL |
Yes |
PRODUCT |
Yes |
SUM |
Yes |
PACK |
Yes |
RESHAPE |
Yes |
SPREAD |
Yes |
UNPACK |
Yes |
CSHIFT |
Yes |
EOSHIFT |
Yes |
TRANSPOSE |
Yes |
MAXLOC |
Yes |
MINLOC |
Yes |
Example code
Other Intrinsic Procedures
NULL |
Yes |
SELECTED_INT_KIND |
Yes |
SELECTED_REAL_KIND |
Yes |
TRANSFER |
Yes |
LOC |
Yes |
RANDOM_NUMBER |
Yes |
RANDOM_SEED |
Yes |
Example code
.NET Extensions
Automatic exposure of routines to other .NET languages |
Yes |
Alias exposed routine name |
Yes |
Call .NET static functions |
Yes |
Declare .NET objects |
Yes |
Create .NET objects |
Yes |
Call .NET class methods |
Yes |
Intrinsic .NET String data type |
Yes |
Automatic .NET String to Fortran character variable conversion |
Yes |
Pass .NET objects as routine arguments |
Yes |
Cast .NET objects to child/parent class |
Yes |
Create and manage threads |
Yes |
Synchonise threads |
Yes |
Handle exceptions |
Yes |
Throw exceptions |
Yes |
Define a namespace/class for an assembly |
Yes |
Create arrays of .NET objects |
Yes |
Detect .NET/Win32 compilation at compile or run-time |
Yes |
Call native Win32 code |
Yes |
Restrictions on Silverfrost FTN95 .NET Code
SS1 |
This is non-standard code which is not
supported in FTN95 Win32 or .NET. |
SS2 |
The .NET framework does not support more than
64 bit precision. |
SS4 |
This Fortran 200X feature is not yet supported
in the current version of FTN95. |