Google
 

Trailing-Edge - PDP-10 Archives - decus_20tap2_198111 - decus/20-0050/tblnxt.for
There is 1 other file named tblnxt.for in the archive. Click here to see a list.
      SUBROUTINE TBLNXT
C
C     TBLTRN ROOUTINE TO SEARCH FOR NEXT SYMBOL IN
C     LINE OF INPUT TEXT
C
C     DONALD BARTH, CHEMISTRY DEPT., HARVARD UNIVERSITY
C
C     KODE   = 0, FIND SYMBOL IN TEXT AND IDENTIFY
C            = 1, IDENTIFY PREVIOUSLY FOUND SYMBOL
C            = 2, ADD SYMBOL TO DICTIONARY
C            = 3, SIMILAR TO 4 EXCEPT DEFERRED INSERTION
C                 IS IN EFFECT.
C            = 4, INSERT BUFFER AT START OF INPUT TEXT
C
C     THE FOLLOWING INFORMATION IS RETURNED
C
C     KIND   = CHARACTER CLASS OF SYMBOL
C     KIND   = 0, BLANK
C            = 1, RADIX VIOLATION
C            = 2, DIGITS
C            = 3, DIGITS FOLLOWED BY LETTERS
C            = 4, LETTERS, DIGITS ETC.
C            = 5 AND GREATER, PUNCTUATION
C     ILEFT  = SUBSCRIPT OF FIRST CHARACTER IN SYMBOL
C     IRIGHT = SUBSCRIPT OF FINAL CHARACTER IN SYMBOL
C     NUMBER = VALUE OF INTEGER UNDER CURRENT RADIX
C     ITEN   = VALUE OF INTEGER WITH RADIX 10
C
      COMMON/TBLTRN/I,IADDRS,IADJST,IBASE,IBLANK,IDGT(16),
     1IERR,IFILL,IFKNT,IKODE,ILEFT,ILINE,ILPT,ILTR,IBYTE,
     2IMASK,LMAX,NMORE,IMOST,INSERT,IOCT(13),IOPRTR,IOUT,
     3IPAREN,IPNCTN(11),IPRCN,IRADIX,IREAD,IREPT,IRIGHT,
     4ISHIFT,ISIGN,ISTAR,ISTORE(478),ITEN,ITEST,ITITLE(6),
     5ITTY,IWIDE,IWRITE,J,JADJST,JBASE,JBLANK,JERR,KPAREN,
     6JFKNT,JKODE(37),JLEFT,JMASK,JMORE,JPAREN,JRADIX,LOOP,
     7JRIGHT,JSHIFT,JSIGN,K,KADJST,KBASE,KERR,KIND,KLINE,
     8KLM,KLTR,KMASK,KNT,KNTLTR,KNTWRD,KODE,KRADIX,IDBG,
     9KREAD,KSHIFT,L,LEAST,LETTER(160),LMASK,LOCK,LSTNEW,
     1LTTR(160),M,MASK,MASTER(5000),MAX,MLEFT,MORE,MOST,
     2MRIGHT,MULT,N,NEW,NEXT,NSIGN,NTITLE(6),NUMBER,LRADIX,
     3KMAX,INLINE,JPNCTN(50),KPNCTN(50),LPNCTN,JOPRTR,NLTR,
     4JBYTE,ILOOP,ISKIP,IVALUE,INSN(6),JNSN,IMAX,JMAX,
     5KNSN,MLTR,JLTR,JLOOP,IPFX,JPFX,LSIGN,IIARG,JJARG,
     6KKARG,LLARG,JVALUE,MIN,IAC,IARG,JARG,KARG,LARG,JSTFY,
     7LENGTH(20),LNGMIN,IORDER,IRMV,KSIGN
      IF(KODE.NE.0)GO TO 41
