PAL CARD CATALOG ENTRY

SHORT DESCRIPTION

Simplified VAX/VMS Screen Manager (SMG$)


MOVEMENT WITHIN THE PAL CARD CATALOG
Move to top-level taxonomy
Move to keyword list

ASSET PROFILE

UNIT NAME
VAX_Screen_Manager
VERSION
1
REVIEW CODE
C1 1.0 B
INET ADDRESS
sun1.disacim.osd.mil (134.152.9.140)
AUTHOR
U.S. Army Information System Engineering Command
Ft. Belvoir, VA 22060-5456
RIGHTS
Approved for Public Release; Distribution Unlimited
COPYRIGHT
None -- Public Domain.
DATE CREATED
October 29, 1991
DATE RELEASED
January 17, 1994
DATE LAST UPDATED
January 17, 1994
LOCATION
DSRS Library
PAL
ENVIRONMENT
DEC Microvax II running DEC Ada Version 2.0.
LIMITATIONS
Not documented in PAL database
CERTIFICATION
Ada System Certifier_1 1.0
Date/Time of Processing: Wednesday 25 May       1994 02:28:00Pm
Overall Assessment of System: OK
Classification of System: B
Basis of Classification --
Syntax Errors                               PASS
Completeness                                PASS
Independence from External Libraries        FAIL
Independence from a Specific Ada Compiler   PASS

Explanations for failures --
System withs non-standard library units that are not provided

Number of ...
Files               1
Library Units       2
Lines            2866
Statements        388
Comments         1624

Unidentified Withed Units --
4 unidentified withed units

FILE LISTING

Directory Display


languages/ada/swcomps/dsrs/scrnmgr:
  File Name                 Size
  ---------                 ----
  scrnmgr.zip             67,220


Totals
  ==============  ==============
    1 Files               67,220

ABSTRACT

                               Vax_Screen_Manager
                                   01D001OX.1
                               (Old ID: RIA0014A)
PURPOSE/INTENDED USE:
Vax_Screen_Manager is an Ada generic package that provides a simplified
interface with basic VAX/VMS Screen Manager (SMG$) run-time library
subprograms.  By using SMG run-time subprograms, user programs are
entirely separate from the physical devices that actually perform input
and output.  This allows input and output (I/O) to be terminal
independent.  Operations provided include: 

   o Initializing, deleting, refreshing and printing a display screen.
   o Creating, deleting and changing a window on a display screen.
   o String/line manipulation in a window.
   o Creating, deleting, and modifying a virtual keyboard.

Since this interface is a simplified version of the Screen Manager
subprograms and consists of a subset of those subprograms, not all of
the parameters available for use have been utilized.  All restrictions
that apply to the SMG run-time subprograms, also apply to this package. 

EXAMPLE APPLICATIONS:
Reuse of this package would be appropriate for any application that uses
a window-oriented user interface.  A window (a rectangular portion of an
essentially unbounded world coordinate space) contains the information
to be displayed.  An application may: 

   o Set up a menu driven interface.
   o Set up pop-up windows.
   o Set up a form with protected windows for keywords, and unprotected 
     windows for user inputs.

CERTIFICATION LEVEL:
VAX_Screen_Manager is certified at Level 4.  This means that the Defense
Information Systems Agency/Center for Information Management Software
Reuse  Program (SRP) management office has successfully compiled the
code of this  Reusable Software Asset (RSA) and measured
maintainability, portability,  reliability and reusability.  In
addition, this RSA includes a test suite and a  Reuser's Manual, which
will be provided when the asset is extracted. 
 
IMPLEMENTATION ISSUES:
All restrictions that apply to the SMG run-time subprograms also apply
to this package. 

Vax_Screen_Manager depends on (withs) the DEC Ada version of the Ada
predefined  package System, the Ada predefined package
Unchecked_Conversion, and on the DEC Ada supplied packages Starlet, SMG,
LIB, and Condition_Handling. 

The generic formal parameters of Vax_Screen_Manager are as follows:
                                                    
  Screen_Device : STRING := "";
     -- Defines the device to be used for the output. The default device
     -- is the terminal.
  Keyboard_Device : STRING := "";
     -- Defines the device to be used for input. The default device is
     -- the physical keyboard.

Vax_Screen_Manager defines the following exceptions:

    Insufficient_Virtual_Memory     Screen_Not_Found            
    Window_Not_Found                Window_Not_Pasted           
    Invalid_Column                  Invalid_Row                 
    Invalid_Text_Data               End_Of_File_Reached         
    Invalid_Keyboard_Device         Keyboard_Not_Found          
    Read_Canceled                   Read_Aborted                
    Request_Failed              
               
HARDWARE/ENVIRONMENT CONSTRAINTS AND LIMITATIONS:
This package was compiled on a DEC Microvax II running DEC Ada Version 2.0.

