      SUBROUTINE MAIN
      LOGICAL*1 ARG(400)
      INTEGER OPEN, GETARG
      INTEGER FD, I
      I = 1
23000 IF(.NOT.(GETARG(I, ARG, 40) .NE. -1))GOTO 23002
      IF(.NOT.(ARG(1) .EQ. 63 .AND. ARG(2) .EQ. 0))GOTO 23003
      CALL ERROR (18Husage:  ll [file].)
23003 CONTINUE
      IF(.NOT.(ARG(1) .EQ. 45 .AND. ARG(2) .EQ. 0))GOTO 23005
      FD = 1
      GOTO 23006
23005 CONTINUE
      FD = OPEN(ARG, 1)
23006 CONTINUE
      IF(.NOT.(FD .EQ. -3))GOTO 23007
      CALL CANT(ARG)
      GOTO 23008
23007 CONTINUE
      CALL DOLL(FD)
      IF(.NOT.(FD .NE. 1))GOTO 23009
      CALL PUTC(32)
      CALL PUTLIN(ARG, 2)
      CALL CLOSE(FD)
23009 CONTINUE
      CALL PUTC(10)
23008 CONTINUE
23001 I = I + 1
      GOTO 23000
23002 CONTINUE
      IF(.NOT.(I .EQ. 1))GOTO 23011
      CALL DOLL(1)
      CALL PUTC(10)
23011 CONTINUE
      RETURN
      END
      SUBROUTINE DOLL(FD)
      INTEGER FD
      LOGICAL*1 GETCH
      LOGICAL*1 C
      INTEGER LEN, MINL, MAXL
      MINL = 10000
      MAXL = 0
      LEN = 0
23013 IF(.NOT.(GETCH(C, FD) .NE. -1))GOTO 23014
      IF(.NOT.(C .EQ. 10))GOTO 23015
      IF(.NOT.(LEN .GT. MAXL))GOTO 23017
      MAXL = LEN
23017 CONTINUE
      IF(.NOT.(LEN .LT. MINL))GOTO 23019
      MINL = LEN
23019 CONTINUE
      LEN = 0
      GOTO 23016
23015 CONTINUE
      LEN = LEN + 1
23016 CONTINUE
      GOTO 23013
23014 CONTINUE
      IF(.NOT.(MINL .EQ. 10000))GOTO 23021
      MINL = 0
23021 CONTINUE
      CALL PUTDEC(MINL, 5)
      CALL PUTC(32)
      CALL PUTDEC(MAXL, 5)
      RETURN
      END
