summaryrefslogtreecommitdiff
path: root/ipl/progs/isrcline.icn
diff options
context:
space:
mode:
Diffstat (limited to 'ipl/progs/isrcline.icn')
-rw-r--r--ipl/progs/isrcline.icn51
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