diff options
Diffstat (limited to 'ipl/procs/bkutil.icn')
-rw-r--r-- | ipl/procs/bkutil.icn | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/ipl/procs/bkutil.icn b/ipl/procs/bkutil.icn new file mode 100644 index 0000000..97d9bac --- /dev/null +++ b/ipl/procs/bkutil.icn @@ -0,0 +1,81 @@ +############################################################################ +# +# File: bkutil.icn +# +# Subject: Procedures for HP95LX phone books and appointment books +# +# Author: Robert J. Alexander +# +# Date: August 14, 1996 +# +############################################################################ +# +# This file is in the public domain. +# +############################################################################ +# +# Utility procedures for HP95LX phone book and appointment book processing. +# +############################################################################ +# +# See also: abkform.icn, pbkform.icn +# +############################################################################ + +procedure bk_int(i) + return char(i % 256) || char(i / 256) +end + +procedure bk_read_int(f) + return ord(reads(f)) + 256 * ord(reads(f)) +end + +procedure bk_format_lines(s,width) + local lines,lines2,line,c,lineSeg + /width := 39 + lines := [] + # + # Make a list of the actual lines, as delimited by "\0". + # + s ? { + while put(lines,tab(find("\0"))) do move(1) + put(lines,"" ~== tab(0)) + } + # + # Now build a new list, with lines longer than "width" broken at + # word boundaries. + # + lines2 := [] + every line := !lines do { + while *line > width do { + line ? { + # + # Scan back from end of string to find a space + # + tab(width + 2) + until pos(1) do { + c := move(-1) + if c == " " then break + } + if pos(1) then { + # + # No space was found -- use next "width" chars. + # + lineSeg := move(width) + line := tab(0) + } + else { + # + # A space was found -- break line there. + # + lineSeg := &subject[1:&pos] + move(1) + line := tab(0) + } + put(lines2,lineSeg) + } + } + put(lines2,line) + } + return lines2 +end |