WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Multitask subscription data retrieval system    
United States Patent4815030   
Link to this pagehttp://www.wikipatents.com/4815030.html
Inventor(s)Cross; Charley B. (Billerica, MA); Moy; Diana Y. (Wayland, MA)
AbstractA multitask multiuser system provides for efficient transfer of data from a remote data base to individual subscribers and has particular utility in the distribution of stock market data. A primary provider distributes the incoming data directly to user tasks or to an inquiry provider or a monitor provider. The inquiry provider responds to specific inquiries by users for information in the data base. The monitor provider maintains lists of information which are being monitored by the host computer for individual users. The inquiry provider and the monitor provider do not repeat requests to the remote data base where a similar request is already pending from another user. Data transfer paths between tasks are estabilished by a code module which may be linked to any of the tasks. The transfer paths are established using information from a configuration list and they are monitored by the operating system through a wait list established for each user task. Providers in the system may establish subscriber lists through the code module.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 4815030
Multitask subscription data retrieval system - US Patent 4815030 Drawing
Multitask subscription data retrieval system
Inventor     Cross; Charley B. (Billerica, MA); Moy; Diana Y. (Wayland, MA)
Owner/Assignee     Wang Laboratories, Inc. (Lowell, MA)
Patent assignment
All assignments
Publication Date     March 21, 1989
Application Number     06/903,495
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     September 3, 1986
US Classification     707/10
Int'l Classification     G06F 009/00
Examiner     Heckler; Thomas M.
Assistant Examiner     Mills; John G.
Attorney/Law Firm     Shanahan; Michael H. Nelson; Gordon E. ,
Address
Parent Case    
Priority Data    
USPTO Field of Search     364/200 364/900
Patent Tags     multitask subscription data retrieval
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4484270
Quernemoen
710/37
Nov,1984

[0 after 0 votes]
4447673
Elliott
379/253
May,1984

[0 after 0 votes]
4349703
Chea, Jr.
379/382
Sep,1982

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. In a multitask electronic data processing shstem having means for receiving from a remote data base of different types in response to nonmonitoring requests for data and specific monitoring requests for data, the specific monitoring requests requiring the remote data base to monitor data base sources with respect to specific identifiers, a method performed by the electronic data processing system for distributing the data to plural user tasks subscribing to the data comprising:

in a first provider task dividing a data stream of plural data types from the remote data base into plural data streams according to the data types;

transferring from the first provider task at least one selected data stream in response to nonmonitoring requests directly to user tasks subscribing to the data streams and transferring at least one selected data stream in response to specific monitoring requests to at least a second provider task; and

in a second provider task, dividing the data stream in response to specific monitoring requests into further data streams and transferring the further data streams to user tasks requesting the data streams.

2. A method as claimed in claim 1 further comprising the step of decoding the data a stream in the second provider task.

3. A method as claimed in claim 1 further comprising, before transferring data to user tasks and by means of a common code module linked to each user task, the step of establishing data transfer paths between the provider tasks and the user tasks, each data transfer path being specific to a type of data transferred to a single user task.

4. A method as claimed in claim 3 further comprising, by means of a wait list established in an operating system, the step of monitoring provider task mailboxes with respect to each type of data to identify request from user tasks and of monitoring user task mailboxes with respect to each type of data to identify data being transferred to the user tasks.

5. A method as claimed in claim 4 further comprising, in establishing data paths, the step of generating a configuration list for each of the provider tasks and the user tasks from a configuration file, each configuration list including the name of a provider task mailbox to which requests for data of each type are to be transferred and an indication of whether the task has access to a particular type of data.

6. A method as claimed in claim 3 further comprising the step of generating in at least the first provider task, a subscribers list for identifying, relative to each type of data, the tasks which are to receive that type of data.

7. A method as claimed in claim 1 further comprising, by means of a wait list established in an operating system, the step of monitoring provider task mailboxes with respect to each type of data to identify requests from user tasks and of monitoring user task mailboxes with respect to each type of data to identify data being transferred to the user tasks.

