[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference noted::hackers_v1

Title:-={ H A C K E R S }=-
Notice:Write locked - see NOTED::HACKERS
Moderator:DIEHRD::MORRIS
Created:Thu Feb 20 1986
Last Modified:Mon Aug 03 1992
Last Successful Update:Fri Jun 06 1997
Number of topics:680
Total number of notes:5456

540.0. "A VMS RECALL QUESTION" by YODA::TRABUCCHI () Thu Aug 27 1987 15:23

    
    
    hello,
    
    	I have a general question for all of you.  VMS implements
    a RECALL command, this I know.  Now, when the developers of
    a mail utility or some such layered software want to have a RECALL
    feature (as mail does), do they have to write their own RECALL
    routines or is there some way to use the VMS recall buffer and
    simply set some flag to use it from their layered software??
    
    				thanks,
    
    
    				Bob
    
T.RTitleUserPersonal
Name
DateLines
540.1NRADM2::MAXMGRAl CoteThu Aug 27 1987 15:276
I don't have any manuals here, but I think there are some SMG$ routines
that will help you out with this...

Al

540.2SHEILA::PUCKETTMy karma ran over my dogmaFri Aug 28 1987 01:0328
call SMG$CREATE_VIRTUAL_KEYBOARD to get a keyboard_id, then use it in a call
to SMG$READ_COMPOSED_LINE. This will read the line in and keep its own recall
buffer. If you create several virtual keyboards each will have its own recall
buffer, so recall can be made context dependent (TPU seems to do this)
You will also need to create a key table. Code example in Fortran follows
the form feed.

= Giles =

      integer function READKB(promp,line,length,file)
c
      character*(*) promp,line,file,oldfile*70
      integer SMG$READ_COMPOSED_LINE,SMG$CREATE_VIRTUAL_KEYBOARD
      data oldfile /' '/, id/0/
c
      if(file.ne.oldfile) then
         if(id.ne.0) then
            call SMG$DELETE_VIRTUAL_KEYBOARD(id)  ! ignore status
         else
            call SMG$CREATE_KEY_TABLE(idt)        ! first time through
         endif
         iret=SMG$CREATE_VIRTUAL_KEYBOARD(id,file,,,20)
         if(.not.iret) call LIB$SIGNAL(%VAL(iret))
         oldfile=file
      endif
      READKB=SMG$READ_COMPOSED_LINE(id,idt,line,promp,length)
      return
      end