What Does This Fortran Statement Do?

  • Context: Fortran 
  • Thread starter Thread starter dibloff
  • Start date Start date
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 3K views
dibloff
Messages
10
Reaction score
0
Hi Community!

I'm wondering what this Fortran statement does, per your opinion:

IF(PMAX-P(I))16,16,17
16 PMAX=P(I)
ICAMAX=I
17 CONTINUE

This was done in Fortran 77. I'm trying to convert it to VB, and I Google-d it, researched it, but it's hard to understand. The IF statement looks for PMAX-P(I) to be TRUE, which makes no sense cause the variable type for PMAX & P(I) are both REAL, therefore their difference will be REAL too, and not LOGICAL. Then there is this 16,16,17… I guess it’s checking if PMAX-P(I) is zero, if it not zero, then it’ll execute label 16, which will force their difference to be zero.
Does anybody know what 16,16,17 suppose to do? Maybe there is an hidden option for IF statement like this: IF(blablabla)>0,<0,0

Thank you

A.
 
Physics news on Phys.org


This would be hard to find with google unless you knew it is called an arithmetic if statement. http://www-linac.kek.jp/cont/langinfo/web/Fortran/docs/lrm/lrm0128.htm

This was the only type of IF statement in early versions of Fortran, but after the IF/THEN/ ELSE statement was added, it is hardly ever used.

Your example means the same as

IF (PMAX .LE. P(I)) THEN
PMAX=P(I)
ICAMAX=I
ENDIF
 


Alephzero

Thanks a lot. This makes completely perfect sense.

A.