      SUBROUTINE MAIN
      LOGICAL*1 BUF(400), FILE(40), OBUF(400)
      INTEGER GETLIN, OPEN, LENGTH, TTY, GETARG, EQUAL
      INTEGER NXTCOL, PACKIT, INT, I
      LOGICAL*1 QUEST(2)
      DATA QUEST(1)/63/,QUEST(2)/0/
      PACKIT = TTY(2)
      IF(.NOT.(GETARG(1, FILE, 40) .NE. -1))GOTO 23000
      IF(.NOT.(EQUAL(FILE, QUEST) .EQ. 1))GOTO 23002
      CALL ERROR(19Husage:  users [-1].)
      GOTO 23003
23002 CONTINUE
      IF(.NOT.(FILE(1) .EQ. 45 .AND. FILE(2) .EQ. 49))GOTO 23004
      PACKIT = 0
23004 CONTINUE
23003 CONTINUE
23000 CONTINUE
      CALL ADRFIL(FILE)
      IF(.NOT.(PACKIT .EQ. 1))GOTO 23006
      CALL INPACK(NXTCOL, 80, OBUF, 2)
23006 CONTINUE
      INT = OPEN(FILE, 1)
      IF(.NOT.(INT .NE. -3))GOTO 23008
23010 IF(.NOT.(GETLIN(BUF, INT) .NE. -1))GOTO 23011
      I=1
23012 IF(.NOT.(BUF(I).NE.32 .AND. BUF(I).NE.9 .AND. BUF(I) .NE. 64))GOTO
     * 23014
      FILE(I) = BUF(I)
23013 I=I+1
      GOTO 23012
23014 CONTINUE
      FILE(I) = 0
      IF(.NOT.(PACKIT .EQ. 1))GOTO 23015
      CALL DOPACK(FILE, NXTCOL, 80, OBUF, 2)
      GOTO 23016
23015 CONTINUE
      CALL PUTLIN(FILE, 2)
      CALL PUTCH(10, 2)
23016 CONTINUE
      GOTO 23010
23011 CONTINUE
      IF(.NOT.(PACKIT .EQ. 1))GOTO 23017
      CALL FLPACK(NXTCOL, 80, OBUF, 2)
23017 CONTINUE
      CALL CLOSE(INT)
      GOTO 23009
23008 CONTINUE
      CALL REMARK(22HCannot open user file!)
23009 CONTINUE
      RETURN
      END
