WARNING: This example assumes spaces are ignored for the I and F descriptors. 
         1    1    2    2    3    3    4
....5....0....5....0....5....0....5....0
10
Jon Rokne                100  95   98
Mukesh Prasad            78   89   82
Jack Morrison            94   98   95
Ken Musgrave             100  100  96
Douglas Voorhies         87   95   89
Dale Schumacher          76   85   73
John Schlag              56   62   50
James Hall               60   78   84
Alan Lindgren            85   77   86
Robert Bogart            94   100  86
Write a Fortran program that reads in the above input, computes the
average of each student, the average of each test score and the class
average, and prints the following table:
         1    1    2    2    3    3    4    4    5    5    6
....5....0....5....0....5....0....5....0....5....0....5....0
 Name                       Score1  Score2  Score3  Average
 =========================  ======  ======  ======  =======
 Jon Rokne                     100      95      98    97.67
 Mukesh Prasad                  78      89      82    83.00
 Jack Morrison                  94      98      95    95.67
 Ken Musgrave                  100     100      96    98.67
 Douglas Voorhies               87      95      89    90.33
 Dale Schumacher                76      85      73    78.00
 John Schlag                    56      62      50    56.00
 James Hall                     60      78      84    74.00
 Alan Lindgren                  85      77      86    82.67
 Robert Bogart                  94     100      86    93.33
 =========================  ======  ======  ======  =======
 Average                     83.00   87.90   83.90    84.93
Note that the first position is always for printer control.  Note also
that we do not know the number of salespersons.
PROGRAM  Input_1
   IMPLICIT  NONE
   CHARACTER(LEN=25) :: Name, ClassAverage
   CHARACTER(LEN=30) :: FormatIn, FormatOut, FormatAvg
   INTEGER           :: Number, i
   INTEGER           :: Score1, Score2, Score3
   REAL              :: Average
   REAL              :: Score1Avg, Score2Avg, Score3Avg, ClassAvg
   FormatIn  = "(A25, 3I5)"
   FormatOut = "(A, A25, 3I8, F9.2)"
   FormatAvg = "(A, A25, 3F8.2, F9.2)"
   WRITE(*,"(2A)")  " ", "Name                       Score1  Score2  Score3  Average"
   WRITE(*,"(2A)")  " ", "=========================  ======  ======  ======  ======="
   ClassAverage = "Average"
   Score1Avg    = 0.0
   Score2Avg    = 0.0
   Score3Avg    = 0.0
   READ(*,*)  Number
   DO i = 1, Number
      READ(*,FormatIn)  Name, Score1, Score2, Score3
      Average = REAL(Score1 + Score2 + Score3) / 3.0
      WRITE(*,FormatOut)  " ", Name, Score1, Score2, Score3, Average
      Score1Avg = Score1Avg + Score1
      Score2Avg = Score2Avg + Score2
      Score3Avg = Score3Avg + Score3
   END DO
   Score1Avg = Score1Avg / Number
   Score2Avg = Score2Avg / Number
   Score3Avg = Score3Avg / Number
   ClassAvg  = (Score1Avg + Score2Avg + Score3Avg) / 3.0
   WRITE(*,"(2A)")     " ", "=========================  ======  ======  ======  ======="
   WRITE(*,FormatAvg)  " ", ClassAverage, Score1Avg, Score2Avg, Score3Avg, ClassAvg
END PROGRAM  Input_1
Click here to download this program.
         1    1    2    2    3    3    4    4    5    5    6
....5....0....5....0....5....0....5....0....5....0....5....0
 Name                       Score1  Score2  Score3  Average
 =========================  ======  ======  ======  =======
 Jon Rokne                     100      95      98    97.67
 Mukesh Prasad                  78      89      82    83.00
 Jack Morrison                  94      98      95    95.67
 Ken Musgrave                  100     100      96    98.67
 Douglas Voorhies               87      95      89    90.33
 Dale Schumacher                76      85      73    78.00
 John Schlag                    56      62      50    56.00
 James Hall                     60      78      84    74.00
 Alan Lindgren                  85      77      86    82.67
 Robert Bogart                  94     100      86    93.33
 =========================  ======  ======  ======  =======
 Average                     83.00   87.90   83.90    84.93
Does this work? The answer is . It does not print the report in the specified way. The result is:WRITE(*,FormatAvg) " ", "Average", Score1Avg, Score2Avg, Score3Avg, ClassAvg
         1    1    2    2    3    3    4    4    5    5    6
....5....0....5....0....5....0....5....0....5....0....5....0
 Name                       Score1  Score2  Score3  Average
 =========================  ======  ======  ======  =======
 Jon Rokne                     100      95      98    97.67
                           :
                           :
                           :                                                 
 Robert Bogart                  94     100      86    93.33
 =========================  ======  ======  ======  =======
                   Average  83.00   87.90   83.90    84.93
          More precisely, the alignment is incorrect.  Here is the reason:
          Since "Average" is of length 7 and is printed with
          A25, it is printed 
          right-justified.  Please refer 
          to the CHARACTER Output for
          the details.  In the program above, we use assignment.  Since
          ClassAverage is of length 25, 18 spaces are appended
          when "Average" is assigned into ClassAverage.