Silverfrost FTN95 Changelog

What's new in Silverfrost FTN95 8.95

Nov 13, 2023
  • New Features:
  • Fortran 2008 Standard intrinsic ATAN(Y,X).
  • Fortran 2008 z%re and z%im for complex z.
  • Fortran 2008 Standard intrinsic HYPOT(X,Y).
  • Fortran 2008 FINDLOC (but not KIND and BACK arguments).
  • Fortran 2003 Allocate on assignment for CHARACTER variables.
  • Fortran 2003 Allocate on assignment for PACK and RESHAPE intrinsics.
  • Cast to CHARACTER(LEN=n) or to REAL within an array constructor.
  • Fortran 2003 SOURCE keyword for the ALLOCATE statement (arrays only).
  • ClearWin+: scaling option added to %th
  • ClearWin+: SET_CONTROL_TEXT@ allows the setting of placeholder text in a text control
  • ClearWin+: %pr has been added as an alternative way to provide placeholder text
  • ClearWin+: change_plot_chr@ can now take the option "scale" in order to change to and from logarithmic scaling for %pl
  • ClearWin+: A new subroutine send_accelerator@ has been added
  • Outline summary of some of the bugs that have been fixed:
  • Outline summary of some of the bugs that have been fixed:
  • Last character was being omitted in a list-directed READ.
  • Missing error report for READ and OPEN(BLANK='ZERO').
  • Isolated errors in ISHFT and ISHFTC.
  • INQUIRE(IOLENGTH) was giving an incorrect result.
  • No warning was provided when calling a routine with optional arguments and no interface.
  • No warning was provided for a miss-matched interface.
  • There was a failure to save very large (>2GB) arrays for 64 bit FTN95.
  • There was a failure when passing a host and allocatable array to a CONTAINed routine.
  • /CHECK was giving a false runtime error for a subroutine passed as an argument.
  • SUM and PRODUCT using an assumed-size array was not flagged as an error at compile time.
  • COMPILER_VERSION and COMPILER_OPTIONS were not working within a CONTAINed routine.
  • Some bugs for UNFORMATTED STREAM I/O have been fixed.
  • EXTERNAL attribute for a CONTAINed routine was not flagged.
  • /64 /UNDEF was giving an incorrect line number in a certain context.

New in Silverfrost FTN95 8.70 (Nov 21, 2020)

  • 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.

New in Silverfrost FTN95 8.61 (Jun 24, 2020)

  • 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

New in Silverfrost FTN95 8.50 (Jan 1, 2020)

  • 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.

New in Silverfrost FTN95 8.40 (May 3, 2019)

  • 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 %cm 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

New in Silverfrost FTN95 8.30 (Nov 26, 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

New in Silverfrost FTN95 8.10 (Oct 12, 2017)

  • 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

New in Silverfrost FTN95 8.05 (Jun 21, 2016)

  • 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 http://fortranwiki.org/fortran/show/bessel_j0.
  • _WIN32 and _WIN64 are prefined 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+: �[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.
  • 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.

New in Silverfrost FTN95 8.00 (Jun 21, 2016)

  • 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.

New in Silverfrost FTN95 7.20 (Jan 13, 2016)

  • 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+: �[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 �%rd. This has been fixed.

New in Silverfrost FTN95 7.10 (Jan 3, 2015)

  • 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 � 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.

New in Silverfrost FTN95 7.00 (Nov 21, 2013)

  • 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
  • �[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.

New in Silverfrost FTN95 6.35 (Nov 21, 2013)

  • 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+: �[INS] regression fixed. Also �[Ctrl+H] and �[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

New in Silverfrost FTN95 6.30 (Nov 21, 2013)

  • 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.

New in Silverfrost FTN95 6.20 (Nov 21, 2013)

  • 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+: �%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@

New in Silverfrost FTN95 6.10 (Nov 21, 2013)

  • 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 � 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