- #1

- 5

- 0

## Main Question or Discussion Point

I would like to change the start integer for a DO-loop each time the DO runs as a result of the calculations of the previous iteration. For example the first time the DO runs it should start at 1, the second time at 33, the third time at 60. The numerical value for the end of the loop stays the same. I have tried to change the iterator dynamically as can be seen in the code below, but the g77 gives an error.

ACS = 1

NUME = 0

DO 12, AC = ACS,NH

IF (VI(AC) .NE. 100.0) THEN

VF(AC) = VI(AC)

GOTO 12

ELSEIF (VI(AC) .EQ. 100.0) THEN

DO 80,AB = AC,AC+24

IF (VI(AB) .EQ. 100) NUME = NUME + 1

IF (VI(AB) .NE. 100) GOTO 81

80 CONTINUE

81 IF ((VI(AC-1)- VI(AC+NUME)) .GT. 0.0) THEN

DO 77, VAL = AC,AC+NUME+1

VF(VAL)=VI(AC)-((VI(AC-1)-VI(AC+NUME))/(NUME+1))

77 CONTINUE

ELSEIF ((VI(AC-1)- VI(AC+NUME)) .LT. 0.0) THEN

NUM = 0

DO 99, VAL = AC,AC+NUME-1

NUM = NUM + 1

VF(VAL)=VF(AC+NUM-2)+((VI(AC+NUME)-VI(AC-1))/(NUME+1))

AC = VAL -1 <=== compiler error

99 CONTINUE

How can I modify AC without getting a compiler error or is an alernative logic necessary??

ACS = 1

NUME = 0

DO 12, AC = ACS,NH

IF (VI(AC) .NE. 100.0) THEN

VF(AC) = VI(AC)

GOTO 12

ELSEIF (VI(AC) .EQ. 100.0) THEN

DO 80,AB = AC,AC+24

IF (VI(AB) .EQ. 100) NUME = NUME + 1

IF (VI(AB) .NE. 100) GOTO 81

80 CONTINUE

81 IF ((VI(AC-1)- VI(AC+NUME)) .GT. 0.0) THEN

DO 77, VAL = AC,AC+NUME+1

VF(VAL)=VI(AC)-((VI(AC-1)-VI(AC+NUME))/(NUME+1))

77 CONTINUE

ELSEIF ((VI(AC-1)- VI(AC+NUME)) .LT. 0.0) THEN

NUM = 0

DO 99, VAL = AC,AC+NUME-1

NUM = NUM + 1

VF(VAL)=VF(AC+NUM-2)+((VI(AC+NUME)-VI(AC-1))/(NUME+1))

AC = VAL -1 <=== compiler error

99 CONTINUE

How can I modify AC without getting a compiler error or is an alernative logic necessary??