What’s New in Flint’s Version 7 core

 

Fortran-lint support maps well to compiler capability, non-object-oriented, for Fortran 2003/2008.

New changes in v7 are in bold.

 

Language Additions

·     BLOCK construct (F08)

·     VALUE statement and attribute

·     VOLATILE statement and attribute

·     Pointer objects can now have the INTENT attribute

·     Symbol names up to 63 characters

·     Statements up to 256 lines (16,000 character limit for Flint)

·     Square brackets [ ] are permitted to delimit array constructors in addition to previous standard / /

·     Binary, Octal, and Hex (BOZ) constants to intrinsic functions INT,  REAL, DBLE, and CMPLX

 

Intrinsics

·     ISO_C_BINDING

·     ISO_FORTRAN_ENV

·     IEEE_ARITHMETIC

·     IEEE_EXCEPTIONS

·     IEEE_FEATURES

·     BIND statement and attribute

·     Language binding can be specified in FUNCTION, SUBROUTINE, and ENTRY  statements

·     INTRINSIC and NON-INTRINSIC can be specified for modules in USE statements

·     GET_COMMAND, GET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT, and

·     GET_ENVIRONMENT_VARIABLE intrinsics

·     F08 COMPILER_OPTIONS and COMPILER_VERSION intrinsic functions

·     Updated MAXLOC and MINLOC to the F03 standard

·     Updated WHERE construct to the F03 standard

·     Character arrays may now be supplied to

-         MAXLOC, MINLOC

-         MAXVAL, MINVAL

·     KIND= argument may be supplied to

-         ACHAR, IACHAR, ICHAR

-         LEN, LEN_TRIM

-         MAXLOC, MINLOC


I/O

·     FLUSH statement

·     WAIT statement (with ASYNCHRONOUS/ASYNCH and DONE extensions from IBM)

·     ASYNCHRONOUS statement and attribute

·     The following I/O specifiers have been added or updated to the F03 standard: ACCESS, ASYNCHRONOUS (along with ASYNCH alias, an IBM extension), BLANK, DECIMAL, DELIM, ENCODING, ID, IOMSG, PAD, PENDING, POS, RECORDTYPE (DEC, HP, Intel extension) ROUND, SIGN, SIZE, and STREAM

·     F08 I/O specifier NEWUNIT

·     Any KIND is permissible with integer specifiers (SIZE, NEXTREC, etc.)

·     Intrinsic functions IS_IOSTAT_END, IS_IOSTAT_EOR

·     Comma after a P-edit descriptor is optional when followed by a repeat

·     NEW_LINE intrinsic function

·     SELECTED_CHAR_KIND intrinsic function

·     F08 extension to SELECTED_REAL_KIND intrinsic function

 

Other Additions/Improvements

·     Complete MPI interface definition using stubs for thorough interface analysis and variable tracking (see section 9.2 for stub information)

·     Complete NetCDF interface definition (F77 format)

·     A new command line switch  -o "message_format" to change the format of Flint’s analysis messages, suitable for interfacing to IDE/ editor such as Visual Studio

·     New analyses, for a total of 871 unique messages and 1519 scenarios where these messages can be applied

·     Improved pointer handling

·     New xref legend item, ‘C’ for “assoCiated

·     Extensive bug fixes

·     Various operational enhancements

 

User Interface Changes to Note

·     Separator for cross reference (xref) content selection is now ‘.’ instead of ‘_’; see Section 8.4 of flintman.pdf.  Prior versions of Flint retain the old syntax.