8. A method as claimed in claim 1 further comprising establishing data transfer paths between the provider tasks and the user tasks, each data transfer path being specific to a type of data transferred to a single user task.

9. A method as claimed in claim 8 further comprising, in establishing data paths, the step of generating a configuration list for each of the provider tasks and the user tasks from a configuration file, each configuration list including the name of a provider task mailbox to which requests for data of each type are to be transferred and an indication of whether the task has access to a particular type of data.

10. A method as claimed in claim 1 wherein the second provider task receives specific data requests from the user tasks and compiles information correlating user tasks with specific data requests, the data being compiled by generating a user tree and a data-type tree, each user node of the user tree pointing to a list of data types requested by that user and each node of the data-type tree pointing to the users which have requested that type of data.

11. A method as claimed in claim 1 wherein the data comprises stock market information.

12. A method as claimed in claim 11 further comprising transferring stock quotation requests from the user tasks to the first provider task, providing each such request with a sequence number in the first provider task and transferring the request to the remote data base, the first provider task maintaining a record of users requesting the data with respect to sequence numbers and, by means of sequence numbers returned with the data, confirming receipt of data responses to the requests and forwarding the received data to the users which made the quotation requests.

13. In a multitask electronic data processing system having means for receiving from a remote data base data of different types, a method of distributing the data from a provider task to plural user tasks subscribing t the data, the method performed by the electronic data processing system comprising:

by means of a common code module linked to each user task, establishing data paths between the provider task and the user tasks, each data path being specific to a type of data transferred to a single user; and

by means of the provider task, dividing a data stream from the remote data base into plural data streams according to the data type and transferring the plural data steams to the user tasks through the established data paths.

14. A method as claimed in claim 13 further comprising the step of monitoring, by means of a wait list established through the common code module in an operating system, a user task mailbox with respect to each type of data to notify the user task of data being transferred to the user task.

15. A method as claimed in claim 14 further comprising, in establishing data paths, the step of generating a configuration list for each user task from a configuration file, each configuration list including the name of a provider task mailbox to which requests for data of each type are to be transferred and an indication of whether the task has access to a particular type of data.

16. A method as claimed in claim 15 wherein each configuration list indicates whether the task is a provider of data to other tasks, the method further comprising the step of limiting provider specific routines of the common code module to provider tasks.

17. A method as claimed in claim 15 further comprising the step of monitoring, by means of a wait list established through the common code module in an operating system, a mailbox to a provider task with respect to each type of data to notify the provider task of data being transferred to the provider task.

18. A method as claimed in claim 17 further comprising the step of generating a configuration list for each provider task from a configuration file, each configuration list including the name of a provider task mailbox to which requests for data of each type are to be transferred.

19. A method as claimed in claim 17 further comprising the step of generating in at least the provider task, a subscribers list for identifying, relative to each type of data, the tasks which are to receive that type of data.

20. A method as claimed in Claim 14 further comprising the step of monitoring, by means of a wait list established through the common code module in an operating system, a mailbox to a provider task with respect to each type of data to notify the provider task of data being transferred to the provider task.

21. A method as claimed in claim 13 further comprising the step of generating in the provider task, a subscribers list for identifying, relative to each type of data, the tasks which are to receive that type of data.

22. A method as claimed in claim 13, further comprising, in establishing data paths, the step of generating a configuration list for each user task from a configuration file, each configuration list including the name of a provider task mailbox to which requests for data of each type are to be transferred and an indication of whether the task has access to a particular type of data.

23. A method as claimed in claim 13 wherein the data comprises stock market information.

24. In a multitask electronic data processing system having means or receiving from a remote data base data of different types, a method of distributing the data from a provider task to plural user tasks subscribing to the data, the method performed by the electronic data processing system comprising:

in response to calls from the user tasks, establishing data paths between the provider task and the user tasks, each data path being specific to a type of data transferred to a single user; and

