[comp.lang.icon] ICON on VMS

tenaglia@mis.mcw.edu ("Chris Tenaglia - 257-8765") (08/20/90)

Recently someone mentioned something about Icon V8 being slower than V6 on a
microvax in regards to screen IO. This sounds like a VMS system. I've used
in primarily on VAX/VMS, but also a little on a VAX 780 running Berkeley Unix
4.3 and the screen IO behaviour difference is quite noticable.

I think it's because the VMS version is trying to emulate the data stream
concept of unix. This is why the unix redirectors <, >, and >> can be used
with VMS ICON where VAX FORTRAN doesn't handle them automatically. Therefore,
I'm not sure that we could or should ever expect speedy screen IO under VMS.
I really like the redirectors and wouldn't want to loose them. Eventually,
I'd like to see the PIPE | come to VMS ICON as well. Then we could issue
commands like ICONX PROG1 <DATA.LIS | PROG2 | PROG3 >FILTERED.LIS where
PROG1, PROG2, and PROG3 are icon executables.

There is another problem with screen IO. Here's a little program...

                        procedure main()
                          write("Hello there")
                          end

If this is run interactively the output is "Hello there". If it's run in a
batch or in a DCL subprocess window under EVE the output is
H
e
l
l
o

t
h
e
r
e
Which can make the batch log or editor buffer pretty long. I wrote a log
squeezer. Its usage is ICONX LOG <BATCH.LOG >BATCH.LIS

#######################################################################
#                                                                     #
# LOG.ICN          7/5/90          BY TENAGLIA                        #
#                                                                     #
# THIS PROGRAM SMOOTHS A BATCH LOG THAT RAN AN ICON PROGRAM           #
# ICON PROGRAMS IN BATCH TEND TO PUT ONE CHARACTER PER LINE           #
# IN THE LOG FILES, MAKING THEM HORRIBLE TO PRINT AND READ.           #
# THIS PROGRAM SENSES THE ICON ENVIRONMENT, AND TRIES TO MAKE         #
# THE LOG FILE MORE COMPRESSED AND READIBLE.                          #
# USAGE : ICONX LOG <INPUT_FILE >OUTPUT_FILE WIDTH [132]              #
#                                                                     #
#######################################################################
global tty
procedure main(param)
  width := param[1] | 132
  width := ((-width > width) | width) - 3
  text := ""
  while line := read() do
    {
    if *line > 2 then
      {
      if match("$",line) & (trim(text) ~== "") then line := "\n" || line
      both := text || line
      write(unscape(both))
      text := ""
      next
      }
    text ||:= line
    if *text > width then
      {
      write(unscape(text))
      text := ""
      }
    }
  end

#
# REMOVES MOST UGLY ESCAPE SEQUENCES
#
procedure unscape(data)
  new := "" ; toggle := -1
  while i := find("\e#"|"\e("|"\e)",data) do data[i+:3] := ""
  every byte := !data do
    {
    if byte == "\e" then
      {
      toggle := 1
      next
      }
    if toggle = 1 then
      {
      if any(&letters,byte) then toggle := -1
      next
      } else new ||:= byte
    }
  return new
  end
  
Chris Tenaglia (System Manager)
Medical College of Wisconsin
8701 W. Watertown Plank Rd.
Milwaukee, WI 53226
(414)257-8765
tenaglia@mis.mcw.edu, mcwmis!tenaglia

kwalker@CS.ARIZONA.EDU ("Kenneth Walker") (08/22/90)

> Date: Mon, 20 Aug 90 10:31:34 CDT
> From: "Chris Tenaglia - 257-8765" <tenaglia@mis.mcw.edu>
> Subject: ICON on VMS

> Recently someone mentioned something about Icon V8 being slower than V6 on a
> microvax in regards to screen IO. This sounds like a VMS system.	

> There is another problem with screen IO. Here's a little program...

The Icon interpreter is a C program that uses C's fwrite() to implement
the write() function. Do other C programs have these problems under VMS?
 
Ken Walker, kwalker@cs.arizona.edu