KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q130471: PRB: EXTERN Attribute Prevents F4999 on Unreferenced Function

Article: Q130471
Product(s): Microsoft Fortran Compiler
Version(s): 1.0,1.0a,4.0,5.1
Operating System(s): 
Keyword(s): kbcode kbLangFortran
Last Modified: 02-NOV-1999

-------------------------------------------------------------------------------
The information in this article applies to:

- Microsoft FORTRAN Compiler for MS-DOS, version 5.1 
- Microsoft FORTRAN PowerStation for MS-DOS, versions 1.0, 1.0a 
- Microsoft Fortran Powerstation 32 for Windows NT, versions 1.0, 4.0 
-------------------------------------------------------------------------------

SYMPTOMS
========

A function that is defined using the INTERFACE TO statement and that includes
the return type declaration but that is not called from within a program causes
the compiler to generate this warning message:

  warning F4999: <symbol> : variable declared but not used

Or for Fortran PowerStation 4.0:

  warning FOR4270: unused symbol

CAUSE
=====

The compiler is correct to report that <symbol> is not being used. This
problem usually occurs when using a library of functions or subroutines. The
library needs to have INTERFACE TO statements and function declarations for all
routines in the library. An application may not need to call every function
contained in the library. Any functions that are defined but not called result
in the warning.

RESOLUTION
==========

When declaring a function, use the EXTERN attribute as in the following code
sample.

Sample Code
-----------


  C  INTERFACE TO usually in .FI
        INTERFACE TO INTEGER*4 FUNCTION Func(I)
        INTEGER*4 I [VALUE]
        END

  C  Declaration usually in .FD (remove [EXTERN] to get the F4999)
        INTEGER*4 Func [EXTERN]

  C  Start of program
        PRINT *, 'Hello'
        END

  C  Body of function possibly somewhere else
        INTEGER*4 FUNCTION Func(I)
        INTEGER*4 I [VALUE]
            Func = I + 7
        END

STATUS
======

This behavior is by design.

Additional query words: 5.00 5.10 1.00 1.00a 4.00

======================================================================
Keywords          : kbcode kbLangFortran 
Technology        : kbAudDeveloper kbFortranSearch kbZNotKeyword2 kbZNotKeyword3 kbFORTRAN510DOS kbFORTRANPower32100NT kbFORTRANPower32400NT kbFORTRANPower100DOS kbFORTRANPower100aDOS
Version           : :1.0,1.0a,4.0,5.1

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.