by means of the provider task, dividing a data stream from the remote data base into plural data streams according to the data type and transferring the plural data streams to the user tasks through the established data paths.

25. A method as claimed in claim 24 further comprising in establishing data paths, the step of generating a configuration list for each of the provider tasks and the user tasks from a configuration file, each configuration list including the name of a provider task mailbox to which requests for data of each type are to be transferred and an indication of whether the task has access to a particular type of data.

26. A method as claimed in claim 25 further comprising the step of monitoring, by means of a wait list established in an operating system, mailboxes with respect to each type of data to the provider tasks to identify requests from user tasks and to user tasks to identify data being transferred to the user tasks.

27. A method as claimed in claim 24 further comprising, by means of a wait list established in an operating system, the step of monitoring provider task mailboxes with respect to each type of data to identify requests from user tasks and of monitoring user task mailboxes with respect to each type of data of identify data being transferred to the user tasks.

28. A method as claimed in claim 24 wherein the data comprises stock market information.

29. In a multitask electronic data processing system having means for receiving from a remote data base data, a method performed by the electronic data processing system of distributing the data to plural user tasks comprising in a provider task:

receiving specific data requests from the user task and compiling information correlating user tasks with specific data requests;

for each data request, determining whether a like request is pending for another task;

only if a like request is not pending, transferring to the remote data base the specific data request;

receiving specific data from the remote data base;

determining from the compiled information all user tasks which have requested the received specific data; and

transferring the specific data to user tasks which have requested the data.

30. A method as claimed in claim 29 wherein the information is compiled by generating a user tree and a symbol tree, each user node of the user tree pointing to a list of symbols identifying data requested by that user and each node of the symbol tree pointing to the users which have requested the data represented by the symbol.

31. A method as claimed in claim 30 wherein each node of the user tree includes a listing of services to which that user has subscribed.

32. A method as claimed in claim 30 wherein each node of the symbol tree includes a listing of services through which users have made requests for the data identified by the symbol.

33. A method as claimed in claim 29 wherein the data comprises stock market information.

34. In a multitask electronic processing system having means for receiving data of different types, a method of distributing the data from provider tasks to plural user tasks subscribing to the data, the method performed by the electronic data processing system comprising:

by means of a common code module linked to each user task, establishing data paths between the provider tasks and the user tasks, each data path being specific to a type of data being transferred to a single user, the data paths being established by each user task using a configuration list for each user task, each configuration list including the name of a provider task mailbox to which requests for data of each type are to be transferred and an indication of whether the task has access to a particular type of data;

by means of a wait list established in an operating system, monitoring provider task mailboxes with respect to each type of data to identify requests from user tast and monitoring user tasks mailboxes with respect to each type of data to identify data being transferred to the user tasks;

receiving in a monitor provider task specific data requests from the user tasks and compiling information corelating user tasks with specific data requests, determining whether a like request is pending for another task, and only if a like request is not pending transferring through a primary provider task to the remote data base the specific data request;

in the primary provider task, dividing a data stream of plural data types from the remote data base into plural data streams according to the data types;

transferring selected data streams in response to nonmonitoring requests directly to user tasks subscribing to the data streams and transferring at least one selected data stream in response to specific monitoring requests to the monitor provider task; and

in the monitor provider task, dividing the data stream in response to specific monitoring requests into further data streams and transferring the further data streams to user tasks requesting the data streams.

35. A method as claimed in claim 34 wherein the data comprises stock market information.

36. A method as claimed in claim 13 wherein the data paths are established by routines of the common code module based on system configuration information available to the common code module routine, the routine being called by a user task without regard for the provider task architecture.

37. A method as claimed in claim 36 wherein the configuration information is available through a configuration list which includes the name of a provider task mailbox to which requests for data of each type are to be transferred and an indication of whether the task has access to a particular type of data.

38. A method as claimed in claim 14 further comprising the step of including in the wait list events specified by the user other than data transfers from a provider task.

