SUBROUTINE MAIN LOGICAL*1 GETCH LOGICAL*1 C, BUF(512) INTEGER INT, WC(2), TWC(2), I INTEGER OPEN, GETARG, DITOC CALL QUERY(23Husage: wcnt [file] ...) TWC(1) = 0 TWC(2) = 0 I=1 23000 IF (.NOT.(GETARG(I,BUF,512).NE.-1))GOTO 23002 IF (.NOT.(BUF(1) .EQ. 45 .AND. BUF(2) .EQ. 0))GOTO 23003 INT = 1 GOTO 23004 23003 CONTINUE INT = OPEN(BUF,1) IF (.NOT.(INT .EQ. -3))GOTO 23005 CALL CANT(BUF) 23005 CONTINUE 23004 CONTINUE CALL WCOUNT(INT, WC) TWC(1) = TWC(1) + WC(1) TWC(2) = TWC(2) + WC(2) IF (.NOT.( TWC(2) .GE. 10000))GOTO 23007 TWC(1) = TWC(1) + 1 TWC(2) = TWC(2) - 10000 23007 CONTINUE IF (.NOT.(INT .NE. 1))GOTO 23009 CALL CLOSE(INT) 23009 CONTINUE 23001 I=I+1 GOTO 23000 23002 CONTINUE IF (.NOT.(I.EQ.1))GOTO 23011 CALL WCOUNT(1, TWC) 23011 CONTINUE I = DITOC(TWC, BUF, 20) CALL PUTLIN(BUF, 2) CALL PUTCH(10,2) RETURN END SUBROUTINE WCOUNT(INT, WC) LOGICAL*1 GETCH LOGICAL*1 C INTEGER INWORD, WC(2) WC(1) = 0 WC(2) = 0 INWORD = 0 23013 IF (.NOT.(GETCH(C,INT) .NE. -1))GOTO 23014 IF (.NOT.(C .EQ. 32 .OR. C .EQ. 10 .OR. C .EQ. 9))GOTO 23015 INWORD = 0 GOTO 23016 23015 CONTINUE IF (.NOT.(INWORD .EQ. 0))GOTO 23017 INWORD = 1 WC(2) = WC(2) + 1 IF (.NOT.(WC(2) .GE. 10000))GOTO 23019 WC(1) = WC(1) + 1 WC(2) = 0 23019 CONTINUE 23017 CONTINUE 23016 CONTINUE GOTO 23013 23014 CONTINUE RETURN END