Abstract:
A data display, preferably having screens or windows, is built from data in a data base according to a hierarchy of display knowledge. Therefore, the data values themselves are separate from the knowledge or rules that specify how the data values are displayed to a user. In particular, the display knowledge is arranged in a hierarchy so that an individual item of display knowledge may be applicable to a wide range of data values representing the attributes of a number of different objects. In many cases, the range of data values or the attributes which the data values represent can be changed without any need to change the display knowledge. In other cases, only minor changes to the display knowledge are needed to properly display values for new or different data. These minor changes, for example, need only be made by changing the lowest level in the hierarchy of the display knowledge or associating items of display knowledge in the lowest level with different display knowledge in the higher levels. In a preferred embodiment, the highest level of the hierarchy of display knowledge defines individual display screens, and the lowest level defines fields of successive character locations on the display screens. The individual display screens are defined by a particular sequence of fields and the data values to be displayed or associated with the fields.

Description:
BACKGROUND OF THE INVENTION 
     1. Technical Field 
     The present invention relates generally to data display terminals for data processing systems, and more particularly to software utilities for interfacing an application program to a data display terminal. Specifically, the present invention concerns a method and system for building display screens and receiving user data entered into the display screens in such a way that the content and format of the display screens is readily adapted to a specific application or modified during the design, development and maintenance of the application program. 
     2. Background Art 
     Data display terminals are well known in the data processing field. In general, a data display terminal includes a keyboard for receiving alphanumeric data from a user, a display device such as a cathode ray tube or matrix of display elements such as electroluminescent or liquid crystal junctions, and an image buffer for storing a page of data to be displaced on the display device. 
     Typically, the image buffer is an addressable memory having respective storage locations corresponding to predefined pixel or character positions on the screen of the display device. Each storage location, for example, holds a binary code for the alphanumeric or graphic character to be displayed at the respective position, and display attributes defining the manner in which the character is to be displayed. The display attributes typically control the intensity or color of the character and permit the character to be selectively underlined, blinked, or displayed in a &#34;reversed field&#34; fashion in which the intensity or color of the background of the screen is interchanged with the intensity or specified for the character in the image buffer. 
     In some cases the image buffer is a contiguous set of storage locations allocated as a portion of the main random access memory for a central processor in a data processing system. In this case the programmer can write machine language instructions which directly specify the characters to be displayed and their respective positions on the display screen by writing character and attribute codes directly to the respective addresses of the image buffer. Alternatively, the image buffer is connected to the central processor via an input-output port, and the character and attribute codes along with specified respective image buffer addresses are transmitted through the input-output port. 
     A number of software utilities are commercially available for assisting the programmer in addressing the image buffer and specifying the desired character and attribute codes. To display a character string in a &#34;field&#34; beginning at a selected position on the display screen, for example, a subroutine in the utility is called. The character string and the selected position on the display screen are passed as parameters to the subroutine. The parameters include, for example, a literal or string variable representing the character string, and a pair of constants or numeric variables specifying the row and column coordinates of the selected position. When a variable is to be used as a parameter, the datatype or length of the variable is also specified. 
     When the data terminal is used for input of data, a character being entered on the keyboard is typically displayed at an indicated position on the display screen. That position is indicated by a special symbol or change in the display attributes, known as a &#34;cursor&#34;. The software utility for the display terminal has a data input function which activates the cursor at the current cursor position. When an alphanumeric character is entered at the keyboard, the character is written to the current cursor position of the image buffer, causing the character to be displayed in lieu of the cursor. The character may then be used as input data. Additional characters are entered by advancing the cursor position and repeating the process. 
     For many applications, it is desirable to display an entire screen of data, and then have the user enter data in selected fields on the display. The fields are assigned different access types such as &#34;output only&#34; or &#34;input-output&#34;. The fields are defined, for example, by a different subroutine call for each of the access types. When an &#34;input-output&#34; field is defined, the boundaries of the field are stored in memory. The data input function initially places the cursor at the first character position in the first &#34;input-output&#34; field. As characters are entered from the keyboard, the cursor is advanced to a position that falls within an &#34;input-output&#34; field on the display screen. Therefore, the &#34;output only&#34; fields and unassigned locations of the display screen are &#34;protected&#34; from being changed by the user. 
     The data entry process typically continues until the user enters a control character, for example, by activating an &#34;enter&#34; key on the keyboard. At this time the data input function scans the buffer image of each of the &#34;input-output&#34; fields in an attempt to convert the character codes in the images of the fields to data values consistent with the data types of the variables associated with the fields. If the conversion is unsuccessful, an error message is displayed to the user, the cursor is placed in the field containing the error and the data entry process is repeated. 
     Data-base applications have used the above-described data display and entry process. In this case a set of screens are programmed for each of the record formats of the files in the data base. As noted above, this has required a subroutine call including the screen coordinates of each field in each screen. In many cases, the programming has been rather laborious. When a record format of the data base is changed, subroutine calls for certain fields must be added or deleted, and in many cases the screen coordinates of other fields must be changed to accommodate fields that have been added or deleted. 
     SUMMARY OF THE INVENTION 
     The primary objective of the present invention is to provide a method and system for building display screens and receiving user data entered into display screens in such a way that the content and format of the display screens is readily adapted to a specific application or modified during the design, development and maintenance of the application program. 
     A specific object of the present invention is to eliminate the need for the programmer to specify screen coordinates when laying out or modifying the placement of fields on display screens when designing or maintaining an application system using a series of display screens for user input and output. 
     Another object of the present invention is to provide a method and system for displaying and editing screens of data from a database wherein the format of the database itself governs how the data is displayed on the screens. 
     Briefly, in accordance with the present invention, a data display, preferably having screens or windows, is built from data in a data base according to a hierarchy of display knowledge. Therefore, the data values themselves are separate from the knowledge or rules that specify how the data values are displayed to a user. In particular, the display knowledge is arranged in a hierarchy so that an individual item of display knowledge may be applicable to a wide range of data values representing the attributes of a number of different objects. In many cases, the range of data values or the attributes which the data values represent can be changed without any need to change the display knowledge In other cases, only minor changes to the display knowledge are needed to properly display values for new or different data. These minor changes, for example, need only be made by changing the lowest level in the hierarchy of the display knowledge or associating items of display knowledge in the lowest level with different display knowledge in the higher levels. 
     In a preferred embodiment, the highest level of the hierarchy of display knowledge defines individual display screens, and the lowest level defines fields of successive character locations on the display screens. The individual display screens are defined by a particular sequence of fields and the data values to be displayed or associated with the fields. 
     Each field, for example, is identified by a field name and defined by a field record holding the length of the field and flags indicating whether the field has respective attributes. The flags include a flag (D) indicating whether the field is to be included in the display, a flag (R) indicating whether the user is required to enter data into the field, a flag (U) indicating whether data in the field can be updated, a flag (N) indicating whether the field is associated with new data, and a flag (S) indicating whether a data processing operation is to be performed with respect to the field after the field is accessed during a display operation. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Other objects and advantages of the invention will become apparent upon reading the following detailed description and upon reference to the drawings in which: 
     FIG. 1 is a block diagram of a data processing system incorporating the present invention for building display screens on a data terminal; 
     FIG. 2 is a generalized flowchart of an application program incorporated into the system of FIG. 1; 
     FIG. 3 is a schematic diagram illustrating a series of related display screens that can be built using the system of FIG. 1; 
     FIG. 4 is a flowchart illustrating the method by which the display interface utility in the system of FIG. 1 displays a field of data on the display screen of the data terminal; 
     FIG. 5 is a flowchart illustrating the method by which the display interface utility in FIG. 1 receives data from a user after the user edits a screen of data; 
     FIG. 6 is a schematic diagram illustrating a preferred hierarchy of display knowledge used by the system of FIG. 1 for building and editing a display screen; 
     FIG. 7 is a flowchart illustrating the method by which a flexible display generator in the system of FIG. 1 builds a display screen by reading a hierarchical data base including display knowledge; 
     FIG. 8 is a diagram illustrating the format of a field record encoding the display knowledge for a single field on the display screen; 
     FIG. 9 is a flowchart of the procedure by which the flexible display generator of FIG. 1 interprets a field record in the format of FIG. 8; 
     FIG. 10 is a flowchart of a procedure by which the flexible display generator of FIG. 1 receives data entered by the user into selected fields on the display of the data terminal; and 
     FIG. 11 is a flowchart of a procedure used by the flexible display generator to validate the data values for updatable data fields after the user has had the opportunity to edit the updatable fields. 
    
    
     While the invention is susceptible to various modifications and alternative forms, a specific embodiment thereof has been shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that it is not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention as defined by the appended claims. 
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Turning now to the drawings, there is shown in FIG. 1 a block diagram of a data processing system generally designated 20 which is interfaced to a user (not shown) via a data display terminal 21. As is conventional, the data processing system 20 includes a central processing unit 22 and a memory system which is subdivided into the other components shown in FIG. 1. The memory, for example, holds an application program 23 that is executable by the central processing unit to use the data display terminal 21 for a specific application. Another portion of the memory holds a display interface utility 24 which is executable by the central processing unit 22 to cause specified alphanumeric or graphic symbols to be displayed in specified fields 25 on a display screen 26 of the data display terminal 21. 
     As is conventional, the display interface utility 24 includes means for receiving the coordinates and attributes of a specified field along with alphanumeric character codes and for displaying corresponding characters in a specified field on the display screen 26. For this purpose, the display interface utility 24 loads the alphanumeric character codes and corresponding display attributes in an image buffer 27. When the display terminal 21 is in an active display mode, whatever is in the image buffer 27 generates a corresponding image on the display screen 26. In particular, the image buffer 27 includes an addressable storage location for each character position on the screen 26. Therefore, when the display interface utility 24 receives a new set of field coordinates and a new set of alphanumeric character codes for a new field, the alphanumeric character codes are stored in a series of contiguous storage locations in the image buffer beginning at a storage location having an address corresponding to the field coordinates. 
     As is convention, the display interface 24 can selectively activate the display terminal 21 to display a special character or change the attributes of a character on the display screen 26 in order to indicate a cursor at a selected cursor position The cursor coordinates are stored in a memory location 28. When the cursor is activated, the user is able to change the position of the cursor on the display screen 26 by activating selected cursor control keys on an alphanumeric key board 29 included in the data display terminal 21. Cursor control characters such as arrows that point up or down and right to left, the &#34;tab&#34; key and the &#34;line feed&#34; key, change the position of the cursor without otherwise modifying the data displayed on the screen 26. When an alphanumeric character key is activated, however, the symbol associated with that key is displayed on the display screen 26 at cursor position, and the cursor is then advanced. 
     As will be further described below, it is advantageous to operate the data display terminal 21 by first building a particular display of alphanumeric characters on the display screen 26, permitting the user to enter data or edit selected fields on the display screen, and then causing the application program 23 to process the data having been entered or edited by the user. In this case, the cursor is constrained to lie within fields that are defined to be &#34;updatable&#34; After the data terminal 21 is initialized, for example, unassigned areas of the display screen 26 as well as fields that are defined to be &#34;output only&#34; fields are protected from data entry or editing. Information about the positions of the updatable fields is stored in an input field buffer 30. Therefore, when the cursor is to be advanced in response to the entry to a character, the cursor is advanced to the next available position indicated by the input field buffer 30. 
     When the user is finished entering or editing data in the updatable fields, the user activates an &#34;enter&#34; key or a &#34;function&#34; key to cause the application program 23 to process the data having been entered or edited. In response, the display interface utility 24 preferably returns the field coordinates and data associated with only those updatable fields within which the user has entered or edited data. For this purpose, the input field buffer 30 stores a copy of the data having been originally displayed in each input field. The display interface utility compares the contents of the input field buffer for each input field to the contents at the corresponding location of the image buffer 27 to determine which of the input fields have been modified. The display interface utility 24 can thereby determine the coordinates of the modified input fields and obtain the modified data associated with those fields from the image buffer 27. 
     A display interface utility 24 operating in the above described fashion can be implemented in a number of ways. A particularly advantageous way is for the display interface utility 24 to be built into the display terminal 21 so that the central processing unit 22 can perform other tasks when the user is entering and modifying data displayed by the display terminal 21. It should be readily apparent that a conventional personal-type microcomputer could be programmed to operate in such a fashion. Alternatively, the display interface utility 24 is a set of subroutines that are linked with the application program 23, loaded and executed by the central processing unit 22. 
     As will be further described below, a particularly troublesome problem with using such a conventional display interface utility is that the coordinates of each defined field must be provided to the display interface utility. A typical application program 23, however, may require a large number of display screen to be built and edited. This has been done, for example, by writing a subroutine call to the display interface utility for each of the fields to be defined on the display screen. In a data base management system, for example, a set of screens are programmed for each of the record formats of the files in the data base. If the data base includes a large number of record formats, however, the programming is rather laborious. Moreover, when a record format of the data base is changed, subroutines for certain fields must be added or deleted, and in many cases the screen coordinates of other fields must be changed to accommodate fields that have been added or deleted. 
     In accordance with an important aspect of the present invention, the data processing system 20 includes a flexible display generator 30 which determines the field coordinates as the screen is built by interpreting records of a data base which is preferably organized in a hierarchical fashion. The data base, for example, includes display screen definitions 32 which define each of the display screens to be used by the application program 23. Each display screen includes a predefined set of fields, and the fields are defined by respective field records 33. Each display screen is also defined by respective data values 34 that are linked to the field records. 
     While the flexible display generator 30 is building a display screen, it uses a coordinate pointer 35 to keep track of the coordinates assigned to the field record currently being interpreted as the display is built. In order to associate the fields including data entered or edited by the user, the flexible display generator 30 accesses a table 36 associating the field records for at least the updatable fields with their respective coordinates on the display screen 26. Therefore, when the user has entered or edited data in an updatable field, the coordinate table 36 can be accessed to find a pointer or data base key to the field record of the field having been modified. Since this field record is linked to a respective data value, the new data value having been entered by the user is transferred from the display interface utility 24 to the respective data value store 34. 
     After all of the newly entered or edited data values have been transferred from the display interface utility 24 to the data value store 33, the flexible display generator 30 performs an initial validity check on the new data values. For this purpose, valid data criterion 37 are defined at least for the data values associated with some of the updatable fields When the flexible display generator 30 finds a data value that does not satisfy its respective valid data criterion, an error message is displayed on the display screen 26 informing the user that invalid data has been entered. Also, fields defined to be &#34;required data&#34; fields are considered to have invalid data if data is not entered by the user. The coordinates of the field including the invalid data are determined and transmitted to the display interface utility 24 along with a display command to position the cursor at those coordinates. Then a display command is transmitted to the display interface utility to repeat the data entry process starting with the field including the invalid data. 
     The objective and operation of the system shown in FIG. 1 will become more clear when it is considered in connection with a specific application program. The system of FIG. 1, however, can be used with a wide range of application programs which operate in a similar fashion as illustrated by the generic flowchart generally designated 40 and shown in FIG. 2. 
     Turning now to FIG. 2, in the first step 41 of the application, an initial screen is selected. The display is initialized, for example, by transmitting a display command to the display interface utility 24 that clears the image buffer and sets the cursor coordinates to the upper left or &#34;home&#34; position In a similar fashion, the coordinate pointer (34 in FIG. 1) is set to an initial value pointing to the &#34;home&#34; position and the coordinate table 35 is initialized. The coordinate table, for example, includes a storage location for a key and a flag for each possible character position on the display screen 26. 
     In step 43 the selected screen is displayed. As will be further described below, this step is performed by passing a data base key to a subroutine in the flexible display generator 30. This data base key points to a record in the data base holding a definition of the selected screen. 
     After the screen is displayed, in step 44 the application program calls another subroutine in the flexible display generator 33 to obtain any data having been entered or edited by the user, and to transfer that data to respective data value storage locations (33 in FIG. 1). Then, in step 45 still another subroutine in the flexible display generator is called to check the input field data. In addition to the data having been entered or edited by the user, the flexible display generator also checks to ensure that the user has entered data in preassigned &#34;required&#34; fields. Such fields are indicated to the user by the display of an under-bar character for each character position in the field. 
     If the user makes an incorrect data entry or change or fails to enter valid data in any required data field, an error flag is returned from the subroutine call performed in step 45. In response to such an error flag, the application program 23 may request the user to make another attempt at data entry. In step 46, for example, the application program displays an error message and commands the display interface utility 24 to position the cursor on the erroneous field. The position of the erroneous field is provided by the coordinate pointer (44 in FIG. 1). 
     It should be noted that the checking of input field data performed in step 45 by the flexible display generator is a rather elementary data check. The data check is performed, for example, by comparing the data value provided by the user to legal values such as a data type or a set or range of legal values. In step 47 this data are further checked and processed in accordance with the specific application. Depending upon the state of the data processing after step 47, the application is terminated as determined in step 48 or a new screen is selected in step 49. When a new screen is selected, the application returns to step 42 to begin the process of displaying that new screen. 
     The present invention is especially useful for applications in which a large number of different screens must be selected or in which the format of the screen must be varied in accordance with the specific data to be displayed. In these cases it is very difficult for the programmer to explicitly specify the coordinates of each field for each possible screen format. A specific application where this occurs is the selection of equipment or components to be assembled. In this case, the user must ultimately be presented with a series of display screens including all of the components to be included in the assembly. If the user is permitted to select a large number of possible configurations for the assembly, then there will be a large number of possible screen formats. 
     Turning now to FIG. 3 there is shown a diagram illustrating a set of screens for an equipment selection system that permits the user to select assemblies of electrical components. Prior to the design of such a selection system, the user had to consult printed forms listing instructions and options for selecting the equipment for various assemblies. Shown in Appendix I, for example, are instructions and options that were used for selecting panelboards. As is well known in the electrical equipment field, a panelboard is used in an electrical distribution system, for example, at a point where a power line enters a building. Inside the building are a number of branch circuits which are typically connected to the main line through circuit breakers mounted on the panelboard. 
     The first step in designing such an equipment selection system is to define a series or hierarchy of generic screens corresponding to the printed instructions and options that were previously used for equipment selection. The screens are conveniently arranged in a hierarchy to indicate the screens that are first presented to the user because they present choices that affect the format of the other screens to be presented. As shown in FIG. 3, for example, a product selection screen 61 permits the user to choose a particular product or assembly to be further specified. A specific example of such a product selection screen is shown in Appendix II. In the product selection screen, for example, the user can select &#34;PANELBOARD&#34;. 
     When &#34;PANELBOARD&#34; is selected, a panelboard screen 62 is displayed. In this screen the user is required to specify certain essential parameters such as voltage, main type, amperage and the quantity, amperage and number of poles for the branch breakers The specific components to be assembled on the panelboard are dependent on these required parameters. Other parameters affecting the selection of components have default values which can be changed by the user. These further selections are made by editing a &#34;main accessory&#34; screen 63, a &#34;special features&#34; screen 64, a &#34;branches&#34; screen 65, a &#34;branch accessories&#34; screen 66, or a &#34;QMB accessories&#34; screen 67. The general format of these screens is shown in Appendices IV-VIII. Except for the &#34;branches&#34; screen 65, these other screens are presented to the user only when the user requests special features or accessories. 
     Although the general format of the display screens 63-66 has been shown in Appendicies IV-IIX, the specific screen format is dependent upon the specific configuration of equipment that is selected by the user to form the panelboard. Therefore, there is a very large number of possible screen formats. To ensure that each of the possible screen formats will be acceptable to the user, it is necessary for the programmer to know what each of the possible screen formats will look like after the system is designed or changed to reflect changes in the electrical components currently available to the user. Due to the large number of possible screen formats, it is impractical for the programmer to explicitly program the coordinates of each field on each possible screen. A conventional display interface utility as described above in connection with FIG. 1, however, references the individual fields by their respective field coordinates. 
     Turning now to FIG. 4, there is shown a flowchart generally designated 70 which illustrates the method by which the display interface utility (24 in FIG. 1) displays a field beginning at specified display coordinates. In the first step 71 the alphanumeric characters to be displayed in the field and any display attributes for the field are stored in the image buffer (27 in FIG. 1) beginning at an address corresponding to the specified display coordinates. For the screens shown in Appendix II-IIX, for example, the possible character positions on the screen form a matrix having 80 columns and 24 rows. The coordinates of that particular character position can therefore be represented by a single number ranging from 0 to 1839. This single number can therefore be used to address the image buffer to store the first character for the field and its attributes, and the other characters for the field are stored at successive storage locations in the image buffer. 
     If the field is defined as an &#34;output only&#34; field, as determined in step 72, the procedure of FIG. 4 is completed. Otherwise in step 73, the field data is stored in the input field buffer (30 in FIG. 1) which is similar to the image buffer (27 in FIG. 1). This is done so that during a screen data input procedure, the field data for each of the fields stored in the input field buffer can be compared to the corresponding data in the image buffer 27 in order to determine which of these fields have data that has been changed by the user. 
     Turning now to FIG. 5 there is shown a flowchart generally designated 80 which illustrates the procedure which is used by the display interface utility (24 in FIG. 1) to permit the user to change the data in the updatable fields and to send that data to the application program (23 in FIG. 1). The background of the display and the &#34;output only&#34; fields, however, are protected from the user entry of data. For this purpose, the cursor is permitted to be positioned only in the fields defined in the input field buffer 30. Specifically, in the first step 81, the display interface utility checks whether the cursor is initially at a data input position defined in the input field buffer. The input field buffer 30, for example, includes for each possible screen position a flag indicating whether that position is defined to reside in an updatable field. If the cursor is not at a data input position, then in step 82 the cursor is advanced to the next position on the display screen, and execution returns to step 81. It should be apparent, therefore, that the screen data input procedure of FIG. 5 is used only when at least one updatable field has been defined on the display screen. Therefore, steps 81 and 82 are performed until the cursor resides at a data input position. 
     Once the cursor resides at a data input position, in step 83 the cursor is activated to tell the user that data may be entered at the cursor position. In step 84 a character entered by the user is received from the key board (29 in FIG. 1). If this character is not a control character, as detected in step 85, then in step 86 the code for that character is placed in the image buffer at a storage location corresponding to the cursor coordinate, and then step 82 is performed to advance the cursor. Otherwise, in step 87 the display interface utility checks whether the character is a &#34;cursor control&#34; character that is entered by the user to change the position of the cursor. If so, then in step 88 the cursor coordinates are changed in accordance with the cursor control character and execution jumps back to step 81. Otherwise, in step 89 the display interface utility checks whether the control character signifies that the data entered by the user should be transmitted to the application program. Such a data entry character is entered when the user activates the &#34;enter&#34; key or a predefined &#34;function&#34; key on the key board. 
     If the display interface utility does not recognize the control character as a data entry character, then execution returns to pass this control character to the application program 23. Otherwise, in step 90 the display interface utility compares the contents of each of the input fields defined in the input field buffer (30 in FIG. 1) to the corresponding contents in the image buffer 27, and for each case in which the contents do not match, the contents of the entire input field are transferred from the image buffer 27 to the application program 23. Also, the display interface utility 24 passes the field coordinates associated with the input data from a field having been changed by the user. These field coordinates are obtained, for example, by looking in the input field buffer for a flag indicating the start of each updatable field. By inspecting the field coordinates returned by the display interface utility 24, the application program can identify the data having been changed by the user. 
     Each field, for example, corresponds to a particular variable defined in the application program 23, and the application program can consult the coordinate table 36 to obtain the variable name or address of the variable corresponding to the field coordinates. When the display interface utility 24 shares the same central processing unit 22 as the application program 23, the coordinate table is typically accessed by the display interface utility. In other words, the display interface utility 24 may use the actual variable names or addresses as subroutine parameters when the fields are defined and when data is entered by the user and returned to the application program. When a field is displayed by a subroutine call to the display interface utility 24 including the field coordinates and a variable defining the alphanumeric characters to be displayed, display interface utility 24 will store the variable name or address in a coordinate table, and conversely when the data is received by the user, this data is entered directly into memory by referencing the coordinate table to determine the variable name or address of which the data is to be stored in memory. A specific example of such a display interface utility is the TELON facility distributed on Pansophic Corporation, 709 Enterprise Drive, Oak Brook, Ill. 60521. 
     It should be now appreciated that a major shortcoming of the conventional display interface utilities 24 is that the display fields are defined in terms of their respective display coordinates. For applications in which there are a large number of possible display formats in which the fields have different coordinates, it is very laborious to explicitly program the coordinates for each field for each possible display format. Therefore, in accordance with a major aspect of the present invention, the flexible display generator (31 in FIG. 1) automatically determines these coordinates by interpreting records in a data base so that the screen format itself is determined by the organization of the data base. This is especially advantageous when the data base has a hierarchical organization. This hierarchical organization can therefore reflect the hierarchy of the general screens, as illustrated by the hierarchical organization in FIG. 3, or when the screens successively display the data at various levels of a hierarchical data base. 
     In the product selection system, for example, both considerations hold because the product to be selected consists of assemblies and subassemblies. This is reflected by the general formats for the screens 63-66 in FIG. 3 as shown in Appendicies IV-VIII. In these cases a major part of the display consists of a series of fields for each piece of equipment to be assembled in the panelboard. Therefore, the information required for generating each of these display screens is itself hierarchical in nature, including at an uppermost level the equipment to be included in the panelboard, at a middle level the fields to be displayed for each piece of equipment, and at a lower level the characteristics of each of the display fields. Also, each of the display fields is linked to a respective data storage location specifying the respective alphanumeric characters to be displayed. 
     Turning now to FIG. 6., there is shown this hierarchy of display information generally designated 100. The information 101 defining a display screen (screen #1) includes a list of three groups of records (group #1-group #3). Each group corresponds to a different component or piece of equipment. Each group is in turn defined by a list 102, 103, 104 of field records. The field records generally designated 105 define the individual fields in the display screen (screen #1). Linked to the field records are respective storage locations storing data values generally designated 106. At least some of the updatable field records are linked to definitions of legal values 107. 
     In order to build the display screen (screen #1), the flexible display generator (31 in FIG. 1) reads the screen definition 101 to obtain the list of group. For each group in that list, the display generator reads the respective group definition 102, 103, 104. When reading each group definition, the flexible display generator reads each field record. For those field records which define data to be displayed, the corresponding data value 106 is obtained and transmitted to the display interface utility (24 in FIG. 1) to display that value. During that process the flexible display generator updates a coordinate pointer (35) that provides the display coordinates for each field to be displayed. 
     Turning now to FIG. 7 there is shown a flowchart of a recursive procedure 110 that is employed by the flexible display generator 31 for interpreting a hierarchy of display knowledge such as the hierarchy 100 in FIG. 6. By employing a recursive procedure, the flexible display generator can interpret a hierarchy having any number of levels. The screen to be displayed is specified by a data base key (DB-KEY) that is initially provided by the application program. In this regard it is assumed that the hierarchy of display knowledge is stored in a key-indexed file. The actual indexing and organization of records in the file can be provided by a standard data base utility such as IDMS distributed by Cullinet, 400 Blue Hill Road, Westwood, Mass. 02090-2198. 
     In the first step 111, the data base is read for random access by the specified key (DB-KEY) to obtain the data element or record pointed to by the key. It is assumed that the data element has a display flag (D) to indicate whether the display knowledge specified by that record is to be used. If the flag D is not set, then execution returns. Otherwise, in step 113, the flexible display generator determines whether the data element is a field record. If so, then in step 114 the field record is displayed, and execution returns. 
     If the data element is not a field record, then it is a list of pointers or keys to other data elements Each pointer in the list, for example, resides in a data base record. Therefore, in step 115, the next pointer is obtained from the display list by sequential access of the data base. In step 116, execution returns if the end of the list is reached. Otherwise, in step 117 the current value of the data base key, which indicates the current position in the display list, is saved by pushing it onto a stack. Then, in step 118, the display subroutine 110 is recursively called to access the data element pointed to by the pointer read from the display list in step 115. The data base key was saved in step 117 because the recursive call in step 118 uses the pointer as the data base key to access the data base. Upon returning from the subroutine call in step 118, the saved value of the data base key is popped from the stack in step 119 in order to read the next record from the display list in step 115. 
     Turning now to FIG. 8 there is shown a specific format generally designated 130 for the field records. The record is indexed according to its data base key. Next, the record includes the display flag (D) that was used in step 112 of FIG. 7. Following the display flag is a flag 132 that is set to distinguish the display record from the display records including lists. This flag 132 in effect permits the display routine of FIG. 7 to determine the depth of the hierarchy of display information. If the hierarchy has a fixed depth, such as three levels as shown in FIG. 6, such a flag is not needed in order for step 113 in FIG. 7 to known when the data element is a field record, since the field record will always reside at the third level of hierarchy. 
     The display record includes four other flags including a flag &#34;R&#34; indicating whether the user is required to enter data into the respective field, a flag &#34;U&#34; indicating whether the user is permitted to enter data into the respective field, a flag &#34;N&#34; that is set when the field is displayed, and a flag &#34;S&#34; which is set when the user enters data or edits the respective field. The field record further includes a number 133 indicating the length in characters of the respective field. Finally, the display record is associated with a data base key 134 for a respective data value to be displayed in the field. This data value is also used to store the data having been entered or edited by the user into the respective field. Specific examples of field record data for the equipment selection system are shown in Appendicies IX-XI. 
     Turning now to FIG. 9, there is shown a flowchart generally designated 140 of the procedure used by the flexible display generator to interpret the display record format of FIG. 8 and display the respective data value linked to the field record. In the process the flexible display generator updates the coordinate pointer in order to determine the coordinates for the fields as they are displayed. In general, the coordinate pointer is advanced by the length or number of characters displayed in each display field. It is sometimes desirable, however, to permit the display record to adjust the coordinate pointer in certain ways or to change the display attributes. For this purpose it is possible to have the field record include a command for controlling the coordinate pointer 35 or for controlling the display terminal. This can be done, for example, in step 141 by comparing the value of the length to zero, and when the length is equal to zero, interpreting a control command that is stored in the field record in lieu of the data base key to the data value. The coordinate control command could, for example, set the coordinate pointer to a predefined value, or to provide a carriage return, line feed, or tab function. Therefore, if the control command is recognized in step 142 as a coordinate control command, the coordinate pointer is adjusted accordingly in step 143. It is also desirable to permit the field record to change the attributes of the display. For this purpose in step 144 the control command may be recognized as a display control command and in this case, in step 145 the display control command is transmitted to the display interface utility 24. 
     In the usual case, the field record specifies a certain number of characters to be displayed. Therefore, if the length is not zero, a new coordinate pointer is computed in step 146 by adding the field length to the current value of the coordinate pointer. In step 147 this new coordinate pointer value is compared to a maximum value to determine whether the entire field can be included on the display screen. If not, then in step 148 a return code is set to indicate that the screen size has been exceeded and execution returns to the application program. It is anticipated that such a return will indicate an error condition, although it would be possible to use such a return for using the same format for displaying a data base having a length that was unknown at the time the screens were defined. 
     Considering now the usual case in which the entire field can be placed on the display screen, in step 149 the &#34;updatable&#34; or &#34;U&#34; flag is tested to determine whether the field is an &#34;output only&#34; field or whether it is updatable. If the &#34;U&#34; flag is not set, then in step 150 an &#34;output only&#34; field command is transmitted to the display interface along with the current value of the coordinate pointer, the length of the field and the number of characters indicated by the length from the data value associated with the field record. Otherwise, if the &#34;U&#34; flag is set, then an &#34;input-output&#34; field command is transmitted to the display along with the current value of the coordinate pointer, the length and the number of characters indicated by the length from the data value associated with the field record. 
     In order to keep a record of the coordinates determined for each of the fields being displayed, the data base key of the current field record is placed into the coordinate table (36 in FIG. 1) in association with the value of the coordinate pointer. As will be further described below, this coordinate table is used for determining the fields having contents that have been changed by data entered or edited by the user. Next, in step 153, the coordinate pointer is updated by being set to the new coordinates having been calculated in step 146. Finally, in step 154, the new data flag (N) is set, and the &#34;S&#34; flag is cleared. 
     Turning now to FIG. 10 there is shown a flowchart of the subroutine which is called to permit the user to enter or edit data into the updatable fields on the display screen. In the first step 161 the flexible display generator transmits a screen data input command to the display interface utility 24. This is done, for example, by a subroutine call to the procedure shown in the flowchart 80 of FIG. 5. Upon return from that subroutine call, in step 162 the display generator receives the first or the next set of coordinates and input data for the next input field. In step 163 execution returns at the end of the input data. Otherwise, the input data is stored as a new data value associated with the field record for the input data field. For this purpose in step 164 the coordinate table is accessed to get the data base key associated with the input field coordinates provided by the display interface utility. When that data base key is obtained, the data base is accessed in step 165 to get that field record. In step 166 the updatable or &#34;U&#34; flag is tested to ensure that record is in fact updatable. If it is not, then an error has occurred and that error is reported by setting an error code in step 167 and returning to an error handler. Otherwise, in step 168 the &#34;S&#34; flag is set to indicate that new data has been received from the user. Finally, in step 169 the new input field data is stored in the data value associated with the field record. Execution then returns to step 162 to process the input data associated with any other input field. 
     After data is entered by the user, it is checked against the valid data criterion or legal values linked to the field records. In addition, all of the field records for the current display are checked to ensure that every required field has been filled with valid data. In addition, when either one of these error conditions is found to exist, the coordinates of the field having the error or which has not been updated are used to position the cursor at that field to permit the user to enter valid data. 
     Since the checking procedure must check all of the updatable field records which make up the display, the records could be checked by accessing the coordinate table for all of the records. This would require, however, the coordinate table to be cleared every time that a display is created. Alternatively, the field records for the current display can be obtained by searching through the hierarchy of display information by a procedure similar to that shown in FIG. 7. In other words, the procedure of FIG. 7 is used but the field record and its associated data values are checked in step 114 instead of displaying the data values. 
     Turning now to FIG. 11, there is shown a flowchart 180 of a subroutine that is called to check input data associated with a field record. This subroutine includes the necessary steps for recalculating the coordinates associated with the field record. These steps include a step 181 for testing whether the length of the field is equal to zero, a step 182 for detecting any coordinate control command, a step 183 for adjusting the coordinate pointer when there is a coordinate control command, a step 184 for computing the new value of the coordinate pointer, a step 185 for comparing the new value of the coordinate pointer to the maximum value, a step 186 for setting the return code and returning to the application if the screen size is exceeded, and a final step 187 for setting the coordinate pointer to the new coordinate value. The other steps in the flowchart 180 do the actual checking of the record. 
     In step 188, the error checking is finished if the updatable or &#34;U&#34; flag is not set. In this case, it is assumed that the data initially programmed for the field is valid. Otherwise, in step 189 the &#34;S&#34; flag is inspected. If this flag is not set, then the user has not entered or edited data for the current field. In this case, the required or &#34;R&#34; flag is tested in step 190. If the &#34;R&#34; flag is set, then an error has occurred since the user has failed to enter required data. Therefore, in step 191 the coordinate pointer and the data base key of the field record are saved in order the permit the application to display an error message corresponding to the field record and put the cursor on the erroneous field, as shown in step 46 of FIG. 2. Also, when an error is detected, an error flag is set in step 193 to tell the calling routines that an error has been detected. 
     If in step 189 it was detected that the &#34;S&#34; flag was set, then in step 193 the data value linked to the current field record is compared to the legal values also linked to the current field record. The legal values may specify that the data values must be numeric, or that in addition the numeric values must fall within certain ranges or assume certain discrete values. Likewise, the legal values may specify that alphanumeric data must assume particular values such as &#34;Y&#34; or &#34;N&#34; for yes or no. If this comparison indicates in step 194 that the data is invalid, then execution branches to step 190 to record and indicate the error. Otherwise, the error checking procedure is finished and execution returns after the coordinate pointer is updated in step 187. 
     In view of the above, there has been described a method and system for building display screens and receiving user data entered into display screens in such a way that the content and format of the display screens is readily adapted to a specific application or modified during the design, development and maintenance of the application program. The programmer need not specify screen coordinates when laying out or modifying the placement of the fields on the display screens. Instead, the format of the data base itself governs how the data is displayed on the screen. This format is readily apparent to the programmer in terms of lists of field records and lists of groups of such field records. Fields in the display are easily added or removed by adding or removing records from the lists of field records. The data value associated with each field record is also easily changed by changing pointers. In addition, the attributes of the display field are controlled by flags which are easily reprogrammed. The method is readily adapted to displaying the attributes of assemblies and subassemblies or other objects that are related according to a hierarchy. In this case, the display information may reside in records of a hierarchical data base that stores other information about the assemblies and subassemblies. ##SPC1##