RosettaCodeData/Task/Letter-frequency/Action-/letter-frequency.action
2023-07-01 13:44:08 -04:00

61 lines
933 B
Text

INCLUDE "D2:PRINTF.ACT" ;from the Action! Tool Kit
CARD ARRAY histogram(256)
PROC Clear()
INT i
FOR i=0 TO 255
DO histogram(i)=0 OD
RETURN
PROC ProcessLine(CHAR ARRAY line)
INT i
FOR i=1 TO line(0)
DO
histogram(line(i))==+1
OD
RETURN
PROC ProcessFile(CHAR ARRAY fname)
CHAR ARRAY line(255)
BYTE dev=[1]
Close(dev)
Open(dev,fname,4)
WHILE Eof(dev)=0
DO
InputSD(dev,line)
ProcessLine(line)
OD
Close(dev)
RETURN
PROC PrintResult()
INT i
CHAR ARRAY s(10)
FOR i=0 TO 255
DO
IF histogram(i) THEN
StrC(histogram(i),s)
PrintF(" %C:%-5S",i,s)
FI
OD
RETURN
PROC Main()
CHAR ARRAY fname="H6:LETTE_KJ.ACT"
BYTE LMARGIN=$52,old
old=LMARGIN
LMARGIN=0 ;remove left margin on the screen
Put(125) PutE() ;clear the screen
PrintF("Reading ""%S""...%E%E",fname)
ProcessFile(fname)
PrintResult()
LMARGIN=old ;restore left margin on the screen
RETURN