WARNING: This example assumes spaces are ignored for the I and F descriptors and the output is sent to a printer. 
Suppose we have an input like the following. The first line gives the number of input values. Each of the input line has five fields with 10 positions each.
         1    1    2    2    3    3    4    4
....5....0....5....0....5....0....5....0....5
17
13.5      17.23     9.0       20.9      23.0
16.3      15.9      21.5      14.78     18.5
16.54     13.67     10.78     9.5       13.2
19.6      20.0
Write a Fortran program that reads in the above input, computes the
2-moving average, and prints the following two-column table:
         1    1    2    2    3    3    4    4    5
....5....0....5....0....5....0....5....0....5....0
             **************************
             *  Data Smoothing Table  *
             **************************
  No       x         y      No       x         y
 ---  --------  --------   ---  --------  --------
   1     13.50        NA     2     17.23     15.36
   3      9.00     13.11     4     20.90     14.95
   5     23.00     21.95     6     16.30     19.65
   7     15.90     16.10     8     21.50     18.70
   9     14.78     18.14    10     18.50     16.64
  11     16.54     17.52    12     13.67     15.11
  13     10.78     12.23    14      9.50     10.14
  15     13.20     11.35    16     19.60     16.40
  17     20.00     19.80
Suppose the input values are x(1), x(2) and so on.
The 2-moving average is computed as follows: y(1)=(x(1)+x(2))/2,
y(2)=(x(2)+x(3))/2, y(3)=(x(3)+x(4))/2 and so on.  In general,
y(i)=(x(i)+x(i+1))/2.  If x has n entries,
y will have n-1 (i.e., y(n) cannot be computed).
Note that the first position is always for printer control.
PROGRAM  Smoothing
   IMPLICIT  NONE
   INTEGER, PARAMETER           :: MAX_SIZE = 20
   REAL, DIMENSION(1:MAX_SIZE)  :: x, y
   INTEGER                      :: Number
   INTEGER                      :: i
   CHARACTER(LEN=50)            :: TitleHeading  = "(T14,A/T14,A/T14,A//T2,A,T28,A/T2,A,T28,A)"
   CHARACTER(LEN=50)            :: NA_Line       = "(T2,I3,F10.2,A10,I6,2F10.2)"
   CHARACTER(LEN=50)            :: Data_Line     = "(1X,I3,2F10.2,I6,2F10.2)"
   READ(*,"(I5)")  Number
   READ(*,"(5F10.0)")  (x(i), i=1, Number)
   DO i = 1, Number-1
      y(i) = (x(i) + x(i+1)) / 2.0
   END DO
   WRITE(*,TitleHeading)  "**************************",             &
                          "*  Data Smoothing Table  *",             &
                          "**************************",             &
                          (" No       x         y    ", i = 1, 2),  &
                          ("---  --------  --------  ", i = 1, 2)
   WRITE(*,NA_Line)    1, x(1), "NA", 2, x(2), y(1)
   WRITE(*,Data_Line)  (i, x(i), y(i-1), i = 3, Number)
END PROGRAM  Smoothing
Click here to download this program.
         1    1    2    2    3    3    4    4    5
....5....0....5....0....5....0....5....0....5....0
             **************************
             *  Data Smoothing Table  *
             **************************
  No       x         y      No       x         y
 ---  --------  --------   ---  --------  --------
   1     13.50        NA     2     17.23     15.36
   3      9.00     13.11     4     20.90     14.95
   5     23.00     21.95     6     16.30     19.65
   7     15.90     16.10     8     21.50     18.70
   9     14.78     18.14    10     18.50     16.64
  11     16.54     17.52    12     13.67     15.11
  13     10.78     12.23    14      9.50     10.14
  15     13.20     11.35    16     19.60     16.40
  17     20.00     19.80
         1    1    2    2    3    3    4    4    5
....5....0....5....0....5....0....5....0....5....0
             **************************
             *  Data Smoothing Table  *
             **************************
  No       x         y      No       x         y
 ---  --------  --------   ---  --------  --------
          Here is the format and the WRITE statement:
CHARACTER(LEN=50) :: TitleHeading  = &
                     "(T14,A/T14,A/T14,A//T2,A,T28,A/T2,A,T28,A)"
WRITE(*,TitleHeading)  "**************************",             &
                       "*  Data Smoothing Table  *",             &
                       "**************************",             &
                       (" No       x         y    ", i = 1, 2),  &
                       ("---  --------  --------  ", i = 1, 2)
          T14,A, repeated three times, is for the report title.
          The blank line between the title and table heading is generated
          by //.  Finally, the table heading is generated with
          T2,A,T28,A.  Note that since there are two heading lines,
          this part of the format is repeated twice.