SUBUNITS:
Vax_Screen_Manager has the following visible subunits, which are grouped
according to their functionality:

   o Screen Management subprograms: 
     Shutdown_Screen Flushes all output to the display, terminates use of
                     the display screen, and deallocates all
                     buffers/resources associated with the display screen.
     Refresh_Screen  Rewrites the display screen to the terminal.
     Print_Screen    Prints the display screen image to the queue
                     specified, SYS$PRINT by default.

   o Window Management subprograms:
     Create_Window        Creates a window to be viewed on the display
                          screen.
     Delete_Window        Deletes a window from the display screen and 
                          deallocates the buffer space associated with it.
     Paste_Window         Writes a window to the display screen.
     Unpaste_Window       Removes a window from the display screen. The
                          buffer space is not released.
     Move_Window          Moves a window from one location to another
                          without changing the pasting order.
     Get_Window_Attributes  
                          Retrieves the attributes associated with a window;
                          border on/off, intensity normal/bold, and video 
                          normal/reverse.
     Set_Window_Attributes
                          Sets the attributes associated with a window:
                          border on/off, intensity normal/bold, and video 
                          normal/reverse.
     Begin_Window_Update  Signals that multiple updates will be applied to
                          the window.  All updates are saved until a call
                          to End_Window_Update occurs.
     End_Window_Update    Signals the end of updating a window.  The
                          display screen is updated with all the changes.
     Get_Window_Size      Gets the size, i.e., number of rows and columns,
                          of the specified window.
     Get_Cursor_Position  Gets the row and column location of the cursor
                          within the current window.
     Set_Cursor_Absolute  Moves the virtual cursor to the specified row and 
                          column within the window.
     Set_Cursor_Relative  Moves the virtual cursor the specified number of
                          rows and columns from the current virtual cursor.
     Scroll_Window        Scrolls the contents of a window.
     Ring_Bell            Rings the terminal bell.

   o Window Input/Output subprograms:
     Put_String       Puts a string of characters in the window starting at 
                      the current cursor position.
     Get_String       Gets a string from the specified window. The input is 
                      from the keyboard.
     Insert_String    Inserts the specified text into the current window
                      starting at the location of the virtual cursor.
     Delete_String    Deletes the specified number of characters from the
                      window, starting at the virtual cursor.  
                      The remaining characters on the line are shifted 
                      left to occupy the vacated space.
     Erase_String     Replaces the specified number of characters with
                      blanks.
     Highlight_String Changes the video/intensity of the text located 
                      at the virtual cursor, for the length specified.
     Put_Line         Puts a line of text to the window, and advances 
                      the current line to the next line in the window.
     Get_Line         Gets a line of text from the specified window.
     Insert_Line      Inserts a line into a window at the specified 
                      row and scrolls the window.
     Delete_Line      Deletes the specified number of lines 
                      (default = 1), starting at the specified row 
                      (default = 1), from the window.
     Erase_Line       Erases all or part of a line in a window, 
                      starting at the current virtual cursor position.
     Erase_Window     Replaces the whole window with blanks.

  o  Menu Management subprograms:
     Create_Menu          Creates a menu of choices in the specified window.
     Get_Menu_Selection   Allows the user to move between the menu 
                          choices and make a selection.
     Delete_Menu          Ends access to a menu in the specified window.

  o  Keyboard Management subprograms:
     Set_Keyboard_Mode    Sets the terminal's numeric keypad to either 
                          numeric or application mode.
     Read_Keystroke       Reads a keystroke.

DSRS CLASSIFICATION:
availability:  extractable
certification level:  level_4
component type:  implementation
data representation:  character
environment:  mvii/vms/vaxada
function:  create
function:  delete
function:  display
function:  get
function:  input/output
function:  insert
function:  manage
function:  move
function:  put
language:  ada
object:  character
object:  menu
object:  string
object:  window
originator:  rapid
unit type:  generic_package

LEGAL RESTRICTIONS:
This RSA contains public domain data with unlimited rights for all
users.   Extraction is permitted to all authorized library users. This
software and its documentation are provided "as is" and without any
expressed or implied warranties whatsoever.  No warranties as to
performance, merchantability, or fitness for a particular purpose exist.

The user is advised to test the software thoroughly before relying on
it.  The user must assume the entire risk and liability of using this
software.  In no event shall any person or organization of people be
held responsible for any direct, indirect, consequential or
inconsequential damages or lost profits. 

MISCELLANEOUS:
The standard for Level 4 certification has recently been upgraded. This
asset is currently undergoing modification to meet the new Level 4
requirements. 


REVISION HISTORY

January 17, 1994 Version 1 Original submission to PAL


RELEASE NOTICE

This prologue must be included in all copies of this software.
Restrictions on use or distribution:  NONE

LEGAL RESTRICTIONS:
This RSA contains public domain data with unlimited rights for all
users.   Extraction is permitted to all authorized library users. This
software and its documentation are provided "as is" and without any
expressed or implied warranties whatsoever.  No warranties as to
performance, merchantability, or fitness for a particular purpose exist.


DISCLAIMER

 This software and its documentation are provided "AS IS" and
without any expressed or implied warranties whatsoever.  No warranties
as to performance, merchantability, or fitness for a particular
purpose exist.
 The user is advised to test the software thoroughly before
relying on it.  The user must assume the entire risk and liability of
using this software.  In no event shall any person or organization of
people be held responsible for any direct, indirect, consequential or
inconsequential damages or lost profits.