Silverfrost Fortran FTN95 Revision History

See also: Plato Revision History

Version 8.80 - July 16, 2021

New Features:

  • The Fortran 2003 STREAM input and output has been added.
  • The Fortran 2003 standard intrinsic MOVE_ALLOC has been added.
  • The Fortran 2008 ISO_C_BINDING C_SIZEOF intrinsic has been added.
  • The Fortran 2008 standard intrinsic STORAGE_SIZE has been added.
  • SLINK64 is now provided as a 64 bit executable with the potential to handle much larger memory allocation.
  • 64 bit uninitialised COMMON data is now automatically zeroised unless /UNDEF is used.
  • New diagnostic routine EXPORTCALLSTACK@ added.
  • More intrinsics are now available in initialisation statements.
  • Fortran 2003 INTENT is now allowed for POINTER arguments.
  • Allocate on assignment has been extended to simple logical expressions.
  • ClearWin+: A new routine CONTROL_UPDATE@ has been added as an alternative to WINDOW_UPDATE@. It behaves exactly like WINDOW_UPDATE@ but if the variable relates to %rd or %rf then any limits (%il or %fl) are not applied and any out-of-range alert icon is removed.
  • ClearWin+: A new routine WINCLASS@ has been added. It is similar to WINSTYLE@ (see item 385) but must be called before any other ClearWin+ library routine.
  • ClearWin+: An existing undocumented routine for %cw called CANCEL_SELECTION@ has been added to clearwin.ins and clrwin.mod
  • ClearWin+: A new format code %wt has been added. It provides a "wait" instruction that takes effect when the window is being closed with the result that control is not returned to the caller until after the closure has been completed.
  • ClearWin+: The designer for Visual ClearWin+ (%~wi) has been extended to allow UNICODE strings to be entered into the Properties dialogs for plain text and for buttons.
  • ClearWin+: Two new standard callbacks "CLOSE" and "VERSION" have be added.
  • ClearWin+: A new format code %av has been added.
  • ClearWin+: Two new routines DRAW_CURVESD@ and DRAW_SYMBOLSD@ have been added.
  • ClearWin+: A new routine SET_PLOT_MODE@ has been added for use with %pl
  • ClearWin+: A new option has been added for comboboxes which is %`ls[fixed_width]
  • ClearWin+: A previously undocumented subroutine GRAB_DESKTOP_DIB@ can be used to create a device independent bitmap (DIB) from a given rectangle on the desktop.
  • ClearWin+: A new function EXPORT_DIB_IMAGE@ has been added. It is similar to EXPORT_IMAGE@ but is used with DIBs whereas EXPORT_IMAGE@ is used with "drawing surfaces".
  • ClearWin+: A new function EXPORT_WINDOW_IMAGE@ combines the functionality of GRAB_DESKTOP_DIB@ and EXPORT_DIB_IMAGE@ into one function.
  • ClearWin+: A new function LOADRESOURCE@ returns the Microsoft HANDLE for a bitmap, icon or cursor.
  • ClearWin+: A new function WINDOWATCURSOR@ returns the Windows HWND of the window at the current cursor position.
  • ClearWin+: A new function GETCURSORPPOS@ provides the pixel co-ordinates of the current cursor position.
  • ClearWin+: The format codes %`bm and %`ic can now take the option [static].
  • ClearWin+: An option to adjust the "tension" of a %pl graph has been added in the form WINOP@("%pl[tension=1.0]").
  • ClearWin+: %si has been extended to provide 16x16 icons.
  • ClearWin+: New options have the added to %co in order to provide alternatives to the default action for %~il and %~fl when an out-of-range value is either a) input by a user keyboard edit or b) provided by a programmed update to the associated variable (e.g. together with a call to WINDOW_UPDATE@).

Outline summary of some of the bugs that have been fixed:

  • 64 bit /CHECK failed for type conversion from LOGICAL*4 to LOGICAL*2.
  • 64 bit RECOVER_DIB_BLOCK@ was using the wrong pixel order for RGB.
  • There were NAMELIST failures for both 32 and 64 bits.
  • /LIST /64 was giving incorrect offsets.
  • /OPT was causing some compilation errors to get lost.
  • Various failures relating to dummy arguments with POINTER attribute have been fixed.
  • The intrinsic CHAR when used in an array constructor and initialisation statement was giving an internal compiler error.
  • GET_COMMAND_ARGUMENT was failing when the first argument is INTEGER*2.
  • An implicit REAL when used as an index in an implied DO and initialisation statement was giving an internal compiler error.
  • An exclamation mark was rejected as a continuation character in column 6.
  • /64 /UNDEF was not working for a large array.
  • There was an access violation when calling DEALLOCATE in a certain 32 bit context.
  • There was a failure when calling a function from a contained routine when passed as an argument in the host.
  • INCLUDE after CONTAINS was not working.
  • STOP with more than one argument was not trapped by the compiler.

Version 8.70 - November 20, 2020

New Features:

  • The Fortran 2003 feature that allows standard intrinsics in initialisation statements has been added.
  • The Fortran 2003 feature "allocate on assignment" has been added.
  • The Fortran 2003 ISO_C_BINDING has been added.
  • The Fortran 2008 ISO_FORTRAN_ENV with intrinsics COMPILER_VERSION() and COMPILER_OPTIONS() has been added.
  • The Fortran 2008 complex intrinsics such as ACOS,ACOSH,COSH,and TAN have been added.
  • The Fortran 2008 real intrinsics ACOSH,ASINH,ATANH have been added.
  • The Fortran 2008 DO CONCURRENT construct has been added (but not with embedded IF statements).
  • /ZEROISE can now be used with /64.
  • Compile time argument typing checking has been added for routines in clrwin.mod.
  • Command line options /C and /O have been added for compatibility with gFortran.
  • Significant new features have been added to Plato including "auto-checking" and highlighting Fortran constructs. See Silverfrost YouTube video for details.
  • ClearWin+: option %em[height=] has been added to provide for greater vertical spacing between menu items in the absence of larger icons.
  • ClearWin+: New options [height=n] and [vertical_fill=v] have been added to provide for a greater vertical spacing for %ls, %ms and %el.
  • ClearWin+: Scrolling options [hscroll] and [vscroll] have been added to %gr and %pl.
  • ClearWin+: Calls to USE_RESOURCE_LIBRARY@ have been made redundant.
  • ClearWin+: The functions INVALID_FLOAT@ and INVALID_DOUBLE@ can be used to test if a real value is invalid (is a NaN).
  • ClearWin+: A new option "undef" is available with clearwin_option@ which will trap when an undefined value is supplied to codes such as %rf and %rd.
  • ClearWin+: %dl has been extended to allow for more than one timer per window. More control can be achieved using SET_TIMER@ and KILL_TIMER@.
  • ClearWin+: SET_TOOLTIP_TEXT@ can be used with %th[ms_style].
  • ClearWin+: New format code %ln provides a horizontal etched line.
  • ClearWin+: A %pl graph can now be configured at runtime by using new options, "params" and "locked". See this video for more details.
  • ClearWin+: A new format code %bn has been added as an alternative to %bt and %bb. In particular %bn can be used to present split buttons (with a down icon that is typically used for menus).
  • ClearWin+: A new function SET_INCREMENT@ has been added so that the increments for %df can be changed at dynamically.
  • ClearWin+: The "link" option for %pl has been extended to provide [link=columns] and [link=bars]
  • ClearWin+: A new routine CHANGE_HELP_TEXT@ has been added
  • ClearWin+: A new routine CHOOSE_COLOUR_EX@ has been added as an alternative to CHOOSE_COLOUR@.

Outline summary of some of the bugs that have been fixed:

  • /ALT_KINDS was failing for ACOS(-1.0_2).
  • EOF was being reported for 64 bit redirected input when there is no linefeed on last line.
  • A certain redundant semi-colon was causing the line numbering to go wrong.
  • A repeated STDCALL declaration was giving a false error report.
  • The ambiguous use of a certain module variable was not being faulted.
  • The command line option /SAVE was causing PARAMETERs in win32prm.ins to be saved.
  • The statement i:=i+1 was not reported as faulty (regression at v8.40).
  • Certain array sections were causing an internal compiler error.
  • A certain allocatable array member of a user type was failing conformance checking and causing an internal compiler error.
  • A false error report for matching specific procedure was given with a certain USE ONLY statement.
  • LOGICAL*8 was failing when /alt_kinds was intended but not used.
  • Mixed usage of intrinsic INCLUDE and USE was leading to error number 840 (ambiguous use of PARAMETER).
  • There was an internal compiler error when using a PARAMETER in a certain ALLOCATE statement.
  • /UNDEF was failing for the 32 bit FTN95 ISHFT intrinsic and INTEGER*2.
  • An ENTRY statement where ALLOCATE was used in the parent routine was failing to initialise the pointer.
  • There was a false error report concerning a module subroutine ambiguously declared via a USE statement.
  • An array constructor for an array of complex values was not working for PARAMETER index values.
  • A certain ambiguous interface was not faulted.
  • A certain array constructor that contained a call to a function returning an array was failing.
  • An subroutine call with an argument of the form CORE1(LOC(a)) was giving a false error report.
  • The use of the same construct name for different constructs was not being faulted.
  • The use of a certain Hollerith string was not working.
  • The effect of using OPTIONS(OPTIMISE) was not consistent with using /OPTIMISE on the command line.
  • A product of a single precision complex value with a double precision real value was giving incorrect results (regression at v8.10).
  • There was an access violation when compiling a certain array section assignment.
  • A certain faulty EQUIVALENCE was not trapped.
  • The intrinsic PACK function was not working for arrays of user TYPE.
  • A certain array section was giving a false runtime bounds check error (regression at v4.70).
  • A recursive function that returned a assumed shape array was causing a access violation.
  • A certain integer overflow was not being detected via /CHECK for 64 bits.
  • A missing construct name for DO WHILE and FORALL was not faulted.
  • /64 /OPT was not working for a certain ALLOCATABLE array.
  • /CHECK was giving a false runtime error for a certain DO loop index.

Version 8.61 - February 13, 2020

8.61 is a maintenance release

  • Some false error reports relating to v8.60 clearwin.ins argument checking have been fixed
  • The Visual Studio 2017/2019 has been updated to allow DLL references to be specified per platform (Win32, x64 or .NET)
  • Reference order and browse issues have been fixed in the Visual Studio 2017/2019 plugin
  • A clearwin64 issue which caused sdbg64 to crash when some inspectors windows are closed has been fixed
  • ClearWin+: New symbols [symbol=12] and [symbol=13] have been added to options for %pl. These give respectively + and X.
  • ClearWin+: Two new routines, SET_INTERNET_CB@ and SET_INTERNET_PARAM@ have been added to the library

Version 8.60 - December 31, 2019

New Features:

  • Runtime checking has been extended so that FTN95 currently passes all tests in the Polyhedron diagnostic test suite. This includes a new option /CHECK_ALIAS that checks for overlapping arguments in a call to a routine.
  • Compile time argument typing checking has been added for routines in clearwin.ins. This will be extended to the corresponding MODULEs in a later release.
  • Compile time argument type checking has been added for certain FTN95 intrinsics such as UPCASE@.
  • 64 bit executables can now have a stack size that is greater than 4GB. This feature was incorrectly announced for v8.50.
  • /NO_TRUNCATE has been implemented for free format files.
  • ClearWin+: A pipe symbol '|' may now be used in the help string for a menu item that has a grey control
  • ClearWin+: The option [tooltips] has been added for a statusbar (%sb)
  • ClearWin+: The option [strings] has been added for a %mb toolbar. The effect is to replace what otherwise would be tooltips by text below each button bitmap
  • ClearWin+: On an experimental basis, a %pv pivot can now be used without %ww
  • ClearWin+: A new routine SUPPRESS_CMD_BOX@ has been added
  • ClearWin+: Improvements have been made regarding the set of routines that where historically based on CREATE_POLYGON@
  • ClearWin+: User data (%ud) can now be attached to a window as well as to any control within the window
  • ClearWin+: IMPORT_RSC_IMAGE@ has been added as an alternative name for IMPORT_IMAGE@ and a new function IMPORT_FILE_IMAGE@ has been added
  • ClearWin+: A new standard callback HELPLOOKUP has been added as an alternative to HELP_LOOKUP
  • Microsoft Visual Studio 2019 Plugin

Outline summary of some of the bugs that have been fixed:

  • 64 bit SLEEP1@ was not implemented correctly.
  • When linking very large executables SLINK could sometimes fail with 'error 42'.
  • When trying to use a generic class from .NET the compiler would fail to correctly parse the name
  • Compiling code that used INCLUDE statements could cause invalid line number information to be put in the executable. (x64 only)
  • Array constructor failure for SUM with array section on left hand side of the assignment.
  • Failure in an assignment when calling SIZE for an array of derived TYPE that has an array as a member.
  • Various bugs relating to ALLOCATABLE members of a derived TYPE.
  • Pointer assignment to NULL() failed with /CHECK.
  • Internal write error goes undetected.
  • Call to LEN as an argument gives a false warning.
  • Failure to fault certain non-conformant array assignments.
  • Initialisation of REAL variable in MODULE not propagated (64 bit only).
  • Compilation error in CONTAINed subroutines sometimes not detected.
  • Scoping error for INTERFACE defined within a MODULE.
  • FLOOR and CEILING not working for INTEGER*8 and /64.
  • Failure to report pointer assignment error in TYPE.
  • Access violation with a certain SAVEd array.
  • Various failures relating to certain functions returning character arrays.
  • Failure when concatenating certain PARAMETER substrings.
  • No warning given when initialising an INTEGER to a CHARACTER.
  • Failure with assigned GOTO and /SAVE.
  • Failure with a certain call to DOT_PRODUCT (64 bit only).
  • CASE(1::3) etc. give an internal compiler error.
  • Use of KIND(x) on its own gives a false warning.
  • /OPT gives an internal compiler error when declaring a very large array.
  • /OPT regression when attempting to unroll a DO loop.
  • /OPT failure for 32 bit "erf" functions.
  • Two bugs revealed by MODULE EQUIVALENCE involving implicitly declared variable.
  • Zero width F FORMAT descriptor was adding a leading space.

Version 8.50 - May 1, 2019

New Features:

  • A new Silverfrost utility called EditSVG is provided. This can be used to form images from a number of SVG sources into one composite image.
  • The size of the FTN95 stack is effectively no longer limited. The default size is 32MB and this can be extended via the SLINK64 "stack_size <hex-value>" command or the new SLINK64 "stack <hex-value>" command where <hex-value> is the decimal number of decimal megabytes required.
  • Fortran 2003 standard I/O FLUSH statement added. (Win32/x64 only)
  • Fortran 2003 standard I/O routines, keyword argument IOMSG added. (Win32/x64 only)
  • Fortran 2003 standard intrinsic GET_ENVIRONMENT_VARIABLE added.
  • Fortran 2008 standard intrinsic EXECUTE_COMMAND_LINE added.
  • Routines READFLONG@ and WRITEFLONG@ have been added (x64 only). These are the same as READF@ and WRITEF@ respectively except that they take INTEGER*8 values for NBYTES and NBYTES_READ.
  • The intrinsic functions LEN and LEN_TRIM can now take a second argument for the KIND value of the result.
  • Array arguments for routines can now be ALLOCATABLE according to the Fortran 2003 standard.
  • An FTN95 ALLOCATE statement can take the keyword argument ABSOLUTE_ADDRESS=addr where addr is the INTEGER KIND(7) address obtained from the LOC of some object. (Win32/x64 only)
  • A new FTN95 "CORE" intrinsic PCORE7 has been added for use in pointer assignments of the form p=>PCORE7(addr) where p is a pointer to some object and addr is the LOC of another object of the same type.
  • Microsoft Visual Studio 2017 plugin
  • ClearWin+: The buffer size for %re was previously limited to 32K characters. This limit has now been removed but in such cases the buffer will not be automatically updated and an explicit call to GetEditText@ will be required in order to copy the text to the buffer. If this copying takes place within an associated callback function then clearwin_info@("CURRENT_CONTROL") returns the required HWND.
  • ClearWin+: ALLOCATE(data1,ABSOLUTE_ADDRESS=addr) can be used in a callback relating to %ud. addr will be obtained via CLEARWIN_INFO@("USER_DATA") and data1 will be an object of the same kind as that used in the call to LOC.

Outline summary of bugs that have been fixed:

  • A PRIVATE TYPE in a MODULE was not private.
  • A USE ONLY attribute for a MODULE TYPE was not working correctly.
  • There was an internal compiler error with /64 and PRINT a(i,1:n).
  • /UNDEF was failing for an ALLOCATEd vector and vector subscript.
  • Various /64 /OPT bugs have been fixed.
  • An implicitly typed implied DO loop variable was being exported from a MODULE.
  • GET_COMMAND_ARGUMENT was failing when the path is set in double quotes.
  • RANDOM@ gave incorrect results when used in a small loop.
  • There was an access violation with /64 and an internal READ of a logical list.
  • COMPLEX(RESHAPE(...)) was not working correctly for REAL data.
  • An error report for a certain ALLOCATE rank failure was giving an access violation.
  • Assigning a scalar return from SUM to an array was not working correctly.
  • An array used in a WHERE mask was being interpreted as a vector subscript in the body of the construct.
  • /UNDEF was failing with the SUM intrinsic when used with ALLOCATABLE arrays.
  • There was a regression for Win32 when using SPREAD within a certain call to SUM.
  • The 64 bit version of RENAME@ was incorrectly giving an error number of zero when the file to rename did not exist.

Version 8.40 - November 22, 2018

New Features:

  • Plato has been upgraded to a 64 bit application with integrated debugging for 64 bit applications (as well as the existing integrated debugging for 32 bit applications). Users who don't have a 64 bit operating system should now use Plato32.
  • A bounds check has been added for an assignment that has the form w(1:n) on the left hand side.
  • A number of minor FTN95 library functions (such as RANDOM@) have be added to the list of designated "FTN95 intrinsics".
  • /CHECK_WINIO option to specifically check WINIO@ commands
  • ClearWin+: Extra options for %sl to control appearance
  • ClearWin+: Options [external],[frame_pen=dval], [title_hfont=hval] and [function=fun] have been added to the native %pl
  • ClearWin+: A new function SELECT_GRAPHICS_REGION@ has been added as an alternative to SELECT_GRAPHICS_OBJECT@
  • ClearWin+: Bezier curves can be drawn using an existing undocumented routine called DRAW_BEZIER@.
  • ClearWin+: New features have been added to the multi-line edit control %RE
  • ClearWin+: New features have been added to the edit control %EB
  • ClearWin+: Menu items for %mn, %pm and %sm can take a new modifier '^' that takes a function to control "grey" and "check mark"
  • ClearWin+: New format code %rc (Register Command)
  • ClearWin+: A new option [frame] has been added to the %PS (property sheet) format.
  • ClearWin+: A new routine PLOT_REDRAW@ has been added
  • ClearWin+: NEW_GRAPHICS_REGION@ has been added
  • ClearWin+: A new feature has been added to ClearWin+ that allows user data to be associated with a given control
  • ClearWin+: A new option [fmt=] has been added to %rf in order to provide program control of the displayed REAL value.

Outline summary of bugs that have been fixed:

  • There was a minor leak on the 32 bit FTN95 stack when calling winio@.
  • A fault relating to POINTER initialised to NULL() has been fixed.
  • /CHECK with /64 was causing a program to run extremely slowly.
  • Character input with A4 to an INTEGER*8 buffer was failing.
  • 32 bit NAMELIST was failing with /OPTIMISE.
  • ISHFT gave the wrong result for a PARAMETER argument and negative shift.
  • 64 bit NAMELIST had the wrong storage type for character arrays.
  • The /TABS option was not working correctly.
  • /ISO with /64 was changing the default INTEGER kind to 4 (64 bits).
  • /FULL_DEBUG was giving a false runtime error for a certain INTENT(OUT).
  • A combination of /64 with /ISO was not working in some contexts.
  • An access violation was being raised when reading a module containing the definition of a PARAMETER.
  • An inadequate error message was given when the name of a subroutine was the same as the name of the main program.
  • The ASSOCIATED intrinsic was giving an incorrect result for TYPE array elements initialised to NULL() when used with /UNDEF on the command line.
  • An invalid compile time use of a certain assumed-size array was not being trapped.
  • BESSEL_J0 was causing a compiler crash.
  • GET_COMMAND_ARGUMENT was not stripping surrounding double quotes for 64 bits.
  • The use of a dangling Fortran pointer after a DEALLOCATE was not being trapped for 64 bits.
  • A certain 64 bit equivalence within a module was not working.
  • The SPREAD intrinsic was being falsely called multiple times when used after an ALLOCATE statement.
  • Extraneous characters after an ALLOCATE statement were not being trapped.
  • A new compiler warning about lack of precision in real constants was giving false results.
  • x**y with x and y both zero was not trapped for 64 bits.
  • A certain construction with nested INCLUDE statements was causing FTN95 to go into an endless loop.
  • ClearWin+: A fault when pressing the TAB key in an editable %lv control has been fixed
  • ClearWin+: Two faults that occurred with %fr have been fixed

Version 8.30 - March 19, 2018

New Features:

  • New routines have been added that provide multi-tasking as an alternative to multi-threading. This offers a form of parallel processing that can dramatically reduce run times. See the document notes_on_parallel_processing.txt for further information.
  • SLINK64 can now be used to create static libraries.
  • A warning is now generated when a REAL*8 variable is assigned to a long REAL*4 constant.
  • ClearWin+: Additional functionality added to native SIMPLEPLOT
  • Routine GET_PROCESS_HANDLE@ can be used within a thread in order to get the handle of a process that has been started (for example) by START_PROCESS@. GET_PROCESS_ID@ can be used in the same way in order to get the process ID.
  • ClearWin+: PRINT_GRAPHICS@ provides a simple interface to print graphics such as native SIMPLEPLOT graphs.
  • ClearWin+: %sb has been added in order to provide an alternative to the %ob status bar
  • ClearWin+: The format code %rf now accepts the input of a comma. This is transcribed to a decimal point.
  • ClearWin+: The format code %il can now be used with the tilde (~) modifier. The result is that the limits are not applied to the displayed %rd integer value but (on error) an alert icon appears and the text colour changes to red.
  • ClearWin+: A new option [panel=val] has been added to %br. val is the integer value of a %sb panel
  • SIMDEM DLLs are now automatically scanned by the linkers. This makes using SIMDEM a smoother process.

Outline summary of bugs that have been fixed:

  • In 32-bit code, some floating point errors caused the exception dialog to show a garbage error message.
  • A certain TYPE initialisation was causing FTN95 to crash.
  • In 64-bit mode, the use of TRANSFER to create invalid REAL constant was causing FTN95 to crash.
  • In 64-bit mode, BTEST was failing for INTEGER*8 arguments.
  • The FTN95 option /XREF was failing in certain cases.
  • In 32-bit mode, if(A.LT.A) was giving an incorrect result.
  • A regression at 8.20 has been fixed. This related to passing an array A enclosed in brackets as in: CALL sub1((A)).
  • 64 bit CLOCK@ and DCLOCK@ were returning CPU time rather than the required elapsed time.
  • A DO loop with 64 bit integer parameters was causing an internal compiler error.
  • SYSTEM_CLOCK was giving inaccurate results in 64-bit mode.
  • A false warning was being given for an argument that was a subroutine.
  • A program containing only an INTERFACE was producing an object file of zero length (32 bits).
  • The REAL and INT intrinsics were failing when used with /ALT_KINDS.
  • A confusing error report was given when ASSIGN was used with a function result.
  • A problem using memory returned by GET_STORAGE@ that was above 2GB.
  • In 32-bit /CHECK mode, a CONTAINed subroutine was giving a false runtime error when calling other CONTAINed subroutine with an argument that was an array section.
  • SDBG64 more stable when debugging multi-DLL applications
  • ClearWin+: draw_point@ in GDI+ mode now draws correctly

Version 8.20

New Features:

  • 64 bit FTN95 now stores large static arrays in the same way as automatic arrays.
  • 64 bit FTN95 now implements the /PROFILE option. This produces an output file that lists the number of times each statement was executed.
  • SLINK64 now accepts system .ocx and .drv files as well as .dll files.
  • SLINK64 now has a rlo command. This is for DLLs and delays the binding until the first call of a routine in the DLL.
  • SLINK now reports a clear error report when supplied with 64 bit object code.
  • The FTN95 option /SIZE32 has been renamed /SIZE_ISO and /ISO now implies /SIZE_ISO.
  • A new FTN95 option /ECHO_OPTIONS has been added.
  • The standard intrinsics SIZE, UBOUND and LBOUND now have an optional KIND argument.
  • A new routine WINSTYLE@ has been added to ClearWin+.
  • A new format code %wi has be added to ClearWin+. This allows you to interactively design a window in order to fix the exact position and size of each control.
  • A new format code %mb has been added to ClearWin+. This "multi-button" toolbar provides an alternative to %tb and %ib that is simpler to set up and has more functionality.
  • A new format code %cm has been added. It provides a popup menu for the next control in the winio@ list and is constructed in exactly the same way as %pm
  • Two new routines GETTEXTSIZE@ and GETFONTSIZE@ have been added to ClearWin+.
  • The 64 bit FTN95 runtime checking (/CHECK) now traps recursive function calls for functions that have not been given the RECURSIVE attribute.
  • A new routine SET_MAXIMUM_IO_BUFFER_SIZE@ has been added to the library
  • The native %pl has been improved.

Outline summary of bugs that have been fixed:

  • Microsoft changed some of the .NET debugger interfaces in Visual Studio 2013 that meant it was impossible to see COMMON blocks. This has been 'worked around' in dbk_link.
  • Various issues relating to using INTEGER*2 as the default integer kind have been fixed.
  • Some false /CHECK error reports that occurred when passing functions as arguments have been fixed.
  • The logical IF statement was not working for 64 bit code and LOGICAL*2 variables.
  • A regression relating to "integer,pointer::j=>NULL()" in 64 bit code has been fixed.
  • A problem with INTEGER*8 variables in /64 common blocks has been fixed.
  • A failure with list-directed input of logical data has been fixed.
  • A failure with the /64 addressing of TYPE members of a TYPE has been fixed.
  • READFA@ was not processing end-of-line characters correctly for 64 bits.
  • SLINK64 was failing with insufficient memory when building very large projects.
  • The format descriptor F0.0 was not giving the correct results.
  • SDBG64 has had various fixes and enhancements

Version 8.10

New Features:

  • The FTN95 option /CHECK is now available in 64-bit mode.
  • The FTN95 option /OPTIMISE is now available in 64-bit mode but is still under development.
  • 64-bit /CHECK includes a compile time check on winio@ arguments - that they have the correct type. Initially this feature is only available with /64 /CHECK.
  • SET_TRAP@, TRAP_EXCEPTION@, LABEL@ and JUMP@ are now available in 64-bit mode.
  • A new FTN95 option /BINARY_FOLDER has been added. This allows the user to specify the path for the object code (for example .obj or .dbk file). It provides an alternative to specifying the full path via /BINARY.
  • ClearWin+: A native form of the winio@ graph control %pl is now available. See cwplus.enh for details.
  • ClearWin+: Functions like COPY_TO_CLIPBOARD@ now have 64 bit equivalents COPY_TO_CLIPBOARD64@. See cwplus.enh for details.
  • ClearWin+: The subroutine GET_FILTERED_FILE@ and the function GET_MULTIPLE_FILENAMES@ have been updated. See cwplus.enh for details
  • ClearWin+: A tilde modifier can now be used with %ga in which case the list of "state controls" is replaced by a single array.
  • ClearWin+: A tilde modifier can now be used with %ps in which case the list of "sheet handles" is replaced by a single array.
  • ClearWin+: A new routine PROGRESS_BAR@ has been added that can be called before each call to DISPLAY_DIB_BLOCK@
  • ClearWin+: A window with a %LW control variable CTRL has CTRL initially set to -1. Setting CTRL to zero or a positive value causes the window to close when WINDOW_UPDATE@(CTRL) is called. A new alternative is to set CTRL to -2 before a call to WINDOW_UPDATE@(CTRL) and this causes the window to close after a short delay. This can be used to seamlessly modify a window by closing the window and then recreating it with similar features and the same position and size.
  • ClearWin+: CLEARWIN_INFO@("EXTENDED_ERROR") has been added. It provides the result of a call to the Windows API function CommDlgExtendedError().
  • A new function called ProcessMemoryInfo@ has been added to the library. This provides easy access to the Windows API function GetProcessMemoryInfo.
  • Microsoft Visual Studio 2015 plug-in.

Outline summary of bugs that have been fixed:

  • SDBG64 has had many issues fixed and features added
  • A regression that limited a 64-bit ALLOCATE statement to 2GB size blocks has been fixed
  • INTEGER*2 and INTEGER*1 division were failing in 64-bit mode.
  • display_dib_block@ and get_dib_block@ were failing when used with very large arrays.
  • The standard intrinsic GET_COMMAND_ARGUMENT was not giving a correct status in 32 bit mode and could omit the final character in 64 bit mode.
  • Problems calling DLLs that reside above 4GB in 64-bit mode have been fixed

Version 8.05

New Features:

  • FTN95 provides some Fortran 2003/2008 features that required the command line option /F2K. These features are now provided by default. In order to restrict the code to Fortran 95 use /-F2K.
  • CODE/EDOC is now available in 64-bit mode
  • The following Fortran 2008 standard intrinsics are now available: ERF,ERFC,ERFC_SCALED,GAMMA,LOG_GAMMA,BESSEL_J0,BESSEL_J1,BESSEL_Y0,BESSEL_Y1,BESSEL_JN,BESSEL_YN. See for example
  • _WIN32 and _WIN64 are predefined for use in conditional compilation CIF. For example, the CIF(_WIN64) block of code will be compiled when the options /64 /fpp are applied on the FTN95 command line. This is particularly useful for CODE/EDOC blocks that require conditional compilation when implemented for both 32 and 64 bit code. In other contexts, an equivalent run-time condition is "IF(KIND(1_7) == 4)THEN".
  • The following undocumented Win32 routines have now been ported to 64 bits: FPOSLONG@, RFPOSLONG@ and FPOS_EOFLONG@. These are similar to FPOS@, RFPOS@ and FPOS_EOF@ but take INTEGER*8 position arguments. Note that other arguments are still INTEGER*2.
  • ClearWin+ can now be used to generate SVG files by calling OPEN_SVG@ before drawing the graphics (this is analogous to generating printer output). SVG is a vector graphics format.

Outline summary of bugs that have been fixed:

  • Compile time array bounds check failure has been elevated from WARNING to ERROR when using /CHECK or /BOUNDS_CHECK
  • The SUM intrinsic with a scalar MASK was giving incorrect results
  • The UBOUND intrinsic, when used as an array index was being treated as a vector subscript
  • A substring of an element of a character array was causing a backend failure. (64-bit only)
  • A regression caused the compiler to crash when raising a complex value to the power 0.5. This has been fixed
  • GET_DIB_SIZE@ when used with USE_GDIPLUS_IMAGE_FILES@ was giving a SUCCESS report when attempting to access a non-existent file.
  • Error number 612 was being appied out of context
  • INTENT(OUT) arguments with TYPE initialisation were causing runtime failures when OPTIONAL and not present
  • The WHERE construct was sometimes failing when the body contained an assignment to a temporary array
  • A GO TO statement within an IF construct was giving incorrect results with /OPT
  • A local COMMON block that duplicates a USEd MODULE COMMON block now produces a compile time error report
  • NAMELIST was failing when used in an internal (CONTAINS) subprogram
  • In a certain context a USEd MODULE user TYPE was falsely reported as not being defined
  • A stack leak was causing WRITE statements involving multiple calls to TRIM to fail with /FULL_UNDEF
  • Personal Edition did not allow /64 compile time switch
  • ClearWin+: %ac[Shift+Tab] was not responding as expected.
  • ClearWin+: A standard callback SETF has been added. This is equivalent to the standard callback SET but takes double precision values
  • ClearWin+: The property sheet control %ps was not working correctly when [hot_track] or [ms_style] was used together with a callback function
  • ClearWin+: %ss and browse_for_folder@ were not working for 64-bit applications.

Version 8.00

New Features:

  • FTN95 can now generate 64 bit executables and DLLs. For details see the 64 bit release notes.
  • The display resulting from the FTN95 command line option /CONFIG has been simplified and now only edits the global FTN95 configuration file. Use a new option /CFG to edit the local FTN95 configuration file
  • ClearWin+: A new function called GlobalMemoryStatus@ has been added to the library. This provides easy access to the Windows API function GlobalMemoryStatusEx.
  • ClearWin+ now makes use of the "DPI awareness" features first available with Windows 8.1. This means that, where possible, ClearWin+ will take advantage of the Windows API features designed to handle high DPI display settings which otherwise can lead to clipped text and blurry images.

Version 7.20

New Features:

  • A new KIND value has been introduced for integers. INTEGER(KIND=7) has the size of an address which depends on the type of the executable (32 bit or 64 bit). The same kind value is to be used when /ALT_KINDS is applied
  • ClearWin+: GET_DIB_SIZE@, GET_DIB_BLOCK@ and IMPORT_IMAGE@ have been extended in order to provide access to a wider range of image files via the Microsoft GDI+ library.
  • ClearWin+: A tilde modifier (~) can now be used with %wp with the result that plain text placed on top of the wallpaper will be transparent. In other words the text will have the wallpaper as background.
  • ClearWin+: The previously undocumented function browse_for_folder1@ can be used to open a dialog box with the option to create a new folder.

Outline summary of bugs that have been fixed:

  • FTN95 was calling the wrong library function when the standard intrinsic EXP was used with an extended precision (KIND=3) argument.
  • The PACK and UNPACK standard intrinsics where not working correctly for INTEGER types other than the default.
  • MAXLOC and MINLOC with DIM arguments were not working correctly in a number of contexts.
  • The resource compiler SRC was not handling the VERSION_INFO resource correctly.
  • INTENT(OUT) arguments with TYPE initialisation were not being reset on entry.
  • FTN95 was not reporting an error when the subscript of a subscript-triple was an array.
  • FTN95 was treating an assumed shape INTENT(INOUT) array as INTENT(IN) in certain contexts.
  • FTN95 with /CHECK was not reporting a run time error when assigning a value to a dummy argument where the actual argument was a simple parenthesis e.g. call zzz((A)).
  • An ENTRY routine with no arguments and defined within a MODULE SUBROUTINE was not accessible.
  • /NO_TRUNCATE was giving a false error report for comments beginning with ! or &.
  • A FORMAT statement at the beginning of subroutine with local (CONTAINS) subprograms was falsely reported as missing.
  • An error condition was not being reported when an expression was used as the value of an INTENT(OUT) argument.
  • OPTIONS(NOOPTIMISE) was behaving like OPTIONS(OPTIMISE) whilst OPTIONS(OPTIMISE) with /UNDEF was causing an internal compiler failure.
  • Empty character format and list directed write statement output a line with a single space rather than an empty line.
  • The REC specifier was allowed for READ and WRITE statements on a unit opened for sequential access.
  • Writes starting with '1' on units opened with FORM='PRINTER' didn't output a form feed.
  • A certain PARAMETER initialisation was failing with /ALT_KINDS.
  • A star-sized array argument in an internal function was giving a false run-time bounds check error.
  • The SHAPE intrinsic is now available within a PARAMETER initialisation.
  • Arrays declared with the PARAMETER attribute where not protected from run-time changes.
  • ClearWin+: %ac[Shift+Ins] was over-riding the typing of an underscore character in an edit box. This has been fixed.
  • ClearWin+: %dr (dropped files) has been tidied up so that the clearwin_string@ data is correctly reset and a crash is avoided.
  • ClearWin+: Various reported problems when using UTF8 characters have been resolved.
  • ClearWin+: Previously undocumented functions set_integer_limits@ and set_float_limits@ have been improved. These routines correspond to %il and %fl respectively and allow changes to be made at run time.
  • ClearWin+: The routine set_control_back_colour@ was not working for combinations like %dd%rd. This has been fixed.

Version 7.10

New Features:

  • Microsoft Visual Studio 2013 plugin
  • Anti-aliasing and opacity effects can now be included in ClearWin+ %gr line drawing (see ClearWin+ enhancements file for details).
  • A new web browser control %wb has been added to ClearWin+, providing full access to the Internet Explorer engine.
  • The IMPORT statement has been added as part of the Fortran 2003 standard.
  • ClearWin+: %ob now takes the options [rounded] and [thin_margin]
  • ClearWin+: clearwin_info@("TOOLTIP_HWND") now returns the HWND for Microsoft style tooltips (but not infotips)
  • ClearWin+: An new subroutine CLEARWIN_OPTION@ has been added in order to gather together various ClearWin+ options into one routine.
  • ClearWin+: %ch can now take the options [vscrollbar] and/or [hscrollbar] in order to display a scrolling window containing controls.
  • ClearWin+: A new format code %id has been added in order to specify the button number (ID) of the next %bt, %tt or %bb button.

Outline summary of bugs that have been fixed:

  • The /ISO command line option previously did not generate an error report when a TYPE or PARAMETER within an INTERFACE was inherited from the host.
  • Using /UNDEF with certain CHARACTER variable members of a user TYPE was causing an access violation.
  • The intrinsic function ISHFT was producing incorrect results for INTEGER*2 arguments.
  • Some duplicated double precision value arguments where not being passed correctly.
  • ALLOCATE was using the wrong address for the STAT variable when it was presented as an array element.
  • UBOUND was giving an incorrect result for zero-sized array sections.
  • /CHECK was giving a false run time error when a module function was passed as an argument.
  • TYPE initialisation in certain multiple MODULEs caused the compiler to crash.
  • A SEQUENCEd TYPE was giving a type mis-match error in a user ASSIGNMENT procedure.
  • Win32 MOD intrinsic was failing when the first argument was LOC(a).
  • /DUMP when used with /NO_OFFSETS was not dumping the variables in the best place.
  • /CHECK was giving a false run time error for functions returning an array.
  • An incomplete TYPE definition was not being reported as an error until it was used.
  • /CHECK was giving a false run time error for array arguments with the TARGET attribute.
  • INTENT(OUT) was not working correctly for array arguments with default TYPE initialisation.
  • "USE mod ONLY: aa=>bb" was giving incorrect results when aa was also declared in mod.
  • ClearWin+: %th[ms_style] did not allow multiline tooltips. This has been fixed.
  • ClearWin+: A certain user callback associated with %ls was found to raise an underflow exception under Windows 7. This has been fixed.

Version 7.00

New Features:

  • ClearWin+ is now available in the form of a 64 bit DLL called clearwin64.dll for use with third party 64 bit compilers. Routines in this library that previously ended with the @ symbol now end with $. In order to allow parallel development, FTN95 has been extended so that routines such as winio@ can now end in $ as an alternative to @. Also new standard modules are provided so that all ClearWin+ library routines for FTN95 can take this alternative form. For further information, search for "64 bit" in ftn95.chm.
  • ClearWin+ now accepts UTF-8 encoded character strings.
  • EXPORT_IMAGE@ and IMPORT_IMAGE@ now accept .PNG files and resources.
  • Four new library routines (START_THREAD@, WAIT_FOR_THREAD@, LOCK@ and UNLOCK@) have been added in order to initiate and manage Win32 threads.
  • The default ClearWin+ colour mode has been changed from "VGA colours" to "RGB colours".
  • ClearWin+: A new format code %em has been introduced to allow you to put icons in the left hand column of menus.
  • ClearWin+: A new format code %nw has been introduced. %nw takes one argument and this is the handle (%hw) of a window that has already been created
  • %ac[Ctrl+1] etc. added to list of accelerator keys allowed
  • The options [colour=] and [color=] have been added to %gr.
  • %th[balloon] now provides a tooltip in the form of a balloon.
  • %rd now takes the option [radix=n] where n is an integer in the range 2 to 36.
  • %ob now takes the option [rounded] to provide rounded corners
  • clearwin_info@("TOOLTIP_HWND") now returns the HWND for Microsoft style tooltips
  • Visual Studio 2012 plugin

Outline summary of bugs that have been fixed:

  • Local use of a name that duplicates the name of an intrinsic (e.g. SUM) was confusing the compiler.
  • FTN95 was allowing the intrinsic function TRIM to be elemental.
  • Regression at FTN95 version 6.0: SIZE(x, dim) was failing for assumed-size arrays.
  • FORALL is now allowed to use the same index as an outer DO contsruct.
  • /CHECK was giving an access violation at runtime when the FORALL index was passed to it as an argument.
  • An exclamation mark in column 73 was giving a false line truncation warning.
  • A false runtimne error was being issued when using /FULL_UNDEF for a certain generic routine.
  • MAXVAL,MINVAL,MAXLOC and MINLOC intrinsics did not report a compilation error when used with assumed-size arrays.
  • USE ONLY was not hiding a MODULE subroutine.
  • DRAW_FILLED_POLYGON@ was failing when used repeatedly with a very large number of different colours.
  • ClearWin+: %th[ms_style] did not allow multiline tooltips.

Version 6.35

New Features:

  • A new function GET_WOW_VER@ has been added to be used in place of GET_OS_VER@ in compatibility mode.
  • A new FTN95 command line option /DOLLAR_MOD has be added so that certain module names ending with a dollar sign will be treated as system modules.
  • FTN95 is now compatible with .NET 4.5 running on Windows 8. Note that all FTN95 generated .NET code must be compiled and linked against version 6.35 or above. Architectural changes in Windows 8 prevent .NET code produced by previous versions of FTN95 from functioning. This includes ftn95lib. It is therefore vital that all Fortran source code is recompiled and linked with version 6.35 and be distributed with an ftn95lib of the same version.

Outline summary of bugs that have been fixed:

  • An FTN95 (/OPT) optimiser bug for Windows 8 and .NET version 4.5 has been fixed.
  • An internal subroutine COMMON variable was conflicting with a host variable with the same name.
  • The FRACTION intrinsic produces invalid IL on .NET version 4.5 has been fixed
  • A regression in the FTN95 .NET syntax of the form below has been fixed:
        c = "System.Drawing.Color"%"Red"[/code]
  • An issue setting breakpoints in the Win32 debugger plug-in inside Visual Studio has been fixed.
  • On some x64 PCs FTN95 .NET assemblies would start up in 64-bit mode resulting in an immediate exception. This has been fixed.
  • The command line option /MESSAGE_SET_TO_ERROR was not working. This has been fixed.
  • Clearwin+: %ac[INS] regression fixed. Also %ac[Ctrl+H] and %ac[Ctrl+I] now working
  • Clearwin+: Added [mouse_click] option to %bv to allow processing of a single left mouse click. The corresponding CALLBACK_REASON is "MOUSE_CLICK".
  • Clearwin+: %bv extended to allow more icon colours. The default is now 256 colours whilst the options [4bits] and [24bits] provide alternatives.

Dropped functionality:

  • FTN95 will no longer compile and link against .NET 1.1. FTN95 now defaults to .NET 2.0

Version 6.30

New Features:

  • *.cs files can now be included in a DBK_LINK2/4 command line in order to transmit assembly attributes to the exe/dll.
  • /CHECK argument checking now extended to module subprograms.
  • /LINK with /DEBUG now activates /3GB in SLINK.
  • ASSEMBLEY_INTERFACE now allows ARRAY="REF" (default ARRAY="NET") to allow star-sized arrays to be passed only as a reference to the first element of each array in the argument list.
  • Clearwin+: Two new functions have been added to the library as an alternative or addition to %gr[user_surface]. These are CREATE_USER_SURFACE@ and SELECT_USER_SURFACE@. The associated %gr is identified by its Windows handle (see %lc) and the programmer must store the associated device context and DIB pointer.
           CALL CREATE_USER_SURFACE@(width, height, hdc, ptr) !(inputs width and height and returns hdc and ptr - all INTEGERs)
           ia = SELECT_USER_SURFACE@(hwnd, hdc, ptr)          !(inputs all arguments and returns non-zero value on success)
  • Clearwin+: New standard callback HELP_LOOKUP added. This takes two character strings. The first is the full path of a .CHM help file. The second is the keyword that identifies the topic that is to be displayed. This keyword must be included in the .HHK file that forms part of a Microsoft project to compile the .CHM file. Note: HELP_CONTENTS can already be used with .CHM files.

Outline summary of bugs that have been fixed:

  • TYPE definition failed to propagate in a particular subprogram that was internal to the main program.
  • RECOVER_DIB_BLOCK@ had 2048 horizontal pixel limit.
  • A particular ALLOCATE statement reported and incorrect array rank.
  • PAD was not working in the RESHAPE intrinsic except for integers.
  • VAX initialisation statements failed when the list contained an array that was not the first item in the list.
  • Assignment via a pointer failed when pointing to an element of an array of user-defined type which, in turn, had array members.
  • Assignment to NULL using =>NULL() rather than NULLIFY was failing under .NET.
  • MAXLOC and MINLOC intrinsics could not be called directly in order to set an array index.
  • For arrays of rank one, MAXLOC and MINLOC now only return a scalar when DIM=1 is an explicit argument.
  • SET_SUFFIX@ and SET_SUFFIX1@ were only working correctly for extensions of length three.
  • Logical test for element by element character equality was failing for scalar against array constructor.
  • Clearwin+ Improvement: %`rs can produce unwelcome additional height with XP theme.
    Existing option [no_additional_depth] used to restore old (non-XP) height.
  • Clearwin+: Documentation has been added for existing functions import_gif@ and export_gif@. These are similar to import_bmp@ and export_bmp@. Interfaces are now included in standard header files.
  • Clearwin+ Improvement: import_image@ has been extended to handle GIF files and resources.

