tenaglia@mis.mcw.edu (Chris Tenaglia - 257-8765) (12/01/89)
Dear Icon-Group :
Here is a simple and handy procedure I use all over the place. It's
called input. I've used it in DOS, VMS, and UNIX. Although in unix
I've had to make it a little different in some cases.
Problem : Getting a screen inputted value takes 2 lines.
writes("Enter Value>")
value := read()
Solution: It would be nice to do it in one line.
value := input("Enter Value>")
Method : Input Procedure...
procedure input(prompt)
writes(prompt)
return read()
end
Example : Main procedure parameters.
This example also makes nice use of what I call the
'either or' construct (alternation).
procedure main(files)
source := (files[1] | input("Source File:") | stop("Cancelled"))
target := (files[2] | input("Target File:") | stop("Cancelled"))
VMS : The procedure will fail if CTRL_Z is pressed. This adds a little
& of the failure driven stuff.
DOS
UNIX : However, under unix, CTRL_Z stops the process. And pressing CTRL_D
seems to cause a failure avalanch. In one application I ended up
defining . as the failure string. The procedure looks like ...
procedure input(prompt)
local temp
writes(prompt)
temp := read()
if temp ~== "." then return temp else fail
end
Conclusion : I hope some of you out there may find this helpful/useful.
Perhaps there is room for improvement, especially in the
UNIX example. Perhaps instead of a single string, it can
truly dynamic (like write()). Enjoy !
Chris Tenaglia (System Manager)
Medical College of Wisconsin
8701 W. Watertown Plank Rd.
Milwaukee, WI 53226
(414)257-8765
tenaglia@mis.mcw.edu