39. A method as claimed in claim 13 wherein data streams of a first type are transferred to specific user tasks depending on the content of the data streams, and data streams of a second type are transferred to all user tasks from a list of user tasks.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

Local computers are able to gain access to large volumes of information by communicating over telephone lines with remote data bases. The remote data base has storage capabilities which far exceed that which would be feasible at most local computers and can serve as a central storehouse of information.

A data base that was developed by the Walsh, Greenwood Information Systems, Inc. and which is now maintained by Wang Financial Information Services Corporation is dedicated to information relating to the stock market and other financial institutions. It contains real time trade and quote information including over-the-counter, option, commodity, futures, and fixed income data, as well as news and institutional holdings. The data base allows a subscribing computer to have access to three general classes of service: broadcast, inquiry and monitoring.

The broadcast class is that in which information is simply broadcast continuously to the user. An example is the New York Stock Exchange ticker service in which all transactions which occur on the New York Stock Exchange are transmitted to all subscribers as those transactions occur. Other broadcast services include a news headlines service which scrolls through headlines received from the Dow Jones News Service and the Reuters News Service. Also, the full news items from the Dow Jones News Service and the Reuters New Service are transmitted to subscribers to allow for scrolling through the news items as they are released.

Subscribers to the data base are also able to make specific inquiries. For example, a subscriber may send a request for a quotation on any stock item and promptly receive the current information stored at the data base for that stock item. News items of interest may also be retrieved by making requests which include specific identifier symbols which identify the information of interest.

Finally, a subscriber may request that the remote data base monitor all of the information which enters the data base and transmit only that data which is of particular interest to the subscriber. Again, the subscriber transmits a request to the data base which includes identifier symbols.

The Walsh Greenwood Information Systems system was designed for communication with personal computers; hence for communications line address there has been exactly one user. Each personal computer could subscribe to a particular set of services and pay the appropriate fee for those services. Configuration and security were handled by the network host processor sending a message to each computer on each line to indicate which services the network would allow that computer to use. This provided adequate control to permit accurate billing and accounting.

DISCLOSURE OF THE INVENTION

Multiple user systems may have multiple terminals connected through a central computer and a single communication line to the data base host computer. Different users in this local system may subscribe to different services. In that situation, the remote data base must maintain accurate files for each of the terminals. Further, the remote data base must transmit data to all subscribing terminals along a single communications line and rely on the local multiuser system to properly distribute the data to those terminals which have subscribed and which have made specific inquiries. It is to such a multiuser system that the present invention is directed.

To properly distribute incoming data to multiple users, the local multiuser system must maintain subscription records and records of specific requests and must multiplex the incoming data to the individual users. This significant task must be performed without introducing unacceptable delays in transfer of the information from the remote data base to the individual users. The avoidance of delays is particularly critical in the case of stock market information. To provide for this rapid distribution of information, one feature of the present invention is in the handling of different classes of information. Tracking of specific monitoring requests from multiple users can become cumbersome. In accordance with one feature of the present invention, a first provider task divides the incoming data stream from the remote data base into plural data streams according to the data type corresponding to each service. Selected data streams which are in response to nonmonitoring requests are transferred directly to user tasks subscribing to the data streams. A data stream which is in response to a specific monitoring request is, however, transferred to a second provider task. That second provider task then divides the data stream in response to the specific monitoring requests into further data streams and transfers the further data streams to the user tasks. Thus, data which is simply broadcast to the user or which is the result of a specific inquiry need not be delayed by a task which must also handle the more time-consuming distribution of data in response to monitoring requests. The second provider task may also provide the decoding necessary for a particular class of data.

Specific inquiries such as news retrievals may be handled by yet another provider task. Although that class of data does not require the extensive processing of data based on monitoring requests, the data may require sufficient additional processing to warrant a separate task. However, it is preferred that quotation inquiries be handled by the first provider task. Users are typically concerned with obtaining very rapid responses to quotation inquiries and handling of such inquires by the first provider task is not too burdensome.

