Abstract:
A computer terminal is disclosed which allows enhanced local configurability by permitting the user of the terminal to display information received from a remote host in a variety of ways which may be customized by the user without any programming efforts. Specifically, the terminal recognizes each screen of information downloaded from the remote host, and processes that screen in a manner easily definable by the user. This includes translation of literals to other languages, as well as &#34;look and feel&#34; attributes, such as color, etc.

Description:
TECHNICAL FIELD 
     This invention relates to computers, and more specifically, to an improved user terminal which provides for customization by the user. 
     BACKGROUND OF THE INVENTION 
     Large mainframe computers have been in wide use for decades. These computers often include a communications system so that multiple users can access and operate the computer simultaneously. 
     A typical arrangement includes a single mainframe computer located in a computer room. Dozens, if not hundreds, of users are each provided with a computer terminal on their desktops in their own offices. The mainframe computer simultaneously services plural users, each of which is provided with his/her own terminal. These mainframe computers usually are equipped with a multi-tasking operating system such as CICS (an IBM system), UNIX (an AT&amp;T product), or other such operating system. 
     In recent years, during which the price of personal computers (PC) has drastically been reduced, it has become common practice to replace the user terminals with a PC. The PC includes numerous layers of software which work together so that the personal computer appears to the mainframe like a terminal. The PC however, has capabilities far beyond that of a standard &#34;dumb&#34; terminal. 
     An exemplary terminal emulation arrangement is described in the publication &#34;IBM Personal communications/3270 Version 3.1--Installation and User&#39;s Guide for Full-Function DOS mode&#34;. As described at chapter 5 of this publication, the end user of this system may configure certain parameters as desired. 
     The IBM arrangement contains several drawbacks. First, as noted in the publication, parameters such as screen color, curser style, etc. are in effect &#34;globally&#34;. Once the user sets the screen color, for example, it will remain the same for every screen downloaded from the host and displayed on the display. Additionally, the system is not very flexible as the options are limited and are also the same for each user. 
     The causes of the above drawbacks are best understood by examining the structure of such a system. The personal computer is equipped with several layers of software and hardware, as indicated conceptually in FIG. 1. It is understood that PC 100 may include various other hardware and software components which are not shown in FIG. 1, but which are conventional in the art. Such other components are not critical to the present invention. 
     The PC 100 runs under its own operating system 105, examples of which are Disk Operating System (DOS), Windows, etc. Communication software 104 serves to implement a predefined communications protocol between PC 100 and a remote host, such that PC 100 appears to the host like a terminal designed specifically to interface with the host. 
     In operation, a screen of information arrives via communications software 104 and is placed into a buffer 103 for display on the user&#39;s screen. In many applications, such as those related to the financial industry, the screen of information usually includes numerous fields, one or more of which may require or allow the user to input data. The fields are displayed on the screen in an order and layout that makes user input of data convenient. 
     Applications programming interface 102 is a set of programming tools which allows the programmer, among other things, to write applications for retrieving information from buffer 103 and formatting that information before displaying it on screen 101. For example, the programmer may use API 102 to write application programs such that the screen color is different from what it would be if the information was simply displayed from buffer 103 directly onto screen 101. These applications will be termed &#34;display routines&#34; for purposes of explanation hereafter. 
     Importantly, the APIs may be used so that the alteration performed upon the screen information in buffer 103 is different depending upon the particular screen received and being displayed. Specifically, the screen of information stored in buffer 103 usually contains a screen identification (ID) code comprising several bytes of information in a predetermined location. The screen ID is generated by the application at the remote host, and serves to assist the display routine in identifying which particular screen has been received for display. 
     For example, consider two possible screen IDs, 123 and 890. Suppose that the screen of information associated with the 123 screen is intended to be read by the display routine from buffer 103, altered in a first manner, and displayed on display 101. Suppose further that the screen of information associated with screen ID 890 is intended to be read from buffer 103 by the display routine and altered in a second and different manner prior to display on display 101. 
     In order to ensure that the display routine can determine which screen is in fact stored in buffer 103, the screen ID is utilized. The display routine reads the screen ID from buffer 103 and based thereon, determines which screen is stored in buffer 103. After determining which screen is stored in buffer 103, the display routine is programmed to display the information in that screen (e.g.; fields and other data) in a predetermined manner based on several parameters associated with the Screen ID. Of course, in actuality, there would typically be many different screen IDs consisting of numerous alpha numeric combinations. 
     There are several problems associated with the above described prior art systems. One problem is that every screen downloaded by the host computer into buffer 103 must in fact contain a screen ID in the predetermined field in order to be recognized by the display routine. If no screen ID is present, the display routine does not know how the screen of information should be displayed. 
     Another major problem with the above arrangement is that if the application is changed, no display or a meaningless display may result. Specifically, suppose that the application running on the remote host were changed so that several fields were removed and/or other fields were added. Suppose further that the screen I, associated with the screen was not modified. 
     The display routine would simply recognize the screen ID and attempt to display the screen of information in a manner prescribed for a screen with that particular ID. However, the display routine will be looking for fields which are not present in buffer 103 (if these fields have been deleted), or alternatively, will not display fields which are contained within buffer 103 (if fields have been added at the remote application). Other problems may arise if the location of fields on the screen being received from the remote host has changed. In any case, the user may see a screen with missing information, or with information which is irrelevant such as random characters which the display routine believes is meaningful information. 
     Another severe drawback of the prior art arrangement described above is that solutions are not dynamic. Specifically, consider the case wherein a programmer writes a display routine using an API 102. If the remote application at the host is changed, the display routine must be rewritten to (i) recognize new fields and (ii) not display fields which are no longer present. Additionally, new programming at the host application may be required in order to provide a new screen ID number. 
     In view of the above, it can be appreciated that there a exists a need in the prior art for improvements which provide easy integration and display of numerous screens, flexibility to the user, and simple straightforward user customization. 
     SUMMARY OF THE INVENTION 
     The above and other problems of the prior art are overcome in accordance with the present invention which relates to a display routine which is based upon an algorithm which recognizes the screen by the layout and fields therein, not based solely upon the particular screen ID number. In accordance with the invention, an image recognition algorithm is utilized to recognize and display the information stored in buffer 103. The information is read from buffer 103 and processed by an algorithm which generates a unique ID number. If the ID number matches a predetermined list of stored ID numbers, the screen is recognized as a predetermined screen and is displayed in an appropriate manner. If not, the screen is assumed to be a new screen and is displayed in the exact manner in which it is stored in buffer 103. Accordingly, if the screen ID number remains the same but the application is altered such that fields are added, removed, etc., the screen will be recognized as a new screen (since a different screen ID will be generated) and the changes in the field will be nonetheless properly displayed. 
     Optionally, the user will then be permitted to define display parameters (e.g.; layout, color, context, sensitive help, etc.) for the new screen. The new screen ID and its associated display parameters will then be stored for use when the new screen is next utilized. 
     By generating the screen ID at the local terminal and by recognizing the screen based on its image rather than upon the ID transmitted by the remote host, the algorithm is adaptable, dynamic, and user configurable and contains numerous specific advantages as detailed below. Additionally, the algorithm allows the user of the data to modify the display. 
     In other enhanced embodiments to be described below, the user is permitted to specify a multiplicity of parameters to be associated with the unique screen ID generated by his personal computer for a particular screen. For example, the user may specify that when a particular screen is recognized and when the cursor is in a predetermined position on that recognized screen, that a particular help list should be displayed when the help key is pressed. Alternatively, the user can configure his local system so that particular fields are displayed, protected, masked, or such that function keys are remapped for each particular screen differently. 
     In summary, by having the local user terminal specifically recognize each screen based on its image (instead of just looking at the screen ID), the user is provided with greater flexibility in processing and display of that screen to said user. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 shows a conceptual diagram of a portion of the software contained within an exemplary personal computer; 
     FIG. 2 is a flow chart of an algorithm which may be implemented by the display routine in order to generate user configurable and customized displays; 
     FIG. 3 shows an additional portion of the algorithm displayed in FIG. 2; 
     FIG. 4 is a block diagram depicting some additional capabilities of the present invention; and 
     FIG. 5 depicts non-linear point and shoot capabilities, more fully described later herein. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 2 shows a block diagram of a flow chart which can be implemented in any of a variety of programming languages in order to read information from a buffer and display it on a screen. In one preferred embodiment, theflow chart was implemented using the C++ language. 
     After the program enters start 201, a connection to a remote application isestablished at block 202. Next, control is transferred to operational block203 labelled &#34;read buffer&#34;. The screen information is read from buffer 103 and is used as an input to a screen recognition algorithm represented by operational block 204. Operational block 204 outputs a screen ID which uniquely identifies the particular screen by its layout, fields, etc., as will be described in more detail later. For immediate purposes however, the output of operational block 204 is an ID which uniquely identifies thescreen stored in buffer 103. The screen ID is then compared to a list of pre-stored screen IDs, the IDs being stored in a file on the hard disk of the PC. 
     If the screen ID generated by operational block 203 matches an ID in the pre-stored list, then decision block 205 will use the screen ID to locate pre-stored information indicating various display parameters such as screen color, field protection for a particular field, masking, help, datafield background and foreground colors, and other such parameters to be described later. These parameters are read from the PC&#39;s storage medium (e.g.; the hard disk) at operational block 207, and are used to display the screen in a user defined format at operational block 208. 
     At decision block 206, if the screen ID generated does not match any of those on the pre-stored list then a new screen ID is added to the list. The fact that the generated screen ID does not match any of the pre-storedscreen IDs means that a new or modified screen has been received. In this case, since there will be no parameters indicating how the new screen should be displayed, the screen will simply be displayed in a default format (i.e.; &#34;as is&#34;) by operational block 210. This format displays the screen exactly as it was downloaded from the host. 
     After the screen is displayed, either in default format or in a user defined format, the program enters decision block 301, shown in FIG. 3. Decision block 301 waits for user input. The input would typically be one of three types: data, function key(e.g.; PF key), or quit. If the user input is quit, then decision block 302 exits the program completely (block303). If the user input is not a quit command but rather a function key command, then decisional block 304 transfers control to check service block 305. The check service block is a program which determines what information should be displayed upon the display and what service should be performed when the particular function key in question is depressed. Such programs are known and in widespread use among those of ordinary skill in the art. 
     Once it is determined which service should be performed or what should be displayed, control is transferred to operational block 307 which performs the required services and/or displays and sends control back to decision block 301 to wait for further user input. 
     If decision blocks 302 and 304 determine that the user input was neither quit nor a function key command, then the only other possibility is that the input was data entered into a field. In such a case, operational block306 transmits the data to the remote host in a manner transparent to the user. 
     Importantly, when this data is transmitted to the host it may be re-formatted or altered so that it is in the form which the host, application is expecting. For example, consider an application which includes a field entitled &#34;type of transaction&#34;. Assume that the remote host application is set up so that a 1 entered into this field means that the transaction was a sale whereas a 2 entered into this field means that the transaction was a lease. The user may configure his terminal so that he enters an S for sale and an L for lease. In such a case, operational block 306 would translate the S so that the remote host would receive a 1.Similarly, the L would be translated so that the remote host receives a 2. Another example would be if the terminal is configured to display information in a first language (e.g.; Spanish), and the host is operatingin a second language (e.g.; English). 
     Thus, the particular configuration of the user terminal is substantially independent from the remote host application, and the translations which are required as data is transmitted between the terminal and host application are substantially user transparent. 
     The particular algorithm used to recognize the screen and generate the screen ID may vary from system to system, but a particular such algorithm will now be described. The screen recognition algorithm is based on a combination of information available to the program from the display buffer sent by the remote computer, plus information entered by the user. From the display buffer, the program derives the following information: 
     a) number of fields on the screen 
     b) type of each field 
     c) coordinates of the fields (row, column) 
     d) length of the field 
     When a screen is received in the buffer, the above parameters are determined in order to generate a unique screen ID. If the ID generated matches one of those in the prestored list, then the screen is recognized and displayed in the manner previously described. If the screen ID generated using (a)-(d) does not match one of the prestored IDs, then a new screen is presumed to be in the buffer, and the program operates as previously described. 
     It is also noted that there exists the possibility that the parameters (a)-(d) above are not unique to a particular screen. In fact, it has been found that the parameters described above can only uniquely identify the screen approximately % 70 of the time. In order to ensure uniqueness, the user may point out a particular field and select that field using a mouse,for example. The user may even select a part of a field that makes the field unique. Thereafter, not only does the screen recognition algorithm use parameters (a)-(d) to recognize the screen, but the algorithm can lookfor the particular field that the user believes makes the screen unique from all other screens. The user may even name the screen as desired. 
     Concerning the services offered to the user at block 305, FIG. 4 shows a flow chart of four different types of services which may be offered. The flow chart of FIG. 4 is intended to be an implementation of blocks 305 and307 of FIG. 3. 
     Start block 401 transfers control to service type selector 402. The servicetype selector 402 determines if the type of service selected is either help403, customization services 407, import/export services 409, or some other type of service 413. Of course, it will be recognized by those of ordinaryskill in the art that the operational block 413 may represent a multitude one different services and the particulars of each of these services are not critical to the invention. 
     Examining each of the four columns of FIG. 4 separately, we turn first to help block 403 which is entered if the user requests help by pushing a pre-determined key. Operational block 403 then transfers control to block 404 which reads the help text or list from a data base and displays the help text or list on the user&#39;s screen. Importantly, the help is context sensitive. Additionally, the help may be defined by the user to meet his specific needs. 
     For example, consider a field which the remote host application allows to be filled in with one of ten possible values. The user is given a menu driven utility which allows him to define the help key such that when the cursor is in the field in question and the help key pushed, a predetermined set of the options is displayed. Thus, if the user only usesfive of the ten possibilities, he need not read through all ten. Moreover, each user can configure his help list to include any desired entries. Software developers will be knowledgeable as to how to write the software for generating menus to allow for user customization in a manner straightforward to the user. 
     Data input decision block 405 is then entered. If the user selects one of the numerous entries from the help list, operational block 406 will transmit the selection to the host. Additionally, if the help list entry selected may actually appear different from what is transmitted to the host however, any translation between formats is done in a manner transparent to the user. The program then returns to position B in FIG. 3. 
     There are several important aspects to the manner in which help is implemented. First, the list displayed when help is selected is dependent upon several factors. First, the list is dependent upon the present screenbeing displayed as well as the position of the cursor. Importantly, the help list or text displayed depends upon the user&#39;s own desires. 
     Additionally, help text may be selected and put into data fields in blockedformat rather than linear format. Specifically, as shown in FIG. 5, previous text selection mechanisms allow text from point 501 to point 503 to be selected as input to a data field however, such prior methods required that the entire line 504 also be selected. In the present invention, the block indicated by 502 can be selected. Thus, the block mayinclude multiple lines of text yet be shorter in width than any of the lines. When block 502 is outlined and a predetermined key is pressed, the blocked text may be entered directly into pre-defined fields in a databaseapplication. 
     Returning to FIG. 4, customization menu 407 provides a menu driven technique which allows the user to configure the appearance, any of the services, or the function keys associated with each screen and/or cursor position. The user enters customization menu by depressing a pre-determined key. The arrangement may then present numerous options to the user for rearranging the manner in which information will be displayed, the particular function keys for each desired service, etc. 
     For example, different remote application may utilize the function keys fordifferent functions. This could be confusing to a user who must remember that different keys serve different purposes in different applications. Consider the situation wherein function key F5 services a particular purpose in application 1, but function key F7 serves the same purpose in application 2. The user may wish to remap function key F5 in the second application so that it serves the purpose of function key F7. In such a case, the user can use F5 for the function in both applications. 
     Additionally, certain display parameters may be protected by a password such that they cannot be modified by the user or even viewed. For example,if the user wishes to modify a field named &#34;Bank account balance&#34;, the customization menu would have a layer of security software prohibiting such modification. 
     Import/export services 409 provide a technique for the user to retrieve data from an outside service or export data to an external service. At block 410 it is determined whether an import or export service is desired,and control is transferred to the appropriate one of operational blocks 411and 412. Thereafter, the system returns to its &#34;wait for user input&#34; state.Finally, other services block 413 provides any one or more services which may be unrelated to the present invention. If the user desires to access one of these services, a predetermined key is pushed which prompts the system to save the current cursor position, screen, and other associated data and run the external service at block 415. After the external serviceis run, block 416 returns the system to the saved position, and continues to wait for user input. 
     In another embodiment, fields which are down loaded from the host with the same value each time may be remapped at the user&#39;s terminal. Specifically,consider an application wherein a sales agent in a corporation is presentedwith a particular screen. Assume that one of the fields on the screen is the sales agent location which always comes down from the host with the preassigned value &#34;New York&#34;. The user terminal may be configured such that the value is always displayed as &#34;Manhattan&#34;. In accordance with the inventive technique, the initial condition (i.e.; New York) is checked in order to ensure that the field is arriving with the value &#34;New York&#34; filled in. If the field arrives with the value &#34;Long Island&#34; filled in (indicating that the application program has been changed to reflect the fact that this sales agent has been moved to Long Island) then the terminal will display the field exactly as it arrives from the remote host, rather than remapping it to display the word &#34;Manhattan&#34;. Thus, the terminal is arranged so that as long as the initial condition remains the same, the field will be displayed in a first form but if the initial condition changes, the field will be displayed however it arrives from theremote host. 
     Another optional enhancement allows predetermined fields to be saved to a database for later use. For example, when the screen information arrives at the terminal, the terminal may save specified field for specified screens into a database serving a predefined structure. By allowing the user to determine which of these fields are displayed from which screens, databases can be built on specified fields concerning each transaction which took place. 
     While the above describes the preferred embodiments of the invention, it will be apparent to those of ordinary skill of the art that numerous modifications and/or additions may be implemented. Such modifications and variations are intended to be covered by the following claims.