SUBROUTINE DECODE
        INTEGER COL,TYPE,VALUE
        REAL II,KK,LL,MM,NN,MINUS,N
        DIMENSION N(10)
        COMMON/A/CHAR(72)
        COMMON/B/VALUE
        COMMON/C/COL,TYPE
      DATA N(1),N(2),N(3),N(4),N(5),N(6),N(7),N(8),N(9),N(10)/1H0,1H1,1H
     12,1H3,1H4,1H5,1H6,1H7,1H8,1H9/
      DATA BLANK,COMMA,MINUS,PLUS,SLASH/1H ,1H,,1H-,1H+,1H//
        DATA AA,BB,CC,DD,EE/1HA,1HB,1HC,1HD,1HE/
        DATA FF,GG,HH,II,KK/1HF,1HG,1HH,1HI,1HK/
        DATA LL,MM,NN,OO,PP/1HL,1HM,1HN,1HO,1HP/
        DATA QQ,RR,SS,TT,UU,YY/1HQ,1HR,1HS,1HT,1HU,1HY/
C       TYPE=-1: UNRECOGNIZABLE FIELD
C       TYPE=0:  SPECIAL FIELD
C                VALUE=-1 FOR -,0 FOR BLANK,+1 FOR +
C       TYPE=1:  NUMERIC FIELD
C                VALUE=INTEGER EQUIVALENT
C       TYPE=2: ERROR CONTROL OPTION
C               VALUE=-1 (E),0 (H),1 (S)
C       TYPE=3:  COMMAND CODE
C              VALUE=-6 (YES),-5(N0),-4 (ON),-3 (OFF),-2 (END),-1 (CO)
C                   =0 (A),1 (D),2 (F),3 (T),4 (P),5 (PB),6 (D/),7 (Q)
C                     =10 (AD),11 (DA)
C                     =15 (SL),16 (GP), 17 (CS)
C                     =20 (FR), 21 (CL),
C                     =25 (ER), 26 (SK)
C       TYPE=4:  ANALOG MODE
C               VALUE=1 (PC),2 (PP),3 (ST),4 (OP),5 (HD),6 (IC),7 (SP)
C       TYPE=5:  TIME CONSTANT
C                VALUE=0 (NS),1 (FS),2 (NM),3 (FM)
C       TYPE=6:  LOGIC MODE
C               VALUE=1 (RUN),2 (STOP),3 (CLEAR)
10      IF (COL.GT.36) GO TO 60
        IF (CHAR(COL).NE.BLANK) GO TO 20
        COL=COL+1
        GO TO 10
C       START OF FIELD
20      CH=CHAR(COL)
        IF (CH.EQ.COMMA) GO TO 60
        IF (CH.EQ.PLUS) GO TO 70
        IF (CH.EQ.MINUS) GO TO 80
        IF (CH.GT.N(10)) GO TO 100
        IF (CH.LT.N(1)) GO TO 110
C       NUMERIC FIELD
        TYPE=1
        VALUE=0
30      DO 40 I=1,10
        IF (CH.NE.N(I)) GO TO 40
        VALUE=10*VALUE+I-1
        GO TO 50
40      CONTINUE
        GO TO 600
50      COL=COL+1
        IF (COL.GT.36) RETURN
        CH=CHAR(COL)
        GO TO 30
C       BLANK FIELD
60      TYPE=0
        VALUE=0
      COL=COL+1
        RETURN
C       PLUS SIGN
70      VALUE=1
        GO TO 90
C       MINUS SIGN
80      VALUE=-1
C       SIGN FIELD
90      TYPE=0
        COL=COL+1
        CH=CHAR(COL)
        GO TO 600
C       ALPHABETIC FIELD
100     COL=COL+1
        CT=CHAR(COL)
        IF (CH.EQ.AA) GO TO 120
        IF (CH.EQ.CC) GO TO 140
        IF (CH.EQ.DD) GO TO 180
        IF (CH.EQ.EE) GO TO 210
        IF (CH.EQ.FF) GO TO 240
        IF (CH.EQ.GG) GO TO 280
        IF (CH.EQ.HH) GO TO 290
        IF (CH.EQ.II) GO TO 310
        IF (CH.EQ.NN) GO TO 320
        IF (CH.EQ.OO) GO TO 360
        IF (CH.EQ.PP) GO TO 390
        IF (CH.EQ.QQ) GO TO 430
        IF (CH.EQ.RR) GO TO 440
        IF (CH.EQ.SS) GO TO 450
        IF (CH.EQ.TT) GO TO 550
        IF (CH.EQ.YY) GO TO 560
C       FIRST ALPHABETIC IS ILLEGAL
110     TYPE=-1
        RETURN
120     IF (COL.LT.37.AND.CT.EQ.DD) GO TO 130
C       AMPLIFIER
        VALUE=0
        GO TO 570
C       A-TO-D
130     VALUE=10
        GO TO 490
140     IF (CT.EQ.LL) GO TO 150
        IF (CT.EQ.OO) GO TO 170
        IF (CT.NE.SS) GO TO 110
C       COMPARATOR STATUS
        VALUE=17
        GO TO 490
150     IF (COL.LT.37.AND.CHAR(COL+1).EQ.EE) GO TO 160
C       CONTROL LINE
        VALUE=21
        GO TO 490
160     COL=COL+4
        IF (CHAR(COL-2).NE.AA) GO TO 110
        IF (CHAR(COL-1).NE.RR) GO TO 110