C
C     **************************************
C     *  FIND SYMBOL IN INPUT TEXT BUFFER  *
C     **************************************
C
    1 IF(IRIGHT.GE.MLTR)IRIGHT=MLTR
      JRIGHT=IRIGHT
    2 IF(IARG.EQ.0)GO TO 3
      IF(JARG.NE.0)GO TO 3
      IF(IRIGHT.GE.LARG)GO TO 59
    3 NUMBER=0
      ITEN=0
      K=0
      L=0
      KIND=0
      ILEFT=IRIGHT+1
      IF(ILEFT.LE.MLTR)GO TO 5
      IF(ILEFT.GT.ILTR)GO TO 113
      GO TO 114
    4 IF(K.EQ.0)GO TO 20
      IF(L.NE.0)GO TO 10
      KIND=1
    5 IRIGHT=IRIGHT+1
      IF(IRIGHT.GT.MLTR)GO TO 21
      J=LETTER(IRIGHT)
      DO 7 I=1,LPNCTN
      IF(J.NE.JPNCTN(I))GO TO 7
      IF(KPNCTN(I).EQ.7)GO TO 11
      IF(KIND.EQ.0)GO TO 6
      IF(KIND.NE.KPNCTN(I))GO TO 21
      GO TO 5
    6 KIND=KPNCTN(I)
      GO TO 5
    7 CONTINUE
    8 IF(KIND.GE.5)GO TO 21
      IF(KIND.GE.3)GO TO 5
      I=0
    9 I=I+1
      IF(J.EQ.IDGT(I))GO TO 12
      IF(I.LT.10)GO TO 9
      IF(I.LT.IRADIX)GO TO 9
      IF(K.EQ.0)GO TO 20
   10 KIND=3
      NUMBER=ILEFT+K
      GO TO 5
   11 IF(K.EQ.0)GO TO 8
      IF((ILEFT+K).NE.IRIGHT)GO TO 8
      IF(ITEN.GE.1001)GO TO 117
      IF(ITEN.EQ.66)GO TO 117
      IF(ITEN.LE.2)GO TO 117
      GO TO 116
   12 IF(L.NE.0)GO TO 14
      IF(I.LE.10)GO TO 13
      IF(KIND.EQ.1)GO TO 10
      L=1
      GO TO 14
   13 IF(ITEN.GT.10000)GO TO 14
      K=K+1
      ITEN=I-1+(ITEN*10)
      IF(KIND.EQ.1)GO TO 5
   14 IF(I.GT.IRADIX)GO TO 4
      KIND=2
      IF(IRADIX.EQ.10)GO TO 19
      IF(IRADIX.EQ.8)GO TO 17
      IF(IRADIX.EQ.2)GO TO 16
      IF(IRADIX.EQ.16)GO TO 15
      IF(IRADIX.NE.4)GO TO 19
      M=2
      GO TO 18
   15 M=4
      GO TO 18
   16 M=1
      GO TO 18
   17 M=3
   18 NUMBER=ITBMOV(NUMBER,M)
      NUMBER=ITBOR(NUMBER,I-1)
      GO TO 5
   19 NUMBER=(IRADIX*NUMBER)+I-1
      GO TO 5
   20 KIND=4
      GO TO 5
   21 IRIGHT=IRIGHT-1
      IF(KIND.EQ.1)GO TO 117
      IF(KIND.EQ.2)GO TO 115
      IF(KIND.EQ.5)GO TO 39
      IF(KIND.NE.6)GO TO 42
C
C     ***************************************
C     *  BREAK CHARACTER DIAGNOSTIC OUTPUT  *
C     ***************************************
C
      IDBG=ITTY
      IF(JBLANK.NE.0)WRITE(IDBG,22)
   22 FORMAT(1X,1I5,1X,60A1/7X,60A1/7X,60A1)
      JBLANK=1
      WRITE(IDBG,22)ILINE,(LETTER(I),I=JLEFT,IRIGHT)
      IF((ILEFT+1).EQ.IRIGHT)GO TO 25
      IF((ILEFT+2).EQ.IRIGHT)GO TO 32
