aboutsummaryrefslogtreecommitdiff
path: root/unix/boot/spp/rpp/rpprat/outch.r
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /unix/boot/spp/rpp/rpprat/outch.r
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'unix/boot/spp/rpp/rpprat/outch.r')
-rw-r--r--unix/boot/spp/rpp/rpprat/outch.r51
1 files changed, 51 insertions, 0 deletions
diff --git a/unix/boot/spp/rpp/rpprat/outch.r b/unix/boot/spp/rpp/rpprat/outch.r
new file mode 100644
index 00000000..f7dfa99e
--- /dev/null
+++ b/unix/boot/spp/rpp/rpprat/outch.r
@@ -0,0 +1,51 @@
+include defs
+
+# outch - put one character into output buffer
+
+subroutine outch (c)
+
+character c, splbuf(SZ_SPOOLBUF+1)
+integer i, ip, op, index
+include COMMON_BLOCKS
+external index
+string break_chars " ),.+-*/("
+
+ # Process a continuation card. Try to break the card at a whitespace
+ # division, operator, or punctuation mark.
+
+ if (outp >= 72) {
+ if (index (break_chars, c) > 0) # find break point
+ ip = outp
+ else {
+ for (ip=outp; ip >= 1; ip=ip-1) {
+ if (index (break_chars, outbuf(ip)) > 0)
+ break
+ }
+ }
+
+ if (ip != outp & (outp-ip) < SZ_SPOOLBUF) {
+ op = 1
+ for (i=ip+1; i <= outp; i=i+1) { # save chars
+ splbuf(op) = outbuf(i)
+ op = op + 1
+ }
+ splbuf(op) = EOS
+ outp = ip
+ } else
+ splbuf(1) = EOS
+
+ call outdon
+
+ for (op=1; op < col; op=op+1)
+ outbuf(op) = BLANK
+ outbuf(6) = STAR
+ outp = col
+ for (ip=1; splbuf(ip) != EOS; ip=ip+1) {
+ outp = outp + 1
+ outbuf(outp) = splbuf(ip)
+ }
+ }
+
+ outp = outp + 1 # output character
+ outbuf(outp) = c
+end