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