Version 6.20

New Features:

  • ENUM type included in /f2k features.
  • New function count_files@ added to FTN95 library.
  • New features added to Plato including image and HTML editing.

Outline summary of bugs that have been fixed:

  • Stack pointer was corrupted in call to a matrix function.
  • Virtual memory allocation failure under 64 bit Windows 7.
  • Wild card failure with "ftn95 dir\*.f95".
  • Another buffer problem when using a wild card on the command line.
  • Mixed single and double expression for certain complex values gave incorrect results.
  • a certain character function failed on assignment.
  • a check caused an access violation when a host variable was passed to an internal subroutine.
  • /opt failed in a certain cos with sin expression.
  • Locked register occurred with /checkmate when using ALLOCATE and ANY.
  • False error report "Non-conformant array shapes.." with a certain array of user-defined TYPE.
  • Comment embedded directive FTN95$FREE was not working when placed before a LIBRARY directive.
  • User-defined assignment operator caused /check to give a false runtime error report
  • Redundant USE statements or 'wrong' order caused loss of module data for TYPE elements
  • Setting breakpoints in DLLs in Win32 Visual Studio debugging sessions
  • Debug data tip display in Win32 Visual Studio 2010 debugging sessions
  • Expansion of array data tips in Win32 Visual Studio 2010 debugging sessions and setting their values
  • Clearwin+: %ht buffer problem when screen resolution is very high
  • Clearwin+: %ht problem - jpeg images did not display correctly on a wide screen
  • Clearwin+: clearwin_info@("PRINTER_COPIES") was not working
  • Clearwin+: %dd%rd gave double call to callback when grave is not used
  • Clearwin+: %lv with vertical scroll and button below was not working correctly. Button click was sometimes failing to respond
  • Clearwin+: clearwin_info@('FILTER_ITEM_SELECTED') was not working for get_multiple_file_names@

