home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
fchek284.zip
/
test
/
include.f
< prev
next >
Wrap
Text File
|
1995-05-11
|
4KB
|
129 lines
C Derived from Brian Downing's WC program, replacing common decls by INCLUDEs
C
C main(){ Get a file, open it, read and determine semi-useful
C statistics, print them to screen, and exit quietly.
C };
C
C This program is an example word counter that makes use of several
C Fortran intrinsic functions and data structures, such as;
C common, sub-routines, functions, inplied do loops, and much, much more.
C
Program WC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C Program: Word_Count_And_Other_Stuff C
C Written_By: Brian Downing C
C Fordham University C
C Date: October 1st-16th, 1990 C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
Character Fname*80
Call Initialize
Call GetFileName(Fname)
Call GetStats(Fname)
Call PrintStats
End
C
C SubRoutine to get all kinds of neat statistics.
C
SubRoutine GetStats(Fname)
Include 'stats.h'
Character Inline*82, Fname*80, Ch
Open (Unit=8,File=Fname,Err=999)
Do While (.TRUE.)
Read(8,10,End=888)InLine
NL = NL + 1
LastPos = INDEX(InLine,' ')
Do J = 1,LastPos
Ch = InLine(J:J)
L = IntUpCase(ICHAR(Ch))
NEC(L) = NEC(L) + 1
If ((Ch.NE.' ').AND.(Ch.NE.'.')) Then
NC = NC + 1
ElseIf (Ch.EQ.'.') Then
NP = NP + 1
Else
NW = NW + 1
EndIf
EndDo
EndDo
888 Continue
ACPW = REAL(NC)/REAL(NW)
AWPS = REAL(NW)/REAL(NP)
Return
10 Format(a)
999 Print*,'Error opening file, please verify filename and try again.'
C
C In the event of improper filename exit abruptly.
C
STOP
End
C
C SubRoutine to print to terminal all of these neat statistics.
C
SubRoutine PrintStats
Include 'stats.h'
Write(5,10)ACPW,AWPS,NW,NP,NL,NC
Write(5,20)
Do J = 65,90
Write(5,40)(CHAR(J),NEC(J),('@',K=1,(NEC(J)/10)),
1 ('*',K=1,MOD(NEC(J),10)))
EndDo
Write(5,50)
10 Format('1'30X'Word Statistics'/1x,80('*')/
1 1X'Average characters per word = 'F6.2/
2 1X'Average words per sentence = 'F6.2/
3 1X'Total number of words = 'I5/
4 1X'Total number of sentences = 'I5/
5 1X'Total number of lines = 'I5/
6 1X'Total number of characters = 'I5/)
20 Format(29x'Character Statistics'/1x,80('*')/)
30 Format(1X,A)
40 Format(1X,A','I3,1x,125(A))
50 Format(1X'Legend:'/9x'@ equals ten characters',
1 ', * equals one character.')
Return
End
C
C SubRoutine to prompt for and return a filename.
C
SubRoutine GetFileName(Fname)
Character Fname*80, Prompt*7
Prompt = '_File: '
Write(5,10)Prompt
Read(5,20)Fname
10 Format(1XA$)
20 Format(A)
Return
End
C
C SubRoutine to initailize globally used variables.
C
SubRoutine Initialize
Common /Stats/A,B,J,K,L,M,N(26)
Do O = 1,26
N(O) = 0
EndDo
A = 0.0
B = 0.0
J = 0
K = 0
L = 0
M = 0
Return
End
C
C Function to return integer value of a character in range of uppercase.
C
Function IntUpCase (I)
If ((I.LE.ICHAR('z')).AND.(I.GE.ICHAR('a'))) Then
IntUpCase = I - ICHAR(' ')
Else
IntUpCase = I
EndIf
Return
End