Silverfrost FTN95

Last updated
Silverfrost FTN95: Fortran for Windows
Developer(s) Silverfrost
Stable release
9.00 / November 13, 2023 (2023-11-13)
Operating system Microsoft Windows
Type Compiler
License Proprietary
Website www.silverfrost.com/11/ftn95/ftn95_fortran_95_for_windows.aspx

Silverfrost FTN95: Fortran for Windows is a compiler for the Fortran programming language for computers running Microsoft Windows. It generates executable programs from human-written source code for native IA-32 Win32, x86-64 (from version 8.00 [1] ) 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.

Contents

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. [2]

ClearWin+

ClearWin+ is a library built into the FTN95 run-time system. It offers an easy to use interface to the Windows API 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 funci=winio@('Press this to see what happens &')i=winio@('%^bt[PRESS]',func)ENDc---Function todo something---INTEGER function func()func=1END

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 graphics can also be included.

Fermat's spiral plotted using Silverfrost FTN95 and ClearWin+ Fermat's spiral plotted using Clearwin+.png
Fermat's spiral plotted using Silverfrost FTN95 and ClearWin+

A simple ClearWin+ program that demonstrates two dimensional graph plotting using ClearWin+:

USE clrwinINTEGER,PARAMETER::n=101REAL*8x(n),y(n),th1,a,dth1!      Generate x-y data arraysa=1.d0th1=0.d0dth1=4.d0*ATAN(1.d0)/25.d0DO i=1,n,1x(i)=a*SQRT(th1)*COS(th1)y(i)=a*SQRT(th1)*SIN(th1)th1=th1+dth1END DO!      Configure plotCALL WINOP@('%pl[frame,etched,gridlines,colour=blue,width=2,symbol=5]')CALL WINOP@('%pl[smoothing=4,x_array,margin=100]')CALL WINOP@('%pl[Title="Fermat''s spiral"]')!      Set window font (%fn), text size (%ts), and set to bold (%bf)i=WINIO@('%fn[Tahoma]%ts%bf&',1.5d0)!      Create a 800 x 800 graphics region, and plot curve defined by data in x and yi=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 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:

Fortran 2008:

Related Research Articles

<span class="mw-page-title-main">Fortran</span> General-purpose programming language

Fortran is a general-purpose, compiled imperative programming language that is especially suited to numeric computation and scientific computing.

<span class="mw-page-title-main">Oberon (programming language)</span>

Oberon is a general-purpose programming language first published in 1987 by Niklaus Wirth and the latest member of the Wirthian family of ALGOL-like languages. Oberon was the result of a concentrated effort to increase the power of Modula-2, the direct successor of Pascal, and simultaneously to reduce its complexity. Its principal new feature is the concept of type extension of record types. It permits constructing new data types on the basis of existing ones and to relate them, deviating from the dogma of strictly static typing of data. Type extension is Wirth's way of inheritance reflecting the viewpoint of the parent site. Oberon was developed as part of the implementation of an operating system, also named Oberon at ETH Zurich in Switzerland. The name was inspired both by the Voyager space probe's pictures of the moon of the planet Uranus, named Oberon, and because Oberon is famous as the king of the elfs.

<span class="mw-page-title-main">Plug-in (computing)</span> Software component that adds a specific feature to an existing software application

In computing, a plug-in is a software component that adds a specific feature to an existing computer program. When a program supports plug-ins, it enables customization.

PL/I is a procedural, imperative computer programming language initially developed by IBM. The PL/1 ANSI standard, X3.53-1976, was published in 1976. It is designed for scientific, engineering, business and system programming. It has been in continuous use by academic, commercial and industrial organizations since it was introduced in the 1960s.

Pascal is an imperative and procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named after French mathematician, philosopher and physicist Blaise Pascal.

In computer programming, a magic number is any of the following:

<span class="mw-page-title-main">Pointer (computer programming)</span> Object which stores memory addresses in a computer program