Version 6.10

Outline summary of bugs that have been fixed:

  • Compiler regression at 6.00: character variable comparision failed when using /full_undef (i.e. /checkmate)
  • Long path names could not be used with wild card command line "FTN95 *.f90" etc.
  • Pure functions as procedure arguments were constrained to be INTENT(IN) but the standard does not require this.
  • FILL@ gave locked register failure with /opt.
  • Compiler failed to create runtime code for array assignment with INTEGER*8 array index and the same index on the RHS.
  • CHECK mode gave false runtime error for INTEGER*2 do-loop index (changed externally) when index was used in a CONTAINed subroutine.
  • SDBG: In some circumstances Windows loads DLLs with Unicode details instead of ANSI. SDBG detects this and acts accordingly
  • ClearWin+: Two problems with the %eb horizontal scrollbar have been fixed
  • ClearWin+: Regression fix: This was caused by spurious mouse_hover event (see 301) in %ib and affected use of SDBG in particular
  • ClearWin+: %lv was not working under Windows 7 when using the XP theme/manifest
  • ClearWin+: %ps was failing in a special case

Version 6.00

New Features:

  • Support for Visual Studio 2010
  • Support for .NET 4.0
  • A new compiler option /NO_TRUNCATE has been added.
  • ClearWin+: A new option [mouse_hover] has been added to %ib
  • ClearWin+: The standard callback COPY has now been implemented for %cw
  • ClearWin+: The local font given by %fn is now applied to %pb
  • ClearWin+: New library routines have been added to make it easier to use %eb[user_colours]
  • ClearWin+: Check boxes in %lv can now be set and reset under program control
  • ClearWin+: Mouse wheel messages are now available with %gr[full_mouse_input]
  • ClearWin+: GET_MULTIPLE_FILENAMES@ has been made available