Information received from data bases must typically be displayed in a particular format established by the remote data base or by local software provided to all subscribers. Access to the received data by programs developed by the user has typically been limited and, where available, access has required particular programming expertise and effort. Such access has not been available on a real time basis. A further feature of the present invention is that data paths between the provider task and the user task are established by means of a common code module which is linked to each user task. Each data path is specific to a type of data transferred to a single user. The common code module simplifies access to the different data types to which the user has subscribed and also insulates the user program from changes in the operating system of the multitask system. Any programming changes required by changes in the operating system can be handled for all programs by modifying the common code module. By establishing a distinct data path for each type of data transferred to each user, local subscriptions can be readily entered and terminated for specific services and the user program can at any point limit its access to a particular service. Thus, the internal message traffic can be minimized.

The time during which a user program must be active while waiting for data from the data base can be minimized by establishing a wait list which is monitored by the operating system. The wait list includes a mailbox address for each type of data for each user task. Through that mailbox, the operating system notifies the user task of data being transferred to the task. The operating system speeds the distribution of data because it is not necessary for each program to independently cycle through wait routines. Rather, the operating system waits for multiple events simultaneously and then deals with whichever one occurs first. Such capabilities are not generally available to programmers writing in higher level languages and are made available in the present system by the common code module.

In establishing the data paths between providers and subscribers, a configuration list may be established for each user task from a configuration file. Each configuration list includes the name of a provider task mailbox to which requests for each type of data are to be transferred and an indication of whether the task has access to a particular type of data. Each configuration list may also indicate whether the task is a provider of data to other tasks. Provider specific routines of the common code module are limited to provider tasks.

The common code module may also be used to establish wait lists for provider tasks. A provider task need not repeatedly check whether requests are being made from user tasks, but the operating system may simply monitor the provider task mailbox for each service. A configuration list would also be generated for each provider task so that the provider task would be able to identify each mailbox relative to each service. To facilitate distribution of data to subscribers, each provider may establish a subscriber list relative to each service to identify those users which have established data paths with respect to each service.

Preferably, during system start up, the first provider task is responsible for providing all other tasks in the system with the information included in the configuration list. Only the first provider task has access to configuration files which include the customer access information received from the remote data base.

A provider task such as the above mentioned second provider task for providing monitoring services should avoid making identical requests for data from the remote data base due to independent requests from different users. To that end, the provider task may receive specific data requests from user tasks and compile information correlating user tasks with specific data requests. For each data request, the provider determines whether a like request is pending for another task. Only if a like request is not pending would a specific data request be transferred to the remote data base. When the data is subsequently received from the remote data base, the provider determines from the compiled information all user tasks which have requested the received data, and the data is transferred to those user tasks. Preferably, the information is compiled by generating a user tree and a symbol tree. Each user node of the user tree points to a list of symbols identifying the data requested by that user. Each node of the symbol tree points to the users which have requested the data represented by the symbol.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of a preferred embodiment of the invention, as illustrated in the accompanying drawings.

FIG. 1 is a block diagram of the software architecture of a system embodying the present invention.

FIG. 2 is an illustration of the configuration list, wait list and subscriber lists stored in a provider task memory by means of an application program interface (API) common code module in the system of FIG. 1.

FIG. 3 is an illustration of the configuration list and wait list stored in a user task memory by means of the API.

FIG. 4 illustrates a configuration file retrieved by the primary provider task through API.

FIGS. 5A and the message format of messages transferred by means of API.

FIGS. 6A and the data structure of a symbol tree in the monitor provider of FIG. 1.

FIGS. 7A and 7B illustrate the data structure of a user tree in the monitor provider.

FIG. 8 illustrates an add pending queue in the monitor provider.

DESCRIPTION OF A PREFERRED EMBODIMENT