C
C     PRINT ENTRIES ASSEMBLED BY PRESENT STATEMENT
      IF(IOPRTR.EQ.15)GO TO 23
      IF(IOPRTR.EQ.37)GO TO 23
      IF(INSERT.EQ.0)GO TO 39
      KODE=20
      GO TO 24
C
C     PRINT DEFINITION SPECIFIED BY PRESENT STATEMENT
   23 KODE=-IADDRS
   24 CALL TBLDBG
      GO TO 39
C
C     WRITE EXTRA INFO IF MORE THAN 1 DOLLAR SIGN
   25 I=ISHIFT+1
      IF(IMASK.NE.0)GO TO 28
      IF(MASK.EQ.0)GO TO 31
C     SEARCH FOR MASK IF NOT SELECTED BY TON
      M=MAX
      GO TO 27
   26 M=MASTER(M)
   27 IF(MASTER(M).EQ.0)GO TO 31
      IF(MASTER(M-1).NE.29)GO TO 26
      L=-MASTER(M-2)
      IF(MASTER(L+1).NE.LMASK)GO TO 26
      L=MASTER(M)+1
      M=M-3
      GO TO 29
   28 M=-MASTER(IMASK)-1
      L=MASTER(M+3)+1
C     PRINT INFO AND NAME OF MASK SELECTED
   29 WRITE(IDBG,30)ISIGN,I,IBASE,MOST,MORE,NEXT,IBLANK,
     1(MASTER(N),N=L,M)
   30 FORMAT(1X,5HSIGN=,1I2,7H, BYTE=,1I3,9H OF SIZE=,
     11I3,8H, ENTRY=,1I5,1H+,1I3,3H OF,1I3,81A1)
      GO TO 102
C     PRINT INFO WHEN MASK NOT SELECTED
   31 WRITE(IDBG,30)ISIGN,I,IBASE,MOST,MORE,NEXT
      GO TO 102
C
C     PRINT CHARACTER CLASSES
   32 WRITE(IDBG,33)
   33 FORMAT(1X,17HCHARACTER CLASSES)
      K=0
      I=4
   34 I=I+1
      L=0
      DO 38 J=1,LPNCTN
      IF(KPNCTN(J).NE.I)GO TO 38
      K=K+1
      IF(L.NE.0)GO TO 36
      L=1
      WRITE(IDBG,35)I,JPNCTN(J)
   35 FORMAT(1X,1I3,1X,1A1)
      GO TO 38
   36 WRITE(IDBG,37)JPNCTN(J)
   37 FORMAT(5X,1A1)
   38 CONTINUE
      IF(K.NE.LPNCTN)GO TO 34
C
C     CONVERT INTO BLANKS CHARACTERS EQUIVALENT TO BLANKS
   39 DO 40 I=ILEFT,IRIGHT
   40 LETTER(I)=IBLANK
      GO TO 2
C
C     **************************************
C     *  FIND SYMBOL IN SYMBOL DICTIONARY  *
C     **************************************
C
   41 GO TO(43,56,60,63),KODE
   42 KODE=1
   43 INDEX=IRIGHT-ILEFT+1
      I=INDEX
      IF(I.GT.20)I=20
      LIMIT=LENGTH(I)
      IF(LIMIT.EQ.0)LIMIT=LNGMIN
      I=0
   44 KOUNT=IRIGHT
   45 NEW=LIMIT-3
      LIMIT=MASTER(LIMIT)
      IF(LIMIT.LE.0)GO TO 52
      IF(MASTER(NEW+2).LT.0)GO TO 45
      IF((LIMIT+INDEX).EQ.NEW)GO TO 46
      IF(NEW.LT.LNGMIN)GO TO 45
      IF(INDEX.LT.20)LIMIT=LNGMIN
      GO TO 45
   46 IF(MASTER(NEW).NE.LETTER(KOUNT))GO TO 44
      NEW=NEW-1
      KOUNT=KOUNT-1
      IF(KOUNT.GE.ILEFT)GO TO 46
