	SUBROUTINE UTIL(IOPTN,ITEST,IDATA,LBLNK,
     +                  ISTRT,ISTOP,LMOVE,IMOVE,IGOTO)
	DIMENSION	LBLNK(32)
	DIMENSION	LMOVE(32)
C
C	1) ITEST AND I/P
C	2) INSERT DATA
C	3) MOVE DATA FROM ARRAYS
C	4) LOOK FOR MATCH DATA STATEMENTS
C	5) LOOK AND BLANK
C	6) CONVERT I5 TO 5I5 ARRAY
C	7) LOOK FOR GREATER
C	8) ARRAY ADD
C	9) SWAP ARRAYS
C	10) REVERSE ARRAYS
C
	ITYPE = IOPTN
	ISAVE = IMOVE
	NDATA = IDATA
	IDIVD = 10 ** (ISTOP-ISTRT)
	DO 900	IGOTO = ISTRT,ISTOP
	IF (LBLNK(IGOTO) -ITEST) 100,200,300
100	GOTO (999,800,400,900,900,700,900,500,400,400), ITYPE
C	       1   2   3   4   5   6   7   8   9   10
200	GOTO (800,800,400,999,800,700,900,500,400,400), ITYPE
C	       1   2   3   4   5   6   7   8   9   10
300	GOTO (999,800,400,900,900,700,999,500,400,400), ITYPE
C	       1   2   3   4   5   6   7   8   9   10
400	NDATA = LMOVE(ISAVE)
	IF (ITYPE - 9) 410,405,405
405	LMOVE(ISAVE) = LBLNK(IGOTO)
410	ISAVE = ISAVE + 1 - (2 * (ITYPE/10))
	GOTO 800
500	NDATA = LBLNK(IGOTO) + LMOVE(ISAVE)
	GOTO 410
700	NDATA = ISAVE/IDIVD
	ISAVE = ISAVE - ISAVE/IDIVD * IDIVD
	IDIVD = IDIVD/10
800	LBLNK(IGOTO) = NDATA
900	CONTINUE
999	RETURN
	END

