diff options
Diffstat (limited to 'ipl/progs/isrcline.icn')
-rw-r--r-- | ipl/progs/isrcline.icn | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/ipl/progs/isrcline.icn b/ipl/progs/isrcline.icn new file mode 100644 index 0000000..d28e7f3 --- /dev/null +++ b/ipl/progs/isrcline.icn @@ -0,0 +1,51 @@ +############################################################################ +# +# File: isrcline.icn +# +# Subject: Program to count code lines in Icon program +# +# Author: Ralph E. Griswold +# +# Date: November 7, 1997 +# +############################################################################ +# +# This file is in the public domain. +# +############################################################################ +# +# This program counts the number of lines in a Icon program that actually +# contain code, as opposed to being comments or blank lines. +# +# Note: preprocessor directives are counted as code lines. +# +############################################################################ +# +# Links: numbers +# +############################################################################ + +link numbers + +procedure main() + local total, chaff, code, line + + total := chaff := 0 + + while line := read() do { + total +:= 1 + line ? { + tab(many(' \t')) + if ="#" | pos(0) then chaff +:= 1 + } + } + + code := total - chaff + + write(left("total lines:", 17), right(total, 6)) + write(left("code lines:", 17), right(code, 6)) + write(left("non-code lines:", 17), right(chaff, 6)) + write() + write(left("percentage code:", 17), fix(100 * code, total, 7, 2)) + +end |