Outline summary of bugs that have been fixed:

  • A specific test for character equality was failing with /FULL_UNDEF
  • There was a failure to flag a compilation error when a DO loop end control value is not a scalar.
  • The logical test in a WHERE statement was not failing as it should when there is a rank miss-match.
  • There was a false comment about a derived type not being used.
  • There was a failure to flag a compilation error when a certain array expression is a assigned to a scalar.
  • The FTN95 intrinsic LS could not be overloaded within a user MODULE.
  • A certain usage of ALLOCATE failed when applying /CHECK.
  • A certain function call in which an array section was passed did not return a value.
  • There was a false warning about "use without an initial value" for an array section in a READ statement.
  • There was a false runtime error when an array section was passed as an argument and the array has varying size.
  • An array assignment involving a member of a member of a user type failed to compile.
  • There was a false warning about an array member of a user type being redefined.
  • There was a Missing error report when SIZE is called for an assumed-size array.
  • The TRANSFER intrinsic was failing when passing a character variable and using /FULL_UNDEF.
  • FILL@ gave an internal compiler failure when only two arguments are supplied.
  • A certain piece of code using a vector subscript and INTEGER*2 was failing.
  • FILE8@ returned the file size modulo 4GB
  • ClearWin+: Two problems with the %eb horizontal scrollbar have been fixed

