Computers in Engineering WWW Site - Example 5.3

Example 5.3


FORTRAN Version

!
      PROGRAM P53
!
      IMPLICIT NONE
      INTEGER :: I,J,K,UNITS(12),UQ(4)
      REAL :: SALES(12),SQ(4)
!
!
      PRINT *, 'This is Program >> P53  - Four quarter in a year'
!
!     Tell program where data for  READ   is coming from
      OPEN(UNIT=5, FILE='P53.DAT')      ! UNIT=5 is the default input
!
!
L1:   DO I=1,12
        READ 15,UNITS(I),SALES(I)
      END DO L1
   15 FORMAT(I3,F5.1)
!
!     FORM 4 QUARTER TOTALS
!
      I=0
L2:   DO J=1,4        ! Four quarters
         UQ(J)=0      ! J points to each quarter in turn
         SQ(J)=0
L3:      DO K=1,3     ! Each with three months
           I=I+1      ! Month pointer I goes from 1 to 12
           UQ(J)=UQ(J)+UNITS(I)
           SQ(J)=SQ(J)+SALES(I)
        END DO L3
      END DO L2
!
!     OUTPUT RESULTS
!
      PRINT 30,UQ  ! Prints out complete array 
      PRINT 31,SQ  ! All four values printed
   30 FORMAT(' CARS SOLD BY QUARTER ', 4I8)
   31 FORMAT(' SALES BY QUARTER     ', 4F8.1)
      STOP
      END PROGRAM P53
DATA:
672 3.4
609 3.2
715 3.7
803 4.2
810 4.8
831 5.1
829 5.1
727 5.1
780 4.3
703 3.9
791 4.2
783 3.6
OUTPUT:

              +--------------------------------------------------+
              |     32-bit Power for Lahey Computer Systems      |
              |   Phar Lap's 386|DOS-Extender(tm) Version 7.0    |
              |  Copyright (C) 1986-94 Phar Lap Software, Inc.   |
              |           Available Memory = 14880 Kb            |
              +--------------------------------------------------+


This is Program >> P53  - Four quarter in a year
CARS SOLD BY QUARTER     1996    2444    2336    2277
SALES BY QUARTER         10.3    14.1    14.5    11.7

Pascal Version

{$G256}
{$P512}
{$D+}
PROGRAM p53 ( input, output );
VAR
  month : ARRAY[1..12] OF string[3];
  units : ARRAY[1..12] OF INTEGER;
  uq : ARRAY[1..4] OF INTEGER;
  sales : ARRAY[1..12] OF REAL;
  dq : ARRAY[1..4] OF REAL;
  i, j, k : INTEGER;
BEGIN
  FOR i := 1 TO 12 DO
    readln (month[i], units[i], sales[i]);
{
     Form 4 quarter totals
}
  i := 0;
  FOR j := 1 TO 4 DO
    BEGIN
      uq[j] := 0;
      dq[j] := 0;
      FOR k := 1 TO 3 DO
        BEGIN
          i := i + 1;
          uq[j] := uq[j] + units[i];
          dq[j] := dq[j] + sales[i]
        END { end for }
    END; { end for }
  writeln ( ' cars sold by quarter ', uq[1]:5, uq[2]:5, uq[3]:5, uq[4]:5 );
  writeln ( ' sales by quarter     ', dq[1]:5, dq[2]:5, dq[3]:5, dq[4]:5 )
END.

DATA:
jan       672    3.4
feb       609    3.2
mar       715    3.7
apr       803    4.2
may       810    4.8
jun       831    5.1
jul       829    5.1
aug       727    5.1
sep       780    4.3
oct       703    3.9
nov       791    4.2
dec       783    3.6

Last modified: 22/07/97