Table of Contents

Previous: Limitations and Extensions


New Features

Here are the changes from Version 2.10 to Version 2.11:
    .
  1. New checks for aliasing of subprogram arguments to other arguments and to COMMON variables. These warnings are controlled by new options -usage=arg-alias , -usage=arg-array-alias , -usage=arg-common-alias , and -usage=arg-common-array-alias . Note: These new checks necessitated a change in project-file format, so project files created with earlier versions of ftnchek are incompatible and will need to be re-created.
  2. .
  3. Added a new setting: -errors= num that sets the limit on the number of error messages in a ``cascade,'' formerly fixed at 3.
  4. .
  5. Changed the following options from numeric to option-list form: -arguments , -array , -calltree , -common , -makedcls , and -source . The earlier numeric form is still accepted, but the newer forms give more detailed control over warnings.
  6. .
  7. Fixed bug: an INCLUDE file specified using a relative path is now searched for relative to the directory of the source file (before searching in the directories given by -include ). Previously it was searched for relative to the working directory of the ftnchek process. (The new code is fully correct only for Unix; for VMS and MS-DOS/Windows the code may have some loopholes that I am unaware of, while for MacOS and other OSes, it is not attempted. I would appreciate assistance from anyone who has experience writing such code for these other OSes.)
  8. .
  9. The Fortran 90 DO ... ENDDO construct, as well as the CYCLE and EXIT statements, are now fully supported, including construct names. Construct names are also accepted on IF , THEN , ELSE , and ENDIF statements. Warnings about the use of construct names is controlled by a new flag -f77=construct-name .
  10. .
  11. Added recognition of the Fortran 90 relational operators < <= == /= > >= . Warnings about use of these is controlled by a new flag -f77=relops .
  12. .
  13. Added checking for embedded space in multi-character operators such as // . This warning is controlled by the existing flag -pretty=embedded-space .
  14. .
  15. Changed the treatment of DEC-Fortran style PARAMETER statements (which lack parentheses) so that the parameter's data type is that of the value assigned, rather than being given by the first letter of the parameter name. (Thanks to Richard Maine for his illuminating discussion of this issue on comp.lang.fortran, 11 July 1999.) The treatment can be made to follow the same rule as standard parameters by the flag -source=dec-parameter-standard-type .
  16. .
  17. Fixed bug in handling of #line directives that caused erroneous line numbers and file names to appear in error messages.
  18. .
  19. Fixed bug that could cause erroneous warnings saying ``Subprogram %MAIN multiply defined''.
  20. .
  21. Fixed the listing of common block references generated by -crossref , so that the blocks are listed in alphabetical order. Previously the modules referencing each block were sorted, but the blocks themselves were printed in the order of occurrence in the source file.
  22. .
  23. Added recognition of Fortran-90 I/O keywords and one IBM/MVS I/O keyword, as described above in the documentation of the -f77 flag. Definitions of these keywords, ready for iokeywds.h, were kindly provided by Jean-Pierre Rouits. New warning options for these are -f77=io-keywords and -f90=io-keywords to warn about non-F77 and non-F90 I/O keywords respectively.
  24. .
  25. Changed the Makefile target for installing man pages under SGI IRIX, so that hopefully it will do the right thing on current as well as older versions of that system. Users of IRIX are invited to send corrections if it is still not right.
  26. .
  27. Unbundled shell_mung.c from the distribution, due to a license conflict. This file is only needed for the VMS version, and is available separately.
  28. .
  29. Fixed minor bug in creation of project files that could cause slight variations in results depending on whether the project file was created in an ftnchek run that processed multiple source files as opposed to being created in individual runs.


Next: Bugs