图10.4给出一个FORTRAN 77的程序例子。在图10.5中描述了该程序中局部变量的静态存储位置。
图10.4 一个FORTRAN 77的例子 |
(1) PROGRAM CNSUME
(2) CHARACTER * 50 BUF //程序体所拥有的静态量BUF
(3) INTEGER NEXT //程序体所拥有的静态量NEXT
(4) CHARACTER C, PRDUCE //程序体所拥有的静态量C
(5) DATA NEXT /1/, BUF / ' ' /
(6) 6 C=PRDUCE()
(7) BUF(NEXT:NEXT)=C
(8) NEXT=NEXT+1
(9) IF(C .EN. ' ' )GOTO 6
(10) WRITE ( *,' (A)' )BUF
(11) END
(12) CHARACTER FUNCTION PRDUCE()
(13) CHARACTER * 80 BUFFER
(14) INTEGER NEXT
(15) SAVE BUFFER, NEXT
//PRDUCE函数体所拥有的静态量BUFFER, NEXT
(16) DATA NEXT /81/
(17) IF (NEXT .GT.80)THEN
(18) READ ( *,' (A)' )BUFFER
(19) NEXT=1
(20) END IF
(21) PRDUCE=BUFFER(NEXT:NEXT)
(22) NEXT=NEXT+1
(23) END |
图10.5 FORTRAN77的静态存储分配 |
 |
|