C===============================COMP.FOR================================
C     
C       COMP:   COMPILES STRING OF UNITS TO ITS FUNDAMENTAL CONVERSION 
C               FACTOR AND PRODUCES AN EIGHT ELEMENT VECTOR OF FUNDA-
C               MANTAL UNIT POWERS.
C
C       CF:     FINAL COVERSION FACTOR IN TERMS OF FUNDAMENTAL UNITS.
C       VPOW:   8 ELEMENT VECTOR;
C                       1 = Kilogram
C                       2 = Meter
C                       3 = Second
C                       4 = Ampere
C                       5 = Candela
C                       6 = Kelvin
C                       7 = Null (Dimensionless)
C                       8 = Mol
C       STRU:   STRING OF UNITS
C       TV:     TABLE OF VALUES (FUNDAMENTAL CONVERSION FACTORS)
C       TU:     TABLE OF FUNDAMENTAL UNIT NAMES 
C       TFUP:   TABLE OF FUNDAMENTAL UNIT POWERS
 
      SUBROUTINE COMP(CF, VPOW, STRU, TV, TU, TUIND, TFUP)
      PARAMETER (MAXUNIT=7, MAXARG=70)
      REAL*8 CF, F, TV(120)
      INTEGER VPOW(8), VP(8), TFUP(120,8), SIGN, IND, POWER, SH
      INTEGER TUIND(120)
      CHARACTER*(MAXARG) STRU
      CHARACTER*423 TU
      CHARACTER*(MAXUNIT) UNIT
      SIGN=1
      CF=1D0
      DO 100, K=1,8
      VPOW(K)=0
 100  CONTINUE         
 5    IF (SIGN .EQ.  0) GOTO 30
      IF (SIGN .EQ. 99) GOTO 20
      CALL GETUNIT(STRU, UNIT, POWER, SIGN, SH)
      CALL GETCF(F, IND, TU, TUIND, TV, UNIT, POWER, SH)
      CALL GETFU(VP, IND, POWER, TFUP)
      CALL VADD(VPOW,VP)
      CF=CF*F
      GOTO 5
 20   PRINT *,'FINISHED WITH 99'
 30   RETURN
      END     