The present invention relates to a multitask, multiuser data processing system and may, for example, be implemented on a VS system from Wang Laboratories, Inc. In FIG. 1, the block 20 represents the overall operating system of the multitask system. Overlayed on the operating system are a number of distinct programs which share the operating system to independently complete their respective tasks. For example, three user programs 22, 24 and 26 are illustrated. Each user program is associated with a respective computer terminal 28, 30 or 32. Within each user program, the multitask, multiuser character of the system is invisible to the user; however, for intertask communications, specific procedures must be followed to establish data paths through the operating system.

The present invention relates to the transfer of requests to and the return of data from a remote data base host computer 34. The host computer gathers real time trade and quotation information over many data lines which link the host to all exchanges and several supplemental services such as Dow Jones and Spectrum Institutional Holdings. This information includes real time stock exchange, over the counter, option, commodity and fixed income data, as well as news and institutional holdings.

All communications between the remote data base 34 and the user programs 22, 24 and 26 are processed through a primary provider task 36. This task provides the data to the subcribing users. The primary provider 36 includes conventional communications software for transferring and receiving data along telephone lines. The primary provider 36 must also make an initial determination as to what type of data is being received. Specifically, the primary provider determines the particular data service of which the data is a part.

The primary provider makes an initial distribution of the data. Most data of the broadcast class, all of which is transmitted to all subscribers of the service, is transferred directly from the primary provider to the individual subcribing users. This class of services includes the Dow Jones New Service (dj), the New York Stock Exchange Ticker (tk), News Headlines (nh) and Reuters New Service (rt). An example of the transfer paths for data from these broadcast services to user programs 24 and 26 is illustrated in FIG. 1. These transfer paths are illustrated as being in only one direction because, once the data path as been established, no further requests from the user program to the remote data base are required. Other data services require more complex logic on the part of the provider. To prevent the primary provider from becoming over-burdened with distribution of data from those services, additional tasks 38 and 40 are provided.

In the present example, much of the data from the inquiry class of services is transferred by the primary provider to an inquiry provider 38. For example, with the Dow Jones New Retrieval Service (nr) the remote data base responds to specific inquiries for news items relating to particular identifiers transmitted to the data base by a user. The inquiry provider 38 initially receives those requests from the user programs, determines whether a similar request is already pending, and if no similar request is pending, transfers the request through the primary provider to the remote data base 34. All data transferred back from that service is directed by the primary provider 36 to the inquiry provider 38. The inquiry provider then examines its own records to identify the user program which made the request and transfers the responsive data to just that user program. In the example illustrated in FIG. 1, only user program 22 has subcribed to the Dow Jones News Retrieval Service, but the utility of the inquiry provider increases with increased subscriptions from other user programs and with an increased number of services of the inquiry class.

A final class of service is that in which the host computer monitors data based on a specific request for information identified by identifier symbols. The remote data base monitors all data as it is received from its sources and selects that data for which a request is pending. The data is then transferred to the requesting user. Thus, the monitor class of services keeps an inquiry open. The monitor provider receives requests from the user programs and, as did the inquiry provider, only forwards requests to the remote data base which are not already pending. The remote data base, for the most part, sees the multiuser system as a single user and only transmits a particular item of data once to the multiuser system. When that data is received, it is directed to the monitor provider. The monitor provider searches its records to determine which user program or programs requested the data and transfers the data to those user programs.

Market monitor data is encoded in a compressed format. The primary provider determines only that the data being received is of the market monitoring format and transfers all of that data (MM) in coded format to the monitor provider 40. The monitor provider then decodes the data and directs it to the requesting user programs as one or more of three services. The basic market monitoring service (mm) responds to each price change in that particular stock. A select ticker service (sl) responds to each trade of the stock and identifies the volume and price of that trade. The block trade ticker (bt) identifies all trades which exceed ten thousand shares. Block trade is actually a broadcast class of service but it is encoded by the host computer with the market monitor service, so it is most efficiently decoded by the monitor provider. Further, it is expected that block trading in the future will be a more selective service. As illustrated in FIG. 1, although all three services rely on the same data stream received from the remote data base, user programs may individually subscribe to select ones of the three.