In computer science, a pointer is an object in many programming languages that stores a memory address. This can be that of another value located in computer memory, or in some cases, that of memory-mapped computer hardware. A pointer references a location in memory, and obtaining the value stored at that location is known as dereferencing the pointer. As an analogy, a page number in a book's index could be considered a pointer to the corresponding page; dereferencing such a pointer would be done by flipping to the page with the given page number and reading the text found on that page. The actual format and content of a pointer variable is dependent on the underlying computer architecture.

In compiler construction, name mangling is a technique used to solve various problems caused by the need to resolve unique names for programming entities in many modern programming languages.

jEdit Cross platform text editor

jEdit is a free software text editor available under GPL-2.0-or-later. It is written in Java and runs on any operating system with Java support, including BSD, Linux, macOS and Windows.

<span class="mw-page-title-main">Dangling pointer</span> Pointer that does not point to a valid object

Dangling pointers and wild pointers in computer programming are pointers that do not point to a valid object of the appropriate type. These are special cases of memory safety violations. More generally, dangling references and wild references are references that do not resolve to a valid destination.

F is a modular, compiled, numeric programming language, designed for scientific programming and scientific computation. F was developed as a modern Fortran, thus making it a subset of Fortran 95. It combines both numerical and data abstraction features from these languages. F is also backwards compatible with Fortran 77, allowing calls to Fortran 77 programs. F was implemented on top of compilers from NAG, Fujitsu, Salford Software and Absoft. It was later included in the g95 compiler.

In some programming languages, const is a type qualifier that indicates that the data is read-only. While this can be used to declare constants, const in the C family of languages differs from similar constructs in other languages in being part of the type, and thus has complicated behavior when combined with pointers, references, composite data types, and type-checking. In other languages, the data is not in a single memory location, but copied at compile time on each use. Languages which use it include C, C++, D, JavaScript, Julia, and Rust.

This is an overview of Fortran 95 language features. Included are the additional features of TR-15581:Enhanced Data Type Facilities, which have been universally implemented. Old features that have been superseded by new ones are not described – few of those historic features are used in modern programs although most have been retained in the language to maintain backward compatibility. The current standard is Fortran 2018; many of its new features are still being implemented in compilers. The additional features of Fortran 2003, Fortran 2008 and Fortran 2018 are described by Metcalf, Reid and Cohen.

In computer programming, an anonymous function is a function definition that is not bound to an identifier. Anonymous functions are often arguments being passed to higher-order functions or used for constructing the result of a higher-order function that needs to return a function. If the function is only used once, or a limited number of times, an anonymous function may be syntactically lighter than using a named function. Anonymous functions are ubiquitous in functional programming languages and other languages with first-class functions, where they fulfil the same role for the function type as literals do for other data types.

Intel Fortran Compiler, as part of Intel OneAPI HPC toolkit, is a group of Fortran compilers from Intel for Windows, macOS, and Linux.

This comparison of programming languages (array) compares the features of array data structures or matrix processing for various computer programming languages.

Simfit is a free open-source Windows package for simulation, curve fitting, statistics, and plotting, using a library of models or user-defined mathematical equations. Simfit has been developed by Bill Bardsley of the University of Manchester. Although it is written for Windows, it can easily be installed and used on Linux machines via WINE.

In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.

Absoft Fortran Compilers are set of Fortran compilers for Microsoft Windows, Apple Macintosh, and Linux produced by Absoft Corporation. The compilers are source code compatible across platforms.

<span class="mw-page-title-main">Nim (programming language)</span> Programming language

Nim is a general-purpose, multi-paradigm, statically typed, compiled high-level systems programming language, designed and developed by a team around Andreas Rumpf. Nim is designed to be "efficient, expressive, and elegant", supporting metaprogramming, functional, message passing, procedural, and object-oriented programming styles by providing several features such as compile time code generation, algebraic data types, a foreign function interface (FFI) with C, C++, Objective-C, and JavaScript, and supporting compiling to those same languages as intermediate representations.

References

  1. Silverfrost. "FTN95 Revision History". www.silverfrost.com. Retrieved 2016-06-04.
  2. Silverfrost. "CHECKMATE: The World's Best Runtime Checking". www.silverfrost.com. Retrieved 2016-06-04.