[TUHS] Line Numbers Before SysIII nl? BSD num?

Tomasz Rola rtomek at ceti.pl
Thu Jul 28 10:30:14 AEST 2022


On Sun, Jul 24, 2022 at 09:02:53PM +0200, Tomasz Rola wrote:
> On Sat, Jul 23, 2022 at 08:00:10AM -0400, Dan Cross wrote:
> > On Sat, Jul 23, 2022 at 7:20 AM John Cowan <cowan at ccil.org> wrote:
> [...]
> > > An obvious approach, which would leave no real traces in documentation, would be:
> > >
> > > $ awk '{print NR, $0}'
[...]
> > > $ awk '{printf("%6d\t%s\n", NR, $0)}'
[...]
> > Yes, but awk wasn't widely available until 7th edition. I imagine work
> > on it began before `num` in 2BSD, but few outside of Bell Labs would
> > have seen it prior to 1978 or so.
[...]
> $  cat c.lisp | sed -e '{=;}' | sed -e 'N;s/\n/ /'

Ok, so maybe this is no longer very interesting subject, but I
recalled there was once a language named SNOBOL.

Wikipedia says, sed was written around 1974 [1] and about SNOBOL it
says, the language was being taught [2] in the late 1960s and early 1970s
in universities, so I guess it was quite popular. I wonder if it was
ported to Unix early enough to help before sed became available?
Anyway, I have got Phil Budne's implementation [3] and after usual
drill (configure, make, make install, stow) I could do this:

$  snobol4 -b -L ./numlines02.sno < numlines02.sno 
1       lnum = 0
2 loop  lnum = lnum + 1
3       output = lnum " " input :s(loop)
4 end

The first version did not work so well:

$  snobol4 -b -L ./numlines01.sno < numlines01.sno | head -8
1           lnum = 0
2 LOOP      line = INPUT
3 * Here: detect EOF (how?) and jump to : END
4           lnum  = lnum + 1
5           OUTPUT = lnum " " line : S(LOOP)
6 END
7 END
8 END

As I already have understood, even after reaching end of input, the
INPUT statement keeps returning last line read, counter keeps
increasing and last line is being written out for infinity. I have not
read any serious docs on SNOBOL yet, so I have no idea how to make the
'01' version work, but this is of rather small importance to the list.

However, since [2] claims SNOBOL was written in Bell Labs, just like
AWK and sed, so perhaps they could be using SNOBOL?

[1] https://en.wikipedia.org/wiki/Sed
[2] https://en.wikipedia.org/wiki/SNOBOL
[3] http://www.regressive.org/snobol4/

-- 
Regards,
Tomasz Rola

--
** A C programmer asked whether computer had Buddha's nature.      **
** As the answer, master did "rm -rif" on the programmer's home    **
** directory. And then the C programmer became enlightened...      **
**                                                                 **
** Tomasz Rola          mailto:tomasz_rola at bigfoot.com             **


More information about the TUHS mailing list