# Absoft

Absoft Corporation was an American software company active from 1980 to 2022. They were best known for their set of Fortran compilers for Microsoft Windows, Apple Macintosh, and Linux operating systems. The compilers are source code compatible across platforms.
* Absoft Pro Fortran on 64-bit platforms supports both 32-bit and 64-bit executables; the user selects which format that the compiler will produce.
* Linux compilers are available in either 32-bit or 64-bit versions. The 32-bit version produces only 32-bit executables.
All are bundled with a graphical debugger and an integrated development environment. Single thread and parallel multithread support is controlled by the user and includes five optimization levels, OpenMP, Speed Math levels 0 through 9, and other advanced capabilities.
On September 30, 2022, Absoft ceased operations.

## History
### Origins: Absoft FORTRAN 77 for MC68000 Systems

The principals of Absoft, Peter Jacobson and Wood Lotz, met at the University of Michigan. Together they started an audio store, Absolute Sound, in 1975. In 1979, they noted the emergence of 16-bit microcomputers and saw a market for high-quality Fortran compilers and built a compiler for the Western Digital WD16 microprocessor, which they released commercially in 1980. The name Absolute Software was used at first, but the shortened name Absoft was adopted as a more practical trademark.

### Absoft FORTRAN 77 for Macintosh

Absoft's first major sales success was a $500K contract with Alpha Microsystems for worldwide redistribution rights of a Fortran 77 compiler compatible with their AMOS operating system using a Motorola 68000 series processor. At this point Absoft still consisted of only the two founders, so this success allowed the company to remain independent, add staff, and move to a larger office facility. Additional OEM contracts for Fortran compilers for various Unix variants followed. The founders hired a manager for Absolute Sound which continued its success and expanded to three stores; the chain was sold to a larger Hi-Fi chain in 1988.

### MIL-STD-1753 Supplement for FORTRAN 77

MIL-STD-1753 was released by the DoD in 1978 to standardize some features of Industrial Real-Time Fortran as extensions of Fortran 77. This extension added IMPLICIT NONE, DO WHILE, END DO to replace CONTINUE as the statement to end DO loops, and intrinsic functions for testing and setting bits. MIL-STD-1753 was absorbed into the ISO/IEC 1539:1991 standard and later ISO/IEC standards are MIL-STD-1753 compliant, and MIL-STD-1753 was dropped as superfluous in 1995.

### Absoft FORTRAN 77 for Apple Macintosh and Windows

When Alpha Micro released their MC68000 based microcomputer, Absoft expanded their offerings to Motorola and the Macintosh. The availability of MD68000-based machines made 32-bit Unix viable on small machines, and Absoft offered Fortran compilers for Unix machines by Data General, HP, Sun Microsystems, Tektronix, and others.
In 1985 Microsoft licensed MacFortran, which consisted of a native ANSI FORTRAN 77 compiler and graphical debugger. Shortly thereafter, Microsoft contracted with Absoft to develop Microsoft Fortran for Macintosh, and a Microsoft BASIC compiler that was 100% syntax compatible with the existing Microsoft BASIC interpreter on the Macintosh. Apple was one of the first Mac Fortran customers, with a large order for Drexel University. Variations of the Fortran and BASIC compilers for Macintosh were marketed under the name A/C Fortran and A/C Basic for Amiga. Fortran compilers for Linux/Unix and Microsoft Windows followed.
The Mac and Amiga Fortran compilers included an Integrated development environment (IDE) and profiler. The IDE was added to the Windows compilers and is included in all succeeding Absoft Fortran compilers.

### Fortran 90 and the Internet

During the 1990s the broadened product lines and internet enabled Absoft to build a base of resellers worldwide. For a period of time in the mid-1990s Absoft had a full-time representative in California but expanded internet usage eliminated that position and allowed everything to be run out of a single location.

## Company milestones

