What Does This Fortran Statement Do?

  • Thread starter Thread starter dibloff
  • Start date Start date
AI Thread Summary
The discussion centers on understanding an arithmetic IF statement in Fortran 77, specifically the line "IF(PMAX-P(I))16,16,17." The statement checks if the difference between PMAX and P(I) is less than or equal to zero. If true, it jumps to label 16, where PMAX is updated to P(I) and ICAMAX is set to the index I. If false, it continues to label 17. This type of IF statement is largely outdated and has been replaced by more modern constructs like IF/THEN/ELSE in later Fortran versions. The original poster expresses confusion over the logical implications of the arithmetic IF, particularly regarding the variable types involved, but receives clarification that the statement effectively serves the same purpose as a standard conditional check.
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.
 
Technology 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.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I had a Microsoft Technical interview this past Friday, the question I was asked was this : How do you find the middle value for a dataset that is too big to fit in RAM? I was not able to figure this out during the interview, but I have been look in this all weekend and I read something online that said it can be done at O(N) using something called the counting sort histogram algorithm ( I did not learn that in my advanced data structures and algorithms class). I have watched some youtube...

Similar threads

Replies
4
Views
2K
Replies
16
Views
2K
Replies
9
Views
2K
Replies
6
Views
2K
Replies
18
Views
17K
Replies
4
Views
16K
Replies
2
Views
2K
Replies
4
Views
17K
Back
Top