Silverfrost FTN95: Fortran for Windows is a
compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
for the
Fortran programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
for computers running
Microsoft Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
. It generates
executable programs from human-written
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
for native
IA-32
IA-32 (short for "Intel Architecture, 32-bit", commonly called ''i386'') is the 32-bit version of the x86 instruction set architecture, designed by Intel and first implemented in the i386, 80386 microprocessor in 1985. IA-32 is the first incarn ...
Win32,
x86-64
x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit extension of the x86 instruction set architecture, instruction set. It was announced in 1999 and first available in the AMD Opteron family in 2003. It introduces two new ope ...
(from version 8.00) and for Microsoft's
.NET platform. There is a free-of-charge Personal edition, which generates programs which briefly display a banner, and Commercial and Academic editions.
CHECKMATE
FTN95, like its predecessor FTN77, has strong run-time checking options, collectively called CHECKMATE. Compiler switches can turn on various levels of run-time checking. These include array bound checks, constant modification, DO LOOP modification, argument checking and undefined variable use. Program run-times are increased when checking is used.
ClearWin+
ClearWin+ is a library built into the FTN95 run-time system. It offers an easy to use interface to the Windows
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
and is not available when producing .NET code. It makes use of a set of format codes and
call-backs. The format codes resemble
C style
printf codes. ClearWin+ is used to power the UI for
Simfit. From FTN95 version 7.00 a 64-bit version of ClearWin+ is included. This can be used with existing, free, 64-bit compilers.
A simple ClearWin+ program:
INTEGER i,winio@
EXTERNAL func
i=winio@('Press this to see what happens &')
i=winio@('%^bt RESS,func)
END
c---Function to do something---
INTEGER function func()
func=1
END
A full GUI interface with windows, menus, popup dialog boxes, list boxes, edit boxes, bitmaps, toolbars, etc can be developed using the available format codes. Applications written using ClearWin+ can also contain graphics regions, enabling charts and graphs to be included.
OpenGL
OpenGL (Open Graphics Library) is a Language-independent specification, cross-language, cross-platform application programming interface (API) for rendering 2D computer graphics, 2D and 3D computer graphics, 3D vector graphics. The API is typic ...
graphics can also be included.
A simple ClearWin+ program that demonstrates two dimensional graph plotting using ClearWin+:
USE clrwin
INTEGER, PARAMETER :: n=101
REAL*8 x(n), y(n), th1, a, dth1
! Generate x-y data arrays
a = 1.d0
th1 = 0.d0
dth1 = 4.d0*ATAN(1.d0)/25.d0
DO i = 1, n, 1
x(i) = a * SQRT(th1) * COS(th1)
y(i) = a * SQRT(th1) * SIN(th1)
th1 = th1 + dth1
END DO
! Configure plot
CALL WINOP@('%pl rame,etched,gridlines,colour=blue,width=2,symbol=5)
CALL WINOP@('%pl moothing=4,x_array,margin=100)
CALL WINOP@('%pl itle="Fermat''s spiral")
! Set window font (%fn), text size (%ts), and set to bold (%bf)
i = WINIO@('%fn ahomats%bf&',1.5d0)
! Create a 800 x 800 graphics region, and plot curve defined by data in x and y
i = WINIO@('%pl',800,800,n,x,y)
END
SDBG/SDBG64
FTN95 can add extra debugging information to the EXE files that it produces. This facility is made available when the user requests it with the appropriate compiler options (/debug, /check, /undef ). The SDBG/SDBG64 debuggers are fast and capable tools that are easier to learn and use than the much more versatile but resource-hungry Visual Studio tools.
Visual Studio
FTN95 was the first Fortran compiler capable of producing code for Microsoft .NET. In addition plug-ins are available that allows FTN95 programs to be written, compiled and debugged inside
Visual Studio. The plug-ins fully support Win32 and .NET code generation. The current release has plug-ins for
Visual Studio from 2008 to 2019. There is currently no plug-in for Visual Studio 2022. The FTN95 plug-ins can be installed into
Visual Studio Community Edition.
Plato
Plato is the
Integrated Development Environment
An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
supplied with FTN95. It can edit, compile and debug programs in a manner similar to the Visual Studio plug-ins. Although Plato specialises in Fortran it is not limited to it and can be tuned to work with any compiler. It is designed to stand-alone from FTN95.
Salford Fortran
FTN95 was developed by Salford Software Limited, a company owned by
University of Salford, and is the successor to their Fortran 77 compiler FTN77. In August 2004 Salford Software relinquished control of FTN95 to Silverfrost Limited. Silverfrost FTN95 is often referred to as Salford FTN95 because of its University of Salford pedigree.
Using FTN95 with third party DLLs
FTN95 programs can be linked to dynamic libraries generated by other Fortran compilers such as gFortran and Intel Fortran. The calling conventions among these compilers are quite similar, and the Silverfrost linkers (Slink/Slink64) can directly link users' object files to routines in one or more Windows dynamic libraries (DLLs), such as the Intel MKL DLLs, without the need for an import library.
Fortran 2003 and 2008
Features from the later Fortran 2003 and 2008 standards are available with FTN95, including:
Fortran 2003:
* Standard intrinsics in initialisation statements.
* NINT, AINT, ANINT and TRANSPOSE allowed in initialisation statements.
* "Allocate on assignment”
* ISO_C_BINDING.
* Allocate on assignment for PACK and RESHAPE intrinsics.
* The Fortran 2003 Procedure pointers and type-bound procedures: (1) Type bound procedures (defined within TYPE CONTAINS). (2) Type procedure pointers (defined as members of a TYPE). (3) General procedure pointers (not defined with a TYPE).
* STREAM input and output.
* Intrinsic MOVE_ALLOC.
* INTENT for POINTER arguments
* I/O FLUSH statement.
* I/O routines, keyword argument IOMSG.
* Intrinsic GET_ENVIRONMENT_VARIABLE.
* ASSOCIATE construct.
* Parameterised derived types.
* PROTECTED attribute for module variables.
Fortran 2008:
* Intrinsic EXECUTE_COMMAND_LINE.
* ISO_FORTRAN_ENV with intrinsics COMPILER_VERSION() and COMPILER_OPTIONS().
* Complex intrinsics such as ACOS, ACOSH, COSH, and TAN.
* Real intrinsics ACOSH, ASINH, and ATANH.
* DO CONCURRENT construct.
* Intrinsic ATAN(Y,X).
* z%re and z%im for complex z.
* Intrinsic HYPOT(X,Y)
* Intrinsic FINDLOC.
* ISO_C_BINDING, C_SIZEOF intrinsic.
* Intrinsic STORAGE_SIZE.
* BLOCK construct.
* BACK argument for MINLOC, MAXLOX and FINDLOCK.
References
External links
* {{Official website, https://www.silverfrost.com/11/ftn95/ftn95_fortran_95_for_windows.aspx}
Silverfrost user forum Fortran compilers
Programming tools for Windows