Version 5.50

New Features:

  • A new command line option /RAGGED_ARRAYS has been added for use with /CHECK and /CHECKMATE. This option prevents a runtime failure when a non-rectangular array is passed to a subprogram as is the case with some BLAS/LAPACK routines.
  • An optional new memory model in salflibc.dll has now been made the default. The environment variable FTN95_NEW_MEMORY can be set to FALSE in order to switch this off.
  • Plato is now fully integrated with SDBG when this feature is switched on in the Options dialog.
  • Plato can now print files using syntax colouring.
  • ClearWin+: A new option has been added for %cw called [local_font] that causes %cw to use the current %fn and %ts.
  • ClearWin+: A new option [popup] has been added to %gr so that a %pm menu appears with %gr[full_mouse_input].
  • ClearWin+: Additional keyboard characters have been added for %ac including plus (+) and minus (-) characters.
  • ClearWin+: A new CLEARWIN_INFO@ information string has been added: OPENGL_ALIVE

Outline summary of bugs that have been fixed:

  • Improved Windows 7 compatibility
  • Several issues that are generally seen on x64 operating systems with large amounts of RAM have been fixed. These issues manifested themselves as out-of-memory errors and unexplained floating point exceptions (that were in-fact underflows)
  • Fixed a problem with building on Windows 7/Windows Server 2008 and deploying lower versions of Windows where certain system functions could not be located in kernel32.dll.
  • /EXPLIST was failing when used with a large file and /CHECK.
  • When not using /LINK a bad object file was sometimes created despite reported compilation errors.
  • An access violation occurred when a constructor for a user defined type was assigned to an integer.
  • Windows NT text console commands (WCREATE@ et al) now function correctly on consoles with more than 50-lines of line buffer

