Multi-processing financial transaction processing system6442533Abstract A financial transaction processing system is disclosed, wherein substantial processing efficiencies are provided with, additionally, a substantial decrease in the size of the executable code. Each transaction processed by the transaction processing system is described by a transaction data descriptor that includes a series of subtransaction data descriptions of actions that can be performed independently of one another. Thus, complex transaction processing logic is substantially removed from the executable code, and instead such transaction data descriptors are processed interpretatively. Moreover, the independence of the subtransactions allows the subtransactions of a transaction to be processed in parallel when performed on a multiprocessor computer. Additionally, the transaction processing system provides account balancing enhancements in that there are control columns in various data tables that are automatically updated during transaction processing so that by comparing control column totals, an indication of the integrity of current financial records is provided. Additionally, the transaction processing system provides full auditability in that any changes to financial data can be traced for any effective period of time into the past so that auditors can periodically perform a full audit of the financial transaction data retained by the transaction processing system. Claims What is claimed is: Description FIELD OF THE INVENTION
ABOVE BELOW
TRANSACTION PROCESSING CONTROLLER 52 N_GINE COMMAND PROCESSOR
TRANSACTION PREPROCESSOR AND N_GINE EDIT PROCESSOR
DECOMPOSER 54
SUBTRANSACTION PROCESSING MODULE 64 N_GINE POSTING TO AM, EA AND GL
SUBTRANSACTION SCHEDULER 62 N_GINE SCHEDULER
PORTFOLIO ADJUSTER 110 AORS
ORIGINAL ADD MODULE 114 ORIGINATE ADD PROCESSING
REVERSER OF ADD MODULE 118 REVERSE ADD PROCESSING
ORIGINAL SELL MODULE 122 ORIGINATE SELL ROUTINE
REVERSE OF ORIGINAL SELL MODULE 126 REVERSER SUBTRACT PROCESS
N_gine System Design Rules A. The Magic Number in Software Design is 1. That is, store data once, program data once, process data once. B. Design a total system with the fewest number of processing models. For example, One model for processing all adds (inserts), changes (updates), and deletes (deletes) for all Master (or Reference) Files (or tables). One model for processing all of simple transactions (such as debits and credits), including original and reversing entries. One model for processing all complex transactions (such as buys and sells), including original and reversing entries. One model for processing all adds (inserts), changes (updates), and deletes (deletes) for all Detail Record (or "driven") Files (or tables). C. Use the first and last models to process all files (or tables) in the entire system. D. Include audit controls for every table in the system from the very outset of design. E. For reasons of productivity assessment, include Production Statistics for every job. Namely, Begin Time Number of Transactions Number of Acceptances Number of Rejects End Time. These variables represent the only true means of measuring actual productivity. F. For reasons of auditability, never overwrite any original information. Move all original information from data entry (cradle) to data warehouse (grave) without any changes. G. For reasons of reliability and profitability, system designs should focus on a "large number of small programs" rather than a "small number of large programs". The result is not only ease of maintenance but also the ability to spread the small programs across a number of simultaneous processors. H. For reasons of manageability, all system designs should embrace one integrated enterprise-wide standard naming convention for all files (tables), records (rows), and fields (columns). I. For reasons of portability, use the fewest number of language commands to code the system. Avoid vendor and/or language extensions. J. For reasons of flexibility, never hard code what can be table-driven. N_gine Design Concepts A. Only 4 Processing Models for Financial Services and Telecommunications Applications 1. Schema 2. Units, Debit/Credit 3. Assets/Liabilities 4. File Maintenance Routine B. Table-Driven Transaction Processing for maximum flexibility 1. Number of Transactions 2. Name of Each Transaction and Unique Details 3. Processing Algorithms (at least 1, up to 20 depending upon complexity) 4. Each algorithm has 3 components a. Plus (P) or Minus (M) b. Operand 1 c. Operand 2 C. 100% Auditability For Every Transaction by creating 1. a Detail Record containing all relevant data and 2. hash totals of three relevant fields in at least 3 other tables. D. The 3 relevant fields for calculating all hash totals are: 1. Cash 2. Units 3. Cost Basis E. Basic Relational Database Management System Processing Concepts 1. Commit/Rollback 2. Row Level Locking 3. Indexing, ROWID 4. Stored Procedures 5. Shared Memory F. Some Financial Services Accounting Systems are not permitted to commingle funds. That is, separate accounting for both income and principal must be provided. Therefore, each account master must have a designated "income posting code" to define the proper processing. Such a code might be: (I) Income Only, (P) Principal Only, (B) Both Income and Principal. N_gine's Basic Tables Licensee Profile (The Licensee "Reference" or "Master" Tables) LM The License Master table contains the necessary information to process any type of licensee using either single or multiprocessing computers. LU The Licensee User Master identifies different users for the disparate systems that may be processed simultaneously. LT The Licensee Account Type table contains the necessary information to process any type of account be it for a pension trust account, a communications account, or a corporate subsidiary. LD The Licensee Default Definition table the default definitions for cash, units, and cost basis controls for total system control. LL The Licensee General Ledger Definition is a list of all of the acceptable entries for the General Ledger. That is, it provides a framework for processing any type of accounting controls for any set of account types. LS The Licensee Diversification Scheme contains a three level classification scheme for reporting an decision-making purposes for any set of assets and liabilities. LP The Performance Measurement Group Master contains a three level classification scheme for measuring the performance of different investment groups. LN The Licensee Summary Name Master contains a list of the entries on any type of Income Statement and Cash Flow Statement. LW The Licensee Wholesaler Master contains name, address, sales volumes, etc. wholesalers of communications services. LR The Licensee Reseller Master contains name, address, sales volumes, etc. for resellers of communications services. Account Profile (The Customer "Reference" Tables) AO The Account Objectives Table contains the different types of account objectives, such as income, growth, capital preservation, etc. AL The Account Jurisdiction contains the different types of legal relationships, such as broker, agent, trustee, advisor, etc. AJ The Account Jurisdiction contains the different types of legal jurisdiction, such as federal law, state law, foreign law, etc. AR The Account Representatives Table houses the different representatives, their names and communication addresses. AN The Account Registration Names is a list of legal names used in security settlement. AM The Account Master table provides all of the necessary information to process any type of account by linking the Account Objective, Account Jurisdiction, Legal Capacity, Profit Center, Account Representative, and Registration tables plus other relevant data for reporting content and reporting cycles. AC The Account Communications Links links the Account Number for Financial Services to the account numbers for communications services so that all information can be contained in one reporting scheme. Transaction Profile (The "Driving" Tables) TM The Transaction Master table provides all of the information to process any type of transaction, excepting the specific processing algorithms. TP The Transaction Processing table provides all of the specific processing algorithms for any type of transaction master. The Transaction Master and Transaction Processing tables provide all of the necessary information to process any type of transaction. TR The Transactions--Recurring Table (TR) contains the necessary information for automatically processing any type of transaction on a recurring basis. Entity Profile (The Entity "Reference" Tables) EM The Entity Master table provides all of the necessary information to process any type of financial entity. EA The Entity Attribute table joins all relevant diversification (known as type, group, and class), general ledger (known as accounting control numbers), and performance group (known as type, group, and class) data into one table for only one access seek. ET The Entity Transaction table links specific transactions to specific entities, such as BG (Buy Government) for a U.S. Treasury Note, BF (Buy Tax-Free) for a tax-free bond, BE (Buy Equity) for common stocks, etc. Note: It is the correct assignment of such transactions to such entities that permits the proper accumulation of data for income tax purposes. Licensee Status SG The System General Ledger contains all of the information to process any type of institutional accounting control. SJ The System Transaction Journal Table contains all of the transactions and all of the details for each transaction for a specific accounting period. ST The System Trade Settlement Table contains all of the automatically generated offset transactions for Buys and Sells. SS The System Summary Table contains a record for each execution of the system with the Begin Time, End Time, Number of Total Records Read, Number of Accepts, Number of Rejects, etc. SR The System Reject Table contains a list of all transactions rejected for whatever reason. SC The System Transaction Count Table contains the number of each type of transaction processed on any given transaction. Customer Status (The "Driven" Tables) CS The Customer Income Statement contains all revenues, expenses, and profits or losses for all customer accounts. CF The Customer Cash Flow Statement contains all receipts and disbursements for all customer accounts. CB The Customer Balance Sheet table contains all assets and liabilities for all customer accounts. CG The Customer Capital Gains table contains all of the realized capital gain details for all customer accounts. CI The Pending Income table contains all of the pending income, such as interest or dividends, for all accounts. CA The Pending Capital Adjustments table contains all of the pending capital adjustments, such as stock splits, stock dividends, mergers, acquisitions, etc., for all accounts. CP The Performance Measurement contains all of the periodic performance records for all customer accounts. The Control Tables (The "System Balance" Tables) Since every transaction is recorded in a detail record plus hashed to three other control tables, the control values of cash, units, and cost basis are added to like values in the following control tables: Account Master, System General Ledger, and Entity Attribute tables. For other reports such as the Income Statement and the Cash Flow Statements, the Performance Measurement table is used as a control table instead of the General Ledger. The present invention includes four computational processing models (process models 1 through 4) for processing financial transactions and assuring full auditability and traceability. The purpose of Process Model 1 (FIG. 5) is to create a single methodology for capturing, maintaining, and archiving the non-financial transaction data including a master table (reference table, or schema ) data for 100% auditability within a single software system. This model provides: A current database 300 (FIG. 5) (for additions, negations and corrections) and an archive database 304 (Read Only) Eight tables (i.e. tables 312, 316, 320, 324, 328, 332, 336 and 340, of FIG. 5) Number of Modifications 12 Control Fields per master table A sequence number generator A process flow methodology for add, change, and delete of data table rows. The operation of Process Model 1 is as follows: 1) Normal Updating to current database 300
Write to Write to Move Master Add to Change Delete
Reject Accept to History Master Master Master
Add
IF Identifer Found X
IF Identifier Not Found X X
Change
IF Identifier Not Found X
IF Identifier Found X X X
Delete
IF Identifier Not Found X
IF Identifier Found X X X
2) Periodic updating to the archive database 304 at the end of a pre-determined time period. That is, (a) archive snapshots of the archive master 312 in the current database 300 to the master in archive database 304; (b) archive the archive history 332 in the current database 300 to the master history 340 in the archive database 304; (c) purge the history table 332 in the current database 304. The purpose of Process Model 2 (FIGS. 2A, 2B) is to create a single methodology for: capturing, maintaining, and archiving the financial transaction data including: units, and debit/credits for one or more disparate financial applications with 100% auditability, wherein the processing is performed by: (a) computing configurations containing any number of simultaneous processors( (b) decomposing each input financial transaction into separate and independent subcomponents, (c) allocating the subcomponents across any number of multiple processors. The methodology of process model 2 utilizes a data-driven transaction processing strategy, wherein the manner in which a transaction is processed is determined by retrieving appropriate control data for processing a given input transaction. Thus, the present model provides the ability: (a) to process like systems (such as financial services systems) with different transaction definitions and accounting requirements (such as commercial banking, broker/dealers, mutual funds, insurance systems) and different debits and credits and/or (b) unlike systems (such as telecommunications systems) with disparate definitions (such as landline, wireless, satellite, cable systems) within the present invention at the same time. The purpose of Process Model 3 (FIGS. 2A, 2B) is to create a single methodology for: capturing, maintaining, and archiving the financial transaction data including: units, debits/credits, financial instruments for one or more disparate financial applications with 100% auditability within a single software system on computing configurations containing any number of simultaneous processors, decomposing each disparate financial transaction into separate and independent subcomponents, allocating the subcomponents across any number of simultaneous processors, and processing the data with 100% auditability. The methodology of Model 3 provides; "Detail Record Maintenance", that is, the ability to process transactions for similar business enterprises (such as portfolio management systems) relating to various financial instruments (such as disparate assets and liabilities) and/or transactions for dissimilar business enterprises (such as portfolio management systems, paying agencies, stock transfer systems) with disparate languages (such as English, Spanish, French, or German) and disparate definitions (such as management philosophy, accounting, and operating nomenclature) and unlike financial instruments (such as assets and liabilities) within the same software at the same time. The ability to decompose, allocate, process, and audit each financial instrument transactions with 100% auditability. The current databases 300 (for additions, negations and corrections) and the archive databases 304 (read only); Sixteen data tables (some of which are shown in FIGS. 2A-2B) plus a sequence generator; 12 control fields appended to the master tables for tracing master table changes; One transaction three hash totals (mostly using AM, EA, and PM tables); 4 currency fields; Sequence number generation; Reversing/reversed by detail; Processing flow for additions, negations, and corrections. The purpose of Process Model 4 is to create a single methodology for performing file maintenance including: creating a record (row) containing the initial data in a file (table) or modifying the initial data within an existing record (row) within a file (table) or deleting a current record (row) from a file (table)in any software application on computing configurations using simultaneous processors. Where the term, "Details", hereinbelow represents the identity of the specific financial transaction, the methodology of the process model 4 is provided by programs such as the following:
BEGIN
IF Trxn is "ADD" then
/* Test for Duplicate Add */
SELECT One or More Values from the Desired File (Table)
into Working Storage
IF Error then
/* Add New Record */
INSERT INTO Reject Report
IF Error then
Message "INSERT Reject ADD", Details
Goto Write Reject Table
ENDIF
ELSIF
/* Increment Existing Record */
Increment One or More Data Values
UPDATE SET, Detaits
IF Error then
Message "UPDATE Error ADD", Details
Goto Write Reject Table
ENDIF
ENDIF
ELSIF Trxn is "SUBTRACT" then
/* Test for Valid Record */
SELECT One or More Value(s) from Existing Record
IF Error then
Message "SELECT Error SUBTRACT", Details
Goto Write Reject Table
ENDIF
/* Test for Valid Amounts */
IF One or More Amounts > One or More Values from
Existing Record then
INSERT INTO Reject Report
IF Error then
Message "INSERT Reject SUBTRACT", Details
Goto Write Reject Table
ENDIF
/* Delete Existing Record */
ELSIF One or More Amounts = One or More Values from
Existing Record
AND Special Deletion Criteria = TRUE then
DELETE Record
IF Error then
Message "DELETE Error", Details
Goto Write Reject Table
ENDIF
ELSE
/* Decrement Existing Record */
Decrement One or More Values
UPDATE SET, Details
IF Error then
Message "UPDATE Error SUBTRACT", Details
Goto Write Reject Table
ENDIF
ENDIF
ELSE
/* Invalid ADD or SUBTRACT Code */
INSERT INTO Reject Report
IF Error then
Message "INSERT Reject AORS", Details
Goto Write Reject Table
ENDIF
ENDIF
Goto EOJ
<<Write Reject Report>>
ADD to Reject Table
IF Error then
Message "INSERT Reject Table Error", Details
STOP
ENDIF
<<EOJ>>
Null
END
Accordingly, the methodology of process model 4 defines: (a) A current database (for additions, negations and corrections) and archive database (Read Only) (b) ADD or SUBTRACT; (c) Initial tests for values; (d) Special deletion criteria; (e) Tests for action; INSERT or UPDATE; DELETE or UPDATE; INSERT INTO Reject Tables; Processing Model 1 Processing model 1 is a method for processing changes to files (or tables) denoted as master or reference tables (files) wherein these tables retain fundamental information that is not derivable from other tables. In particular, processing model 1 processes changes to master tables in an automated manner without losing historical financial information. Accordingly, 100% auditability of all data changes is able to be achieved. The method of achieving this goal uses an architecture denoted as "Master Transaction Cluster Processing" (MTCP). MTCP is based on the premise of creating a logical flow of all original information from data capture (data entry) to permanent data repository (data warehouse) by replacing single master files (or tables) with a cluster of files (or tables). Therefore, MTCP addresses the complete life cycle of all information relevant to organizational decision-making. MTCP is targeted for use in the automatic generation of program code for multiple large-scale real-time transaction processing applications (such as securities trading, telecommunications billing, and work management) on multi-processing computers (using 4, 8, 16, 32 processors), where control is not only an increasing complex issue but an absolute necessity for future competition. The circumstances leading to the invention of Master Transaction Cluster Processing are: a) Prior art financial transaction software architecture lacks the ability to identify transactions by table, transaction date, transaction number, and the person authorizing the transaction. b) Prior art financial transaction systems typically use only one table to contain all Master Information (i.e., non-derivable information) and the data in this table is overwritten, thereby losing historical information. Cases in point would be a record of all of the past mailing addresses or processing instructions for a specific customer. c) Without 100% retention of an organization's vital information, management has no idea of the accuracy of the information being used for decision-making purposes. d) The Year 2000 problem, know as Y2K, is proving that past software applications designs have reached technological limits and current maintenance costs are inordinately expensive. e) Competitive pressures are mounting for higher quality software with lower software development and maintenance costs. Totally new architectures for applications software is in great demand. f) The ComputerWorld article, "Information: America's Favorite Investment," by Paul Strassman, ComputerWorld Magazine, Aug. 5, 1996, states that over 1100 companies are spending more on automation annually than the net worths of their respective companies. a) The Standish Report as described in Development Patterns, InfoWorld Magazine, Feb. 3, 1997, p. 56, states that the success rate of Business Process Reengineering has increased from 16% in 1994 to only 27% in 1996. Note, in the book "Oracle Design", Ensor & Stevenson, O'Reilly Press, it is a recommended practice to compromise data retention rather than achieve 100% auditability. Today's hardware costs suggest otherwise. The advantages of the present invention over the approaches discussed above are: to provide 100% auditability which offers business management the capability to exercise its fiduciary responsibility to its stockholders and Board of Directors, to capture, maintain, and ensure the integrity of all vital information for business enterprise decision-making purposes, and to preserve such information consistent with business enterprise-defined data retention cycles. Additionally, the present invention allows accountants to certify in business enterprise annual reports that all vital corporate data is being properly preserved. A detailed description of Master Transaction Cluster Processing corresponding to model 1 (the first computational model of the present invention) is as follows. MTCP Overview Master Transaction Clustering, or MTCP, performs the following tasks: a) assigns a unique identifier based on (i) master table identification, (ii) transaction date, (iii) transaction number, and (iv) authorized user, to each transaction that causes a change in the state of a particular record of a master table. That is, if one or more data elements in the record change, then the previous record is written to history, and a new status is assigned to an identifier field used for tracking such changes; b) creates a logical flow of data as it is originally entered from its inception (data entry) to its repository (data warehouse). The unique architecture of MTCP replaces the Master File (or Table) within prior art systems with a cluster of Master Files (or Tables), known as a "Master Transaction Cluster". This cluster is suitable for multiprocessing (or the use of simultaneous processors within a single computer to complete a common job). Hence, MTCP addresses 100% auditability via maintaining the total life cycle of information. Aged information may be deleted from the appropriate tables consistent with user-defined data retention policies; c) offers a standard for processing all Master Tables within a total application; d) provides a test bed for separately testing each Master Table Cluster under development and all Master Table Clusters in concert; e) permits management to report that it is successfully capturing, maintaining, and preserving all critical information for decision-making purposes. MTCP Scope Master Transaction Cluster Processing utilizes the following (FIG. 5): a) two databases (i.e., the current data base 300 and the archive data base 304), b) sequencing generator 308 having: (i) two external sequence generators; (ii) two internal counters, c) eight tables (denoted master table 312, input table 316, summary table 320, reject table 324, accept table 328, history table 332, master archive table 336 and master history table 340), and d) twelve additional fields for every row in the master table 312. MTCP Independence Master Transaction Cluster Processing of Model 1 is independent of any: a) application--such as accounts receivable, customer billing, etc. b) industry--such as financial services, telecommunication, or work management, c) hardware manufacturer--such as Compaq, Digital, HP, IBM, NCR, Unisys, d) operating system--such as MS-DOS, UNIX, OpenVMS, MVS, etc. e) network--such as Novell, Ethernet, etc. f) relational database management system--such as Oracle, Sybase, Microsoft SQL Server, Informix, etc., and g) computer language--such as SQL, COBOL, FORTRAN, PL/1, Java, etc. MTCP Architecture The Master Transaction Cluster Processing (MTCP) architecture can be used for any application in any industry using any computer language. Within the typical structured processing scheme of input and process, the Master Transaction Cluster Processing focuses solely on the process function. Thus, the method permits users to define input screens and defined output reports. MTCP Databases Unlike prior art software system which contain only one table for each set of primary records, Master Transaction Cluster Processing uses eight related tables, or a cluster of tables, to track all information on a cradle to grave basis. The cradle being its point in inception (or data entry), and the grave being its permanent repository (or data warehouse). Consequently, the "Master Transaction Cluster" spans two different databases: one denoted the Current database 300 containing all relevant data for the current processing period and a second denoted the Archive database 304 containing all relevant data for all previous processing periods. The Current database 300 represents the area of high inquiry, and the Archive database 304 represents the area of low inquiry. Consequently, the Current database 300 is normally placed on high-speed internal disk drive and the Archive database 304 is normally placed on less expensive lower-speed CD-ROMs. Note that trailing information in the Archive database 304 may be destroyed consistent with defined data retention policies, statute of limitations, etc. MTCP Tables The six tables in the Current database 300 are the a.) Master Table 312 (M) that will contain all records to be maintained. b.) Input Table 316 (I) that will contain all records prior to updating. c.) Reject Table 324 (R) that will contain all records rejected during processing. d.) Accept Table 328 (A) that will contain all records accepted during processing. e.) History Table 332 (H) that contain a complete snapshot of all records prior to updating. f.) Summary Table 320 (S) that contains the results of a specific processing operation. and the two tables in the Archive database 304 are the: g.) Master Archive Table 336 that contains snapshots of the master table 312 at the end of each processing period. h.) Master History Table 340 that contains a history of the master table 312 changes during a current processing period. Note that the Master Table (M), Input Table (I), Reject Table (R), the Accept Table (A), the History Table (H) in the same "Master Transaction Cluster" share the same number and order of data elements consisting of alphabetic, numeric, and date items. Alternatively, the Summary Table (S) contains the start time, end time, number of accepts, and number of rejects for each time a series of master table 312 modifications are provided. MTCP Generator and Counters The Generators 308 include two different external counters and two internal counters used in effecting 100% auditability. The two external counters are the Accept Sequence Number Generator and the Reject Sequence Number Generator. The two internal counters are the Total Records Read Counter and the Number of Modifications Counter. All are used only in the Current database 300, as the Archive database 304 is read-only in nature. Regarding the external counters, the Accept Sequence Number Generator included in the Current database 300 automatically generates sequential numbers for the processing period (daily, weekly, monthly, etc.) starting with the number 1, and increments by 1, so that every transaction processed against the preceding (old) master table 312 will receive a specific transaction number, and accordingly, each transaction processed will be uniquely identifiable based on master table identity, transaction date, transaction number, and authorized user. Note that the transaction date is read off the internal system clock. The Reject Sequence Number Generator counts the number of rejects for the specific processing period. Its function is similar to the Accept Sequence Number Generator. Both the Accept Sequence Number Counter and the Reject Sequence Number Counter are "processing period" specific. That is, both are cleared to zero at, e.g., midnight on the end of the processing period so that each processing period may be separately identified and audited. Regarding the internal counters, the Total Records Read Counter counts the number of transactions read during a specific processing performance. Since the Total Records Read Counter is "job execution" dependent, this counter is cleared to zero at the outset of every processing program execution. The Number of Modifications Counter counts the number of times a specific record has been changed. As this counter is "record" dependent, this counter is never cleared to zero. This specific counter should identify the number of individual records that may be retrieved, viewed, and verified from all of the tables in the specific Master Transaction Cluster to prove its auditability. MTCP Archive Database 304 The Archive database 304 is read only. Within the Archive database 304, information contained in the Master Archive Table 336 represents a snapshot of information in the Master Table in the Current database 300 at a particular point in time such as the end of a month, quarter, or year. And, information in the History Archive Table 336 contains all of the transactions that have occurred from the beginning of the most recent processing period until the particular point in time, be it month, quarter, or year. For example, the Master Archive Table 336 contains the status of the Master Table 312 at the end of the first quarter, and the History Archive 340 contains all of the transaction modifications occurring since the end of the last quarter. In this fashion, any status of any Master Table 312 can be recreated for any point in time (say, month ends) by simply processing all transactions in the History Archive 340 for the desired period against the previous Master Archive Table 336, or the beginning of the period. MTCP SOL Script Library Implications To achieve 100% auditability of a complete system, every master file (or table in relational database management systems has a Master Transaction Cluster. Therefore, a total system containing 15 tables would require 15.times.8 or 120 tables to achieve full 100% auditability. Since each table will require at least 4 SQL scripts to (1) Create Table, (2) Select data from the table, (3) Delete data from the table, and (4) Drop the Table in the event of redefinition, the number of SQL scripts is 15.times.8.times.4, or 960 SQL Scripts. Then, each Master Transaction Cluster will require at least a Processing Program plus a Review, Reset, and Retest, or at least four more programs for each cluster, or 4.times.15, or 60, more SQL Scripts. All of the SQL scripts would be stored in one SQL Script Library on the computer for future reference and ease of maintenance. MTCP Multi-processing The multi-processing of the Master Transaction Cluster occurs in the following manner: For additions (or Insertions in SQL) of data The Insertions to the Master Table 312 and Insertions to the Accept Table 328 may be processed simultaneously. For changes (or Updates in SQL) of data The Update of the Master Table 312 and the Insert to the Accept Table 328 may be processed simultaneously after the original record from the Master Table 312 has been copied to the History Table 332. For deletes (or Deletes in SQL) of data The Deletion from the Master Table 312 and the Insertion to the Accept Table 328 may be processed simultaneously after the current record in the Master Table 312 has been updated for the transaction identifier and then copied to the History Table 332. MTCP Creation Before processing any Master Transaction Cluster, the necessary databases and files (or tables) must be created. For each business enterprise utilizing the present invention, these databases and files are created only once in the following manner: (Begin Program) Create "Current" database Create "Archive" database in the "Current" database Create Master Table Create Input Table Create Reject Table Create Accept Table Create Second Accept Table (on separate disk unit, if desired) Create History Table Create Summary Table Create Sequence Number for Accepts Create Sequence Number for Rejects in the "Archive" database Create Master Archive Create History Archive (End of Program) MTCP Processing Processing of the "Master Transaction Cluster" then occurs in the following manner. Step 1: All required information for processing a transaction is first captured on an Input Form. Step 2: Once this information is edited by, e.g., an operator, an Enter Key can be pressed by an operator to write this information to the Input Table 316 for particular master transaction clusters. Step 3: For each input table 316, a polling program notes that the Input Table is not empty and has a transaction action to be processed whereupon the action is processed by a process (denoted "process 1" in FIG. M.sub.1). Step 4: The transaction processing program determines the type of file maintenance to perform; basically, (1) add a record (entitled Insert a Row in SQL), (2) change a record (entitled Update a Row in SQL), and (3) delete a record (entitled Delete a Row in SQL), which in turn determines the multi-processing potential as described above in the MTCP Multi-processing. The normal daily processing flow to achieve 100% auditability in either real-time or batch mode is as follows:
(Begin Program)
Read System Clock to Store Begin Time
(Read Next Transaction)
If Last Transaction
Read System Clock to Store End Time
Write End Time, Begin Time, Number of Accepts, Number of
Rejects,
and Total Records Read to Summary Table
Goto End ofProgram
Increment Total Records Read by 1
(Add a New Record)
If transaction is "Add" then
If record exists then
Process Addition Error
Goto Write Reject Table
********************************************************
* Select System Clock Date into Insert - Transaction
Date *
* Increment Sequence Number into Insert - Transaction
Number *
* Select User Name into Insert - Transaction
User *
* Select Zero into Update - Transaction
Number *
* Select Zero into Delete - Transaction
Number *
*********************************************************
Insert to Master Table
Goto Write Accept Table
(Change an Existing Record)
If transaction is "Change" then
If record does not exist then
Process Change Error
Goto Write Reject Table
*********************************************************
* (Master Snapshot) *
* Move Master Table Record to History Table *
*********************************************************
* Select System Clock Date into Update - Transaction
Date *
* Increment Sequence Number into Update - Transaction
Number *
* Select User Name into Update - Transaction
User *
* Select Zero into Delete - Transaction
Number *
* Increment Master Table Number of Modifications by 1 *
*********************************************************
Update Master Table with New Data
Goto Write Accept Table
(Delete an Existing Record)
If transaction is "Delete" then
If record does not exist then
Process Drop Error
Goto Write Reject Table
*********************************************************
* Select System Clock Date into Delete - Transaction
Date *
* Increment Sequence Number into Delete - Transaction
Number *
* Select User Name into Delete - Transaction
User *
*********************************************************
* Update Master Table Record for Tran Date/Tran Num/User
*
*********************************************************
* (Master Snapshot) *
* Move Master Table Record to History Table
*
*********************************************************
Delete Master Table Record Prom Master Table
(Write MULTI-PROCESSED Accept Table)
*********************************************************
* Move "Current" into Archive - Status *
* Move "System Date" into Archive - Date *
****************************************
Increment Accept Counter
Insert to Accept Table
Insert Second Accept Table (on a separate disk drive, if
desired)
Goto Loop to Next Transaction
(Write Reject Table)
Increment Reject Counter
Insert to Reject Table
(Loop to Next Transaction)
Goto Read Next Transaction
(End of Program)
End
Note: The specific multiprocessing of "Write Multiprocessed Accept Table" may be relocated to the specific routine (Add, Change, or Delete) depending upon the computer language being used. Step 5: At the end of the "proofing period" , such as daily or weekly, when proof tallies are matched to computer tallies, the Accept Table can be deleted as follows: (Begin Program) Delete All Records from the Accept Table (End Program) Step 6: Backup all databases and tables before any information is purged as follows: (Begin Program) Write All Tables in the "Current" database to backup Write All Tables in the "Archive" database to backup (End of Program) Step 7: At the end of a user-defined period, an archive and purge process occurs that (Begin Program)
*************************************************
* Move "Archive" to Archive Status
* Move "System Date" to Archive Date
*************************************************
Move All Records in the Master Table to Master Archive. Move All Records in the History Table to the History Archive. (End Program) Step 8: In the event that current records are wrongfully moved to the History Archive, they may be retrieved by (Begin Program) Move Specific Records from the Master Archive to the Master Table Move Specific Records from the History Archive to the History Table (End Program) This program should be executed only after Records have been moved from the Current database 300 to the Archive database 304. It should never be run after new transactions have been processed to the Current database 300. MTCP Backup/Recovery If necessary, a recovery program can be utilized at any time in the event of hardware failure. Upon complete recovery, Step 7 and Step 8 will have to be re-executed to insure the correct status before the next day's processing is begun. The Accept Table can then be used to as a substitute Input Table to return the system to its previous processing point. Once this table is exhausted, data from the Input Table would supply the remaining data for the processing job. MTCP Management Once test data are defined and processed, a business enterprise may (a) Review lists of the contents of all Master Tables 312 for determining correctness. (b) Reset the contents of all Master Tables for performing the next test. (c) Retest. MTCP Auditability Once auditabilty is achieved, the business enterprise may query: (a) When a Master Table Cluster was created. (b) When each record was added (or inserted) to the Master Table 312, (c) How many authorized changes (or updates) have been made to a record of the Master Table 312. (d) Prove the integrity of the master transaction cluster by producing a sequential list of all record changes, and if the record was deleted, where the record is stored. Accordingly, 100% auditability of every change, every day, for every application is possible. Multiprocessing Defined Unlike serial processing which processes all jobs in sequential fashion, multiprocessing processes some of the same jobs simultaneously, or in parallel. While multiprocessing is not new, major computer manufacturers such as Compaq, Digital, Hewlett-Packard, IBM, NCR, Unisys, etc. have announced offerings of low-cost multiprocessing machines based on 2, 4, 8, and sixteen processors. These machines will rapidly increase the demand for multiprocessing software, which is known as "multithreaded" software. Multithreaded software permits the simultaneous execution of more than one jobs or job sequences. Multiprocessing takes two forms, Symmetrical Multiprocessing (SMP) and Massively Parallel Processing (MPP), the difference being that symmetrical multiprocessing machines collectively have only one bus between the processors and the peripheral storage. For example, a symmetrical multiprocessing machine may have eight processors, one bus, and sixteen disk drives. In contrast, massive parallel processing machines has one bus for each processor. For example, a massively parallel machine may have eight processor, eight busses, and sixteen disk drives. Therefore, symmetrical multiprocessing machines are best suited for applications with a high processing content and a low input/out content. In contrast, massively parallel processing machines are best suited for applications that can be parallelized and have a high input/output requirement, as is the case with many commercial systems. In either event, multiprocessing machines are best utilized when carefully tuned to avoid bottlenecks. This is likely to mean that all of the layers constituting a computing environment are multiprocessing-enabled. That is, the hardware, operating system, relational database management system, and the specific application are capable of multiprocessing. Some multiprocessing mainframes have been available for several years as well as some versions of the UNIX operating system. Only a few multiprocessing relational databases exist and even fewer multiprocessing applications. It is believed by some that the success of multiprocessing is solely dependent upon the "knowledge of the application" rather than "knowledge of the underlying tools," the tools being the hardware, operating system, and relational database system. Accordingly, it is believed that the limiting factors for the success of multiprocessing for financial systems depends on: (1) the lack of financial transaction application knowledge, (2) a lack of understanding of how multiprocessing can be used to effect 100% auditability, and (3) the lack of understanding as to how to decompose a financial transaction system into a series of small independent processes that may be performed simultaneously. MTPC Uniqueness Approaching multiprocessing from the business enterprise perspective, there are several levels by which processing could be sub-divided. These are by: (1) application, wherein certain applications are capable of being performed in parallel, such as e.g., Accounts Receivable, Accounts Payable, etc. (2) function, wherein certain functions within an application are capable of being performed in parallel, such as, e.g., updating customer profiles, customer status, or performance. (3) process, wherein certain large tasks are capable of being decomposed into smaller tasks that can be performed in parallel, such as, e.g., by splitting a large Accounts Receivable process, such as billing, into subcomponents. (4) transaction, wherein transactions are decomposed into subtransactions that are capable of being performed in parallel. The value of MTCP is that it addresses the last form of multiprocessing which is believed to be the most critical to delivering rapid response times for real-time financial transaction processing systems. That is, by dividing a transaction into subtransactions that can be spread across several multiprocessors) processing throughput may be faster. Plus, the large number of small programs make maintenance much easier and less expensive. A first embodiment of the transaction processing controller 52 is provided in the flowchart of FIG. 6. Note that for simplicity, error handling and related validity checking steps have been omitted. However, the performance of such steps is within the scope of the present invention, as one skilled in the art will appreciate. A second pseudo-code embodiment of the transaction processing controller 52 follows. Pseudo-Code for the Command Processor Transaction Processing Controller 52
BEGIN
/* The following switches are global. They control both the activity of
the system. */
/* The Processor Switches monitors the availability of an eight
processor computer. */
/* The Process Switches monitors all of the jobs that are to be
executed. */
/* These switches initialize the system, and then change throughout
processing */
/* as the subcomponents of the system and the processors finish. */
/* The Processor Switches are turned ON as jobs are sent to specific
processors. */
/* The Processor Switches are turned OFF after the jobs are completed.
*/
Set Processor 1 Switch = 0
Set Processor 2 Switch = 0
Set Processor 3 Switch = 0
Set Processor 4 Switch = 0
Set Processor 5 Switch = 0
Set Processor 6 Switch = 0
Set Processor 7 Switch = 0
Set Processor 8 Switch = 0
Read Begin Time from Systems Clock into Working Storage
Set Total Records Read = 0
Set Number Accepts = 0
Set Number Rejects = 0
/* The Command Programs reads the transaction input from the operator,
then */
/* edits the transaction for validity and loads the transaction
processing algorithms */
/* from the Transaction Processing table (or cache file) to a temporary
table. It then */
/* walks down all of algorithms in the temporary table to process the
total transaction */
/* with 100% auditability. Each algorithm may be passed to a separate
processor.
/* Read operator instructions for starting and ending item in input
stream */
/* For the purposes of restart in the event of mid-stream job failure
*/
/* For the purpose of omissions in processing. */
/* Operator may enter Begin .............. End for all items */
/* Operator may enter Begin ..... End for a beginning list */
/* Operator may enter Begin ..... End for an intermediate list */
/* Operator may enter Begin ..... End for an ending list */
Read Beginning Item in Input Stream from Master Control Terminal
Read Ending Item in Input Stream from Master Control Terminal
Set Beginning Item to Next Transaction
Set Ending Item to End of List
Read System Clock for Begin Time
Add Record with Begin Time
IF Error then
Message "No System Table Record for Begin Time", Details
ENDIF
<<Read Next Transaction>>
/* The Process Switches are turned ON as each transaction subcomponent
is completed. */
/* The Process Switches are turned OFF after the total transaction is
completed. */
Set Process 1 Switch = 0
Set Process 2 Switch = 0
Set Process 3 Switch = 0
Set Process 4 Switch = 0
Set Process 5 Switch = 0
Set Process 6 Switch = 0
Set Process 7 Switch = 0
Set Process 8 Switch = 0
Set Process 9 Switch = 0
Set Process 10 Switch = 0
Set Process 11 Switch = 0
Set Process 12 Switch = 0
Set Process 13 Switch = 0
Set Process 14 Switch = 0
Set Process 15 Switch = 0
Set Process 16 Switch = 0
Set Process 17 Switch = 0
Set Process 18 Switch = 0
Set Process 19 Switch = 0
Set Process 20 Switch = 0
Set Process 21 Switch = 0
Set Process 22 Switch = 0
Set Process 23 Switch = 0
Set Process 24 Switch = 0
Read Next Transaction into Working Storage
IF EOF then
Read End Time from Systems Clock into Working Storage
INSERT End-time, Begin Time
Total Records Read, Number Accepts, Number Rejects
into Summary Table
IF Error then
Message "INSERT ST Table", Details
STOP
ENDIF
Goto EOJ
ENDIF
IF Next Transaction = End of List
Goto EOJ
ENDIF
Increment Total Records Read
<<Test Transaction Type>>
IF Transaction Type != ` ` then
/* Set Switches for Trade Offset and Settle Offset Processing */
Set Process 1 Switch = 0
Set Process 2 Switch = 1
Set Process 3 Switch = 1
Set Process 4 Switch = 1
Set Process 5 Switch = 1
Set Process 6 Switch = 0
Set Process 7 Switch = 1
Set Process 8 Switch = 1
Set Process 9 Switch = 1
Set Process 10 Switch = 1
Set Process 11 Switch = 0
Set Process 12 Switch = 1
Set Process 13 Switch = 1
Set Process 14 Switch = 1
Set Process 15 Switch = 1
Set Process 16 Switch = 1
Set Process 17 Switch = 0
Set Process 18 Switch = 0
Set Process 19 Switch = 1
Set Process 20 Switch = 1
Set Process 21 Switch = 1
Set Process 22 Switch = 1
Set Process 23 Switch = 1
Set Process 24 Switch = 0
ENDIF
<<Test OORR>>
IF OORR = `O` then
*****************
CALL N_gine EDIT
*****************
IF Edit Error
Message "Edit Error", Details
Goto Write Reject Table
ENDIF
IF Tran-Type != `Sell`
OR Tran-Type != `Withdraw` then
INSERT into Transaction Journal Table
IF Error
Message "Insert TJ Error", Details
Goto Write Reject Table
ENDIF
IF Correction Data then
DELETE from Reject Table
IF Error
Message "Delete Reject Error", Details
Goto Write Reject Table
ENDIF
ENDIF
ENDIF
*********
CALL TT i.e., execute the algorithms in the temporary table
*********
IF Temporary Table Error then
Message "Temporary Table Error", Details
Goto Write Reject Table
ENDIF
Generate Sequence Number
ELSIF OORR = `R`
*****************
CALL N_gine EDIT
*****************
IF Edit Error
Message "Edit Error", Details
Goto Write Reject Table
ENDIF
Assign Transaction Number = `000000`
Assign LOT Number = 1
<<Read Next Reversal>>
Read Transaction Journal Table for reversal number
IF "No Transaction Exists" where LOT = 1 then
Message "No Transaction Exists", Details
Goto Write Reject Table
ENDIF
IF "No Transaction Exists" and LOT > 1 then
Goto Transaction Wrap-up
ENDIF
IF Previously Reversed
Message "Previously Reversed", Details
Goto Write Reject Table
ENDIF
INSERT Reversing Transaction" to Transaction Journal Table
IF Error
Message "INSERT TJ Reversing Error", Details
Goto Write Reject Table
ENDIF
UPDATE "Reversed" Transaction
IF Error
Message ""UPDATE TJ Reversed Error", Details
Goto Write Reject Table
ENDIF
Increment the LOT Number
*********
CALL TT i.e., execute the algorithms in the temporary table
*********
IF Temporary Table Error then
Message "Temporary Table Error", Details
Goto Write Reject Table
ENDIF
Goto Read Next Reversal
Generate Sequence Number
UPDATE "Reversed" Transaction, ALL ROWS with Reversing Data
IF Error then
Message "UPDATE TL Table Reversed", Details
Goto Write Reject Report
ENDIF
UPDATE "Reversing" Transaction, ALL ROWS with Reversed Data
IF Error then
Message "UPDATE TL Table Reversing", Details
Goto Write Reject Report
ENDIF
ELSE
INSERT into Reject Table "No Originate or Reverse Code"
IF Error then
Message "Insert Reject Table", Details
Goto Write Reject Table
ENDIF
ENDIF
<<Transaction Wrap-up>>
INSERT INTO Transaction Count Table
Select Original-Count and Reversal Count from TC Table into Working
Storage
IF Error then
INSERT INTO TC Table, Details
IF Error then
Goto Write Reject Table
ENDIF
ELSE
IF AORS = `O` then
Increment Original-Count
ELSIF AORS = `R`
Increment Reversal-Count
ELSE
Message "Invalid AORS Code", Details
STOP
ENDIF
ENDIF
A first embodiment of the transaction preprocessor and decomposer 54 is provided in the flowcharts of FIGS. 7-A through 7-D and FIGS. 8-A and 8-B. Note that for simplicity, error handling and related validity check steps have been omitted. However, the performance of such steps is within the scope of the present invention, as one skilled in the art will appreciate. A second pseudo-code embodiment of the transaction preprocessor and decomposer 54 follows. Pseudo-Code for the Edit Processor for all Incoming Transactions Transaction Preprocessor and Decomposer 54
BEGIN
Housekeeping
Set Working Storage Alphas to Blanks
Set Working Storage Numbers to Zeroes
IF Incomig Licensee Identifier = Stored Licensee Identifier then
Using Licensee Identifier from Input String, retrieve
Licensee Name
Trade Settlement Switch
Trade Offset Buy
Trade Offset Sell
from Licensee Master into Working Storage
IF Error then
Message "No Licensee Master", Detail
Goto EOJ
ENDIF
ENDIF
/***********************************************/
IF the Default Definition Table has not been loaded to memory
then
LOAD all records from the Default Definition Table
consisting of
Licensee
DD Class
DD Identification
DD Sub-Class
DD Accounting Control Number
DD Name
from the Default Definition Table
into the Temporary Table (TA)
IF Error then
Message "NO TA Table", Details
Goto EOJ
ENDIF
ENDIF
/***********************************************************/
IF the Incoming Account Identifier = Stored Account Identifier
Goto Access Transaction Master (TM)
ELSE
/*** This is the first table containing control totals for
cash, units, and cost basis ***/
<<Access Account Master>>
From the Account Master Table (TM)
using the Licensee Identifier from the Input String
and the Account Identifier from the Input String, retrieve
Account Type
Income Posting Code
Income/Expense Switch
Receipt/Disbursement Switch
Performance Measurement Switch
Fiscal Year - Month
Fiscal Year - Day
Fiscal Year - Number Periods
Income Cash Balance
Principal Cash Balance
Invested Income
Invested Principal
Total Units - Assets
Liabilities
Total Units - Liabilities
and the Row Identification of the Account Master
Record
from the Account Master Table (AM) into
Working Storage
IF Error then
Report "Invalid Account Identifier", Details
Goto Write Reject Report
ENDIF
ENDIF
<<Access Transaction Master>>
IF the Incoming Transaction Identifier = Stored Transaction
Identifier
Goto Test Cash Entry in Entity Attribute Table
ELSE
Using the Licensee Identifier from the Input String
and the Transaction Identifier from the Input String
Transaction Name
Add or Subtract Switch
Settlement Switch
and the Row Identification
from the Transaction Master Table (TM) into Working
Storage
IF Error then
Message "Invalid Transaction Identifier", Details
Goto Write Reject Report
ENDIF
IF AORS = `A` then
Using the Licensee Identifier from the Input String
and the Trade Offset Buy from Working Storage, verify
the existence of a Trade Offset Buy in the TM Table
IF Error then
Message "No Trade Offset Buy", Details
Goto Write Reject Table
ENDIF
ELSE AORS = `S` then
Using the License Identifier from the Input String
and the Trade Offset Sell from Working Storage, verify
the existence of a Trade Offset Sell in the TM Table.
IF Error then
Message "No Trade Offset Sell", Details
Goto Write Reject Table
ENDIF
ELSE
Message "Invalid AORS Code", Details
Goto Write Reject Report
ENDIF
<<Access Transaction Processing Table (TP)>>
Using the Licensee Identifier from the Input String
and the Transaction Identifier from the Input String, retrieve
ALL of the Transaction Processing algorithrns
from the Transaction Processing Table (TP)
into a Temporary Table (TT) in Working Storage
IF Error then
Message "No Transaction Processing Algorithms", Details
Goto Write Reject Report
ENDIF
/*** This is the second control table containing cash, units, cost
basis, liabilities, etc. ***/
<<Test Income Cash Posting Controls>>
IF the Working Storage Income Posting Code = `I`
OR the Working Storage Income Posting Code = `B` then
Count the number of IC entries in the TA table
<<Test Income Cash>>
IF count = 1 then
Using Licensee Identifier from the Input String
and the Class = `IC`
and the Sub-Class =` ` retrieve
Accounting Control Number from TA into
Working Storage
IF Error then
Message "Invalid Income Cash ACN", Details
Goto Write Reject Record
ENDIF
Using the Licensee Identifier from the Input String
and the Accounting Control Number in Working
Storage, retrieve
Accounting Control Number
and the Row Identification from General
Ledger Table (SG)
IF Error then
Message "Invalid Income Cash on SG", Details
Goto Write Reject Report
ENDIF
ELSIF count = 2 then
Using the Licensee Identifier from the Input String
and the Class = `IC`
and the Sub-class = `D`, retrieve
Accounting Control Number from TA into
Working Storage
IF Error then
Message "Invalid Income Cash Demand ACN in
TA", Details
Goto Write Reject Report
ENDIF
Using the Licensee Identifier from the Input String
and the Accounting Control Number in Working
Storage, retrieve
Accounting Control Number
and the Row Identification from the General
Ledger
IF Error then
Message "Invalid Income Cash Demand in GL",
Details
GOto Write Reject Report
ENDIF
Using the Licensee Identifier from the Input String
and the Class = `IC`
and the Sub-class =`O`, retrieve
Accounting Control Number from TA table into Working
Storage
IF Error then
Message "Invalid Income Cash Overdraft ACN
in TA",
Details
Goto Write Reject Report
ENDIF
Using the Licensee Identifier from the Input String
and the Accounting Control Number in Working
Storage, retrieve
Accounting Control Number
and the Row Identification from the General
Ledger
IF Error then
Message "Invalid Income Cash Overdraft in
GL", Details
Goto Write Reject Report
ENDIF
ELSE
Message "Invalid Income Cash Count on DD", Details
Goto Write Reject Record
ENDIF
<<Test Principal Cash Posting Controls>>
ELSIF the Working Storage Income Posting Code = `P`
Count the number of PC entries in the TA table
<<Test Principal Cash>>
IF count = 1 then
Using the Licensee Identifier from the Input String
and the Class = `PC`
and the Sub-Class = ` ` retrieve
Accounting Control Number from TA into
Working Storage
IF Error then
Message "Invalid Principal Cash ACN",
Details
Goto Write Reject Record
ENDIF
Using the Licensee Identifier from the Input String
and the Accounting Control Number in Working
Storage, retrieve
Accounting Control Number
and the Row Identification from General
Ledger Table (SG)
IF Error then
Message "Invalid Principal Cash on SG",
Details
Goto Write Reject Report
ENDIF
ELSIF count = 2 then
Using the Licensee Identifier from the Input String
and the Class = `PC`
and the Sub-class = `D`, retrieve
Accounting Control Number from TA into
Working Storage
IF Error then
Message "Invalid Principal Cash Demand ACN
in TA",
Details
Goto Write Reject Report
ENDIF
Using the Licensee Identifier from the Input String
and the Accounting Control Number in Working
Storage, retrieve
Accounting Control Number
and the Row Identification from the General
Ledger
IF Error then
Message "Invalid Principal Cash Demand in
GL", Details
Goto Write Reject Report
ENDIF
Using the Licensee Identifier from the Input String
and the Class = `PC`
and the Sub-class = `O`, retrieve
Accounting Control Number from TA table into Working
Storage
IF Error then
Message "Invalid Principal Cash Overdraft
ACN in TA",
Details
Goto Write Reject Report
ENDIF
Using the Licensee Identifier from the Input String
and the Accounting Control Number in Working
Pseudo-Code for the Schedular Subtransaction Scheduler 62
BEGIN
<<Read Next Process>>
Read Next Transaction in Temporary Table (TT)
IF EOJ then
<<Test All Switches - AORL>>
IF All 18 Process Switches = 0
Goto EOJ
ENDIF
Wait 10 milliseconds
Goto Test All Switches - AORL
ENDIF
<<Test Processor Availability>>
IF Processor 1 Switch = 0 then
Set Processor 1 Switch = 1
Initiate Process on Processor 1 @ end, Set Processor 1
Switch = 0
Goto Next Process Loop
ENDIF
IF License Master (LM) Number of Processors = 1 then
<<Test 1 Processor>>
IF Processor 1 Switch = 1 then
Wait 10 Milliseconds
Goto Test 1 Processor
ENDIF
Goto Test Processor Availability
ENDIF
IF Processor 2 Switch = 0 then
Set Processor 2 Switch = 1
Initiate Process on Processor 2 @ end, Set Processor 2
Switch = 0
Goto Next Process Loop
ENDIF
IF License Master (LM) Number of Processors = 2 then
<<Test 2 Processors Busy>>
IF Processor 1 Switch = 1
AND Processor 2 Switch = 1 then
Wait 10 milliseconds
Goto Test 2 Processors Busy
ENDIF
Goto Test Processor Availability
ENDIF
IF Processor 3 Switch = 0 then
Set Processor 3 Switch = 1
Initiate Process on Processor 3 @ end, Set Processor 3
Switch = 0
Goto Next Process Loop
ENDIF
IF Processor 4 Switch = 0 then
Set Processor 4 Switch = 1
Initiate Process on Processor 4 @ end, Set Processor 4
Switch = 0
Goto Next Process Loop
ENDIF
IF License Master (LM) Number of Processors = 4 then
<<Test 4 Processors Busy>>
IF Processor 1 Switch = 1
AND Processor 2 Switch = 1
AND Processor 3 Switch = 1
AND Processor 4 Switch = 1 then
Wait 10 milliseconds
Goto Test 4 Processors Busy
ENDIF
Goto Test Processor Availability
ENDIF
IF Processor 5 Switch = 0 then
Set Processor 5 Switch = 1
Initiate Process on Processor 5 @ end, Set Processor 5
Switch = 0
Goto Next Process Loop
ENDIF
IF Processor 6 Switch = 0 then
Set Processor 6 Switch = 1
Initiate Process on Processor 6 @ end, Set Processor 6
Switch = 0
Goto Next Process Loop
ENDIF
IF Processor 7 Switch = 0 then
Set Processor 7 Switch = 1
Initiate Process on Processor 7 @ end, Set Processor Switch
7 = 0
Goto Next Process Loop
ENDIF
IF Processor 8 Switch = 0 then
Set Processor 8 Switch = 1
Initiate Process on Processor 8 @ end, Set Processor 8
Switch = 0
Goto Next Process Loop
ENDIF
IF Licensee Master (LM) Number ofProcessors = 8 then
<<Test 8 Processors Busy>>
IF Processor 1 Switch = 1
AND Processor 2 Switch = 1
AND Processor 3 Switch = 1
AND Processor 4 Switch = 1
AND Processor 5 Switch = 1
AND Processor 6 Switch = 1
AND Processor 7 Switch = 1
AND Processor 8 Switch = 1 then
Wait 10 milliseconds
Goto Test 8 Processors Busy
ENDIF
Goto Test Processor Availability
ENDIF
<<Next Process Loop>>
Goto Read Next Process
<<EOJ>>
Null
END
Process the Controls Process Routine in the Temporary Table (TT)
BEGIN
IF OORR = "O" then
Set Factor = + 1
ELSIF OORR = `R` then
Set Factor = - 1
ENDIF
<<Total Units>>
IF Operand 2 = `TU` then
(AMU) Process AM Units
(EAU) Process EA Units
(PMU) Process PM Units
<<Cash Balances>>
ELSIF Operand 2 = `IC`
OR Operand 2 = `PC` then
(AMC) Process AM Income Cash Demand
Income Cash Overdraft
Principal Cash Demand
Principal Cash Overdraft
(EAC) Process EA Income Cash
Principal Cash
(GLC) Process GL Assets - Income Cash Demand
Assets - Income Cash Overdraft
Assets - Principal Cash Demand
Assets - Principal Cash Overdraft
Liab - Income Net Worth
Liab - Principal Net Worth
<<Investment Balances>>
ELSIF Operand 2 = `II`
OR Operand 2 = `IP` then
(AMI) Process AM Invested Income
Invested Principal
(EAI) Process EA Cost
(GLI) Process GL Assets - Actg Control Number
Liab - Income Net Worth
Liab - Principal Net Worth
<<Other Customized Investment Reporting>>
ELSIF Operand 2 = `I` and Report Request = `Y`
OR Operand 2 = `E` and Report Request = `Y` then
(IEE) Process IE
(PME) Process PM
<<Receipts/Disbursements>>
ELSIF Operand 2 = `R` and Report Request = `Y`
OR Operand 2 = `D` and Report Request = `Y` then
(IEC) Process RD
(PMC) Process PM
<<Performance Measurement>>
ELSIF Operand 2 = `PM` and Report Request = `Y` then
(PMP) Process PM
<<Contributions/Distributions>>
ELSIF Operand 2 = `CN` and Report Request = `Y`
OR Operand 2 = `DN` and Report Request = `Y` then
(CDC) Process PM
<<Management Fees>>
ELSIF Operand 2 = `MF` and Report Request = `F` then
(PMM) Process PM
<<Commissions>>
ELSIF Operand 2 = `CM" then
(PCM) Process PM
<<Federal Taxes>>
ELSIF Operand 2 = `FT` then
(PMF) Process PM
<<State Taxes>>
ELSIF Operand 2 = `ST` then
(PMS) Process PM
ELSE
Message "Invalid Operand 2"
STOP
ENDIF
END
Process the Detail Records Maintenance Routine (AORS) Note: Leave all switches=1 until the last routine is completed. This forces the processing to loop throu | ||||||
