VX/SMG OpenVMS SMG (Screen Management) API's (SMG$) Library for Linux and UNIX - OpenVMS Migration


OpenVMS SMG (Screen Management) API's (SMG$) Library for Linux and UNIX. VX/SMG duplicates OpenVMS SMG functionality on Linux and UNIX. All API calls (SMG$) take identical arguments as SMG on OpenVMS. OpenVMS application programs that use SMG on OpenVMS will simple compile and can expect identical screen presentation

Learn More

INTRODUCTION

VX/SMG has been ported to all the popular UNIX computers. Implemented on top of a C-based Windows package that is universally portable, VX/SMG provides users with a complete set of utility functions for handling terminal I/O. VX/SMG is designed to provide multiple windows or views on a terminal screen. A window is represented by a logical entity called a virtual display. A terminal screen is represented by a logical entity called a pasteboard. Operations to create, input, paste, view, etc. are all handled with full compatibility.


FUNCTIONALITY

Output operations that occur through virtual displays are also supported. Screen management composition operations include: Paste/unpaste/repaste Move Delete and pop Occlusion check (overlap) Output screen management operations through virtual displays include:

Cursor positioning
Deletion
Erasure
Insertion

Like SMG under VMS, VX/SMG provides a user with two routines capable of supporting the writing of text to a virtual display, character-oriented output and line-oriented output. With VX/SMG, a user is also able to change the rendition of a virtual display, draw and/or remove drawn lines and characters. VX/SMG applications use the run-time system to display forms and their associated data fields and to control the I/O stream. The entire terminal I/O is passed through ASCII strings.

VIEWPORT

An additional feature of VX/SMG is viewports. A viewport is a subset of the area defined by a virtual display. A virtual display may be larger than the physical terminal. Normally, this would require the virtual display to be re-pasted to see all of it. A viewport provides a window into the virtual display. Different areas of the display can then be viewed by using the scroll and move operations allowed for viewports

.

API & INTERFACE

Screens developed with SMG were intended to run only on VAX computers with the VMS operating system. The complexity of SMG, OpenVMS VMS specific run-time dependencies and platform-specific programming language interface constructions, effectively prohibited (until now) the porting of SMG created screens. In addition to being fully integrated with Sector7's VMS Support Libraries (VX/RT), VX/SMG includes a complete set of language interface utilities that facilitate the necessary changes to complete the linking process. VX/SMG interface utilities are available for all VMS-supported programming languages. Utility procedures provide system-independent routines that complete (as required) "INCLUDE" statement changes, integration of VMS descriptors, call name changes and argument list completion.

TERMINAL CAPABILITY

VX/SMG provides support for many of SMG's unique features. A virtual display can be removed from the pasteboard without being deleted. This allows the user additional flexibility for manipulating the terminal screen. Bordered windows can be pasted in such a way as to be partially off the screen. The same is true for viewports. Users can directly access the terminal database. This feature permits a user to by-pass all the normal VX/SMG functions and perform direct terminal and keyboard I/O.

PROGRAMMING

Screens using VX/SMG allow the programmer to use existing SMG features, including multiple window capability and independent terminal functionality. Pasteboards may be associated with a file instead of a terminal screen. Support for internal menu functions provides complete "create and make" selection capabilities. VX/SMG provides extensive support for both output and input operations. Composition operations (output) are fully supported and behave as their VMS counterparts.
SMG SUPPORTED API's (SMG$)
SMG$ADD_KEY_DEF
SMG$ALLOW_ESCAPE
SMG$BEGIN_DISPLAY_UPDATE
SMG$BEGIN_PASTEBOARD_UPDATE
SMG$CANCEL_INPUT
SMG$CHANGE_PBD_CHARACTERISTICS
SMG$CHANGE_RENDITION
SMG$CHANGE_VIEWPORT
SMG$CHANGE_VIRTUAL_DISPLAY
SMG$CHANGE_VIRTUAL_KEYBOARD
SMG$CHECK_FOR_OCCLUSION
SMG$CONTROL_MODE
SMG$COPY_VIRTUAL_DISPLAY
SMG$CREATE_KEY_TABLE
SMG$CREATE_MENU
SMG$CREATE_PASTEBOARD
SMG$CREATE_VIEWPORT
SMG$CREATE_VIRTUAL_DISPLAY
SMG$CREATE_VIRTUAL_KEYBOARD

SMG SUPPORTED API's (SMG$) CONT...
SMG$CURSOR_COLUMN
SMG$CURSOR_ROW
SMG$DEFINE_KEY
SMG$DELETE_CHARS
SMG$DELETE_KEY_DEF
SMG$DELETE_LINE
SMG$DELETE_MENU
SMG$DELETE_PASTEBOARD
SMG$DELETE_VIEWPORT
SMG$DELETE_VIRTUAL_DISPLAY
SMG$DELETE_VIRTUAL_KEYBOARD
SMG$DISABLE_BROADCAST_TRAPPING
SMG$DRAW_CHAR
SMG$DRAW_CHARACTER
SMG$DRAW_LINE
SMG$DRAW_RECTANGLE
SMG$END_DISPLAY_UPDATE
SMG$END_PASTEBOARD_UPDATE
SMG$ERASE_CHARS
SMG$ERASE_COLUMN
SMG$ERASE_DISPLAY
SMG$ERASE_LINE
SMG$ERASE_PASTEBOARD
SMG$FIND_CURSOR_DISPLAY
SMG$FLUSH_BUFFER
SMG$GET_BROADCAST_MESSAGE
SMG$GET_CHAR_AT_PHYSICAL_CURSOR
SMG SUPPORTED API's (SMG$) CONT...
SMG$GET_DISPLAY_ATTR
SMG$GET_KEYBOATD_ATTRIBUTES
SMG$GET_KEY_DEF
SMG$GET_PASTEBOARD_ATTRIBUTES
SMG$GET_PASTING_INFO
SMG$GET_TERM_DATA
SMG$GET_VIEWPORT_CHAR
SMG$HOME_CURSOR
SMG$INIT_TERM_TABLE
SMG$INIT_TERM_TABLE_BY_TYPE
SMG$INSERT_CHARS
SMG$INSERT_LINE
SMG$INVALIDATE_DISPLAY
SMG$KEYCODE_TO_NAME
SMG$KEYPAD_MODE
SMG$LABEL_BORDER
SMG$LIST_KEY_DEFS
SMG$LIST_PASTING_ORDER
SMG$LOAD_KEY_DEFS
SMG$LOAD_VIRTUAL_DISPLAY
SMG$MOVE_TEXT
SMG$MOVE_VIRTUAL_DISPLAY
SMG$NAME_TO_KEYCODE
SMG$SET_PHYSICAL_CURSOR
SMG$SET_TERM_CHARACTERISTICS
SMG$UNPASTE_VIRTUAL_DISPLAY