Version 5.40

New Features:

  • Windows 7 compatibility
  • New comment embedded directive STDCALL added for use before an EXTERNAL statement.
  • New routine ENABLE_DEALLOCATE@ added to allow DEALLOCATE to be applied after ALLOCATE with SHARENAME.
  • New routine DOWNLOAD@ added. This is similar to READ_URL@ but reads into memory.
  • Many of the /CHECK features are now available when using /F_STDCALL.
  • ClearWin+: %ht now accepts JPEG images.
  • ClearWin+: %ht now uses a standard callback COPY_TEXT in order to copy all of the text in the current HTML page to the clipboard.
  • ClearWin+: %th now provides an option for Microsoft style context sensitive help.

Outline summary of bugs that have been fixed:

  • MODULE user defined type with array initialisation was not written to the MOD file.
  • /ALT_KINDS failed in subroutines.
  • Regression in Plato: /CLR_VER project option was not working.
  • There was a particular failure of INTEGER*8 with /CHECK.
  • /CONFIG failed to restore /CHECKMATE setting from config file.
  • /CONFIG failed to work under Windows Vista.
  • SYSTEM_CLOCK returned incorrect results for very fast processors.
  • Regression at 5.20: Type initialiser lead to offset error.
  • Regression at 3.40: There was a failure to parse "i+1" in B(i+1)%C = 0
  • Inconsistent pointer block in /CHECK argument.
  • ClearWin+: %si icons were not displayed correctly for non-standard DPI settings.
  • ClearWin+: %lv did not scroll initial selection into view.

