Lahey/Fujitsu Fortran

SAVE Statement


The SAVE statement specifies that all data objects listed retain any previous association, allocation, definition, or value upon reentry of a subprogram.


SAVE [[::] saved-entities]

saved-entities is a comma-separated list of:

object-name /common-block-name/

object-name is the name of a data object.

common-block-name is the name of a common block.


Objects declared with the SAVE attribute in a subprogram are shared by all instances of the subprogram.

The SAVE attribute must not be specified for an object that is in a common block, a dummy argument, a procedure, a function result, or an automatic data object.

A SAVE statement without a saved-entities list specifies that all allowable objects in the scoping unit have the SAVE attribute.

If a common block name appears in a SAVE statement other than in the main program, it must be have the SAVE attribute in every scoping unit in which the name appears.

A SAVE statement in a main program has no effect.


subroutine sub1() logical,save :: first_time=.true. ! save attribute integer :: saveval save :: saveval ! save statement if(first_time) then ! do initializations first_time=.false. saveval=1 end if saveval=saveval+1 ! value is preserved end subroutine