C
C     IF MATCH IS FOUND, CHECK TO SEE IF IT IS LEGAL
      NEW=NEW+INDEX+2
      J=MASTER(NEW)
      IF(J.EQ.4)GO TO 119
      IF(J.EQ.5)GO TO 119
      IF(J.EQ.6)GO TO 119
      IF(J.EQ.7)GO TO 119
      IF(J.EQ.8)GO TO 119
      IF(J.EQ.26)GO TO 119
      IF(J.EQ.36)GO TO 119
      IF(J.EQ.69)GO TO 119
      IF(J.EQ.121)GO TO 119
      IF(I.NE.0)GO TO 49
C     FOUND FIRST MATCH
      IF(IOPRTR.EQ.0)GO TO 47
      IF(IOPRTR.EQ.24)GO TO 119
      IF(IOPRTR.EQ.81)GO TO 48
      IF(IOPRTR.EQ.86)GO TO 48
      IF(IOPRTR.EQ.105)GO TO 48
      IF(IOPRTR.EQ.68)GO TO 48
      IF(IOPRTR.EQ.70)GO TO 48
      IF(IOPRTR.EQ.71)GO TO 48
      IF(IOPRTR.EQ.77)GO TO 48
      IF(IOPRTR.EQ.101)GO TO 48
      IF(IOPRTR.EQ.41)GO TO 48
      IF(IOPRTR.EQ.13)GO TO 48
   47 IF(J.GT.2)GO TO 119
      IF(J.EQ.0)GO TO 119
   48 I=NEW
      GO TO 44
C     FOUND SECOND MATCH
   49 IF(IOPRTR.EQ.0)GO TO 119
      IF(IOPRTR.EQ.81)GO TO 51
      IF(IOPRTR.EQ.86)GO TO 51
      IF(IOPRTR.EQ.105)GO TO 51
      IF(IOPRTR.EQ.68)GO TO 51
      IF(IOPRTR.EQ.70)GO TO 51
      IF(IOPRTR.EQ.71)GO TO 51
      IF(IOPRTR.EQ.77)GO TO 51
      IF(IOPRTR.EQ.101)GO TO 51
      IF(IOPRTR.EQ.41)GO TO 50
      IF(IOPRTR.NE.13)GO TO 119
   50 IF(MASTER(I).EQ.16)GO TO 55
      IF(J.EQ.16)GO TO 119
   51 IF(MASTER(I).LE.2)GO TO 55
      IF(J.LE.2)GO TO 119
      GO TO 55
C     FOUND LESS THAN 2 MATCHES
   52 IF(I.EQ.0)GO TO 57
      IF(IOPRTR.EQ.0)GO TO 55
      IF(IOPRTR.EQ.81)GO TO 54
      IF(IOPRTR.EQ.86)GO TO 54
      IF(IOPRTR.EQ.105)GO TO 54
      IF(IOPRTR.EQ.68)GO TO 54
      IF(IOPRTR.EQ.70)GO TO 54
      IF(IOPRTR.EQ.71)GO TO 54
      IF(IOPRTR.EQ.77)GO TO 54
      IF(IOPRTR.EQ.101)GO TO 54
      IF(IOPRTR.EQ.41)GO TO 53
      IF(IOPRTR.NE.13)GO TO 55
   53 IF(MASTER(I).EQ.16)GO TO 55
   54 IF(MASTER(I).GT.2)GO TO 57
   55 NEW=I
      GO TO 119
C
C     ADD SYMBOL IF NOT IN SYMBOL TABLE
C     REPLACE PREVIOUS SYMBOL IF STILL UNDEFINED
   56 INDEX=IRIGHT-ILEFT+1
   57 IF(MASTER(LSTNEW).EQ.0)NEW=LSTNEW-2
      IF((NEW-INDEX).LE.(MOST+NEXT))GO TO 118
      LSTNEW=NEW+2
      MASTER(NEW+3)=NEW-INDEX
      MASTER(NEW+2)=0
      MASTER(NEW+1)=0
      KOUNT=IRIGHT
   58 MASTER(NEW)=LETTER(KOUNT)
      NEW=NEW-1
      KOUNT=KOUNT-1
      IF(KOUNT.GE.ILEFT)GO TO 58
      LEAST=NEW
      NEW=NEW+INDEX+2
      MASTER(LEAST)=0
      GO TO 119