Details on milestones since 2006 are available on the Press Releases page of the Absoft web site.
* 1980 Absoft founded in Birmingham, Michigan.
* 1981 Initial compilers for UNIX platforms included a graphical debugger.
* 1981 Major contract with Alpha Microsystems.
* 1983 Release of Absoft's first graphical debugger, for Motorola VersaDOS.
* 1984 Absoft adds support for the Sky Computers floating point accelerator, SKYFFP-V, on VME (aka Versabus) and S-100 systems.
* 1985 Release of Absoft Mac Fortran compiler with graphical debugger and IDE.
* 1986 Release of Absoft Mac BASIC compiler with graphical debugger and IDE.
* 1986 Release of Amiga Fortran
* 1988 Absoft built a new development facility in Rochester Hills, Michigan.
* 1994 Release of Absoft Fortran for Mac PPC.
* 1994 Release of Fortran for Microsoft Windows.
* 1997 Release of Linux Fortran as produced for CERN to port ESPACE code to Linux.
* 2000 All releases include Fortran 90
* 2003 First compiler that produces 64-bit executables (Linux).
* 2004 Release of IBM XL Fortran and XL C/C++ for Mac OS (PPC).
* 2004 IBM contract to develop the HPC SDK for POWER, POWER4 and POWER5 architectures.
* 2005 64-bit executables on the Macintosh
* 2005 All releases include Fortran 95.
* 2005 With version 10.0, the previously bundled Absoft C/C++ compiler was dropped in favor of using universally available C/C++ compilers on each platform directly from the IDE. The profiler and bundled C/C++ compiler was dropped to allow compatibility with system C compilers and linkers.
* 2006 Max OS/X Intel Pro Fortran released.
* 2006 IMSL 5.0 for 64-bit Intel/AMD Linux released.
* 2006 AnCAD MATFOR libraries for Linux and Windows released.
* 2007 64-bit executables on Microsoft Windows and Mac OS/X. IMSL available for Mac OS/X.
* 2007 Absoft releases Pro Fortran 10.1 with tuning for multi-core AMD and Xeon processors for both 32-bit and 64-bit executables.
* 2008 Releases a "Roll" for Clustercorp's Rocks Cluster Distribution that includes Absoft Pro Fortran 10.1 and is compatible with Rocks+ 4.3 and its open-source software stack.
* 2008 Absoft and Visual Numerics' release IMSL library qualified for Microsoft's HPC platform.
* 2009 IMSL 6.0 released as part of Pro Fortran 11.
* 2010 Absoft Pro Fortran 11.1 for HPC Code Development, compatible with Snow Leopard an Xcode 3.2 released.
* 2010 NVIDIA CUDA support via CAPS's HMPP 2.4 preprocessor released.
* 2011 Absoft and Bradly Associates announce a bundle of Absoft Pro Fortran and GINO GUI builder. GINO GUI Lite is included with Absoft Pro Fortran purchases or upgrades after April 20, 2011 (available on request for purchases or upgrades up to 60 days prior to that date).
* 2011 IMSL 7.0 released and bundled with all Absoft Pro Fortran releases.
* 2012 Sold the Rochester Hills building and moved into an office building in Troy, Michigan.

## Absoft Pro Fortran Compilers

Absoft Pro Fortran is available (June 2018) in five versions:
* Microsoft Windows
* Mac Intel x86_64 (OS X)
* Mac PPC (OS X PPC G5)
* Linux 32-bit Intel x86
* Linux 64-bit Intel x86_64
The Windows, Mac and 64-bit Linux versions produce either 32-bit or 64-bit executables according to user option. The Linux 32-bit version produces 32-bit executables.
All versions offer the IMSL libraries as an extra-cost option.
GINO GUI Lite is available as an optional component without added cost. GINO GUI and graphics, and Winteracter GUI Toolset are available also are available at extra cost.

### Parallel processing and optimization

Absoft Pro Fortan parallelization and optimization options are illustrated by the screen shot of the relevant options page to the right. Absoft Pro Fortran provides five levels of classical optimization and Speed Math options 0 through 9.
Parallelization options include auto parallelization as a check box with graphical indications of degrees of success on the source code in the editor pane as highlighting colors. OpenMP 3.0 is also available as a check box. Speed OpenMP is available as none or levels 0 through 5.
Absoft offers support for MPI (MPICH2 and Open MPI). ScaLAPACK and BLACS is shipped with all platforms. IMSL 7.0, integrated but available as a separate license since the v. 7.0 release in 2011, supplies MPICH2.
Executing programs that use parallelization on machines that do not have Absoft Fortran installed requires inclusion of pthreadVC2.dll for 32-bit executables or, for 64-bit executables, pthreadVC2_64.dll. This library is distributed under the LGPL 2.1.

### Fortran 2003 and Fortran 2008 extensions

Some Fortran 2003 and Fortran 2008 extensions have been implemented as of April 2014 with version 14.0.3.

#### Fortran 2003

Some Fortran 2003 extensions are available in current versions of Absoft Pro Fortran. Among these are:
* ISO_C_BINDING and ISO_FORTRAN_ENV
* ACOS, ASIN, and ATAN generics accept complex arguments
* COSH, SINH, and TANH generics accept complex arguments
* MOVE_ALLOC statement
* GET_COMMAND, GET_COMMAND_ARGUMENT and COMMAND_ARGUMENT_COUNT
* GET_ENVIRONMENT_VARIABLE
* FLUSH statement
* IS_IOSTAT_END and IS_IOSTAT_EOR
* ENUMERATOR and ENUM
* NEW_LINE
* ABSTRACT INTERFACE
* PROCEDURE pointers
* enhanced TYPE initialization
* POINTER bounds remapping
* recognizes ASYNCHRONOUS I/O specifiers
* IOMSG=string_variable_for_error_text_string I/O statement specifier
* IEEE exceptions
* VALUE statement and declaration attribute