Version 5.30

New Features:

  • C style preprocessing directives can now appear in the label field (except for #include).
  • New memory model used in salflibc.dll. Currently available for beta testing by setting an environment variable.
  • ALLOCATE extended to include SHARENAME keyword argument for Win32 inter-process shared memory and file mapping.

Outline summary of bugs that have been fixed:

  • The dialog box reporting runtime errors sometimes failed to appear.
  • NEAREST intrinsic did not always expanded correctly inline.
  • /CHECK failure when using a certain statement function.
  • A certain combination of using UBOUND with ALLOCATE failed.
  • ALLOCATE failure for array of CHARACTER type with elements of variable length.
  • ALLOCATE regression when using certain CHARACTER members in a TYPE definition within a MODULE.
  • Array of a derived TYPE with zero size not handled correctly by the compiler.
  • Problem with IBSET when used with pointers.
  • INTEGER*1 range problem with /CHECKMATE.
  • False error report when a certain subroutine was passed as an argument in a MODULE.
  • Array bounds check failed when the index was an array element.
  • Missing TARGET caused access violation in a particular construction.
  • False warning issued for a particular EQUIVALENCE statement.
  • Regression in DBK_LINK: vcLinkText@ etc. in Visual ClearWin samples, failed to link.
  • False /CHECK runtime failure when optional CHARACTER argument was absent.
  • Simple assignment to member of .NET class failed to pass JIT compiler.
  • Namelist with array slice gives "Digit(s) expected" error.

Version 5.21

  • Incorrect results in sorting algorithm
  • Regression with respect to recursive subroutine call
  • Compiler crash when taking substring of function returning a character string
  • /ISO should flag error when using REAL as a DO variable
  • Regression with respect to false warning about unreachable code
  • Win32 Visual Studio debugger crash on Windows Vista when debugging external DLLs
  • Custom build steps in Visual Studio plugin when installed to non-default location

Version 5.20.1

  • ALLOCATE regression in 5.20

Version 5.20

  • Support for Visual Studio 2008
  • Additional project support in Visual Studio 2005/2008. User folders can now be created in the solution explorer
  • Plato Version 4 now supports Unicode. Note that version 4 is not compatible with Windows 9x
  • Further support for Windows Vista and Windows Server 2008

The following is a summary of FTN95 bugs that have been fixed at version 5.20.

  • 'Compile' file in Visual Studio solution explorer behaviour fixed.
  • Further fixes and support for debugging under Vista.
  • False type warning when using REAL(COUNT(i)) as an argument.
  • Error not reported for array assignment with mismatched shapes.
  • ALLOCATE does not fail when size of block overflows.
  • /OLD_ARRAYS gives a false error report when A(1) is not an argument.
  • Missing "TYPE" in "END TYPE" causes a module to terminate prematurely.
  • Error not reported when named DO statement does not have matching ENDDO name.
  • OPENF@ not working under .NET.
  • NINT(AR,1) fails for two-dimensional array AR.
  • PRIVATE not implemented when member is used in module.
  • Initialisation of TYPE members within a MODULE fails for large arrays.
  • "Operand incompatible with opcode" failure on integer*1 = integer*4 assignment.
  • USE ONLY f=>g does not link when the function g is declared in another module.
  • Compiler crashes when writing linker data for a certain module.
  • Warning about unreachable code not provided in /DEBUG mode.
  • SUM intrinsic used as argument for DOT_PRODUCT does not compile.
  • IBITS not working for INTEGER*8.
  • /CONVERT not working.
  • IACHAR not available in array initialisation implied DO loop.
  • Explicit declaration needed for a function used on RHS of a statement function.
  • False warning when compiler-defined constant is not used.

The following changes has been made:

  • Use of ALLOCATABLE in TYPE declaration is now tollerated though not standard conforming.

Version 5.10

  • /WIDE_SOURCE limit increased to 1024 characters per line.
  • GET_COMMAND_ARGUMENT intrinsic function, character limit increased from 128 to 256.
  • Improved compatibility with AMD Geode range of processors
  • Improvide Vista support from SDBG and Visual Studio Win32 debugger

The following is a summary of FTN95 bugs that have been fixed at version 5.10.

  • Poor error report when MAX is used with an array argument.
  • .NET false error report about miss-matched argument types in function call.
  • False warning with ALLOCATE, statement will not be executed.
  • ABS not implemented for INTEGER*8.
  • Missing error report when trying to use JUMP@ under .NET.
  • Some array sections not checked at runtime for shape conformance.
  • Another .NET false error report about miss-matched argument types.
  • Operand incompatible with opcode failure with particular use of TRANSFER intrinsic.
  • False warning, RESULT not set in certain recursive function definitions.
  • Character variable in a particular WHERE test gives internal compiler error.
  • An INCLUDE statement corrupts some CONTAINed subroutines.
  • False error report for certain internal PURE routines.
  • FORALL statement using SUM intrinsic fails to initialise correctly.
  • User-defined assignment was not implemented in the context of an paricular array assignment.

Version 5.01

  • Regression in Plato3 fixed: Problem with project file list and dependency checking.
  • Regression in FTN95 fixed: Arrays were not correctly initialised (i.e. simultaneously declared and initialised) in modules.
  • In some circumstances the Visual Studio 2005 integration was not fully installed and theefore not fully functional.
  • Arguments are now passed to the debugee when using the Visual Studio debugger in Win32 mode

Version 5.00

  • NEW FEATURE: Visual Studio 2005 integration.
  • NEW FEATURE: Microsoft .NET 2.0 compatibility.

The following is a summary of FTN95 bugs that have been fixed at version 5.00.

  • REPEAT intrinsic has 32K limit on second argument.
  • Illegal memory reference bug in matrix reallocation program.
  • UNDEF failure with OPTIONAL character argument.
  • Register tracking failure over INVOKE.
  • Use of /PROFILE can cause incorrect function return.
  • Missing label not reported when followed by CONTAINS.
  • Recovery from underflow is not automatic for Win64.
  • <= is not parsed correctly in some situations.
  • Particular use of User-defined == operator fails.
  • Optional INTENT(OUT) causes runtime failure with FULL_UNDEF.
  • Initialisation fails with TARGET and UNDEF.
  • Regression at 4.9. Assigned GOTO does not work in fixed format.
  • Regression at 4.9. Access violation when reading a MODULE.
  • BIT_SIZE does not work for 64 bit integers.
  • SIZE = len fails in READ statement.
  • INTENT(IN) does not prevent assignment via a READ statement.
  • Incorrect result for a particular use of the TRANSFER function.
  • Incorrect result for a complex arithmetic calculation.
  • Size of .NET debug information reduced

Version 4.91

  • An assigned GOTO with array value failed to compile.
  • An access violation occurred when reading a certain TYPE from a module.
  • Changes essential for using /F_STDCALL

Version 4.90

  • NEW FEATURE: /LOCAL_ZERO added for .NET only. Like /ZEROISE but for local variables. Cannot be used with /UNDEF.
  • NEW FEATURE: Size of /UNDEF executable reduced for .NET MODULE containing large array.
  • NEW FEATURE: Size of .NET DLL reduced when it contains a large MODULE array.
  • NEW FEATURE: NET OBJECTs can now be initialised when declared.
  • NEW FEATURE: REAL assigned to hexadecimal value now generates a warning.
  • NEW FEATURE: /F_STDCALL option added for Win32

The following is a summary of FTN95 bugs that have been fixed at version 4.9.

  • Missing member initialation in array elements of user-defined TYPE.
  • INQUIRE(PAD=...) missing.
  • Runtime problem with SHAPE intrinsic - arrays erroneously reported as not conforming.
  • Corrupt header of very large record in unformatted IO.
  • INTEGER i = 'F' does not generate warning or code for .NET.
  • /OPT failure with benchmark test
Copyright © 1999-2022 Silverfrost Limited