denbeste@bgsuvax.UUCP (02/28/87)
I am having difficulties writing what should be a simple program. I want to
read in a character at a time from the keyboard and print out the next higher
character. I also want a prompt to be displayed. My initial expectation was
to write the program as follows
PROGRAM NextChar(Input,Output);
VAR
ch : Char;
BEGIN
WriteLn('Press RETURN to Exit');
Write('prompt>');
REPEAT
Read(CH);
Write(chr(ord(ch)+1));
UNTIL ch = chr(13);
WriteLn(' Thank You.');
END.
My problem with this is that Read doesn't pass on the char until return has
been pressed on the keyboard.
One sugestion was to use the SMG$ routines and create a virtual keyboard.
This worked, except that it created another problem. None of my output,
including the prompt, was echoed until the WriteLn was encountered. (It is
also a royal pain for such a simple task.)
Please excuse any typos in the example, as I had to retype it in on our UNIX
vax for posting.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Wiliam C. DenBesten | ... !osu-eddie!bgsuvax!denbeste UUCP
Dept of Computer Science | denbeste%research1.bgsu.edu@csnet-relay ARPA
Bowling Green State University | denbeste@research1.bgsu.edu CSNET
Bowling Green, OH 43403-0214 | #include <std.disclaimer.h>
--------------------------------+----------------------------------------------
There is no difference between theory and practice in theory, but there is
often a great deal of difference between theory and practice in practice.perry@vu-vlsi.UUCP (03/01/87)
In article <701@bgsuvax.UUCP> denbeste@bgsuvax.UUCP (William C. DenBesten) writes: >I am having difficulties writing what should be a simple program. I want to >read in a character at a time from the keyboard ... Here is a sample program doing single character input from VAX/VMS Pascal, see $help system and look at sys$library:starlet.pas for more info on the wierd $assign and $qiow bs. Unfortunately, I don't think there is any way to get the io$ symbols directly into Pascal, I copied the values from one of the FORSYSDEF modules... ...Rick ..{cbmvax,pyrnj,bpa}!vu-vlsi!perry perry@vuvaxcom.bitnet --- [inherit('sys$library:starlet')] program ascii(output); var c:char; chan: [word] 0..65535; code: integer := %x'3A' + %x'40'; { io$_ttyreadall + io$m_noecho } begin $assign('tt',chan); open(output,'tt:'); rewrite(output); writeln('Enter Q or q to quit.'); writeln('Start entering characters...'); repeat $qiow(,chan,code,,,,c,1); writeln('Character=',c,' ASCII code = ',ord(c):1) until (c='Q') or (c='q') end.