#### Fortran 2008

Several Fortran 2008 extensions are available as of April 2014. More will be available with updates and new releases. Those available now include, but are not limited to:
* ACOSH, ASINH, ATANH intrinsics
* HYPOT intrinsic
* LEADZ and TRAILZ intrinsics
* POPCNT and POPPAR intrinsics
* empty CONTAINS section
* BESSEL_J0, BESSEL_J1, and BESSEL_JN intrinsic functions
* BESSEL_Y0, BESSEL_Y1, and BESSEL_YN intrinsics
* BGE, BGT, BLE, and BLT intrinsics
* DSHIFTL and DSHIFTR intrinsics
* SHIFTA, SHIFTL and SHIFTR intrinsics
* MASKL, MASKR and MERGE_BITS intrinsics
* EFC_SCALED, GAMMA and LOG_GAMMA intrinsics
* EXECUTE_COMMAND_LINE intrinsic
* IS_IOSTAT_END and IS_IOSTAT_EOF intrinsics
* SELECTED_CHAR_KIND intrinsic
* Allocatable components of derived types (data structures) (partial implementation)
* Pointer INTENT attribute

### Bundled and optional packages

All of these packages are included in the IDE and fully integrated into the compiler. Cost is included in purchase price except IMSL and GINO or Winteracter, which are sold separately. Installed packages can be selected for inclusion in a build by checkboxes on a tab on the Project Options menu as illustrated in the screen shot to the right. Some of these are detailed below.

#### Absoft FX3 graphical debugger

The FX3 graphical debugger is bundled with all Absoft Pro Fortran releases. The FX3 graphical debugger is compatible with the GNU Compiler Collection (gcc) (on Macintosh and Linux), Apple C, Microsoft Visual Studio C/C++ (Windows only), and assembly language on all three platforms.

#### GINO's and Winteracter's GUI for Fortran

GINO and Winteracter are optional third-party APIs for creating complex 2D and 3D graphics and GUI applications using Fortran programs. GINO Lite (32-bit only, some restrictions) is bundled with Absoft Pro Fortran for Windows at no additional charge and is well suited for most users. Absoft offers licenses on all platforms for full versions of GINO or Winteracter that includes 64-bit support, has no limitations, and is integrated with the Absoft Pro Fortran suite.

#### IMSL libraries

Absoft is the only commercial Fortran vendor to offer IMSL Numerical Libraries bundles with Fortran compilers for Windows, Mac and Linux. Absoft is the only IMSL provider for MacOS. Absoft sells licenses for IMSL and documentation as unlocking codes that allow release of IMSL libraries and documentation from the Absoft installation software. Current releases ship with IMSL 7, the latest release.

#### UNIX and VAX/VMS compatibility libraries

For use in porting code written on UNIX or VAX/VMS systems, libraries of UNIX-specific and VAX-specific Fortran intrinsics are available by checking a box in the Project Options, Libraries/Tools window. Other extensions important for porting from other platforms, such as Cray pointers, are included in Absoft Pro Fortran as part of the compiler.

#### LAPACK and BLAS

Linear Algebra Package (LAPACK) with Basic Linear Algebra Subprograms (BLAS), or BLAS alone, are offered as linkable libraries.

#### HDF4, HDF5

Hierarchical Data Format libraries HDF4 release 4.2.8 and HDF5 release 1.8.9 can be included by checking a box in the Project Options, Libraries/Tools window.

#### NetCDF

Network Common Data Form (NetCDF) version 4.3 is available by checking a box.

#### CUDA and CAPS

NVIDIA manufactures graphics cards that use arrays of Complete Unified Device Architecture (CUDA) graphics processing units. A special version of BLAS can be included in linking libraries by checking a box in the Project Options, Libraries/Tools window.
CAPS is a many-core compiler for using arrays of CUDA cores in a GPU for computation.

#### PLplot libraries

PLplot 5.9 is available by checking a box on the Project Options Libraries/Tools window. Bindings are available for both single and double precision, from FORTRAN 77 or Fortran 95 or for calling from Microsoft WIN32.

#### DLL and system calls

For all platforms, Absoft Pro Fortran links from user static or dynamic libraries provided by the system, other compilers, or the user. Absoft Pro Fortran has the capability to generate both static and dynamic libraries.

#### Command line and C/C++ interoperability

All Absoft compilers can be invoked and fully controlled form the command line. Since Absoft has used the system linker format for all platforms since version 10.0 in 2005, C/C++ object files can be linked with Absoft compiler object files, and integration with the most common C/C++ compilers is done by settings in the Absoft IDE.
The Absoft IDE is hard-wired to use the Absoft Fortran compilers, and is customizable to use a C/C++ compiler that produces object files compatible with the system linker.

