Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Olden days of Fortran question

JohnNichols
Valued Contributor III
4,058 Views
IF(IT.LE.49) GO TO 476                    !   00335000

    WRITE(*,70107)                       !   00336000
70107 FORMAT(" ","CONVERGENCE FLAG: UNABLE TO ACHIEVE SATISFACTORY CLUST1ERS AFTER 50 ITERATIONS.")     !   00338000

476 WRITE(6,466)                        !   00339000
466 FORMAT(" ",//," NO. OF CLUSTERS",3X,"PART. COEFF.",5X,"LOWER BOUND",5X,"ENTROPY",5X,"NUMBER OF ITERATIONS")

I have been programming Fortran since 1978, I have seen the ! 0033500 numbers before - but what were they for? 

Did these olden day folk, always use the if ..... goto ... instead of a proper if   then else etc... 

 

0 Kudos
27 Replies
JohnNichols
Valued Contributor III
912 Views

@TonyRichards  commented :

I liked the GO TO and agree depths of IFs, Elseifs endifs can be difficult to interpret at times.

--------------------

This latest Fuzzy Means has some hard to follow goto statements so cleaning those up has made a world of difference.  

 

--------------------------------------------------------

The other problem is for a short program if you have a read statement and you include a end section, then you have code such as 

 

  goto 2100

2000 Stop 'End of file'
2100 continue

    END  ! of test program

this to get around the end line.  Any suggestions on improvement would be welcome.  If you put the read in a subroutine you can use the return to screen off the 2000 statement, but not in main.  

0 Kudos
ripittard
New Contributor I
872 Views

I too learned Fortran IV with punched cards.  The punching machines were always busy.  One day I found one that was opened and spent several hours typing my program.  I then waited for the results after submiiting the card deck only to find that I had used an EBCDIC punch machine instead of BCD and had to repeat that proecess on a correct punch.

0 Kudos
JohnNichols
Valued Contributor III
861 Views

When I was much younger and I was setting up the offices first systems, ethernet did not exist at our level, I can remember people making interesting mistakes, people sitting staring at computers and very frustrated, tears were common. 

 

Solution pull the power cord, and say, God can be terrible, you are fine, just do it again.  Never had the same mistake twice from the same person.  

We all make mistakes.  

Of course if one wants an introduction to the 15th century inquisition techniques ask IT a question about policy. 

 

Current examples:

1. We only use Teams

2. We use Zoom I sent you a link a week ago

3. We cannot hear you, two weeks later you find out your ________ camera is not supported in drivers any longer

4. We want you to buy this computer for your office, I prefer XYZ, we do not - turns out theirs has a few interesting issues, read it is a goto statement to a statement on an old deck.

5. You cannot use Intel Fortran it is not on the approved list -- me it is Intel and FORTRAN - them so what is Fortran

6. No you cannot come into our office -- we have a number pad for approved entry -- send them the code a week later and tell them to cover the pad.

7. I could go on - ps feel free to add to the list

8. Daughter - Ba be - she speaks Chinese ba ba is (Dad) -- why is the TV so slow - I explain wifi and Firestick, she says can you fix it. 

9. yes I suppose so -- buy a ____________ from ________ hard wire the TV in and she is so happy.  Sometimes copper is wonderful. 

 

0 Kudos
jimdempseyatthecove
Honored Contributor III
904 Views
 2100  IF(MyErrorCode .NE. 0) STOP "Program error"
       END

Jim Dempsey

0 Kudos
JohnNichols
Valued Contributor III
899 Views
for_iosdef.for

 

Have you ever used this for file? 

I had never used iostat on read, thank you, I should have thought of that.  

0 Kudos
Ibrahim_K_
New Contributor I
747 Views

I started with FORTRAN IV in 1966. Then I switched to other languages in the 90s. About 4 years ago, I had to reopen an old project with 20,000 lines of FORTRAN IV code. With help from this forum and many silly questions (especially Steve and others), I was able to get into it. First, I linked the FORTRAN code with C++ and CLI and created a DLL. I connect to the DLL from C#. In 2021, I decided to convert all FORTRAN code in this project to C++. I finished it few months ago.

I am attaching few graphics output from the program. Please contact me if anyone interested in my final product (gratis of course) or in my experiences during this process.

Happy holidays ....

I. Konuk

Ian_K_
New Contributor I
705 Views

My memories of FORTRAN start in the early 1960's when as a graduate student at UC Berkeley I progressed from an IBM 704  to an IBM 7090 to an IBM 7094.  I had come from Cambridge in 1960 with very basic training in computers because the computer was broken for the entire term that the course was held.  In those early times we booked computer access and ran live sessions with a 5 card loader before our actual program and results came straight to the printer.  Initially we used a machine language which meant a rewrite as the language evolved with each new machine.   Thus, reluctantly (because we believed that machine languages would always be faster - how wrong we were), we moved to FORTRAN and I am still actively using it 60 years later.  As for speeds we have moved from being happy with solving a few hundred equations once to solving  hundreds of thousands of equations many times.  As others have observed FORTRAN was often derided especially in Europe where ALGOL supposed to be much superior.

On interesting note on the subject of punched cards.  In 1970 I was sent on a 6 month UN based assignment to apply a simulation model in Warsaw Poland.  After some wrangling we were able to gain access to a Russian computer in a car factory for 2 sessions a week.  One of our issues for the first 3 months was that the only available card punch was in the factory and we could only get access just before our allocated time.  Thus after a factory session we returned with the printed output to our office and were forced to use a single hole punch to correct our mistakes.  We carefully punched out a single chad as needed in a particular row and column.  If we made a mistake we taped in a chad at the offending location and used a card copier to create a new restart point.  Needless to say out progress in that 6 months was short of the project plan and I was back in Poland for a short stint a year later.

0 Kudos
Reply