One service which is of the inquiry class but which is handled entirely by the primary provider is that of stock price quotations (qt). Users expect that price quotations will be received very promptly, and the present system facilitates the prompt return o quotation data by minimizing the number of transfers of the quotation requests and return data through the operating system. The two transfers in each direction which result from use of the inquiry provider is avoided. The primary provider transmits the stock quote request with a sequence code which identifies the request in the primary provider. The sequence code is stored with the identity of the requesting user program in a first-in/first-out storage. The remote data base returns the data in the same order in which it is requested and returns the same sequence code with the data. The primary provider then returns the data to the requesting user task as it is identified from the first-in/first-out storage so long as the sequence numbers match. If a sequence number is skipped in the return data, the primary provider is able to either make the request again or notify the user program that the request should be made again.

A basic user program might allow the user to make specific requests within a service to which it subcribes and to suitably display the returned data. However, it is contemplated that users will want to develop their own programs which are particularly suited to their particular needs. In fact, users may wish to develop programs which have as only a small part thereof the need to obtain stock market information. A pension fund management program might be an example of such a program. In the past, retrieval of information from stock market services and other data bases has offered little flexibility to the programmer and has made linking of custom programs to the remote data base difficult or even impossible. The present system facilitates such communications by means of an application program interface (API) which facilitates the establishment of data transfer paths between tasks by making full use of the operating system capabilities while minimizing the programming effort required of the user program.

API is a code module of subroutines which may be linked to any one of the user and provider tasks. Once the API code module has been linked to a user program, the program need only make simple calls to the subroutines to establish the data transfer paths. The user need not be aware of the capabilities and requirements of the underlying operating system because those capabilities and requirements have been taken into consideration in development of the code module. Further, the user program is insulated from changes in the operating system. The system designer will make appropriate changes in the API code module with changes in the operating system. Although the API code module offers its greatest advantages in interfacing user programs to the operating system, it is also used to interface the provider background tasks. With this approach, the system designer, in making changes to the operating system, again need only modify the API code module and need not modify the background provider tasks.

A further advantage of the particular API code module to be described below is that it makes full use of the intertask message (ITM) capabilities of the Wang VS systems in creating mailboxes and transporting messages to those mailboxes. In the Wang VS systems, a task is able to list ports, or mailboxes, in an operating system plist and then "put itself to sleep". In the present system, those plists are wait lists created by the API code module. The operating system monitors the plist and, when a message is received at a port on the plist, the operating system notifies the task associated with that plist. As a result, the task program need not continue to operate as the program waits for an event to occur. This feature of the operating system is particularly useful to the provider tasks in monitoring data requests from user programs and to user programs in monitoring the receipt of data from the host computer. Such events may occur at any time.

Intertask communications are handled efficiently by means of the API code module by the establishment of three types of lists. FIGS. 2 and 3 illustrate example lists for the primary provider and user 2. Each task which communicates through the API code module establishes a configuration list and a wait through API routines. In addition, each provider task may a subscriber list for each service that it provides.

Before establishing any data transfer paths, a provider or user task must first obtain a configuration list through the primary provider. The configuration list includes a service code for each available service. The configuration list also indicates, for each service, whether the particular task is a provider of that service (indicated by a P in the list). If the task is not a provider the list indicates whether the task has access to the service (indicated by Y for yes or an N for no). Each task is also provided with an ITM port, or mailbox address, to which messages requesting that service should be transferred.

Before a user can complete a request to a provider, the provider must have retrieved its configuration list. Based on its access and provider mailbox information provided in that list, the provider must have established itself to receive requests for the particular service by listing the mailbox at which it is to receive requests on its operating system wait list. In FIG. 2, the active status indicated for each service in the wait list indicates that the primary provider is ready to receive requests for each service on the wait list. As already noted, the wait list is an operating system plist in the Wang VS system architecture. Once the wait list has been established through the API code module, the provider program need not continue to its mailboxes for the respective services. Rather, this chore is handled by the operating system by means of the wait list.