C
C     ********************************************
C     *  INSERT BUFFER INTO START OF INPUT TEXT  *
C     ********************************************
C
C     CALCULATE NEXT DEFERRED TEXT INSERTION IN
C     USER DEFINED FUNCTION (WON'T ENTER AT THIS
C     POINT UNLESS ONE IS IN EFFECT).
   59 ITEN=0
   60 LARG=IRIGHT
      NUMBER=IARG-KARG
      IF(MASTER(IARG+1).GE.NUMBER)GO TO 62
      NEW=-MASTER(IARG)+1
      J=KARG
      KARG=KARG+MASTER(NUMBER)+2
      I=NUMBER-MASTER(NUMBER)-1
      IF(MASTER(IARG+1).GE.I)GO TO 61
      JARG=MASTER(I)
      IF(INLINE.NE.0)GO TO 64
      IF(JARG.EQ.0)GO TO 64
      KARG=J
      JARG=0
      ITEN=5
      GO TO 116
   61 IARG=0
      GO TO 64
C
C     TURN OFF THE USER DEFINED FUNCTION IF THERE IS
C     NO MORE TEXT TO BE INSERTED.
   62 IARG=0
      LARG=0
      GO TO 1
C
C     LIST THE PROCESSED TEXT (THIS IS THE NORMAL
C     ENTRY POINT FOR TEXT REPLACEMENT SYMBOLS WHICH
C     DON'T HAVE DEFERRED SECTIONS).
   63 ITEN=0
      NEW=0
   64 LOOP=LOOP+1
      IF(ILOOP.GE.0)GO TO 71
      IDBG=ILPT
      IF(IDBG.EQ.ITTY)JBLANK=1
      WRITE(IDBG,65)ILINE,LOOP
   65 FORMAT(1X/5H LINE,1I8,10H INSERTION,1I6)
      I=1
      J=NLTR
      GO TO 67
   66 K=LETTER(J+1)
      IF(K.LT.0)K=-K
      I=J+2
      J=J+K
   67 IF(J.GT.IRIGHT)J=IRIGHT
      K=J-I+1
      IF(K.GT.0)WRITE(IDBG,68)K,(LETTER(L),L=I,J)
   68 FORMAT(1X,1I3,10H OLD TEXT ,40A1/
     114X,40A1/14X,40A1/14X,40A1)
      IF(J.LT.IRIGHT)GO TO 66
      IF(NEW.EQ.0)GO TO 70
      IF(MASTER(NEW-1).EQ.(-NUMBER-1))GO TO 70
      I=NEW-2
      J=MASTER(NEW+1)+1
      WRITE(IDBG,69)(MASTER(K),K=J,I)
   69 FORMAT(5X,9HFUNCTION ,40A1/14X,40A1)
C
C     TEST IF HAVE EXECUTED MORE TEXT REPLACEMENTS
C     ON THIS LINE THAN PERMITTED BY VALUE OF ILOOP
   70 IF(LOOP.LE.(-ILOOP))GO TO 73
   71 IF(LOOP.LE.ILOOP)GO TO 73
      WRITE(ITTY,72)ILINE
   72 FORMAT(25H REPLACEMENT LOOP IN LINE,1I6,
     111H TERMINATED)
      JBLANK=1
      GO TO 113
C
C     LIST PROCESSED TEXT IF STATEMENT IS IN ERROR
   73 IF(IERR.LE.0)GO TO 76
      IF(IERR.EQ.1)WRITE(ITTY,74)ILINE,(IBLANK,
     1  I=JLEFT,MLEFT),(ISTAR,I=MLEFT,MRIGHT)
   74 FORMAT(11H ERROR LINE,1I5/160A1)
      IF(JRIGHT.GE.JLEFT)WRITE(ITTY,75)IBLANK,
     1 (LETTER(I),I=JLEFT,JRIGHT)
   75 FORMAT(150A1)
      JBLANK=1
      IERR=2
      LOOP=LOOP+99
C
C     INSERT BLANK IF RIGHT LETTER OF INSERTED TEXT
C     IS OF SAME CHARACTER CLASS AS LEFT NON-BLANK
C     LETTER OF UNPROCESSED TEXT.
   76 I=MLTR
      K=IRIGHT
      IF(ITEN.LT.0)I=I-ITEN+1
      IF(ITEN.GT.0)I=I+ITEN-1
   77 IF(IRIGHT.EQ.I)GO TO 78
      IRIGHT=IRIGHT+1
      IF(LETTER(IRIGHT).EQ.IBLANK)GO TO 77
      J=LETTER(IRIGHT)
      IRIGHT=IRIGHT-1
      IF(K.EQ.LARG)LARG=IRIGHT
   78 IF(ITEN.EQ.0)GO TO 79
      K=IRIGHT-K
      IF(ITEN.LT.0)ITEN=ITEN+K
      IF(ITEN.GT.0)ITEN=ITEN-K
      GO TO 84
   79 IF(IRIGHT.EQ.MLTR)GO TO 84
      IF(MASTER(NUMBER).EQ.0)GO TO 84
      I=0
      DO 80 K=1,LPNCTN
      IF(J.NE.JPNCTN(K))GO TO 80
      IF(KPNCTN(K).NE.7)I=KPNCTN(K)
      GO TO 81
   80 CONTINUE
   81 J=MASTER(NUMBER-1)
      L=0
      DO 82 K=1,LPNCTN
      IF(J.NE.JPNCTN(K))GO TO 82
      IF(KPNCTN(K).NE.7)L=KPNCTN(K)
      GO TO 83
   82 CONTINUE
   83 IF(I.NE.L)GO TO 84
      LETTER(IRIGHT)=IBLANK
      IRIGHT=IRIGHT-1
C
C     CALCULATE THE NEW POINTERS
   84 I=MASTER(NUMBER)-IRIGHT
      IF(ITEN.NE.0)I=I+1
      K=ILTR
      ILTR=ILTR+I
      IF(IRIGHT.LT.MLTR)GO TO 85
      MLTR=MASTER(NUMBER)
      GO TO 86
   85 MLTR=MLTR+I
   86 IF(IRIGHT.LE.LARG)GO TO 87
      LARG=0
      GO TO 88
   87 LARG=LARG+MASTER(NUMBER)-IRIGHT
   88 IF(IRIGHT.EQ.K)GO TO 98
      IF(ILTR.EQ.K)GO TO 98
      IF(ILTR.LT.K)GO TO 96
C
C     RESET POINTERS IF WOULD CAUSE OVERFLOW OF BUFFER
      IF(ILTR.LE.KMAX)GO TO 94
      J=K
      K=K+KMAX-ILTR
      ILTR=KMAX
      IF(MLTR.GT.KMAX)MLTR=KMAX
      IF(LARG.GT.KMAX)LARG=KMAX
      IF(JERR.NE.ILINE)WRITE(ITTY,89)ILINE,KMAX
   89 FORMAT(21H TEXT DELETED ON LINE,1I6,6H AFTER,
     11I4,11H CHARACTERS)
      JERR=ILINE
      JBLANK=1
      IF(ILOOP.GT.0)GO TO 94
      L=K+1
   90 IF(NLTR.GE.K)GO TO 92
   91 I=LETTER(NLTR+1)
      IF(I.LT.0)I=-I
      NLTR=NLTR+I
      GO TO 90
   92 IF(NLTR.GT.J)NLTR=J
      N=NLTR-L+1
      IF(N.GT.0)WRITE(IDBG,93)N,(LETTER(I),I=L,NLTR)
   93 FORMAT(1X,1I3,10H OVERFLOW ,40A1/
     114X,40A1/14X,40A1/14X,40A1)
      L=NLTR+2
      IF(NLTR.LT.J)GO TO 91
C
C     SHIFT UNPROCESSED LETTERS TO RIGHT
C     LETTER(OLD RIGHT) SHIFTS INTO LETTER(NEW RIGHT)
C     THEN POINTERS ARE DECREMENTED
   94 J=ILTR
   95 LETTER(J)=LETTER(K)
      J=J-1
      K=K-1
      IF(K.GT.IRIGHT)GO TO 95
      GO TO 98
C
C     SHIFT UNPROCESSED LETTERS TO LEFT
C     LETTER(OLD LEFT) SHIFTS INTO LETTER(NEW LEFT)
C     THEN POINTERS ARE INCREMENTED
   96 K=MASTER(NUMBER)
      IF(ITEN.NE.0)K=K+1
   97 K=K+1
      IRIGHT=IRIGHT+1
      LETTER(K)=LETTER(IRIGHT)
      IF(K.LT.ILTR)GO TO 97
C
C     SHIFT IN NEW TEXT
   98 J=1
      IRIGHT=0
      JLEFT=1
      NLTR=MLTR
      I=NUMBER-MASTER(NUMBER)
   99 IF(I.EQ.NUMBER)GO TO 100
      LETTER(J)=MASTER(I)
      I=I+1
      J=J+1
      GO TO 99
C
C     LIST NEW TEXT BY EMBEDDED STATEMENTS
  100 IF(ITEN.EQ.0)GO TO 101
      IF(J.LE.KMAX)LETTER(J)=ITEN
  101 IF(ILOOP.GT.0)GO TO 1
  102 J=1
      K=NLTR
  103 IF(K.GT.ILTR)K=ILTR
      L=K-J+1
      IF(L.GT.0)WRITE(IDBG,104)L,(LETTER(I),I=J,K)
  104 FORMAT(1H ,1I3,10H NEW TEXT ,
     140A1/14X,40A1/14X,40A1/14X,40A1)
      IF(IARG.EQ.0)GO TO 110
      IF(LARG.GT.K)GO TO 110
      IF(LARG.GT.0)GO TO 105
      IF(J.NE.1)GO TO 110
      L=0
      GO TO 106
  105 IF(LARG.LT.J)GO TO 110
      L=LARG-J+1
  106 I=-JARG
      IF(JARG.GE.0)WRITE(IDBG,107)L,JARG
  107 FORMAT(4X,6H(UNTIL,1I3,13H LETTERS THEN,
     11I3,9H SYMBOLS))
      IF(JARG.LT.0)WRITE(IDBG,108)L,I
  108 FORMAT(4X,6H(UNTIL,1I3,13H LETTERS THEN,
     11I3,12H STATEMENTS))
      I=IARG-1-KARG
      J=MASTER(I+1)
      M=I-J+1
      IF(J.GT.0)WRITE(IDBG,109)J,(MASTER(N),N=M,I)
  109 FORMAT(1X,1I3,10H DEFERRED ,40A1/
     114X,40A1/14X,40A1/14X,40A1)
  110 IF(K.EQ.ILTR)GO TO 112
      J=K+2
      L=LETTER(K+1)
      IF(L.LT.0)WRITE(IDBG,111)
  111 FORMAT(4X,33H(RANGE OF IF CLASS OPERATOR ENDS))
      IF(L.LT.0)L=-L
      K=K+L
      GO TO 103
  112 IF(IRIGHT.EQ.0)GO TO 1
      GO TO 39
C
C     *******************************
C     *  RETURN TO CALLING PROGRAM  *
C     *******************************
C
  113 KODE=3
      GO TO 119
  114 KODE=4
      GO TO 119
  115 KODE=5
      GO TO 119
  116 KODE=6
      GO TO 119
  117 KODE=7
      GO TO 119
  118 KODE=8
  119 RETURN
      END