C       CLEAR
        VALUE=3
        GO TO 540
C       COMMENT
170     VALUE=-1
        GO TO 490
180     IF (COL.EQ.37) GO TO 185
        IF (CT.EQ.AA) GO TO 190
        IF (CT.EQ.SLASH) GO TO 200
C       DERIVATIVE
185     VALUE=1
        GO TO 570
C       D-TO-A
190     VALUE=11
        GO TO 490
C       DERIVATIVE/10
200     VALUE=6
        GO TO 490
210     IF (COL.EQ.37) GO TO 215
        IF (CT.EQ.NN) GO TO 220
        IF (CT.EQ.RR) GO TO 230
C       E OPTION
215     VALUE=-1
        GO TO 460
220     COL=COL+2
        IF (CHAR(COL-1).NE.DD) GO TO 110
C       END
        VALUE=-2
        GO TO 570
C       ERROR TOLERANCE
230     VALUE=25
        GO TO 490
240     IF (COL.EQ.37) GO TO 245
        IF (CT.EQ.MM) GO TO 250
        IF (CT.EQ.RR) GO TO 260
        IF (CT.EQ.SS) GO TO 270
C       FUNCTION GENERATOR
245     VALUE=2
        GO TO 570
C       FAST-MILLISECONDS
250     VALUE=3
        GO TO 350
C       FUNCTION RELAY
260     VALUE=20
        GO TO 490
C       FAST-SECONDS
270     VALUE=1
        GO TO 350
280     IF (CT.NE.PP) GO TO 110
C       GENERAL PURPOSE INTERRUPT
        VALUE=16
        GO TO 490
290     IF (CT.EQ.DD) GO TO 300
C       H OPTION
        VALUE=0
        GO TO 460
C       HOLD
300     VALUE=5
        GO TO 520
310     IF (CT.NE.CC) GO TO 110
C       INITIAL CONDITION
        VALUE=6
        GO TO 520
320     IF (CT.EQ.MM) GO TO 340
        IF (CT.EQ.OO) GO TO 330
        IF (CT.NE.SS) GO TO 110
C       NORMAL-SECONDS
        VALUE=0
        GO TO 350
C       NO
330     VALUE=-5
        GO TO 490
C       NORMAL-MILLISECONDS
340     VALUE=2
C       TIME CONSTANT
350     TYPE=5
        GO TO 580
360     IF (CT.EQ.FF) GO TO 370
        IF (CT.EQ.NN) GO TO 380
        IF (CT.NE.PP) GO TO 110
C       OPERATE
        VALUE=4
        GO TO 520
370     COL=COL+2
        IF (CHAR(COL-1).NE.FF) GO TO 110
C       OFF
        VALUE=-3
        GO TO 570
C       ON
380     VALUE=-4
        GO TO 490
390     IF (COL.EQ.37) GO TO 395
        IF (CT.EQ.BB) GO TO 400
        IF (CT.EQ.CC) GO TO 410
        IF (CT.EQ.PP) GO TO 420
C       POTENTIOMETER
395     VALUE=4
        GO TO 570
C       PATCH-BOARD (ADDRESS)
400     VALUE=5
        GO TO 490
C       POT COEFFICIENT
410     VALUE=1
        GO TO 520
C       PATCH PANEL (MODE)
420     VALUE=2
        GO TO 520
C       QUOTENTIOMETER
430     VALUE=7
        GO TO 570
440     IF (CT.NE.UU) GO TO 110
        COL=COL+2
        IF (CHAR(COL-1).NE.NN) GO TO 110
C       RUN
        VALUE=1
        GO TO 540
450     IF (COL.EQ.37) GO TO 455
        IF (CT.EQ.KK) GO TO 470
        IF (CT.EQ.LL) GO TO 480
        IF (CT.EQ.PP) GO TO 500
        IF (CT.EQ.TT) GO TO 510
C       S OPTION
455     VALUE=1
C       ERROR CONTROL OPTION
460     TYPE=2
        GO TO 590
C       SKIP
470     VALUE=26
        GO TO 490
C       SENSE LINE
480     VALUE=15
C       COMMAND CODE
490     TYPE=3
        GO TO 580
C       SET POT
500     VALUE=7
        GO TO 520
510     IF (COL.LT.36.AND.CHAR(COL+1).EQ.OO) GO TO 530
C       STATIC TEST
        VALUE=3
C       ANALOG MODE
520     TYPE=4
        GO TO 580
530     COL=COL+3
        IF (CHAR(COL-1).NE.PP) GO TO 110
C       STOP
        VALUE=2
C       LOGIC MODE
540     TYPE=6
        GO TO 590
C       TRUNK
550     VALUE=3
        GO TO 570
560   COL=COL+2
        IF (CT.NE.EE) GO TO 110
        IF (CHAR(COL-1).NE.SS) GO TO 110
C       YES
        VALUE=-6
C       COMMAND CODE
570     TYPE=3
        GO TO 590
C       COL=LAST COLUMN PROCESSED
580     COL=COL+1
C       COL=LAST COLUMN PROCESSED+1
590     IF (COL.GT.37) GO TO 110
        CH=CHAR(COL)
        IF (CH.GE.AA) GO TO 110
C       CHECK FOR COMMA
600     IF (CH.EQ.COMMA) COL=COL+1
        RETURN
        END