## Absoft-specific GUI optional features

Absoft-specific GUI options allow use of programs compiled with Absoft Pro Fortran using the mouse and dealing with pop-ups in the same way that windowed GUI applications are used. The use of Absoft-specific GUI features is portable between platforms using Absoft Pro Fortran on each platform, but other compilers and platforms cannot use these features, and Absoft-specific feature code will not be recognized by other compilers.

### MRWE

The Microsoft/Macintosh Runtime Window Environment (MRWE) option uses a Fortran 77 overarching main program that calls system GUI libraries to produce a windowed application. The MRWE environment is selected as an executable type in the IDE options for building an application. The default MRWE program maps input and output to a scrolling window similar to a command prompt, but the user retains all the output and can save it as a text file after the program exits. Hooks are provided in the MRWE GUI program to add Windows system calls to enhance the user interface, providing the potential for a full-featured Windows program written entirely in Fortran. MRWE source code is available as a starting point for an all-Fortran Win32 GUI application. MRWE was replaced by AWE in 2012 but is still available as a target environment for legacy programs.

### AWE

The Absoft Window Environment (AWE) is provided by selecting the application type in the GUI. When this is done, a file AWE_Preferences.f95 is added to your project. This Fortran file includes small procedures called during initialization that configure AWE by defining stack size for the interactive window, window size and behavior, and the font.
An AWE application can enhance the interactive console window menu items that can be used to execute program units and exit, providing a GUI for an interactive application. The program units can operate using pop-ups, menus, and display windows, so that the traditional console I/O is not used at all, and thus providing an all-Fortran GUI driven application on all three supported platforms.
AWE applications distributed for use without the Absoft compiler need to have libgomp.dll included with 32-bit executable files or libgompx64.dll for 64-bit executable files. These DLLs are released under the Free Software Foundation GNU General Public License (version 3 with GCC Library Exception).
The interactive pop-ups, graphics, and spreadsheets are accessed bu a use AWE_Interfaces statement. Distribution of executables with these features requires inclusion of QtCore4.dll and QtGui4.dll. Qt is licensed under the LGPL v. 2.1.

#### Interactive console window

Compiling as an AWE application maps standard input and output to a scrolling window similar to a command prompt, but the user retains all the output and has the option of saving it as a text file after the program exits. The other features, detailed below, are enabled by the use of an AWE application. An interactive AWE application can be written that does not use the interactive console at all, leaving this window available for use as a run log.

#### Menus, pop-up messages, dialog boxes, and forms

These functions are implemented through calls to procedures in the AWE_Interfaces module. Coding is about the same as would be needed for an interactive command-line window interface.

#### Built-in graphics

Bar charts, pie charts and X-Y charts are supported through calls to procedures in the AWE_Interfaces module. Defaults provide simplified usage but a great deal of flexibility in output colors, line colors and widths, background, etc. are available if desired.

#### Three-D plots

Three-d plots including perspective x-y-z plots and contour plots also are supported through calls to procedures in the AWE_Interfaces module for the 2015 release and later.

#### Spreadsheets

You can create spread sheet windows in AWE to display rank 2 arrays. Subroutines are provided to open, close, read, write, and label spread sheets. Menu commands, described above, can be added to an AWE program to manipulate the data in the spread sheet.

## User base

A page on the Absoft web site, lists over 180 corporate and government license users. Among these are Apple Inc., CERN, Lawrence Livermore National Laboratory, NASA Lewis Research Center, Naval Undersea Warfare Center, Naval Research Laboratory, Naval Surface Warfare Center, Raytheon, Seagate Technology, Toshiba Corporation, USAF Phillips Laboratory, Boeing Defense and Space, Canon, Inc., Nikon Corporation, Computer Sciences Corporation, General Motors, Ford Motor Company, Toyota Motor Company, Hewlett Packard, Institute for Defense Analysis, Lockheed Martin, Los Alamos National Laboratories, McDonnell Douglas, MIT Lincoln Laboratories, Mitsubishi Heavy Industries, SRI International, Texas Instruments, U.S. Air Force, Wolfram Research, Advanced Micro Devices, Argonne National Laboratories, AT&T Bell Laboratories, Boeing Military Airplane Company, Brookhaven National Laboratory, C.S.Draper Laboratories, David Sarnoff Research Center, GE Aerospace, IBM T.J. Watson Research Center, Intel Corporation, Jet Propulsion Laboratory, Lawrence Berkeley National Laboratory, Loral Space & Range Systems, Mitre Corporation, NASA Langley Research Center, and many others.

## Gallery

* Example of plot using AWE
* Example of simple plot using PLplot
* Example of simple fishnet plot using PLplot