// MICSTATS -- statistics for Micro
// last edited February 5, 1981 11:34 AM
// Copyright Xerox Corporation 1979, 1981
get "micdecl.d"
external // defined here
[ symstats
]
external
[ // O.S.
Zero
]
let symstats() be
[ let lc = lchan
lchan = erlchan
scinit(0, 0, 0)
let ns, nw = vec maxtype, vec maxtype
Zero(ns, maxtype+1)
Zero(nw, maxtype+1)
let nm, macw = 0, 0
[ let ep = scnext()
if ep eq 0 break
let j = ep!stype
test j ls 0 ifso j = adrtype
ifnot if j gr maxtype then j = mactype
ns!j = ns!j+1
nw!j = nw!j+typesizes!j+1+lenname(ep)/2+1
if j ne mactype loop
let dp = fstop-ep!stype
let di = 2
until dp>>bytes↑di eq Aend do
di = selecton dp>>bytes↑di into
[ case Aargn: case symc: case numc: case num6c: 2
case symc+200b: case numc+200b: case num6c+200b: 3
default: 1
] + di
let w = (di rshift 1) + 1
nm, macw = nm+1, macw+w
] repeat
let stot, wtot = 0, 0
for i = 0 to maxtype do stot, wtot = stot+ns!i, wtot+nw!i
symspace("*NTotal of ", stot, wtot)
for i = 0 to maxtype do
[ llstr(typenames!i); symspace(": ", ns!i, nw!i)
]
llstr("*NMacro defs: "); ldec(nm)
llstr(", words: "); ldec(macw)
lcrlf()
lchan = lc
]
and symspace(str, n, nw) be
[ llstr(str)
ldec(n)
llstr(" symbols, ")
ldec(nw)
llstr(" words*N")
]