The provider may establish a subscriber list for each service and include in its configuration list a pointer to the starting address of each subscriber list (indicated by an * in FIG. 2).

The user also establishes its wait list in the operating system through API routines. The user may establish its own user port for each service to which it has access. That user port then serves as the mailbox for any data returned from a provider. The wait list includes each of its mailboxes on which it expects to receive data. Each mailbox on the wait list may be set at either an active or an ignore status; the operating system will only notify a task of transferred data to those mailboxes which are active.

To subscribe to a serive, a user looks to its configuration list in an API routine to obtain a provider mailbox address. Through the routine, it then constructs a subscription message as illustrated in FIG. 5B and transmits that message to the designated provider mailbox. It may then wait to be notified by the operating system through its user port that a message has been received. The subscription message is transferred by the operating system into the provider task mailbox and the provider task is notified that a message has been received. The provider then processes the subscription request and may place the user's return mailbox and other data for that service in the provider's subscriber list for that service. That other data includes the subscriber's workstation number, user I.D. and key.

By defining in the configuration list a unique provider mailbox for each service, the system allows each user program to independently establish data paths for the several services to which it subscribes. Although the host processor may include the particular user program as a customer and thus grant access to data for a particular service, within the local system any user may fail to subscribe or temporarily cancel any subscription to any service at any time without affecting subscriptions to other services. As a result, internal message traffic through the operating system can be minimized. The host processor is not informed of the user's status as a subscriber within the local system, so subscriptions and cancellations within the system do not affect the customer status of the user.

To provide for prompt access to the configuration information, a distinct configuration list is generated for each task in the system. Each task is able to efficiently obtain access to its list without requiring further transfer of data from a configuration file through the operating system. However, in a multitask system in which a global memory is readily available to all tasks, the individual configuration lists may not be required. Rather, the information may be obtained from a centralized file. It is important, however, that each task have ready access to the provider mailbox addresses designated by the system and to its own access information with respect to each available service.

A more detailed description of the creation of the configuration, wait and subscriber lists and the API subroutines which allow for the efficient transfer of data follows.

As the initial receiver of all information from the remote data base, the primary provider 36 has been selected as the focal program for initialization of programs with respect to transfers from the remote data base. As a part of the primary provider's initialization processing, it makes a call to a configuration initialization API routine called CNFINIT. CNFINIT reads a configuration file from disc storage. The primary provider also starts the communication line. When the host computer 34 detects that the line is active, it responds by sending out a services list for customers as discussed below. The primary provider consolidates the information received from the remote data base and from the disc storage to create the configuration file of FIG. 4.

The first item of the configuration file is a key for each task to be involved in the data transfer. In effect, the key is a logical name for a configuration record for each task. The keys PRIPRO, INQPRO and MONPRO are the names provided for the primary provider, inquiry provider and monitor provider, respectively. A further key ADMIN allows for the implementation of an administrative program if it is required for the particular needs of a system. Such a program may control designation of keys and control access to services by particular tasks and particular workstations.

The programs associated with the first four keys of the file are provider programs which typically operate in background. An additional three keys USER1, USER2 and USER3 are indicated for each of the three user programs shown in FIG. 1. Of course, the system is not limited to three user programs. These programs are typically subscribers and may or may not operate in foreground.

The terminal I.D. field is the identifier by which the remote data base knows each user on a system. The data base grants rights to particular services and bills for those services in a per terminal identification. Only user tasks need terminal I.D.s since they are the only true consumers of data. Suppliers may be thought of as merely an extension of the remote data base and require no terminal I.D. The terminal I.D. also serves as an alternate key; the remote data base is unaware of the first key and sends its configuration records tagged by the terminal I.D. The terminal I.D.s are assigned by the remote data base when a customer requests new or expanded services.

The task number is forwarded to the primary provider with a key as each task is initialized. The status field indicates whether a key is in use and, if so, the work station number at which the associated task is being used. The status field may indicate that a task is being operated in background. The workstations fields may be used by an administrator program to restrict the workstations on which a given key and its