Abstract:
A method and system is disclosed for centralizing text message storage and processing in a computer controlled process system. The method minimizes the memory storage requirements overall and also minimizes the memory required to reference a text message within an inter-task message in a multi-tasked software operating system. A Text Reference Method (TRM) defines different formats to reference texts in a single word. These formats flexibly allow for several types of text message handling so that memory is optimized and processing overhead is minimized. The TRM permits partitioning of text databases by type but maintains a central management philosophy in order to reduce duplicate text messages and maintain consistency in text usage. A global standardized access method is presented for use by disparate tasks in a system.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS  
       [0001]    This application claims the benefit of priority under 35 U.S.C. 119(e) to copending U.S. Patent Provisional Applications, Serial No. 60/294,201 and filed on May 30, 2001, the contents of said application being incorporated by reference herein in its entirely.  
         [0002]    This application is also related to the following U.S. patent applications: U.S. patent application Ser. No. ______ filed May 30, 2002 entitled AN INTEGRATED ACCESS PLATFORM; U.S. patent application Ser. No. ______ filed May 30, 2002 entitled METHOD FOR OPERATING AND APPARATUS FOR A BACK-PLANE SUPPORTING REDUNDANT CIRCUIT CARDS; U.S. patent application Ser. No. ______ filed May 30, 2002 entitled METHOD AND APPARATUS OF TESTING A POTS CIRCUIT AND DSL CIRCUIT THROUGH A SPLITTER; U.S. patent application Ser. No. ______ filed May 30, 2002 entitled METHOD AND APPARATUS FOR LOADING A MIRROR IMAGE SOFTWARE COPY ACROSS CIRCUIT CARDS; U.S. patent application Ser. No. ______ filed May 30, 2002 entitled METHOD AND APPARATUS FOR A COMMON MANAGEMENT SOFTWARE SYSTEM; U.S. patent application Ser. No. ______ filed May 30, 2002 entitled METHOD AND APPARATUS FOR PROVIDING A STATE MACHINE OPERATING ON A REAL-TIME OPERATING SYSTEM; and U.S. patent application Ser. No. ______ filed May 30, 2002 entitled METHOD AND APPARATUS FOR ADMINISTERING MULTIPLE PROVISIONABLE OBJECTS, the contents of each of said applications being incorporated by reference herein in their entirely.  
     
    
     
       DESCRIPTION  
       BACKGROUND OF THE INVENTION  
         [0003]    1. Field of the Invention  
           [0004]    The present invention generally relates to a real-time software messaging system and method within a communications system. More specifically, message texts are centralized but are accessed and referred to in a global standardized manner by various functional tasks within the system.  
           [0005]    2. Background Description  
           [0006]    Various types of process control systems employing microprocessors and software to manage the functions of real time activities have been common in many industries. Whether the system is a complex air-traffic control system, manufacturing process control system, a reservation system, or a communication system, the ongoing management of the system is crucial to long-term success.  
           [0007]    The nature of process control systems such as in communication packet or circuit switches involve the control of substantial hardware interfaces. These interfaces provide basic and advanced capabilities towards creating a comprehensive communications network for reliably transporting various types of data such as video media, voice traffic, or transactional data.  
           [0008]    The communications industry provides features and functionality that combine essential reliable basic services along with specialized services and capabilities that are delivered through new technologies at varying stages of deployment and maturity. As communications systems are deployed, they often contain both traditional hardware interfaces along with new technology hardware interfaces that provides a basis for increased functionality or evolutionary incremental infrastructure that is meant to deliver more robust communications based on this expanded functionality or based on economic changes in technology.  
           [0009]    Software programming that provides control logic to these communication systems is subject to increasing complexity. This complexity is driven by the newer technologies themselves such as voice over packet switching, new distributed hardware topologies, higher demanded bandwidths, or by reliability and management requirements such as better human interfaces, maintenance and diagnostic capabilities, or operational ease of management.  
           [0010]    In communication systems for example, one necessary aspect of the operational management of the system is a capability to view the ongoing internal operations of the system. In a complex system, the internal operations of the system can contain large numbers of independent functional software tasks which process messages and events in connection with the operation of the system hardware interfaces.  
           [0011]    Technical or business craft personnel are entrusted to manage the overall performance and health of a system. Management is typically accomplished via one or more human user interfaces that transforms the internal and external events and activities of the system into human readable text messages indicative of the behavior and performance of the system. These text messages provide information covering a wide range of system operations and convey the historical and present state of the system. Essential management decisions are often directly based upon these messages.  
           [0012]    The style and effectiveness of the human interface is a reflection of the type of model employed by the system designers and architects and is often indicative of the basic philosophy of the interaction dialogue created to transform internal system activity into human recognizable operational behavior. In large process control systems, this dialogue can be composed of many thousands of text message elements.  
           [0013]    These messages are typically developed in relation to the individual functional areas of the system. For example, there may be messages associated with historical performances, current operating system performance, individual hardware interface device types, external messaging statistics, internal messaging statistics, hardware faults, software faults, user informational messages, routing patterns, hardware usage statistics, system configuration, etc.  
           [0014]    These messages are often a reflection of the individual philosophy of the architect or engineer(s) associated with a specific functional system area. Since the architect is often focused on a subset of the system, messages are typically created unique to that functional area of the system. For example, an engineer responsible for central processor unit (CPU) error processing tends to create messages unique to that specific area without regard to any universal system-wide message methodology. For very large systems, this partitioned creation of messaging tends to create inefficiencies in the overall structure of the system as a whole. Non-uniform message lengths, redundant messages, and inappropriate messages end up being distributed throughout the system software architecture. This dispersion can create inefficiencies.  
           [0015]    One of these inefficiencies arises when passing these messages among the system tasks. Often, the entire text of a message is inserted within inter-task messages themselves. This can be wasteful in terms of CPU processing and memory utilization.  
           [0016]    Text messages are usually encased in the local data area definitions associated with subsystems or specific tasks. This creates several potential problems including:  
           [0017]    1) It creates a distributed message text database, instead of a central database. This may result in subtle (or even significant) differences in the message output due to difficulty in maintaining congruity in message meaning among tasks.  
           [0018]    2) Localized databases are typically in scope to the software module creating it unless steps to make the message reference public are taken.  
           [0019]    3) The memory allocation is also often allocated in the local memory space of the instantiating module.  
           [0020]    4) The naming convention may be customized within a task so that the convention is known only within the specific task or module. This technique leads to the possibility of inadvertent duplicate messages existing across the system. This wastes memory space, which may be a significant issue in on-line real time systems.  
           [0021]    5) Changes to the content of text messages may be more difficult to manage in a distributed messaging technique.  
           [0022]    6) Efficient chaining of messages, i.e., building up of messages from primitive phrases may be less efficient overall.  
           [0023]    7) Conveying of message text within the inter-task communication usually involves storing the entire message within the inter-task message, which inflates the amount of data in the inter-task message.  
         SUMMARY OF THE INVENTION  
         [0024]    It is therefore an object of the invention to provide a method and apparatus for centralizing message text strings within a computer controlled system.  
           [0025]    It is another object of the invention to provide a method to efficiently pass message references known as a Text Reference Method (TRM) in an optimum manner within inter-task messages thus minimizing memory requirements and CPU processing.  
           [0026]    It is yet another object of the invention to provide a means to provide a method of minimizing the amount of text memory in an overall system.  
           [0027]    Further, it is yet another objective of the invention to provide a method of controlling text content and consistency.  
           [0028]    Further, it is still another objective of the invention to eliminate text strings from being duplicated.  
           [0029]    According to the invention there is a method of centralizing text messages within an exemplary embodiment of a communication system such as the Siemens Accession product. Inter-task messages are issued by controlling software tasks within the system in response to hardware or operational events of varying functions including requests from users or personnel responsible for overseeing the operation of the system. These inter-task messages may result in text messages eventually being displayed using the present invention. These text messages provide internal and external statuses, configuration, and operational performance of the system hardware and software.  
           [0030]    As processing of normal and abnormal events within the communication system proceeds, software tasks within the system provide process control over the operation of the system. Hardware input and output interfaces provide access to the various unique operation of the system such as line interfaces, asynchronous transfer mode (ATM) controls, diagnostic and maintenance functions, power and operational status feedback, test access, and packet framing of voice and data. The hardware, under control of software specific tasks, produce software events that are managed by the system software as inter-task messages.  
           [0031]    These inter-task messages initiate software task logic sequences associated with the originating hardware input. The software task may create another internal inter-task message to provide or initiate a feature or function as a result of the message. In many cases a task may generate an inter-task message which is meant to communicate an informational text message to human users of the system. These messages are generated for such reasons as hardware error conditions, hardware warnings, status updates, alarms, hardware configuration, software configuration readout of the system, internal states and conditions related to the system, traffic statistics, historical data, user initiated management of the system, etc.  
           [0032]    Any inter-task messages that are generated to create a subsequent informational message to a person can be originated from essentially any task running within the system. An inter-task message is sent to a target task that is responsible for the direct interaction with a person viewing the informational messages on a display device such as a personal computer (PC), monitoring device, or equivalent such as a text to speech unit.  
           [0033]    When a functional task initiates an inter-task message, which is destined to eventually produce an informational message, it is constructed employing a method of this present invention whereby the inter-task message bears a Text Reference. The Text Reference is an identification of a message contained in the central text message database. This reference is typically a 32-bit integer but could be any size of reference depending on the total message count of a system.  
           [0034]    This 32-bit reference, known as a Message Look-up ID (MLU ID) is received by the User Interface task (UI) in the inter-task message and employed as a reference to the centralized message database. This method and apparatus allows all text messages to be controlled by one access method and lends itself to efficient arrangement of all text. Duplicate text strings within all messages are minimized as all messages can be reviewed and managed within one database. This eliminates the problem of inconsistent text strings. In terms of storage, the MLU ID is much more efficient to pass within an inter-task message as compared with text strings themselves.  
           [0035]    The database containing the text messages can be ordered as one table or a collection of multiple tables arranged by function. In the case, the MLU ID contains within its definition an indicator that identifies which table is to be addressed. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0036]    The foregoing and other objects, aspects and advantages will be better understood from the following detailed description of a preferred embodiment of the invention with reference to the drawings, in which:  
         [0037]    [0037]FIG. 1 is an exemplary block diagram of a communication system utilizing the present invention;  
         [0038]    [0038]FIG. 2 is an exemplary block diagram of a software architecture contain tasks utilizing inter-task messaging within the system of FIG. 1;  
         [0039]    [0039]FIG. 3 is an illustration of the Message Look-up Database Structure and Relationships;  
         [0040]    [0040]FIG. 4A is an illustration of the TRM No Message Present Format;  
         [0041]    [0041]FIG. 4B is an illustration of the TRM Message Look-up ID Format;  
         [0042]    [0042]FIG. 4C is an illustration of the TRM Formatted String Pointer ID Format;  
         [0043]    [0043]FIG. 4D is an illustration of the TRM Fault ID Format;  
         [0044]    [0044]FIG. 5 is a flow diagram showing Text Reference Field Message Processing;  
         [0045]    [0045]FIG. 6 is a flow diagram showing steps of creating TRM database tables; and  
         [0046]    [0046]FIG. 7 is a flow diagram showing steps of using TRM. 
     
    
     DETAILED DESCRIPTION OF A DETAILED EMBODIMENT OF THE INVENTION  
       [0047]    Referring to FIG. 1, an exemplary communication system is shown as an Integrated Access Platform (IAP),  100 , which is a system to provide data and voice communications functionality. The IAP may be a modular system with various interface modules present to build a tailored system as required by a customer. The IAP provides the hardware and software functionality for subscribers to process and manage a wide range of communication features. The IAP contains a central processing unit (CPU),  101 , and associated memory,  102 , for implementing software programming and operating system. The system may contain more than one CPU and memory.  
         [0048]    The IAP is connected, in this example, to an Asynchronous Transfer Mode (ATM) network and also to a Public Switch Telephone Network,  120 . The IAP also provides interfaces of various kinds to subscribers and customers. Three examples of these interface types are illustrated.  
         [0049]    At the bottom left, an IAP Symmetrical Digital Subscriber Line (SDSL) interface is connected to an Integrated Access Device (LAD),  130 , which in turn supports a voice-over-digital subscriber line (VoDSL) phone,  140 , and a data terminal,  150 .  
         [0050]    At the middle left, a asymmetric digital subscriber line (ADSL) interface connects a ADSL phone,  160 , a data terminal,  170 , and a plain old telephone service phone (POTS),  180 , to the IAP.  
         [0051]    At the top left, a POTS line connects a POTS phone,  190 , and a V.90/V.34 data terminal,  195 , to the IAP.  
         [0052]    In a computer based process controlled system such as in a communication system, the ability to oversee and manage the operations of the system is essential. The User Interface to the system can be any of a number of device types such as a display, personal computer, or audio device. The User Interface,  122 , is where a user can oversee the operations of the system and is where text is provided as messages in a session with the system.  
         [0053]    The hardware components of a system can be of varying purposes and each component can in turn be controlled by its own computer processor complex, which may be in communication with other processor complexes (e.g., interface boards with CPU, memory, and software) throughout the system.  
         [0054]    In a communications system or other process control systems, many functions of the system are performed by the hardware interfaces such as telephone interfaces, power interfaces, data and voice signaling interfaces, data and voice transport interfaces such as asynchronous transport mode (ATM), and support interfaces such as alarms and diagnostics. These interfaces have their own specific function in relation to the system as a whole. These interfaces are typically under control of software logic control running on one or more microprocessors. The system may contain redundant processor capability with one complex in standby mode. The processors include memory.  
         [0055]    In a communications system the operating software typically includes a plurality of individual tasks. These tasks may run under the same or multiple processors. Each task is given time slices of the overall processor execution capacity typically under control of the operating system (OS) software. Each task is meant to contribute a particular control aspect on behalf of the system such as, for example, a user feature or a hardware diagnostic function. In order for the software system to operate in a collaborative fashion, these tasks are capable of creating inter-task messages to cause advancement of process control sequences. In the case of a communication system, the process control sequence, for example, could be the establishment of a call session between subscribers or recognize a request for call completion from the PSTN or ATM network.  
         [0056]    In the course of typical operation, the hardware interfaces creates inputs to the software. The software generates event messages to represent the inputs of the hardware and thereafter controls the sequences of operations by passing inter-task messages to various system tasks responsible for progressing action of a specific type of message. Like-wise, a software task may cause a message to be created in response to a prior event that eventually causes a hardware component to provide a service such as, for example, tone generation in a voice path.  
         [0057]    Referring now to FIG. 2, an exemplary software sub-system architecture suitable for a communication system is illustrated. This sub-system is one of several software sub-systems that may exist within a larger operating system (OS) context. This sub-system represents the Maintenance and Administration (M&amp;A) sub-system of an IAP communication system. It provides the necessary controls and feedback to oversee and manage the overall operation of the system by people responsible for the ongoing performance of the system. It includes a User Interface Task, which receives requests and responds to requests over the user interface hardware such as a network interface port, RS-232 port or equivalent. This sub-system is the primary access for viewing the status and activity of the hardware components of the system and for configuring the system for optimum compliance to the desires of an operating company or other entity using an IAP.  
         [0058]    This sub-system typically shares a processor with other sub-systems and is given access to the processor by an operating system such as VxWorks, or similar OS. The OS is also providing processor access to other sub-systems such as ATM Connection Control, Configuration Control, Processor Initialization, Narrowband Line Control, etc.  
         [0059]    [0059]FIG. 2 is organized to show three distinct levels of functional control. At the bottom, delineated by dash line  260 , are software target tasks,  200 , responsible for directly controlling and monitoring specific hardware interfaces such as POTS, ADSL, and Integrated Access Controller (IAC). These tasks are capable of generating and receiving inter-task messaging represented by the solid lines,  299 , which are bi-directional paths.  
         [0060]    The Common Management (CM) layer, delineated between lines  260  and  270 , include software tasks of a comprehensive maintenance and administration which control and interact with the target tasks,  200 , and the M&amp;A User Interface,  250 , and with one another. The Common Management task,  235 , distributes messages to proper CM layer tasks as necessary. Shown also in FIG. 2 are exemplary tasks CM Admin,  205 , CM Config Controller,  210 , CM Debug,  215 , CM Status Controller,  220 , CM Test Controller,  225 , CM Database Management System,  230 , CM Alarm &amp; Message processing,  245 , and CM Gather Active Alarms,  240 .  
         [0061]    CM Admin,  205 , provides process control to administer system features as required by the system manager personnel through the M&amp;A User interface,  250 . CM Config,  210 , provides system hardware configuration control as requested by the M &amp; A User Interface. CM Debug Controller,  215 , provides in-depth monitoring and feedback of detailed system information of system performance as requested by system managers. The CM Status Controller,  220 , provides general status information of hardware and software elements and components via the M&amp;A User Interface. CM Test Controller,  225 , provides mechanisms to check and verify operational health of system components via the M&amp;A User Interface. CM Active Alarms,  240 , and CM Alarm Message Processing,  245 , provide error and alarm detection and reporting control. CM Database Management system task,  230 , controls access to and from the System Database in order to synchronize, isolate, and protect the system data.  
         [0062]    Each of these tasks communicate with each other with an inter-task message (not shown) which is a common technique in real-time process control systems. An inter-task message may contain various informational and data elements as necessary to the nature of the message. For example, a diagnostic message bears diagnostic information associated with a hardware element; a call processing message bears information relevant to one or more ports, users, features dialed digits, etc.  
         [0063]    Often tasks must communicate with human personnel through the M&amp;A User Interface for a wide range of reasons including alarms, diagnostics, configuration, tests results, database contents, etc. In a sophisticated system, the total number of unique text messages that could be delivered for human viewing can be exceedingly large. This present invention provides a mechanism so that the control of the global content of these messages is more easily managed and reducing duplication. In addition, this present invention provides a mechanism so that actual memory requirement for defining actual text messages is considerably reduced overall. Also, in this present invention a Text Reference Method (TRM) replaces the text string within an inter-task message. This dramatically reduces memory requirements of the inter-task message, therefore increases throughput.  
         [0064]    TRM is a centralized text system that eliminates the problems of inconsistent text strings, text strings being duplicated, additional space required for storage of static strings in the inter-task messages, and inefficient storage of text strings. There are two variations of this method. The “C” programming language is used to present examples below.  
         [0065]    The TRM first method is used if a system requires that the text strings be grouped together by functional area, which prevents a huge text table from being generated. The second TRM variation is used for a system that has a small amount of text strings and growth is not anticipated or a direct reference method is required for a functional area.  
         [0066]    Referring to FIG. 3, for the first TRM variation, a set of database tables is used to store static text strings for a system. There are two types of tables, a Message Look-up Text Table Address Table (MLU TTAT),  300 , and Message Look-up Text Tables (MLU TT) collectively shown as  310 ,  320 ,  330 , and  340 . There is typically only one MLU TTAT but multiple MLU TT. These tables are typically generated at compile time.  
         [0067]    The Message Look-up Text Table Address Table,  300 , contains the address of each Message Look-Up Text Table. Entry zero (zero-based numbering) of the MLU TTAT contains the address of the first MLU TT as shown by pointer,  301 . The first entry points to the second MLU TT,  320 , as shown by pointer  302 . The nineteenth entry points to the twentieth MLU TT,  330 , as shown by pointer  303 . Finally, the last MLU TTAT entry points to the last table entry (n) of MLU TT,  340 , as shown by pointer  304 .  
         [0068]    Each Message Look-up Table can contain a variable number of entries. The first MLU TT shows entry zero,  311  and the n th  entry,  312 . These entries are typically fixed length text strings and generated at compile time.  
         [0069]    When a task creates an inter-task message and inserts a reference to a text string, a Text Reference Field (TRF) is used instead of the text string itself. A TRF is typically a single 32-bit integer per text message reference. It is possible to use a smaller or larger word such as 16-bit, 64-bit or 132-bit. This 32-bit integer has four different formats. These four formats are illustrated collectively in FIGS. 4A, 4B,  4 C,  4 D.  
         [0070]    The first format is shown in FIG. 4A. This format is represented by a 32-bit integer value of zero (NULL),  400 . This indicates no text message is present or being passed in the inter-task message. The formats are shown with bit positions  0 - 31 , shown as  499 .  
         [0071]    The second format is shown in FIG. 4B. This format includes a MLU Table ID),  411 , bits  16 - 23 . This field is used as a first-level look-up index of the MLU Text Table Address Table,  300 . This index provides a pointer to an appropriate MLU Text Table. The format also includes a MLU Message Number,  410 , bits  0 - 15 . This is a second-level index into the MLU Text Table indicated by the MLU Table ID,  411 . This field is used to retrieve a null-terminated (or other sentinel terminated) text string from a particular Message Look-up Text Table such as  312  of FIG. 3.  
         [0072]    A software routine such as mlu_query( ) can be used to retrieve a text string from a Message Look-up ID text reference field. The mlu_query( ) routine returns a boolean flag for success of failure and uses the following input parameters,  
         [0073]    1) Message Look-up ID text reference field.  
         [0074]    2) Pointer to a text string storage buffer.  
         [0075]    3) Size of the text string storage buffer which can be implemented as a parameter or a global constant.  
         [0076]    The following steps explains the operation of the mlu_query( ) routine,  
         [0077]    1) Initialize the target text string buffer to all zeroes.  
         [0078]    2) Get the MLU Table ID,  411 , and MLU Message Number,  410 , values from the TRF.  
         [0079]    3) If the either the MLU Table ID or MLU Message Number is out-of-range, then return failure.  
         [0080]    4) Create a pointer to the static text string by using the MLU Table ID to address MLU Text Table Address Table,  300 , and also using Message Number values to index into the Message Look-up text tables,  310 .  
         [0081]    [0081] 5)  Copy the static text string to the string buffer up to the maximum byte size allowed.  
         [0082]    6) Return success.  
         [0083]    Common to three of the formats are Message Dump Flag (MD),  413 , and Broadcast flag (BC),  412 , as shown in FIGS. 4B, 4C, and  4 D. When set, the MD indicates that an error has occurred and that the internal message data should be displayed to the user as debug information. When set, BC indicates that the referenced text string should be broadcast to all active users of the M&amp;A User Interface.  
         [0084]    The third format is shown in FIG. 4C. This format is driven when set, by the Formatted String Pointer ID flag (FS),  421 , bit  30 . This field indicates that the inter-task message contains an embedded formatted null-terminated (or other sentinel terminated) text string. This format includes a Message Text Offset,  420 , bits  0 - 15 . This offset,  420 , defines the byte offset from the start of the inter-task message of where the formatted sentinel terminated text string is located within the inter-task message.  
         [0085]    The Formatted String Pointer ID format is used within inter-task messages that need to convey information to a user that is only known during real-time operations or run-time. Formatted String Pointer IDs are created at run-time as needed. This format appends a formatted text string to the end of an inter-task message and formatted data is filled in as needed. The calculation of the Formatted String Pointer ID value and the appending of the text string can be performed by a common routine for example, fstr_create( ). This routine can be used to create a Formatted String Pointer ID text reference. fstr_create( ) routine returns a Boolean flag for success or failure and uses as input parameters,  
         [0086]    1) Pointer to an inter-task message buffer.  
         [0087]    2) Pointer to the location of the Formatted String Pointer ID text reference field within the message buffer.  
         [0088]    3) Pointer to the formatted null-terminated (or other sentinel terminated) string.  
         [0089]    4) Maximum byte size allocated for the inter-task message buffer.  
         [0090]    The following steps explains the operation of the fstr_create( ) routine,  
         [0091]    1) Get the length of the formatted null-terminated text string.  
         [0092]    2) Get the current length of the inter-task message buffer (this requires that inter-task messages store a byte count field at a fixed or otherwise determinable location within the buffer).  
         [0093]    3) If the current length of the message buffer plus the length of the text string exceeds the maximum byte size allocated, a failure is returned. Else, the routine appends the text string to the end of the message buffer.  
         [0094]    4) The message text offset,  420 , in the text reference field is set to indicate the starting location of the text message and the FS flag is set.  
         [0095]    5) Update the byte count field of the message buffer to indicate the new overall size that includes the text string.  
         [0096]    6) Return success.  
         [0097]    Retrieval of the text string can be performed by a common routine for example, fstr_query( ). This routine is used to retrieve a text string from the Formatted String Pointer ID text reference field within an inter-task message. The fstr_query( ) routine returns a Boolean flag for success or failure and uses the following input parameters,  
         [0098]    1) Pointer to the inter-task message buffer.  
         [0099]    2) Formatted String Pointer ID text reference field.  
         [0100]    3) Pointer to the text string storage buffer.  
         [0101]    4) Size of the text string storage buffer (this can be implemented as an input parameter or as a global constant).  
         [0102]    The following steps explains the operation of the fstr_query( ) routine,  
         [0103]    1) Initialize the text string buffer to all zeroes.  
         [0104]    2) If the FS flag is not set in the Formatted String Pointer ID text reference field, return failure.  
         [0105]    3) Get the offset of the text string within the message from the text reference field.  
         [0106]    4) If the offset exceeds the value of the byte count field in the message buffer, return failure.  
         [0107]    5) Create a pointer to the formatted text string.  
         [0108]    6) Copy the formatted text string to a string buffer up to an allowable size.  
         [0109]    7) Return success.  
         [0110]    The string buffer is subsequently processed which typically means sending to the M&amp;A User interfaces.  
         [0111]    The fourth format is a Fault ID format and is illustratively shown in FIG. 4D. This format uses the second TRM method a functional area requires a direct reference method. This format is driven when the Fault ID flag,  431 , bit  27 , is set. This format can be used within an inter-task message or can be used directly by the user interface to display a static text string to the user. The Fault ID is used within inter-task messages that need to convey information to users that is known only at run-time. Fault ID formats are created at run-time as needed. The Fault IDs used in the Fault ID format are typically assigned at compile time using standard C language #define values. The CREATE_FLT_ID( ) macro is used to create a fault ID. The retrieval of the text string is performed by the flt_query( ) routine.  
         [0112]    The CREATE_FLT_ID( ) is used to create a Fault ID. The macro uses the following input parameters,  
         [0113]    1) Address of a text reference field to place the generated Fault ID.  
         [0114]    2) The offset (fault ID) of the desired text string in the Fault Text table, e.g., vg_static_flt_tbl[].  
         [0115]    The following steps explains the operation of the CREATE_FLT_ID( ) macro,  
         [0116]    1) The offset (fault ID) is placed in the Fault ID field,  430 , of a text reference field.  
         [0117]    2) The FT flag,  431 , is set.  
         [0118]    Referring additionally now to FIG. 5, this flow diagram describes the process that a User Interface task uses to receive, decode and process an inter-task message that contains a text reference field (TRF). The process begins at step  500  which pre-supposes reception of an inter-task message from a task within the communication system.  
         [0119]    The first check is at step  505  to discover whether a message is present by checking for a null value. If the message field is null, the process is finished. If not null, a check is made to see if the formatted string flag (FS)  421  is set as shown in step  510 . If FS is set, the inter-task message contains a Formatted String Pointer ID format. The ASCII text message is retrieved from the inter-task message using the message text offset,  420 . The resulting text message is sent or output to a user display unit or equivalent such as a text-to-speech device, audio device, or a storage unit as shown at step  520 .  
         [0120]    If the FS flag is not set in step  510 , another check is made to see if the TRF contains a fault ID by testing the fault ID flag (FT),  431 , as shown at step  540 . If the FT flag is set, an ASCII text string is retrieved using the fault ID index,  430 , from a fault text table or other equivalent fixed text table as shown at step  545 . The process then continues at step  520 .  
         [0121]    If however, the FT flag is not set at step  540 , the TRF is a Message Look-up ID format. As shown by step  560 , the MLU TTAT,  300 , is accessed using the MLU Table ID,  411 , to retrieve an address pointer to a MLU text table. The MLU Message number,  410 , is then used to retrieve an actual text string from within the appropriate MLU text table such as  301 ,  320 ,  330 , or  340  of the present exemplary embodiment. The process then continues at step  520 , already described.  
         [0122]    After step  520 , a check is made of flag BC to discover whether this message should be broadcast to all active User Interface sessions, i.e., active users, as shown by step  525 . If this flag is set, the text message is broadcast to all users as shown at step  550 .  
         [0123]    A final check is made as shown at step  530  whether the message dump flag (MD),  413 , is set. If it is set, internal message dump information is displayed to the user as depicted at step  555 . The process then awaits another inter-task message.  
         [0124]    Referring now to FIG. 6, this flow diagram shows the steps in creating the MLU Text Tables (MLU TT) and the MLU Text Table Address Table (MLU TTAT). The flow shows the creation of two sets of tables that are created by a compilation. The process begins at  600 . At step  610 , one or more MLU Text Tables are created as necessary to contain the anticipated number of text messages. The allocation of the text strings between tables is normally related to the nature of the text table such as call processing text, maintenance text, configuration text, etc. However, one table may be used. At step  620 , one or more text strings are created and assigned to a MLU Text Table entry. Each entry is typically null terminated. An associated #define is created for the text string mirroring the entry number within the table and the table number itself, which is used by any task as the TRF for the particular text string.  
         [0125]    The method continues with step  630  where a MLU Text Table Address Table is created. This table contains as many entries as there are total number of MLU Text Tables. Every Text Table&#39;s address is assigned to an entry in the MLU TTAT. This is shown at step  640 , whereby each entry is initialized with a pointer to the corresponding MLU Text Table. The order of assignment mirrors the ordinal sequence of the Text Table numbering scheme.  
         [0126]    Referring to FIG. 7, the additional steps to use the Text Reference Method is illustrated which begins at step  700 . At step  710 , a task would create a TRF in one of the disclosed formats of FIG. 4A, 4B,  4 C, or  4 D. Next, as shown in step  720 , the TRF is sent, typically in a inter-task message or similar manner, to a User Interface task. A User interface can be sent a TRF or use one directly. The TRF is decoded according to a format of FIG. 4 to obtain a text string as shown in step  730 . As shown in step  740 , the text string is then delivered via a user interface for display or other use.  
         [0127]    While the invention has been described in terms of preferred embodiments, those skilled in the art will recognize that the invention can be practiced with modifications and in the spirit and scope of the appended claims.