Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!decwrl!ucbvax!mis.mcw.edu!tenaglia From: tenaglia@mis.mcw.edu ("Chris Tenaglia - 257-8765") Newsgroups: comp.lang.icon Subject: ICON on VMS Message-ID: <0093B790107BF840.2040021F@mis.mcw.edu> Date: 20 Aug 90 15:31:34 GMT Sender: daemon@ucbvax.BERKELEY.EDU Distribution: inet Organization: The Internet Lines: 101 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 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.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 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