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!tenagliakwalker@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