USOO6904598B2 (12) United States Patent (10) Patent No.: US 6,904,598 B2 Abileah et al. (45) Date of Patent: *Jun. 7, 2005

(54) COBOL METAMODEL 6.738.975 B1 * 5/2004 Yee et al...... 71.9/310 2003/O191970 A1 10/2003 Devine et all ...... 713/201 (75) Inventors: Shahaf Abileah, Portland, OR (US); Alan Roeder Elderon, Mountain View, OTHER PUBLICATIONS CA (US); Shyh-Mei F. Ho, Cupertino, James Martin, “Principles of Object-Oriented Analysis and CA (US); James Rush Rhyne, II, Los Design”, Oct. 29, 1992, Chapter 1-22. Gatos, CA (US); William Nicholas “Quarterdeck Mosaic User Guide”, 1995, Chapters 1-7. John Tindall, San Martin, CA (US); * cited by examiner Tony Y Tsai, San Jose, CA (US) Primary Examiner Meng-Al T. An (73) Assignee: International Business Machines ASSistant Examiner-Diem K. Cao Corporation, Armonk, NY (US) (74) Attorney, Agent, or Firm Sughrue Mion, PLLC (*) Notice: Subject to any disclaimer, the term of this (57) ABSTRACT patent is extended or adjusted under 35 A method of and a System for processing an enterpise an U.S.C. 154(b) by 739 days. application request on an end user application and an application Server. This is accomplished by initiating the This patent is Subject to a terminal dis- application request on the end user application in a first claimer. language (Such as a markup language) with a first applica tion program (Such as a Web browser), and transmitting the (21) Appl. No.: 09/849,813 application request to the Server and converting the appli cation from the first language of the first end user application (22) Filed: May 4, 2001 to a language running on the application Server, processing (65) Prior Publication Data the application request on the application Server, and trans mitting the response from the application Server back to the US 2002/0056012 A1 May 9, 2002 end user application, and converting the response from the O O language running on the application Server to the language Related U.S. Application Data of the end user application. The end user application and the (60) Provisional application No. 60/223,671, filed on Aug. 8, application Server have at least one connector between them, 2000. and the Steps of (i) converting the application request from (51) Int. Cl...... G06F 3/00; G06F 9/44; the language of the end user application (as a Source G06F 9/46; G06F 13/00 language) to the language running on the application Server (52) U.S. Cl...... 71.9/319; 71.9/313 (as a target language), and (ii) converting the response to the (58) Field of Search ...... 71.9/310,319, application request from the language running on the appli 719/320, 328, 329, 313–318; 709/201-203 cation Server (as a Source language) to the language of the end user application (as a target language), each include the (56) References Cited Steps of invoking connector metamodels of the respective Source and target languages, populating the connector meta U.S. PATENT DOCUMENTS models with metamodel data of each of the respective Source 6,094,688 A * 7/2000 Mellen-Garnett et al. ... 719/328 and target languages, and converting the Source language to 6,233,542 B1 5/2001 Butts et al...... 703/27 the target language. 6.253,366 B1 * 6/2001 Mutschler, III ...... 717/104 6,654,784 B1 11/2003 Wei...... 709/203 50 Claims, 13 Drawing Sheets

805 807 811 MS WEBSPHERE CONNECTOR FOR AWA

SOAP PERFORM DATA CONNEC cours TRANSFOR-Aion DOCUMENTS CONTROL TRANSACTIONAL SOAP COMPLIANT XM APPLICATION XML DOCUMEN NSTANCE FOR REGION

PROGRAM CAM MODEL

803 XML 809 REPOSITORY U.S. Patent Jun. 7, 2005 Sheet 1 of 13 US 6,904,598 B2

. s U.S. Patent Jun. 7, 2005 Sheet 2 of 13 US 6,904,598 B2 2. 2. g p SQL STORED LEGACY PROGRAMMING MESSAGE SETS PROCEDURES APPLICATIONS LANGUAGES

METADATA REPOSITORY

ENTERPRISE APPLICATION 221 INTEGRATION RUNTIME

FIG 2

NWOCATION O. 11 APPLICATION-DOMAIN 1... 1 1. LANGUAGE MEAMODEL INTERFACE METAMODEL METAMODEL 30 505 305 FIC. 3 U.S. Patent Jun. 7, 2005 Sheet 3 of 13 US 6,904,598 B2

OTMA IMS TRANSACTION COBOL NWOCATION MESSAGE METAMODEL C METAMODEL METAMODEL METAMODEL 421 423 425 427

METADATA 505 507 REPOSITORY

RETRIEVE STORE GENERATION FIC. 6 TOOL GENERATE OBJECT66EING 59 XML DOCUMENT INTERFACE EXISTING s?. 5031 DEFINITION APPLICATION

61

Eggs IMPORTER GENERATE SOURCE FILES) FRAMEWORK

MS APPLICATIONS CICS APPLICATIONS XMI. NSTANCE FOR THE COPYBOOK, ACCORDING JAVA CODE 609 FOR THE TO MODEL ROSE MODEL XML DOCUMENTS

CAM MODEL 601 ROSE FILE GENERATE 603

COBOL METAMODEL GENERATE DTD AND PL/I METAMODEL SCHEMA FOR ROSE MODEL MFS MEAMODEL BMS METAMODEL FIC.. 6 605 U.S. Patent Jun. 7, 2005 Sheet 4 of 13 US 6,904,598 B2

METADATA 709 REPOSITORY

FLOW APPLICATION AND MESSAGNG INTERFACE METAMODEL METAMODEL 705 703 EXISTING ERLNWOCATION AND INTERFACE APPLICATION PROGRAM RUNTIME INTERFACE 713 701 CONNECTOR DEFINITION FIC 7

805 807 811

MS 1 WEBSPHERE CONNECTOR FOR AWA

MS 815 couri PERFORM DATA CoNECI-83 MS1

; 7 TRANSFORMATION DOCUMENTS MPP/IFP/BMP SOAP COMPLIANT XM CONTROL TRANSACTIONAL XML DOCUMENT INSTANCE FOR REGION AESN CAM MODEL

803 XML 809 REPOSITORY FIC. 8 U.S. Patent Jun. 7, 2005 Sheet 5 of 13 US 6,904,598 B2

<< paaJap>>

U.S. Patent Jun. 7, 2005 Sheet 6 of 13 US 6,904,598 B2

PLISimpleType

PLIComputotionolType

PLArithmeticType PLIStringType 3 mode : ModeVolues PLIntegerType PLIPictureStringType 3 precision : Integer 3 pictureString : String L3 Scole : Integer 3 Signed : Boolean PLICodedStringType : Booleon = true (3 type : StringlypeVolues TO 3VOrying : LengthType FIG. - - 10B 3 base : BoseVolues PLIFixed LengthString 3 precision : Integer 3 length : Integer 3 IEEE : Booleon = false ion : Booleon = true PLIVariableLengthString 3 length ToAIlocote : String PLPocked Type 3 precision : Integer Scole : Integer 0.4 3 9 +referred in PLPictureType pictureString : String FIC. 1 OA U.S. Patent Jun. 7, 2005 Sheet 7 of 13 US 6,904,598 B2

PLCOssifier 0.1 +shored Type FIC. 1 OB

0. PLINomed Type P LComposed Type k 3Union : Booleon +group

PLAios E O) PLINonComputationalType

Attribute 3ottribute : String PLILobelType

PLOrdino PLIFormot Type 3 precision: int

3issigned : booleon PLlEntryType O

TO FROM 3 Limited : Booleon FIG. FC. Ordino Volue 10C 10A PLPointerType 3 name : String (3 volue : int PLFileType E- PLIStructure PL(HandleType - - 3 structure : tRLIStructure - - - PLOffsetType 3 BigEndion : Booleon = true tigeredin V. PLAreoType

PtFixed LengthArea (>length : Integer

PLIVoriobleLengthArea f elength.TOAIlocote : String +re g n U.S. Patent Jun. 7, 2005 Sheet 8 of 13 US 6,904,598 B2

PLElementinitioMolue +typedElement initioVolue : String 0. 3ValueType : PllnitioVolueType --initio? +element 0. 11 PLISOUrceText 3 Source : String +elements9. PLIElementPLEElement eroyC PLA roy a fileNomeleNOme : StrinStri 9 level : String F 111 + referredTo PLIFixedBound.Arroy

Ibound : integer 3ubound : integer --- +referred in PLFixed LboundArroy

3 bound : Integer FROM 3 HboundtoAllocate : String FIG. 1OB PIHboundArroy 3 boundtoAllocate : String 3ubound : integer -F

PLIVoriobleBoundArroy 3 boundToAIlocote : String HboundToAIlocote : String

FIC. 1 OC U.S. Patent Jun. 7, 2005 Sheet 9 of 13 US 6,904,598 B2

TDLOngelement (from TDLang)

do to tem FIC. 1 1 0. +do totem 1.1 PlatformCompilerType (from TypeDescriptor) plotformCompilerType : String

KKenUmerOtionXX COBOLUsogeVolues binory string-value low volue double high-volue disploy Zer0 VOlue floot 3 Quotes index null objectReference all literol pocked Decimol pointer procedurePointer ET 3941 |H 3945 | |H|| | |||||| ||||

HIH IIHI JIH-3923 |H|| 1 || || 1 || | | || || || WX me

FIC. 16 3951 3933 |||||||||| III-III U.S. Patent Jun. 7, 2005 Sheet 10 of 13 US 6,904,598 B2

<> JOSS9000

U.S. Patent Jun. 7, 2005 Sheet 11 of 13 US 6,904,598 B2

... 1 COBOLClossifier +shored Type a TypedefTypede :- booleonOOleO FIG.TO 13B

COBOLSimpletype a USOge : COBOLUsogeVolues a pictureString : String La Synchronized : Booleon = folse getCononicolPictureString()

COBOL AlphabeticType a JustifyRight : Booleon = folse F COBOLAlphoNumericType a JustifyRight : Booleon = false F COBOLNumericType a Signed : Boolean COBOLDBCSType La SignLeading : Booleon a SignSeparote : Booleon COBOLObjectReferenceType CurrencySymbol : chor a trunc : ySyString clossNome : String a numproc : String Decimol : Booleon COBOLInterno Floot Type

COBOLAlphoNumericEdited Type COBOLExternalFlootType

COBOLNumericEdited Type COBOLAddressingType Blon kWhenZero : Booleon currencySign : String Decimol : Booleon COBOLUnicode Type

FIC. 13A U.S. Patent Jun. 7, 2005 Sheet 12 of 13 US 6,904,598 B2

!”

“:3dÅIpasodujooTOROQ ***| U.S. Patent Jun. 7, 2005 Sheet 13 of 13 US 6,904,598 B2

4023

E-MAIL SERVER E-MAIL ENABLES APPLICATIONS E-MAIL DATA BASE E-MAIL 4021 DIRECTORY SERVER SCHEDULE/CALENDAR REPLICATION DATA BASE WORD PROCESSOR

SPREAD SHEET CONNECTOR GRAPHICS CT

NET, LAN, WAN, PHONE

E-MAIL ENABLED APPLICATIONS

E-MAI CONNECTOR 4020 SCHEDULE/CALENDAR E-MAIL SERVER

WORDSPREAD PROCESSOR SHEET E-MAIL DAIADATA BABASE 401

GRAPHICS DIRECTORY SERVER CT REPLICATION DATA BASE

8 4125

m g immigiu 4123 2

I 4101

FIC. f 8 US 6,904,598 B2 1 2 COBOL METAMODEL This is because the current trend for new applications is to embrace Web Standards that simplify end user application CROSS REFERENCE TO RELATED construction and Scalability. Moreover, as new applications APPLICATIONS are created, it is crucial to Seamlessly integrate them with This application claims the benefit under Title 35, United existing Systems while facilitating the introduction of new States Code, Sections 111(b) and 119(e), relating to Provi busineSS processes and paradigms. sional Patent Applications, of the filing date of U.S. Provi Integrating new applications with existing applications is especially critical Since industry analysts estimate that more sional Patent Application Ser. No. 60/223,671 filed Aug. 8, than Seventy percent of corporate data, including data highly 2000 of Steven A. Brodsky and Shyh-Mei Ho for EAI relevant to e-commerce, lives on mainframe computers. Common Application Metamodel. Moreover, while many e-commerce transactions are initi This application is also related to the following United ated on Windows, Mac, and Linux end user platforms, using States Patent Applications, filed on even date herewith: a variety of Web browsers, and go through Windows NT and COMMON APPLICATION METAMODEL by Shyh Unix Servers, they are ultimately completed on mainframe Mei Ho, Stephen Brodsky, and James Rhyne; a pending computers, running mainframe applications, and impacting application filed on May 4, 2001 and assigned appli 15 data Stored in mainframe databases. cation Ser. No. 09/849,107. There are e-busineSS pressures to integrate Server level PL/I METAMODEL by Shyh-Mei Ho, Peter Elderon, applications and bring them to the Internet. However, there Eugene Dong and Tony Tsai, a pending application is no complete and easy mechanism to integrate or filed on May 4, 2001 and assigned application Ser. No. e-busineSS enable the applications. Integration, whether 09/849,563. through messaging, procedure calls, or database queries, is HIGH LEVEL ASSEMBLER METAMODEL by Shyh key to Solving many of today's busineSS problems. Mei Ho, John Ehrman, Benjamin Sheats, and Jenny Integrating legacy applications with new is a Hung; an application filed on May 4, 2001 and assigned difficult and expensive task due, in large part, to the need to application Ser. No. 09/849,190, and having issued on 25 customize each connection that ties together two disparate Aug. 10, 2004 as U.S. Pat. No. 6,775,680. applications. There is no single mechanism to describe how TYPE DESCRIPTOR METAMODEL by Shyh-Mei Ho, one application may allow itself to be invoked by another. James Rhyne, Peter Elderon, Nick Tindall, and Tony One consequence is an e-commerce environment of mul Tsai, a pending application filed on May 4, 2001 and tiple applications, developed by multiple development assigned application Ser. No. 09/849,377. teams, running on different platforms, with different data IMS TRANSACTION MESSAGES METAMODEL by types, data Structures, commands, and command Syntax's. Shyh-Mei Ho and Shahaf Abileah; a pending applica This environment is Stitched together with application pro tion filed on May 4, 2001 and assigned application Ser. gram interfaces and connectors. Connectors are an essential No. 09/849,816. part of the total application framework for e-commerce. IMS-MFS (MESSAGE FORMAT SERVICE) META 35 Connectors match interface requirements of disparate appli MODEL by Shyh-Mei Ho, Benjamin Sheats, Elvis cations and map between disparate interfaces. Halcrombe, and Chenhuei J. Chiang, a pending appli This growing interconnection of old and new Software cation filed on May 4, 2001 and assigned application Systems and applications, has led to various middle ware Ser. No. 09/849,105. applications and connector applications, interface 40 Specifications, interface definitions, and code, especially for CICS-BMS (BASIC MESSAGE SERVICE) META the interconnection and interaction of markup languages MODEL by Shyh-Mei Ho, Andy Krasun, and Ben (such as HTML, XML, Dynamic HTML, WML, and the jamin Sheats, a pending application filed on May 4, like), through object oriented languages Such as SmallTalk 2001 and assigned application Ser. No. 09/849,793. and C++, with languages of legacy application Server appli FIELD OF THE INVENTION 45 cations (such as COBOL). These interface specifications, The invention relates to exchanging instructions and/or definitions, and code should apply acroSS languages, tools, data between applications to Signal readiness to transfer, applications, operating Systems, and networks So that an end eXchange, or proceSS data, or to establish at least one or more user experiences the look, feel, and responses of a single, parameters for transferring data between the applications, Seamless application at her terminal. Instead, the prolifera and controlling the parameters in order to facilitate data 50 tion of Standards, protocols, Specifications, definitions, and transfer and communication. The invention further relates to code, e.g., Common Object Request Broker (CORBA), integrating dissimilar applications one executing within one Common (COM), Object Linking and platform and another executing in another platform, e.g., Embedding (OLE), SOM, ORB Plus, Object Broker, Orbix, multiple computers, multiple operating Systems, multiple has instead created an e-commerce “Tower of Babel.” application components, multiple development 55 Examples of application integration are ubiquitous: from environments, multiple deployment environments, or mul installing an ERP System, to updating an Operational Data tiple testing and processing, establishing a dialog (e.g., a Store (ODS) with IMS transactions or invoking CRM sys negotiation) with one another in order to establish connec tems from MQSeries; each of these requires the same basic tivity for transferring data and/or instructions between the StepS. First, a user must find the entity She wants to com applications So as to facilitate performing tasks on the data 60 municate with, then she must figure out how to invoke the or portions thereof to accomplish an overall goal. The entity, and finally she must provide translation from one parameters may include one or more of format, data types, native representation to another. Today, these Steps usually data Structures, or commands. require manual investigation and hand coding-and leave the developerS with a rat's-nest of hard-to-maintain connec BACKGROUND 65 tions between applications. The growth of e-busineSS has created a Significant need to Attempts to remedy this situation involve application integrate legacy applications and bring them to the Internet program interfaces and connectors, which are frequently US 6,904,598 B2 3 4 built on Interface Definition Languages. Interface Definition be a Web browser application or a thin client connectivity Languages are declarative, defining application program application, and the language of the client application will be interfaces, and, in Some cases, issueS Such as error handling. Java, C, C++, or a markup language, as HTML or a Most Interface Definition Languages are a Subset of C++, derivative of HTML, such as XML or Dynamic HTML or and Specify a component's attributes, the parent classes that WML, or the like, and the language running on the Server is it inherits from, the exceptions that it raises, the typed events COBOL. The invention facilitates transformers which con that it emits, the methods its interface Supports, input and Vert the transaction from the first language of the end user output parameters, and data types. The goal of Interface application to a language running on the application Server. Definition Languages within connectorS is to enable col After conversion, the converted transaction is processed on laboration between dissimilar applications without hard the application Server. coded application program interfaces. The application processes the request and then sends the Ideally, the interface definition language, and the connec response from the application Server back to the end user tor of which it is a part, should facilitate full run-time application. Typically, as described above, the application Software application collaboration through Such features as server will be running a COBOL based application, and the Method invocation with Strong type checking, 15 client will be a thin client written in Java or C or C++, or a Run-time method invocation with greater flexibility and Web browser, running a Web browser application or a thin run time binding, client connectivity application, in a markup language, as HTML or a derivative of HTML, such as XML or Dynamic High level language binding, with the interface Separated HTML, or the like. The invention provides data transformers from the implementation. which convert the response from the language or languages An interface repository containing real time information running on the application Server or Servers to the first of Server functions and parameters. language of the first end user application. Additionally, the connector and its interface definition The end user application and the application Server have language, should be fast, efficient, Scalable, portable, Sup at least one data transformer between them. In this way, the port metaclasses, Support Syntactic level extensions, and 25 Steps of (i) converting the request from the first language of Support Semantic level extensions. the first end user application as a Source language to the COBOL language running on an application Server as a SUMMARY OF THE INVENTION target language, and (ii) converting the response from the The problems associated with integrating new COBOL language running on the application Server, as a applications, for example, e-commerce applications, with Subsequent Source language, back to the first language of the legacy applications are obviated by the Common Applica first end user application, as a Subsequent target language, tion Metamodel tool, method, and System described herein. each comprise the Steps of invoking type descriptor and The Common Application Metamodel method, tool, and language metamodels of respective Source and target System of the invention facilitate tooling Solutions, data languages, populating the metamodels with each of the translation, and communication and collaboration between 35 respective Source and target languages data items and types, dissimilar and disparate applications, as well as full run-time and converting the Source language to the target language. Software application collaboration through an interface with The end user application is, frequently, a web browser or the application Server interface domain. This is accom a thin client. When the end user application is a Web plished through metadata interchange information, method browser, the end user is connected to the application Server invocation with Strong type checking, run-time method 40 through a web server. According to a further embodiment of invocation, run time binding, and high level language the invention, the Web Server may comprise the connector, or binding, with the interface Separated from the data transformer. The data transformer integrated with the implementation, and an interface repository containing real Web Server may directly convert the request, transaction, or time information of client and Server interface parameters. message from a browser oriented form to an application Additionally, the tool, method, and System of the inven 45 Server language or to an intermediate, busineSS or commerce tion provide fast, efficient, and Scalable interconnectivity oriented markup language, Such as XML. independently of any tool or middleware, are reusable and The CAM metamodel used to construct the converter portable, and Support metaclasses, Syntactic level comprises an invocation metamodel, an application domain extensions, and Semantic level extensions, and are indepen 50 interface metamodel, a language metamodel, and a type dent of any particular tool or middleware. descriptor metamodel. Exemplary invocation metamodel The Common Application Metamodel tool, method, and includes information chosen from the group consisting of System is especially useful for providing a data transformer message control information, Security data, transactional that is bidirectional between a client application and a server Semantics, trace and debug information, pre-condition and application, transmitting commands and data both ways 55 post-condition resources, and user data, etc. Exemplary between, for example, a Java, HTML, XML, C, or C++ application domain interface metamodel comprises informa application and a COBOL application. tion chosen from input parameter Signatures, output param One embodiment of the invention is a method of process eter Signatures, and return types. Application domain inter ing a transaction on or between an end user application and face metamodel uses one or more language metamodels, Such as COBOL metamodels. one or more application Servers. The method comprises the 60 Steps of initiating the transaction on the end user application The type descriptor metamodel defines physical in a first language with a first application program, trans realizations, Storage mapping, data types, data structures, mitting the transaction to the Server, and converting the and realization constraints. transaction from the first language of the first end user The method of the invention is applicable to situations application to a language running on the application Server. 65 where one of the Source or target languages is object Typically, as described above, the client will be a thin client oriented, and the other of the target or Source languages is or a Web browser, the application running on the client will not object oriented. In this situation, the language meta US 6,904,598 B2 S 6 model and the type descriptor metamodel together map A still further embodiment of the invention is the provi encapsulated objects of the object oriented language into Sion of rich transaction processing. Rich transactions are code and data of the language that is not object oriented. nested transactions that span to, through, and/or acroSS Additionally, the language metamodel and the type descrip multiple Servers. The Spanning acroSS nested Servers may be tor metamodel maps object inheritances of the object ori horizontal, that is parallel dependent transactions, or ented language into references and pointers in the language Vertical, that is, Serial dependent transactions. Rich transac that is not object oriented. The method of the invention is tions may be long lived, on-going transactions, or complex also applicable where different procedural languages are business-to-business transactions, especially those with running on different platforms or applications and com multiple dependencies or contingencies, Volume and prompt mands and data of the Source procedural language are 1O payment discounts, late delivery and late payment penalties, mapped into the target procedural language. and with financial processing, Such as electronic letters of According to the method of the invention, there may be a credit, electronic bills of lading, electronic payment plurality of applications for vertical (Sequential, conditional, guarantees, electronic payment, eScrow, Security interests in or dependent) processing, for horizontal (parallel in time) the goods, and the like. In a rich transaction environment, processing, or both horizontal and Vertical processing. This 15 Some transaction Servers may be positioned as clients with is to Support rich transactions to and through multiple respect to other transactions for certain Sub transactions hierarchical levels and multiple parallel Sequences of pro making up the rich transaction. cessing. This may be the case in business to busineSS A still further embodiment of the invention is a tool, that transactions drawing upon financial, manufacturing, is, a Software developer's kit, characterized in that the Scheduling, Supply, and Shipping databases and Servers, and program product is a storage medium (as a tape, floppy utilizing various commercial Security instruments. disks, a CD-ROM, or a hard drive or hard drives on one of A further aspect of the invention is a client-Server pro more computers) having invocation metamodels, applica cessing System having a client, a Server, and at least one tion domain interface metamodels, and language transformer between the client and one or more Servers. metamodels, and computer instructions for building a meta A Still further aspect of the invention is a processing 25 model repository of Source and target language metamodels. System configured and controlled to interact with a client The program product also contains computer instructions for application. In this aspect of the invention, the System building connector Stubs from the metamodels. The program comprises, a Server, and at least one transformer between the product further carries computer instructions to build a Server and the client application, where the client has an end transformer. user application, and is controlled and configured to initiate While the invention has been described in Summary form a request with the server in a first language with a first as having a single level of connectors, it is, of course, to be application program and to transmit the request through a understood that Such connectors may be present at various transformer to the Server or Servers. The Server processes the levels in the processing hierarchy, for example between Web request in a Second Software application, using a Second Clients and Web servers, between web servers and applica language, and returns a response to the client through a 35 tion Servers, between application Servers and database transformer. Servers, and between application Servers or database Servers A further aspect of the invention is a groupware System or both and various specialized repositories. having a plurality of e-mail enabled end user applications, It is also to be understood, that while the invention has been Summarized in terms of individual clients and indi Such as e-mail, word processing, spreadsheet, Simple data 40 base management (Such as Lotus Approach or Microsoft vidual Servers, there may be multiple clients, multiple Access), graphics and graphics editing, audio and audio Servers, and applications that function as both clients and editing, and computer-telephony integration (“CTI), along Servers, as exemplified by groupware applications, and there with client level content database client Services and content might be multiple parallel lines and/or multiple hierarchical replication client Services. Groupware integrates these 45 levels of application Servers, data Servers, and databases, as e-mail enabled applications through one or more transform in Systems for rich transactions. erS and application program interfaces with transport THE FIGURES Services, directory Services, and Storage Services, including content Servers and replication Servers. The groupware SyS Various elements of the invention are illustrated in the tem is configured and controlled to communicate among 50 FIGURES appended hereto. disparate end user applications, among disparate Servers, FIG. 1 illustrates a system with multiple application and between disparate Servers and end user applications. The components, including a Netscape Internet Explorer groupware System comprises at least one transformer browser, Net. Commerce on a Sun Solaris server, Oracle and between a Server and an end user application. The end user DB2 on a database server, SAP running on AIX, a CICS 390 application is controlled and configured to participate with a 55 server, an IMS 390 server, DB2 and DL/I on a S/390 Server in a first language of a first application program and platform, a Windows 200 client, and Baan running on an HP the Server is configured and controlled to participate with the Unix server. client in a Second language of a Second program. FIG. 2 illustrates the roles of message sets, SQL stored The transformer is configured and controlled to receive a procedures, legacy applications, and programming lan request from the end user application, and convert the 60 guages as inputs to the metadata repository of the Common request from the first language of the first end user appli Application Metamodel to facilitate enterprise application cation to a language running on the Server. The Server is integration at run time. configured and controlled to receive the converted request FIG. 3 illustrates that the Common Application Meta from the transformer and process the request in a Second model of the invention consists of three kinds of language with a Second application program residing on the 65 metamodels, i.e., an invocation metamodel, an application Server, and to thereafter transmit a response through a domain interface metamodel, and a language metamodel. transformer back to the end user application. For any given application-domain metamodel it may use one US 6,904,598 B2 7 8 or many language metamodels, and there could be Zero or TDLangClassifier, the TDLanguage ComposedType, and the many invocation metamodels. TDLangElement. FIG. 4 illustrates an IMS OTMA metamodel, with an FIG. 15 illustrates an enumeration of the COBOL usage OTMA Invocation Metamodel, an IMS Transaction Mes values in the COBOL Metamodel. Sage Metamodel application interface, which could use a FIG. 16 illustrates a simplified network configuration for COBOL Metamodel, a C Metamodel, or other language a "rich' transaction where, for example, an order is entered metamodels. at a terminal, and is passed to and through a Web Server to FIG. 5 illustrates how a tool can be used to generate an a manufacturer's application Server. The manufacturer's XML document describing application program interface. application Server Searches through its own database Server, First, an object model, i.e., a CAM metamodel, is created to as well as its vendors dissimilar and incompatible database capture interface definitions about an application Server. Servers and databases, transparently connected by the con Then a tool reads and parses the Source definitions of an nectors described herein, querying for Statuses, prices, and application program and generates an XML document by delivery dates, of components, and placing orders for needed retrieving the object models information from a repository. components to Satisfy the order. FIG. 6 illustrates a development phase Scenario where a 15 FIG. 17 illustrates a group ware Session spread acroSS Common Application Metamodel Rose file, e.g., a COBOL multiple group ware applications running on multiple, dis metamodel, a PL/I metamodel, an MFS metamodel, a BMS parate platforms, and connected using the common appli model, or the like is read into a toolkit, to generate a DTD cation metamodel described herein. and XML Schema and Java code for a Rose model. A Source FIG. 18 illustrates a commercial transaction where real file of an application, as a COBOL source file, a PL/I source goods are shipped from a Seller to a buyer, and various forms file, an MFS Source file, a BMS Source file, or the like, is of electronic payment and Secured electronic payment are read into an importer. The importer parses the Source code used by the buyer to pay the Seller, with banks and financial and generates, as output, an XMI instance file, i.e., XML institutions connected using the common application meta documents, by reading in the Java code of the Rose model model described herein. of the application Source files. 25 FIG. 7 illustrates a metamodel for application interfaces, DETAILED DESCRIPTION OF THE which enables integration of application components into an INVENTION event based messaging model, including flow models. The flow and messaging middle invokes applications through the Definitions. As used herein the following terms have the application interface. These interfaces are acceSS points to indicated meanings. “Handshaking” is the exchange of the applications through which all input and output is information between two applications and the resulting connected to the middleware. The interfaces are described in agreement about which languages, capabilities, and proto terms of the Application Interface Metamodels. Transfor cols to use that precedes each connection. mation processing according to he metamodel could take 35 An “application program interface” (API) is a passive place in Source/client applications, target applications, or a Specific method prescribed by a computer operating System gateWay. or by another application program by which a programmer Writing an application program can make requests of the FIG. 8 illustrates the application of the Common Appli operating System or another application. Exemplary is SAX cation Metamodel during execution time. AS shown, the (Simple API for XML), an connector that allows a program CAM model facilitates connectivity between a back-end 40 mer to interpret a Web file that uses the Extensible Markup IMS application and a Web file (e.g., SOAP complaint XML Language, that is, a Web file that describes a collection of documents). This is accomplished by using information data. SAX is an event-driven interface. The programmer captured in the model to perform data transformations from Specifies an event that may happen and, if it does, SAX gets one platform to another in a mixed language environment control and handles the situation. SAX works directly with shown. 45 an XML parser. FIG. 9 illustrates TDLang base classes, where the Type Descriptor metamodel is used as a recipe or template for A “connector” as used herein is a dynamic, run-time, runtime data transformation, with the language specific interface between platforms that Stores the functions and metamodel for overall data Structures and field names, and parameters of the target platform or program, and binds with without duplicating the aggregation associations present in 50 the target platform program in real time. the language model. A "stub' is a Small program routine that provides Static interfaces to servers. Precompiled stubs define how clients FIG. 10 illustrates an MOF class instance at the M2 level invoke corresponding Services on the Server. The Stub Sub as a Type Descriptor Metamodel. Stitutes for a longer program on the Server, and acts as a local FIG. 11 illustrates the association between a TDLangEle 55 call or a local proxy for the Server object. The Stub accepts ment of the TDLang Metamodel with a Platform Compiler the request and then forwards it (through another program) Type of the Type Descriptor Metamodel. to the remote procedure. When that procedure has completed FIG. 12 illustrates various enumeration types for the Type its Service, it returns the results or other Status to the Stub Descriptor Metamodel, e.g., Sign coding, length encoding, which passes it back to the program that made the request. floating type, accessor, packed decimal Sign, and bitModel 60 Server Services are defined in the Stub using an Interface Pad. Definition Language (“IDL). The client has an IDL stub for FIG. 13 illustrates a COBOL metamodel to define data each Server interface that it accesses and includes code to Structure Semantics which represent connector interfaces. perform marshaling. Server Stubs provide Static interfaces to This metamodel is also a MOF Class instance at the M2 each Service exported by the Server. level. 65 “CICS” (Customer Information Control System) is the FIG. 14 illustrates the associations between the COBOL online transaction processing program from IBM that, metamodel with the TDLang base classes which are the together with the Common BusineSS Oriented Language US 6,904,598 B2 9 10 programming language, is a Set of tools for building cus of message sets 203, SQL stored procedures 205, legacy tomer transaction applications in the World of large enter applications 207, and programming languages 209 as inputs prise mainframe computing. Using the programming inter to the metadata repository 211 of the Common Application face provided by CICS to write to customer and other Metamodel to facilitate enterprise application integration records (orders, inventory figures, customer data, and So 221. forth) in a CICS, a programmer can write programs that communicate with online users and read from a database Exemplary metamodels include C, C++, Java, COBOL, (usually referred to as “data sets”) using CICS facilities PL/I, HL Assembler, IMS transaction messages, IMS MFS, rather than IBM's access methods directly. CICS ensures CICS BMS, and MQSeries messages models, as shown in that transactions are completed and, if not, it can undo partly FIG. 3, which illustrates the Common Application Meta completed transactions So that the integrity of data records model of the invention, with an invocation metamodel 301, is maintained. CICS products are provided for OS/390, an application-domain interface metamodel 303, and a lan UNIX, and Intel PC operating systems. CICS also allows guage metamodel 305. end users to use IBM's Transaction Server to handle FIG. 4 illustrates an IMS OTMA application interface e-busineSS transactions from Internet users and forward 15 metamodel 411, with an OTMA Invocation Metamodel 421, these to a mainframe Server that accesses an existing CICS an IMS Transaction Message Metamodel 423, a COBOL order and inventory database. Metamodel 425, and a C Metamodel 427. “IMS” (Information Management System) is the system FIG. 5 illustrates the flow of information from an existing from IBM that, together with IBM's Enterprise Systems application 501, through an interface 503 to an object model Architecture (IMS/ESA) provides a transaction manager and containing application interface metadata. This application a hierarchical database Server. interface metamodel is Stored in the metadata repository “MO" is the MQSeries IBM software family whose 505, and, at an appropriate time, retrieved from the metadata components are used to tie together other Software applica repository 505, combined with a source program 507 in a tions So that they can work together. This type of application generation tool 509, and used to generate a target file 511, as is often known as busineSS integration Software or middle 25 an XML file, i.e., an XMI instance file. CAM is highly ware. Functionally, MQSeries provides a communication reusable and independent of any particular tool or middle mechanism between applications on different platforms, an WC. integrator which centralizes and applies business operations rules, and a workflow manager which enables the capture, Development Stage. With CAM, tooling can now easily Visualization, and automation of busineSS processes. provide Solutions to access enterprise applications, e.g. IMS MQSeries connects different computer Systems, at diverse applications. By parsing each Source file and generating geographical locations, using dissimilar IT infrastructures, XML documents based on the CAM model, COBOL so that a seamless operation can be run. IBM's MQSeries copybook, PL/I copybook, MFS Source, BMS Source, etc., Supplies communications between applications, and tools can provide connector solutions to IMS, and CICS, etc. between users and a Set of applications on dissimilar SyS 35 In this regard, FIG. 6 illustrates a development phase tems. Additionally, MQSeries messaging Scheme requires Scenario where a Common Application Metamodel Rose file the application that receives a message to confirm receipt. If 601, e.g., a COBOL metamodel, a PL/I metamodel, an MFS no confirmation materializes, the message is resent by the metamodel, a BMS model, or the like is read into a toolkit MOSeries. 603, to generate a DTD and schema for a Rose model and “Rose' is an object-oriented Unified 40 Java code for a Rose model 605. A Source file of an (UML) tool intended for visual modeling application 607, as a COBOL source file, a PL/I source file, and component construction of enterprise-level Software an MFS Source file, a BMS Source file, or the like, and the applications. It enables a Software designer to visually create Java code for the Rose model 609 are read into an Importer (model) the framework for an application by blocking out 611. The importer parses the Source code and provides, as classes with actors (Stick figures), use case elements (ovals), 45 output, an XMI instance file 613, i.e., XML documents, of objects (rectangles) and messages/relationships (arrows) in a the application Source files. Sequence diagram using drag-and-drop Symbols. Rose docu FIG. 7 shows a CAM metamodel for application inter ments the diagram as it is being constructed and then faces. This Figure depicts a runtime connector 701 with generates code in the designer's choice of C++, Visual invocation and transformation capabilities, interfacing with Basic, Java, Oracle8, Corba or Data Definition Language. 50 an existing application program 703 through an interface Common Application Metamodel Overview. The Com 705 containing the existing application programs interface mon Application Metamodel (CAM) brings interconnectiv definition, in accordance with the application interface meta ity to the environment illustrated in FIG. 1. FIG. 1 illustrates model 707. The Application Interface metadata is stored in a typical System 101 with multiple application components, a metadata repository 709. including a Netscape Internet Explorer browser 103, 55 The flow and messaging middleware 713 invokes appli Net.Commerce 105 on a Sun Solaris server 107, Oracle 109 cations 703 through the application interfaces 705. These and DB2 111 on a database server 113, SAP 115 running on interfaces 705 are the access points to the applications 703 AIX 117, a CICS 390 server 119, an IMS 390 server 121, through which all input and output is connected to the DB2 123 and DL/I 125 on a S/390 platform 127, a Windows middleware 713. The interfaces 705 are described in terms 2000 client 129, and Baan 131 running on an HPUnix server 60 133. The Common Application Metamodel (CAM) is meta of the Application Interface Metamodel. Transformation data interchange method, tool, and System for marshaling processing according to the metamodel could take place in and applying information needed for accessing enterprise Source/client applications, target applications, or a gateway. applications, Such as in FIG. 1, in a Source language and Because CAM also provides physical representation of converting them to a target language. CAM consists of 65 data types and Storage mapping to Support data transforma language metamodels and application domain interface tion in an enterprise application integration environment, it metamodels, as shown in FIG. 2, which illustrates the roles enables Web Services for enterprise applications. US 6,904,598 B2 11 12 At development time CAM captures information that applications. The connectorS Support leveraging and reuse of facilitates: data and busineSS logic held within existing application a). connector and/or connector-builder tools, Systems. The job of a connector is to connect from one b). data driven impact analysis for application productiv application System Server “interface' to another. Therefore, ity and quality assurance, and an application-domain interface metamodel describes Sig c). Viewing of programming language data declarations natures for input and output parameters and return types for by developers. a given application System domain (e.g. IMS, MQSeries); it The CAM metamodel files are inputs to toolkits used to is not for a particular IMS or MQSeries application program. generate DTD files, XML schemas, and Java classes which The metamodel contains both Syntactic and Semantic inter represent the CAM model. Importers parse each Source file face metadata. (e.g. COBOL or PL/I copybook, MFS source, and BMS, 1. a. End-to-End Connector Usage. Using Common Appli etc.), and then generate XML documents (i.e. XML instance cation Metamodel files) based on Java classes generated by the XMI/MOF2 The Common Application Metamodel (CAM) consists of toolkit. meta-definitions of message Signatures, independent of any Run Time. At run time CAM provides information which particular tool or middleware. Different connector builder facilitates transformation in an enterprise application inte 15 tools can use this information to ensure the “handshaking” gration environment where it provides data type mapping between these application programs, acroSS different tools, between mixed languages, facilitates data translations from languages, and middleware. For example, if you have to one language and platform domain into another. invoke a MOSeries application, you would need to build a FIG. 8 illustrates the application of the Common Appli MQ message using data from a GUI tool and deliver it using cation Metamodel during run time. As shown, SOAP com the MQ API. Similarly, when you receive a message from pliant XML documents 803 are received in, for example, the MQSeries application, you would need to get the buffer IBM WebSphere middleware, 805, which contains an from MQSeries, parse it and then put it into a GUI tool data IMSConnector for Java 807, and is in contact with an XML Structure. These functions can be designed and implemented Repository 809, containing the XMI instance files for the efficiently by a connector builder tool using CAM as stan CAM model. The IBM WebSphere middleware sends the 25 dardized metamodels for application interfaces. transformed file to the IMS system 811, which contains an CAM can be populated from many Sources, including instance of IMS Connect 813 and the IMS transactional copy books, to generate HTML forms and JavaServer Page application program 815. CAM facilitates connectivity (JSP) for gathering inputs and returning outputs. An between the back-end IMS application 815 and the Web file example of a connector as depicted in the previous figure is (e.g., SOAP compliant XML documents) 803. The CAM that the flow and message middleware makes a function call accomplishes this by using CAM model information (from to an enterprise application by calling the connector which repository 809) to perform data transformations from one then calls the enterprise application API. The connector does platform to another in the mixed language environment language and data type mappings, for example, to translate shown. between XML documents and COBOL input and output data Type Descriptor Metamodel. One important feature pro 35 structures based on CAM. Connectors and CAM provide the vided by CAM is the Type Descriptor metamodel. The Type end-to-end integration between the middleware and the Descriptor metamodel defines the physical realization, Stor enterprise applications. age mapping, and the constraints on the realization (Such as Using IMS as an example. Let's Say that you must pass an justification). This metamodel provides a physical represen account number to an IMS transaction application program tation of individual fields of a given data structure. When 40 from your desktop to withdraw $50.00. With CAM and a Supporting data transformation in an enterprise application connector builder tool, you will first generate an input integration environment, the model provides data type map HTML form and an output JSP; and develop a middleware ping between mixed languages. It also facilitates data trans code necessary to Support the request. The desktop applica lations from one language and platform domain into another. tion fills the request data structure (i.e. an input HTML form) The metamodel is used for runtime data transformation (or 45 with values and calls the middleware. The middleware marshaling) with a language-specific metamodel for overall Service code will take the data from the GUI tool, build an data Structures and field names. IMS Connect XML-formatted message, and deliver the 1. Common Application Metamodel for Application Inter message to the IMS gateway (i.e. IMS Connect) via TCP/IP. faces IMS Connect translates between the XML documents and The interconnection of disparate and dissimilar applica 50 the MS message data structures in COBOL using the meta tions running on different Software platforms, as shown in data definitions captured in CAM. It then in turn sends the FIG. 1, with different operating Systems, physical platforms, IMS message data structures to IMS via Open Transaction and physical realizations is accomplished through connec Manager Access (OTMA). The IMS COBOL application tors that incorporate the interconnection metadata. Connec program runs, and returns the output message back to the tors are a central part of the application framework for 55 middleware service code via IMS Connect. The middleware e-business. The end user demand is to connect to anything Service code gets the message and populates the output JSP interesting as quickly, and as easily, as possible. page (i.e. previously generated GUI tool reply data A connector is required to match the interface require Structures) with the reply data. The transaction output data ments of the adapter and the legacy application. It is also will then be presented to the user. required to map between the two interfaces. Standardized 60 2. Common Application Metamodel metamodels for application interfaces presented herein CAM is used to describe information needed to easily allow reuse of information in multiple connector tools. integrate applications developed in common programming These Standardized metamodels not only reduce work to models with other systems. The CAM metamodel can be create a connector, but also reduce work needed to develop used for both Synchronous and asynchronous invocations. connector builder tools. 65 2. a. Common Application Metamodel The connectors built using the common application meta The common application metamodel depicted as follows model of our invention provide interoperability with existing consists of an invocation metamodel and an application US 6,904,598 B2 13 14 domain interface metamodel which uses language metamod 2. a. iv. Type Descriptor Metamodel els. For any given application-domain interface metamodel, The Type DeScriptor metamodel is language neutral and it may use one or many language metamodels, but, there defines the physical realization, Storage mapping and the could be Zero or more invocation metamodels. constraints on the realization Such as justification. This The common connector metamodel is illustrated in FIG. metamodel provides physical representation of individual 3. It has an Invocation Metamodel 301, an Application fields of a given data Structure. The type descriptor meta Domain Interface Metamodel 303, and a Language Meta model is to Support data transformation in an enterprise model 305. application integration environment to provide data types 2. a. i. Invocation Metamodel mapping between mix languages. It also facilitates data The invocation metamodel 301 consists of one or more of translations from one language and platform domain into the following possible metadata elements. However, for a another. This metamodel will be used as a recipe for runtime particular invocation, it could include only one or many of data transformation (or marshaling) with language specific the following metadata elements. metamodel for overall data Structures and fields names. Message-control information. This includes message con 3. An Example of Common Connector Metamodel trol information, Such as the message connection name, 15 IMS OTMA (Open Transaction Manager Access) is a message type, Sequence numbers (if any), and various flags transaction-based, connectionless client/server protocol and indicators for response, commit-confirmation, and pro within an OS/390 sysplex environment. An IMS OTMA cessing options by which a client or Server can control transaction message consists of an OTMA prefix, plus message processing to be Synchronous or asynchronous, etc. message Segments for input and output requests. Both input The connection name can be used by the application and output message segments contain lzZ (i.e. length of the System server to associate all input and output with a Segment and reserved field), and application data. Only the particular client. The message type specifies that the mes very first input message Segment will contain transaction Sage is a response message, or that commit is complete. It code in front of the application data. IMS transaction appli can also indicate Server output data to the client, or client cation programs can be Written in a variety of languages, e.g. input data to the Server. 25 COBOL, PL/I, C, and Java, etc. Therefore, the application Security data-This includes authentication mechanism, data can be in any one of these languages. and Security data, e.g. digital certificates, identity, user name As shown in FIG. 4, an IMS OTMA connector metamodel and password, etc. It may also include authorization infor 401 is composed of an invocation metamodel 403 and an mation to indicate whether the data can be authorized via a IMS transaction message metamodel 405, as well as a role based or ACL (access control list) based authorization. COBOL metamodel 407 and a C metamodel 409. As Transactional Semantics-This will carry transaction depicted in FIG. 4, the invocation metamodel 401 is the information, e.g. local VS. global transaction; two-phase OTMA prefix, and the IMS transaction message metamodel commit VS. one-phase commit, and transaction context, etc. 405 is the application-domain interface metamodel for the Trace and debug-Trace and debugging information are IMS application System which uses language metamodels. Specified as part of the metamodel. 35 Metamodels for COBOL 407 and C 409 are shown. Precondition and post-condition resource-This 4. Type Descriptor Metamodel describes application State precondition and post-condition The type descriptor metamodel presents a language and relationships. platform independent way of describing implementation User data-This includes any Special information types, including arrays and Structured types. This informa required by the client. It can contain any data. 40 tion is needed for marshaling and for connectors, which have 2. a. ii. Application-domain Interface Metamodel to transform data from one language and platform domain The application-domain interface metamodel 303, as dis into another. Inspections of the type model for different cussed earlier, describes Signatures for input and output languages can determine the conformance possibilities for parameters and return types for application System domains. the language types. For example, a long type in Java is often 2. a, iii. Language Metamodel 45 identical to a binary type (computational-5) in COBOL, and The language metamodel 305, e.g. COBOL metamodel, is if So, the types may be inter-converted without Side effect. used by enterprise application programs to define data On the other hand, an alphanumeric type in COBOL is fixed Structures (Semantics) which represent connector interfaces. in size and if mapped to a Java type, loses this property. It is important to connector tools to Show a connector When converted back from Java to COBOL, the COBOL developer the Source language, the target language, and the 50 truncation rules may not apply, resulting in computation mapping between the two. The CAM language metamodel anomalies. In addition, tools that mix languages in a Server also includes the declaration text in the model which is not environment (e.g., Java and COBOL in CICS and IMS) editable (i.e. read-only model). Because the connector/ should find it useful as a way to determine how faithfully adapter developer would probably prefer to see the entire one language can represent the types of another. COBOL data declaration, including comments and any other 55 Therefore, an instance of the type descriptor metamodel documentation that would help him/her understand the busi describes the physical representation of a specific data type neSS role played by each field in the declaration. for a particular platform and compiler. The language metamodel is also to Support data driven 4. a. TDLang Metamodel impact analysis for application productivity and quality The TDLang metamodel serves as base classes to CAM assurance. (But, it is not the intention of the CAM to support 60 language metamodels by providing a layer of abstraction reproduction of copybooks.) between the Type Descriptor metamodel and any CAM The language metamodels describing connector data are language metamodel. All TDLang classes are abstract and listed as follows: common to all the CAM language metamodels. All asso C ciations between TDLang classes are marked as “volatile,” C++ 65 “transient,” or "derived” to reflect that the association is COBOL derived from the language metamodel. The TDLang model PL/I does not provide any function on its own, but it is the type US 6,904,598 B2 15 16 target for the association from the Type Descriptor meta to the largest. This allows a marshaling engine to process the model to the language metamodels. array in its natural Storage order, assuming it is laid out in the FIG. 9 illustrates the structure of the TDLang Metamodel, usual contiguous fashion. A marshaling engine can compute with the TDLangClassifier 501, the TDLangComposedType this order by re-Sorting the association targets according to 503 and the TDLangElement 505. the stride formulas if desired. With the TDLang base classes, the Type Descriptor meta Array information may be a complex property of the can be used as a recipe for runtime data transforma element or of its type, and various languages and program tion (or marshaling) with the language-specific metamodel ming practices seem to fall on either side. The typedef for overall data Structures and field names, without dupli facility of C and C++ allows the definition of some array cating the aggregation associations present in the language types from typedefs, but only where the array definitions are model. applied to the topmost elements of typedef aggregates. For 4. b. Type Descriptor Metamodel example, consider the following typedef. This metamodel is a MOF Class instance at the M2 level. FIG. 10 shows the relationships within the type descriptor Metamodel, including the PlatformCompilerType 601, the 15 typedefstruct { InstanceTDBase 603, the ArrayTD 605, the Aggregatein intA; stanceTD 607, the Simple InstanceTD 609, and the Instan struct { ceType 611. The InstanceType 611 comprises definitions of int C: the StringTD 613, the AddressTD 615, the NumberTD 617, char D; struct { and the FloatTD 619. FIG. 11 illustrates a higher level view int F; of the TDLanguageFlement and the PlatformCompilerType int G: 601. FIG. 12 illustrates enumerations of signCoding 801, length Encoding 803, floatType 805, accessor 807, packed DecimalSign 809, and bitModePad 811. 4. c. Type DeScriptor and Language Models 25 The Type Descriptor model is attached to the CAM This typedef can be used to create a new typedef for a Language model by a navigable association between fixed size array, e.g. TDLangElement and InstanceTDBase. TDLangElement is typedef X Q10); the base language model type used to represent a declared But it is not possible to create a new typedef from X that data item, i.e., an instance of a type. InstanceTDBase is the makes any of the Subcomponents of X, e.g., D or E, into an base Type Descriptor model type used to represent the array. This example and many others point out the unclear implementation-specific instance of this same declared data Status of array definitions in typed languages. item. InstanceTDBase is abstract; only one of its subtypes An InstanceTDBase type has two concrete Subtypes, may be instantiated. SimpleInstanceTD and AggregatenstanceTD. SimpleIn It is possible that a data item declared in a programming 35 stanceTD models data elements without Subcomponents, language may have different implementations. These differ while AggregateInstanceTD models data elements with Sub ences are induced by hardware platform, System platform, components. To find the Subcomponents of an and compiler differences. This possibility is modeled by the AggregateInstanceTD, one must navigate back to the cor Platform CompilerType model type. The association responding data element declaration in the CAM language between TDLangElement and PlatformCompilerType is 40 model. There, the association between an aggregate type and many to one, and the association between PlatformCompi its Subcomponents may be navigated, leading to a set of lerType and InstanceTDBase is one to one. To navigate from Subcomponent data elements, each of which has one or more the language model, it is necessary to know what Platform corresponding instances in the Type Descriptor model. This CompilerType is to be assumed. It is possible that an introduces Some model navigation complexity, but avoids implementation, upon importing a model instance, will wish 45 duplicating the aggregation hierarchy in both the language to remove from the model the PlatformCompilerType and the Type Descriptor models. The additional processing instances that are not of interest. complexity of traversal is not great, and considerable Sim The association between TDLangElement and InstanceT plification is obtained in algorithms that would modify the DBase is modeled in this manner to allow for extending the model to add, delete or rearrange Subcomponents in an model to include an association between PlatformCompi 50 aggregation. lerType and a new type that more fully describes the A SimpleInstanceTD model type is also associated one to hardware platform, the System platform, and the compiler. one with a BaseTD model type. The BaseTD model type is Data element instances may be defined as repeating Specialized to hold implementation information that is com groups or arrayS. This is modeled as a one to many asso mon for all data elements of the same language type. The ciation between InstanceTDBase and the ArrayTD model 55 information that describes a 32-bit signed binary integer on type. There would be one ArrayTD instance in this associa a specific hardware/Software platform is thus instantiated tion for each dimension, Subscript, or independent index of only once in a given model instantiation, no matter how the data element. These instances hold information about the many data elements may be declared with this type. bounds and accessing computations. The association is One may contemplate an association between TDLang ordered in the same order as the corresponding association 60 Classifier and BaseTD matching the association between in the language model, and reflects the Syntactic ordering of TDLangElement and InstanceTDBase. However, this is the indices as defined by the programming language. The problematic in that constructions that the language regards rationale for this choice is the resulting equivalence of as simple types (e.g., Strings) may not map directly to simple navigation and processing algorithms between the language hardware/software types. Rather than introduce more model and the Type Descriptor model. Another choice, 65 mechanisms into the Type Descriptor model to describe perhaps more advantageous to marshaling engines, would be String implementations, a Specialization of BaseTD is uti to have the ordering of the indices from the Smallest stride lized which describes the common String implementations. US 6,904,598 B2 17 18 Various attributes in the Typedescriptor model are suffixed ible by y. So mod(7,4) is 3, but mod(-74) is 1. If y is a with the string “formula.” These attributes contain informa power of 2, then mod(x,y) is equal to the bitwise-and of X tion that may in Some cases be impossible to compute and y-1. without access to data created only at run-time. An example The val function is the current upper bound of a variable-sized array or the The val function returns the value of a field described by offset to an element that follows another element whose size the model. The Val function takes one or more arguments, is only known at run-time. Such information could be and the first argument refers to the level-1 data Structure included as values in a model instance, but this would containing the field, and must be either: require a model instance for each run-time instance, and the name of a level-1 data Structure in the language model would mean that the model could only be constructed at the integer 1, indicating the level-1 parent of the variable run-time, requiring the model definition to include factories size field. In this case, the variable-size field and the field and other apparatus to create model instances at run-time. A that Specifies its size are in the same data Structure, and So model that can be constructed from platform and compiler have a common level-1 parent. knowledge is much more useful, and the formulas provide a The Subsequent arguments are integers that the Specify the way to define concrete values when the run-time information ordinal number within its substructure of the (sub)field that is available. These formulas may be interpreted by marshal 15 should be dereferenced. ing engines, or they may be used to generate marshaling By default, COBOL data fields within a structure are not code, which is loaded and executed by the marshaling aligned on type-specific boundaries in Storage. For example, engine on demand. the “natural alignment for a four-byte integer is a full-word 4. d. Formulas Storage boundary. Such alignment can be specified by using AS used in connection with formulas, “field” refers to a the SYNCHRONIZED clause on the declaration. Otherwise, component of a language data Structure described by the data fields Start immediately after the end of the preceding Type Descriptor model, while “attribute” denotes part of the field in the structure. Since COBOL does not have bit data, model, and has a value representing a “property of the field. fields always start on a whole byte boundary. Thus the value of a field means a run-time value in a 4.d. ii) Formula Examples for COBOL particular instance of a language data Structure, whereas the 25 value of an attribute is part of the description of a field in a The examples use the proposed inline comment indicator language data Structure, applies to all instances of the data “*>” from the draft standard. It is not yet legal COBOL Structure, and is determined when the data Structure is uSage. modeled. 1. Consider the following data description: For most attributes in an instance of the Type Descriptor model, the value of the attribute is known when the instance is built, because the properties of the fields being described, Such as Size and offset within the data Structure, are invari *>Field Offset ant. But if a field in a data Structure is defined using the 01 Used-Car. * “O'” COBOL OCCURS DEPENDING ON construct or the PL/I O2 Summary. * “O'” 35 O3 Make pic x(36). * “O'” Refer construct, then Some properties of the field (and O3 Model pic x(44). *“36 properties of other fields that depend on that field's value) 03 VIN pic x(13). *“8O cannot be determined when the model instance is built. O3 Color pic x(10). *“93 Properties that can be defined using these language con 88 Red value Red. Structs are String lengths and array bounds. A property that 88 White value White. could indirectly depend on these language constructs is the 40 88 Blue value Blue. 02 History. *“103 offset of a field within a structure, if the field follows a O3 Mileage pic 9(6). *“103 variable-size field. O3 NumClaims binary pic 9. *“109 In order to handle these language constructs, properties of 03 InsCode pic X. *111 a field that could depend on these constructs (and thus the O3 Claims. *“112 values of the corresponding attributes), are defined with 45 04 Claim occurs 1 to 9 times depending on NumClaims. Strings that Specify a formula that can be evaluated when the 05 ClaimNo pic x(12). model is used. 05 Claim Amt binary pic 9(5). However, if a property of a field is known when the model 05 Insurer pic x(38). instance is built, then the attribute formula Simply Specifies 05 Details pic x(100). an integer value. For example, if a String has length 17, then 02 Price comp pic 9(5)v99. *>“add(112,mpy(val (1.2.2),157)) the formula for its length is “ 17”. 50 The formulas mentioned above are limited to the follow ing: The offset of Model is straightforward, and is given by the Unsigned integers formula “36”. So is that of Claims, which is “112”. The following arithmetic integer functions But because the array Claim can occur a variable number 55 of times, the structure History is a variable-size field. Thus the offset of Price, which immediately follows Claims, requires a more complicated formula, involving the array If prefix negate Stride (the distance between Successive elements along a If infix add Specific dimension). For Claim, there is only one dimension, If infix subtract and the formula for its stride is “154'. Thus the formula for // infix multiply 60 If infix divide the offset of Price is: “add(112, mpy(val(1.2.2),154))” The first argument of the Val function is 1, meaning that the field containing the value at run-time, NumClaims, is in 65 the same level-1 structure, Used-Car, as the field, Price, The mod function is defined as mod(x,y)=r where r is the whose offset is specified by the formula. The other two Smallest non-negative integer Such that X-r is evenly divis arguments are 2 and 2. The first 2 refers to the Second US 6,904,598 B2 19 20 immediate Subcomponent, History, of Used-Car. The Second change the number of occurrences in a particular instance of 2 means that the field to be dereferenced is the second a variable-size COBOL array, and this has the effect of component of History, that is, NumClaims. changing the location and offset of any fields that follow the If the OCCURS DEPENDING ON object were in a array. For PL/I, the value of the Refer object of a particular Separate Structure, the third Subcomponent of level-1 Struc ture Car-Data, say, then the val function would be “val(Car instance of a structure is intended to be fixed during execu Data,3)”. tion Thus aligned objects following a variable-size field are COBOL Structure mapping is top-down, although the always correctly aligned for each instance of the Structure, direction doesn't make any difference unless the SYN because the amount of padding is computed uniquely for CHRONIZED clause is specified on the data declaration. each instance, as determined by the Refer option. By Specifying SYNCHRONIZED forces alignment of indi contrast, the amount of padding for any aligned fields vidual fields on their natural boundaries, and thus introduces following a variable-size COBOL array is computed assum "gaps' into the Structure mapping. Consider the following ing the maximum array size, and is fixed at compile time. If data Structure, which is identical to the previous example, the array is Smaller than its maximum size, then the align except for the SYNCHRONIZED clause: ment will typically be incorrect. For instance in this 15 example:

*>Field Offset 1 a sync. O1 Used-Car SYNCHRONIZED * “O'” 2 b binary pic 9. O2 Summary. * “O'” 2 c pic X occurs 1 to 5 times depending on b. O3 Make pic x(36). * “O'” 2 d binary pic 9(9). 03 Model pic x(44). *“36 03 VIN picx(13). *“8O 03 Color pic x(10). *“93 COBOL inserts one byte between c and d. The alignment 88 Red value Red. of d is therefore correct for only two values of b, the 88 White value White. 25 88 Blue value Blue. maximum, 5, and 2. 02 History. *“103 As noted above, the formulas describe not only offsets of 03 Mileage pic 9(6). *“103 fields within a structure, but also properties of arrays, Such O3 NumClaims binary pic 9. *“110 as bounds and strides. COBOL does not have true multi 03 InsCode pic X. *“112 03 Claims. *“113 dimensional arrays, although element references do use 04 Claim occurs 1 to 9 times multiple Subscripts. Instead, COBOL has arrays of arrays, as depending on Num Claims. *>stride(1) = “160” in the following simple example: 05 ClaimNo pic x(14). 05 Claim Amt binary pic 9(5). 05 Insurer pic x(39). 05 Details pic x(100). 35 1 a. 02 Price comp pic 9(5)v99. 2 d1 occurs 5 times. “add(add(113, mpy(val (1.2.2),160), 3)

To position the binary fields on their appropriate half 3 d2 occurs 6 times. *&Offset = “O'” word or full-word storage boundaries, COBOL introduces 40 * B, A->C, B->D, Derived from BaseTD B->E. The offset to D is calculated from A to D, not B Public Attributes: to D) base: int contentSizeFormula: String The base representation of this number. 2=binary, Formula for calculating the current size of the contents 10=decimal, 16=hex, allocSizeFormula: String Formula for calculating the allocated size of the instance baseWidth: int formulan Bit: boolean 1O Number of bits used to represent base: True indicates offsetFormula, contentSizeFormula, and allocSizeFormula values are in bits e.g. binary=1, decimal=8, packed=4 baseInAddr: int False indicates offsetFormula, contentSizeFormula, and allocSizeFormula values are in bytes Number of baseWidth units in addressable storage units 15 e.g. decimal=1, packed=2, binary=8 where the addres defaultEncoding: String Sable unit is a byte. If the addressable unit was a 32 bit Physical encoding-how many bits used to encode code word, decimal would be 4, packed would be 8, and points, how are the code points mapped onto bit pat binary would be 32. terns baseunits: int Contains info on how string content is encoded: EBCDIC, Number of base units in the number. This times the base ASCII, UNICODE, UTF-8, UTF-16, codepage width must be less than or equal to the width times the numbers, etc. . . . addrunit. accessor: enumeration For example, a 24 bit address right aligned in a 32 bit Specifies access-rights for this element. 25 word would have base=1, basewidth=24, baseInAddr= defaultBigEndian: boolean 8, width=4. True if this element is Big Endian format. signCoding: enumeration floatType: enumeration A Set of enumerations-2S complement, 1s Specifies this element's float type. complement, and Sign magnitude for binary, Zone signs PlatformCompilerType. A specific data type for a particu for decimal, packed signs for packed decimal, and lar platform and compiler. NOTE: There needs to be some unsigned binary, unsigned decimal. way to identify the platform and compiler. This class can be checkValidity: boolean Specializedor have an attribute, or be simplified by putting True if language model is required for picture String an attribute on InstanceTDBase. Support Public Attributes: 35 packed DecimalSign: enumeration platformCompilerType: String Used to determine the code point of the sign in COBOL This attribute specifies the type of compiler used to create decimal numbers, where the Sign is combined with the the data in the language model. Usage of this String is leading or trailing numeric digit. as follows: 40 FloatTD “Vendor name, language, OS, hardware platform” (e.g., Floating points “IBM, COBOL, OS390, 390” or “IBM, PLI, WinNT, Derived from BaseTD Intel”) Public Attributes: SimpleInstanceTD. An instance of a Simple type in the floatType: enumeration language model. Derived from InstanceTDBase 45 Specifies this element's float type. NumberTD 1 StringTD All numbers representations. Alphanumeric type Currently includes Integers and Packed Decimals Derived from BaseTD Note required fields for these types of Numbers: 50 Public Attributes: Integer encoding: String Base=2 Physical encoding-how many bits used to encode code MSBU=O or 1 points, how are the code points mapped onto bit pat Signed/Unsigned terns Size (in bytes)=1,2,4,8 (16) 55 Contains info on how string content is encoded: EBCDIC, Packed Decimal ASCII, UNICODE, UTF-8, UTF-16, codepage numbers, etc. . . . Base=10 length Encoding: enumeration MSBU=0 Possible values for lengthEncoding: Signed 60 Fixed length (where total length equals declared String Width=1-63 length) Float Length prefixed (where total length equals declared String Base=2(IEEE), 16(Hex) length plus length of header bytes, usually 1, 2, or 4 MSBU=O or 1 65 bytes) Signed Null terminated (known as varyingZ strings in PL/I) Size (in bytes)=4,8,16 (where a null Symbol is added to the end of String; So US 6,904,598 B2 25 26 the maximum length could be up to declared String bigEndian: boolean length plus one byte to represent null character) True if this element is Big Endian format. maxLength Formula: String Stereotypes Formula Specifying the maximum length of this String. bitModePad checkvalidity: boolean 5 Public Attributes: True if language model is required for picture String 16 bit: Support 24 bit: textType: String=Implicit 31 bit: Value is “Implicit or “Visual 1O 32 bit: orientation: StringTD=LTR 64 bit: Value is “LTR, RTL, “Contextual LTR, or “Contextual 128 bit: RTL signCoding where LTR=Left to Right 15 Note that this model does not include the following and RTL=Right to Left COBOL usages: Symmetric: boolean true 1. POINTER True if Symmetric Swapping is allowed PROCEDURE-POINTER numeralShapes: String=Nominal OBJECT REFERENCE Public Attributes: Value is 'Nominal, 'National, or “Contextual twoSComplement: textShape: String=Nominal onesComplement: Value is Nominal, Shaped, “Initial, Middle, Final, or 'Isolated SignMagnitude: AddressTD 25 ZoneSigns: Type to represent pointerS/addresses packedSigns: Rationale for this class: unsigned Binary: Addresses should be considered Separate from Num unsigned Decimal: berTD class because Some languages on certain machines (e.g., IBM 400) represent addresses with additional length Encoding information, Such as permission type (which is not repre Public Attributes: sented in NumberTD class) fixed Length: Derived From BaseTD length Prefixed Public Attributes: null Terminated: permission: String 35 floatType Specifies the permission for this address. Used primarily for AS/400 systems. Public Attributes: bitModePad: enumeration Unspecified: Specifies the number of bits for this address. Used to IEEEextendedIntel calculate padding. 40 For IEEE extended floats running on Intel Platform BaseTD IEEEextendedAIX: The base class of typedescriptor. For IEEE extended floats running on AIX Platform The BaseTD model type is specialized to hold implemen IEEEextendedOS390: tation information which is common for all data ele ments of the same language type. The information 45 For IEEE extended floats running on OS/390 Platform which describes a 32 bit signed binary integer on a IEEEextended AS400: Specific hardware/software platform is thus instantiated For IEEE extended floats running on AS400 Platform only once in a given model instantiation, no matter how IEEEnonextended: many data elements may be declared with this type. 50 For IEEE non-extended floats Public Attributes: IBM390Hex: addrunit: enumeration For Hexadecimal floats running on IBM OS/390 Number of bits in storage addressable unit bit/byte/word/dword IBM4OOHex: width: int 55 For Hexadecimal floats running on IBM AS400 CCCSSO Number of addressable storage units in the described Public Attributes: type. This can be 1, 8, 16, 32 bits. ReadOnly: alignment: int Write0nly: Required alignment of type in address Space-e.g. word aligned 32 bit integer would have alignment of 4 60 ReadWrite NoAccess nickname: int packed DecimalSign Name of the base element. This should uniquely identify an instance of a simple type to allow logic based on Public Attributes: name rather than logic based on combinations of 65 MVS: attributes. E.g. “S390 Binary31 0” for a 32 bit S/390 MVSCustom: unsealed binary integer NT/OS2/AIX: US 6,904,598 B2 27 28 5. COBOL Language Metamodels example, although the pictureString attribute may con The COBOL metamodel is used by enterprise application tain a picture string of 9999 V 99, programs to define data structures (Semantics) which getCanonicalPictureString() will return 9(4)v9(2) as represent connector interfaces. the value. FIG. 13 illustrates a COBOL metamodel to define data COBOLElement Structure Semantics which represent connector inter A COBOLElement represents every data definition in faces. This metamodel is also a MOF Class instance at the COBOL program. the M2 level FIG. 14 illustrates the associations For example: O1 EMPLOYEE between the COBOL metamodel with the TDLang base 03 SERIAL-NUMBER PIC 9(5). classes which are the TD Lang Classifier, the 03 DEPARTMENT PIC (5). TDLanguage Composed Type, and the TDLangEle EMPLOYEE, SERIAL-NUMBER, and DEPART ment. MENT are all COBOLElements. FIG. 15 illustrates an enumeration of the COBOL usage Derived from TDLangElement values in the COBOL Metamodel. Public Attributes: The goal of this COBOL model is to capture the infor 15 level: String mation that would be found in the Data Division. This Level refers to the data number this element was model is intended to be used only as read-only to declared in. redefined: Boolean=false convert COBOL data division into it's XML equiva COBOLVariableLengthArray lent. This model is not intended to be used as a A COBOLVariableLength Array should be instantiated converter from XML code into a COBOL data division whenever the Source for a COBOLElement has the equivalent. As a result, initial Values of elements are not following Syntax: captured in the model. LEVEL ELEMENTNAME1. OCCURS X1 TO X2 COBOLSimpleType TIMES DEPENDING ON ELEMENTNAME2. COBOLSimpleType is an abstract class that contains where X1 and X2 can be any integers 0 and higher and attributes shared by all simple types in the COBOL 25 X2>X1. ELEMENTNAME2 must be defined before language. ELEMENTNAME1. Derived from COBOLClassifier COBOLVariableLength Array has a single required Public Attributes: asSociation that Specifies which element this array usage: COBOLUsage Values depends on. Usage contains the data type as defined in COBOLUsa Derived from COBOLFixed Length Array ge Values. Public Attributes: Usage defines the format of the data in memory. If none minUpper: Integer is specified in the COBOL source, the default is In the case when maxUpper (max upper bound) “display”. Note that the popular COMP-3 is equiva belongs to VariableArray, maxUpper denotes the lent to packed Decimal. 35 absolute upper bound of the array that can be allo pictureString: String cated in memory. The actual maximum is denoted by This is a canonical form of the picture String Specified the value of the element it refers to; which it gets by in the source. It is *not* necessarily identical to the calling the “dependingOn” association. picture String given in the program 40 minUpper (minimum upper bound) is used to capture Procedure to arrive at the canonical form of the picture the COBOL syntax that reads OCCURS 4 to 7 String: TIMES DEPENDING ON X1. In this case, minUp 1. Expand any parenthesized characters per equals 4 and maxUpper equals 7, and the actual 2. Construct parenthesized representation for any upper bound depends on the value of X1. Sequences of identical characters which are longer 45 lower (lower bound) is always 1 (one) in the case of than 4 characters. COBOL but is included for consistency with other For example: languages and for clarity. start with XXX999(3) COBOLRedefiningElement after step 1 you get: XXX99999 The REDEFINES clause allows you to use different after step 2 you get: XXX9(5) 50 data description entries to describe the same com This canonical form yields the shortest equivalent puter Storage area. picture String. The canonical form is beneficial for Example of this class in use: equivalence checking. Synchronized: Boolean=false This boolean attribute corresponds to the SYNCHRO 55 1 TEST NIZED or SYNC clause that may optionally be 2 Y PIC X(4) Specified for an element. 2 YR REDEFINES Y BINARY PIC 9(5) Note that the COBOL language defines an additional TypeDef = False for Redefine/UNION clause-RIGHT/LEFT-which may follow the Derived from COBOLElement SYNCHRONIZED clause. 60 However, IBM's implementation of COBOL does Sup COBOLComposedType port this additional CLAUSE as documentation The COBOLComposedType class represents a nested only—all elements defined as SYNCHRONIZED declaration that contains additional elements. COBO are automatically Synchronized left. LComposedType class is an aggregate of COBOLEle Public Operations: 65 mentS getCanonicalPictureString (pictureString: String): String COBOLComposedType is also the parent class of COBO Returns the condensed value of this string. For LRedefines. US 6,904,598 B2 29 30 For example: If range is Set to true, literal-l must be leSS than literal-2, unless the associated data item is a windowed date field. COBOLAlphaNumericType O1 STUDENT O5 CLASSES OCCURS 5. The PICTURE character-string must consist of either of 10 CLASSNAME PIC X(20). the following: 10 CLASSNUMPIC 9(4). The symbol Combinations of the symbols A, X, and 9 (A character STUDENT is defined by COBOLComposedElement. Its String containing all AS or all 9S does not define an aggregation only point to the CLASSES item, which is alphanumeric item.) a COBOLElement. CLASSES is itself defined by a Other clauses: USAGE DISPLAY must be specified or COBOLComposedElement. implied. Derived from COBOLClassifier, TDLangComposedType Any associated VALUE clause must specify a nonnu COBOL88Element 15 meric literal or a figurative constant. COBOL88Element represents the COBOL 88 data level. Derived from COBOLSimpleType For example: Public Attributes: JustifyRight: Boolean=false This boolean corresponds to the JUSTIFIED (or JUST) TESTX PIC. clause. Note that JUST and JUST RIGHT carry the 88 TRUEX VALUE T ‘t’. *(TRUEX has 2 values) Same meaning. 88 FALSEX VALUE F. f. *(FALSEX has 2 values) COBOLNumericEditedType The PICTURE character-string can contain the following Where TRUEX and FALSEX are condition names for the 25 symbols: TESTX variable if value equals (T or “t) or ('F or B P V Z 9 O / , , +- CR DB * cs f), respectively. Other clauses: USAGE DISPLAY must be specified or So if TESTX="T or “t then TRUEX=TRUE and implied. FALSEX=FALSE; Any associated VALUE clause must specify a nonnu If TESTX='F or “f then FALSEX=TRUE and TRUEX= meric literal or a figurative constant. The literal is FALSE; treated exactly as Specified; no editing is done. Public Attributes: Edited Types are different from non-edited types in that name: String the decimal character is Stored in memory for edited types and not stored in non-edited types. Specifies the name or handle of the COBOL88Element. 35 COBOL88ElementValue Derived from COBOLSimpleType Example of this class in use: Public Attributes: Blank When Zero: Boolean This boolean corresponds to the BLANK WHEN 1 TESTXPC X. 40 ZERO clause. 88 TRUEX VALUE 'T' it. *(TRUEX has 2 values) True if BLANK WHEN ZERO. 88 FALSEX VALUE F. f. *(FALSEX has 2 values) currencySign: String 88 UAVALUE A THRU “I” “J” THRU R S THRU “Z & '-'. This String represents different currency signs used in *UA has 5 values; the first 3 are ranges the world, for example, S, £, DM, etc. . . . 45 Decimal: Boolean Rationale for this class: The Decimal boolean exchanges the functions of the This class exists because each COBOL88Element can peroid and comma in picture Strings and numeric contain more than 1 value. For example, TRUEX values. contains 2 values, "T and 't'. Thus this class can be If TRUE, decimals are used (e.g., 1,234.56) instatiated more than once (but at least once) per 50 If FALSE, commas are used (e.g., 1.234.56) COBOL88Element (and thus the 1. . . * cardinality) COBOLNumericType For range values such as ' A THRU I in UA, Types of numeric items are: lowerLimit= A, upperLimit=I, and range=true. Also Binary note that when using the THRU keyword, lowerLimit must be less than upperLimit. 55 Packed decimal (internal decimal) For non-range values such as T and “t we have decided Zoned decimal (external decimal) that we would use lowerLimit field to represent the The PICTURE character-string can contain only the sym value. bols 9, P, S, and V. Public Attributes: 60 For numeric date fields, the PICTURE character-string lowerLimit: String can contain only the lowerLimit refers to the lower bound of the symbols 9 and S. THROUGH range Examples of valid ranges upperLimit: String PICTURE Valid Range of Values upperLimit refers to the upper bound of the 65 99990 through 9999 THROUGH range S99-99 through +99 Range: Boolean S999V9-999.9 through +999.9 US 6,904,598 B2 31 32 PPP999 0 through 0.000999 S999PPP-1000 through-999000 and -continued +1000 through +999000 or zero O3 DATA3 VALUE 3. Other clauses: The USAGE of the item can be DISPLAY, 66 SUB-DATARENAMES DATA1 THROUGH DATA2. BINARY, COMPUTATIONAL, PACKED - 66 AKA-DATA3 RENAMES DATA3. DECIMAL, COMPUTATIONAL-3, COMPUTATIONAL-4, or COMPUTATIONAL-5. In this example SUB-DATA refers to contents in DATA1 PoSSible usage values for this class are binary, packed and DATA2. Decimal and display, which are represented by Public Attributes: comp-1 and comp-2 declarations, respectively. name: String Derived from COBOLSimpleType Specifies the name or handle of the COBOL66Element. Public Attributes: COBOLFixed LengthArray Signed: Boolean A COBOLFixed Length Array should be instantiated This boolean corresponds to the SIGN clause. 15 whenever the Source for a COBOLElement has the True if number is signed. following Syntax: Sign Leading: Boolean LEVEL ELEMENTNAME OCCURS X TIMES. This attribute corresponds to the LEADING (versus where X can be any integer 1 or higher. TRAILING) clause. In the case when maxUpper (max upper bound) belongs True if LEADING. to Fixed Array, maxUpper denotes the upper bound of SignSeparate: Boolean the array that is allocated in memory. This boolean corresponds to the SEPARATE clause. lower (lower bound) is always 1 (one) in the case of True is SEPARATE. COBOL but is included for consistency with other currency.Symbol: char 25 languages and for clarity. This character represents the symbol used in COBOL to COBOLDBCSType represent currency Sign. (e.g., S=S, L=£, D=DM, etc. The PICTURE character-string can contain the symbol(s) ..) G, G and B, or N. trunc: String Each G, B or N represents a single DBCS character The Trunc option determines whether decimal picture position. constraints must be honored for binary data items. The entire range of characters for a DBCS literal can be Values for Trunc are: used. STD, OPT, and BIN Other clauses: When PICTURE clause symbol G is used, TRUNC(STD) conforms to the COBOL 85 Standard, USAGE DISPLAY-1 must be specified. while 35 TRUNC(OPT) and When PICTURE clause symbol N is used, USAGE TRUNC(BIN) are IBM extensions. DISPLAY-1 is assumed and does not need to be speci For more information on the Trunc attribute, please fied. refer to “COBOL/VSE Programming Guide” Any associated VALUE clause must specify a DBCS numproc: String 40 literal or the figurative constant SPACE/SPACES. Numproc(PDF) imposes stricter standards on decimal The DBCSType occupies 2 bytes per character. Sign values. Derived from COBOLSimpleType Values for Numproc are: COBOLAlphaNumericEditedType NOPDF, PDF, and MIG. The PICTURE character-string can contain the following Use NUMPROC(NOPFD) if you want the compiler to 45 symbols: perform invalid Sign processing. This option is not as AX 9 B O / efficient as NUMPROC(PFD); object code size will The String must contain at least one A or X, and at least be increased, and there may be an increase in run one B or 0 (zero) or /. time overhead to validate all signed data. The contents of the item in standard data format must be NUMPROC(NOPFD) and NUMPROC(MIG) conform 50 two or more characters from the character Set of the to the COBOL 85 Standard. computer. Decimal: Boolean Other clauses: USAGE DISPLAY must be specified or The Decimal boolean exchanges the functions of the implied. peroid and comma in picture Strings and numeric Any associated VALUE clause must specify a nonnu values. 55 meric literal or a figurative constant. The literal is If TRUE, decimals are used (e.g., 1,234.56) treated exactly as Specified; no editing is done. If FALSE, commas are used (e.g., 1.234.56) Edited Types are different from non-edited types in that COBOL66Element the decimal character is Stored in memory for edited COBOL66Element represents the COBOL 66 data level. 60 types and not stored in non-edited types. For example: Derived from COBOLSimpleType COBOLClassifier COBOLClassifier class is the parent class of COBOL O1 DATA-GROUPPIC 9. ComposedType and COBOLSimpleType and contains O3 DATA1 VALUE 1. 65 the typedef attribute. O3 DATA2 VALUE 2. The best way to think of the effect of TYPEDEFs in COBOL is as lexical substitution, similar to simple C US 6,904,598 B2 33 34 macros. Replace the TYPE clause by everything fol Derived from COBOLSimpleType lowing the TYPEDEF keyword. Then, after adjusting COBOLInternalFloatType the level numbers appropriately, the result has to be The COBOLInternalFloat type captures the way float legal COBOL (except for the adjusted level numbers ing points are represented in memory. For example, themselves, which can exceed 49). The actual rules are 5 the value 123.45 is represented internally as 12345 quite complicated, as you might expect, So rather than with the implied decimal marked between 3 and 4. describe those, here are Some examples: Possible usage values for this class are float and A simple way of enforcing shop Standards for financial double, which are represented by comp-1 and data: comp-2 declarations, respectively. Definition: 1O Derived from COBOLSimpleType 1 uniform-amount typedefusage comp pic S906)V99 Syn COBOLExternalFloatType chronized. The COBOLExternalFloat type captures the way floating points are displayed to the user. COBOLExternalFloat Reference: Types are the same as COBOLNumericEditedTypes 1 account-record. 15 with the exception that the PIC has a +/- sign before the mantissa and the exponent. For example, the value 5 prior-balance type uniform-amount. 123.45 may be represented in ExternalFloatType as 5 current-balance type to uniform-amount. +12345 E-2 Possible usage values for this class are binary, packed Derived from TDLangClassifier Decimal and display. Public Attributes: Derived from COBOLSimpleType COBOLAddressingType Typedef: boolean COBOLAddressingType is used for index values, User-defined types are introduced by using the TYPE pointer values, and procedurePointer values. DEF attribute, and referred to by the TYPE clause. If 25 type is user-defined, typedef=true. Possible usage values for this class are index, TypeDef=False for Redefine/UNION pointer, and procedurePointer. name: String Derived from COBOLSimpleType Specifies the name or handle of the COBOLClassifier. COBOLElementInitial Value COBOLAlphabeticType Derived from TDLangElement The PICTURE character-string can contain only the sym Public Attributes: bol A. initVal: String The contents of the item in Standard data format must valueKind: COBOLInitialValueKind=String value consist of any of the letters of the English alphabet and TOTALS: 35 1 Logical Packages the Space character. 23 Classes Other clauses: USAGE DISPLAY must be specified or LOGICAL PACKAGE STRUCTURE implied. Logical View Any associated VALUE clause must specify a nonnu cobol meric literal containing only alphabetic characters, 40 TDLang SPACE, or a symbolic-character as the value of a 6. Illustrative Applications of the Common Application figurative constant. Metamodel and System Derived from COBOLSimpleType Various complex transaction, occurring acroSS a plurality Public Attributes: of individual platforms require the Seamlessness and trans JustifyRight: Boolean=false 45 parency of the Common Application Metamodel. These This boolean corresponds to the JUSTIFIED (or JUST) transactions include "rich' transactions, high level group clause. Note that JUST and JUST RIGHT carry the ware, and financial transactions. Same meaning. FIG. 16 illustrates a simplified network configuration for COBOLObjectReferenceType a "rich' transaction where, for example, an order is entered The object reference type points to an object declared 50 at a terminal, and is passed to and through a Web Server to in COBOL as USAGE IS INDEX OBJECT REF a manufacturer's application Server. The manufacturer's ERENCE METACLASS OF class-name-1" where application Server Searches through its own database Server, class-name-1 is optional as well as its vendors dissimilar and incompatible database Derived from COBOLSimpleType Servers and databases, transparently connected by the con 55 nectors described herein, querying for Statuses, prices, and Public Attributes: delivery dates, of components, and placing orders for needed className: String components to Satisfy the order. Refers to the name of the object this instance refers to. Strictly for purposes of illustration and not limitation, a COBOLSourceText rich transaction is illustrated with the purchase of an This class contains the entire Source code (including 60 automobile, from configuring and ordering the new auto comments) and its associated line number. mobile through financing the automobile, collecting the Public Attributes: elements and components the new automobile, assembling Source: String the automobile, and delivering it to the customer. In con fileName: String figuring the automobile, consider the inclusion of, e.g., a COBOLUnicodeType 65 traction control module, which may require the inclusion of The Unicode type reperesents data Stored in Unicode one Sub-set of engines, while precluding the inclusion of format. another Sub-set of engines, for example, for technical or US 6,904,598 B2 35 36 performance reasons. Similarly, the Selection of one color Simple messages between people, even relatively simple may preclude the Selection of certain upholstery e-mail Systems today typically include features for forward combinations, for example, for reasons of inventory or ing messages, filing messages, creating mailing groups, and availability. Of course, if you don’t Select an engine and a attaching files with a message. Other features that have been transmission, you don’t have an automobile. Certain choices explored include content based Sorting and processing of must be made. The problem is one of “If you pick X, you messages, content based routing of messages, and Structured must also pick Y and Z, but if you pick 'Y', you can not communication (messages requiring certain information). get 'A' or 'B', and you have already selected “A.” That is, Selection of one component or Sub-System may remove Workflow Systems are another element of groupware. Some previously Selected components or Sub-Systems from Work flow systems allow documents to be routed through the System. After configuring the car, frequently based on the organizations through a relatively-fixed process. A simple availability of Selected elements in the Supply pipeline, the example of a workflow application is an expense report in an order is sent to the manufacturer's server for fulfillment, organization: an employee enters an expense report and including manufacturing Scheduling. The manufacturer Submits it, a copy is archived then routed to the employee's would query the vendors in the Supply chain, for example, manager for approval, the manager receives the document, a transmission vendor, who would, in turn, query controller 15 electronically approves it and Sends it on and the expense is vendors, gear vendors, housing vendors, hydraulic conduit registered to the group's account and forwarded to the vendors, and the like. These vendors would, in turn query accounting department for payment. Workflow Systems may their Sub-vendors. provide features Such as routing, development of forms, and Using the connector method and System, the dealer and Support for differing roles and privileges. customer would configure and order the car at a terminal Hypertext is a System for linking text documents to each 3901. The configuration and order entry would be sent to the other, with the Web being an obvious example. However, manufacturer's server 3911. The manufacturer's server que whenever multiple people author and link documents, the ries the servers 3921, 3931, and 3441, (where server 3921 System becomes group work, constantly evolving and could be the Server for the manufacturer's in house compo responding to others work. Another common multi-user nents business and for its purchasing function) or its direct 25 feature in hypertext (that is not found on the Web) is vendors, who in turn query third Sub-vendors, 3923, 3933, allowing any user to create links from any page, So that and 3933. The queries could be in the form of “fill in the others can be informed when there are relevant links that the blank SQL queries, Subject to access authorizations. The original author was unaware of. sub-vendor servers, 3923,3933, and 3443 specialized views Group calendaring is another aspect of groupware and to the vendor's servers 3921, 3931, 3441, as clients, which facilitates Scheduling, , and coordina in turn would present Specialized views to the manufactur tion among many people, and may provide Support for er's server 3911 as a client. The data returned to the scheduling equipment as well. Typical features detect when manufacturer's server 3911 could be optimized with opti schedules conflict or find meeting times that will work for mization and production Scheduling applications, to present everyone. Group calendars also help to locate people. a serial number and delivery date to the buyer at the dealer's 35 Collaborative writing systems may provide both realtime SCWC. Support and non-realtime Support. Word processors may A further application of the connectors of the present provide asynchronous Support by showing authorship and invention is in connection with groupware, and especially by allowing users to track changes and make annotations to linking “islands of groupware” together. “Groupware' is a documents. Authors collaborating on a document may also broad term applied to technology that is designed to facili 40 be given tools to help plan and coordinate the authoring tate the work of groups. Groupware technology may be used process, Such as methods for locking parts of the document to communicate, cooperate, coordinate, Solve problems, or linking Separately-authored documents. Synchronous compete, or negotiate. A Groupware Suite of applications is Support allows authors to See each other's changes as they comprised of programs that help people work together make them, and usually needs to provide an additional collectively, even if located remotely from each other. 45 communication channel to the authors as they work. Groupware Services can include the Sharing of calendars, Group may be Synchronous or real time, Such as Shared collective writing, e-mail handling, shared database access, whiteboards that allow two or more people to view and draw electronic meetings, video conferencing, and other activi on a shared drawing Surface even from different locations. ties. This can be used, for instance, during a phone call, where FIG. 17 illustrates a group ware Session spread acroSS 50 each person can jot down notes (e.g. a name, phone number, multiple group ware applications running on multiple, dis or map) or to work collaboratively on a visual problem. parate platforms, and connected by the connectors described Most shared whiteboards are designed for informal herein. Specifically illustrated are two groupware Systems conversation, but they may also Serve Structured communi 4010 and 4020. Each system contains e-mail enables cations or more Sophisticated drawing tasks, Such as col applications, 4013 and 4023, such as e-mail, schedule/ 55 laborative graphic design, publishing, or engineering appli calendar, word processor, spread sheet, graphics, and CTI cations. Shared whiteboards can indicate where each perSon (computer telephony integration). These are Supported by is drawing or pointing by showing telepointers, which are message API's 4015, 4025 and operating systems, 4017 and color-coded or labeled to identify each perSon. 4027, and local groupware servers 4011 and 4021. Each of A further aspect of groupware is video conferencing. the local groupware servers, 4011 and 4021, has a connector 60 Video conferencing Systems allow two-way or multi-way of the present invention, an e-mail Server, an e-mail data calling with live Video, essentially a telephone System with base, a directory Server, and a replication database. The two an additional visual component, with time Stamping for groupware servers 4011 and 4021 communicate over a coordination. telecommunications medium, as the Net, a LAN, a WAN, or Decision Support Systems are another aspect of groupware even the PSTN. 65 and are designed to facilitate groups in decision-making. E-mail is by far the most common and basic groupware They provide tools for brainstorming, critiquing ideas, put application. While the basic technology is designed to pass ting weights and probabilities on events and alternatives, US 6,904,598 B2 37 38 and voting. Such Systems enable presumably more rational It is also to be understood, that while the invention has and evenhanded decisions. Primarily designed to facilitate been described and illustrated with respect to certain pre meetings, they encourage equal participation by, for ferred embodiments and exemplification having individual instance, providing anonymity or enforcing turn-taking. clients and individual Servers, there may be multiple clients, Multi-player games have always been reasonably com multiple Servers, and applications that function as both mon in arcades, but are becoming quite common on the clients and Servers, as exemplified by groupware Internet. Many of the earliest electronic arcade games were applications, and there might be multiple parallel lines multi-user, for example, Pong, Space Wars, and car racing and/or multiple hierarchical levels of application Servers, data Servers, and databases, as in Systems for rich transac games. Games are the prototypical example of multi-user tions. Situations “non-cooperative', though even competitive While the invention has been described with respect to games require players to cooperate in following the rules of certain preferred embodiments and exemplifications, it is not the game. Games can be enhanced by other communication intended to limit the scope of the invention thereby, but media, Such as chat or video Systems. Solely by the claims appended hereto. Some product examples of groupware include Lotus We claim: Notes and Microsoft Exchange, both of which facilitate 15 1. A method of processing an application request on an calendar sharing, e-mail handling, and the replication of files end user application and an application Server comprising: acroSS a distributed System So that all users can view the a) initiating the application request on the end user Same information. application in a first language with a first application What makes the connectors of the present invention program, particularly attractive for groupware applications is the b) transmitting the application request to the application diversity of groupware offerings and group Server Server and converting the application request from the architectures, implementations, and platforms. The connec first language of the first end user application to tor of the invention can act as a front end or gateway to the COBOL running on the application server; groupware Server. c) processing said application request on the application FIG. 18 illustrates a commercial transaction where real 25 Server, goods are shipped from a Seller to a buyer, and various forms d) transmitting a response to the application request from of electronic payment and Secured electronic payment are the application Server to the end user application, and used by the buyer to pay the Seller, with banks and financial converting the response to the application request from institutions connected through the connectors described the COBOL running on the application server to the herein. Specifically, a merchant or manufacturer 4101 sells first language of the first end user application; and a product to a customer 4103 that he has no “history” with. e) wherein the end user application and the application The product is shipped 4605. However, the buyer 4103 does server have at least one connector therebetween, and not wish to be parted from his money until the goods are the Steps of (i) converting the application request from received, inspected, approved, and “accepted', while the the first language of the first end user application as a seller 4101 does not want to give up control of the goods 35 Source language to the COBOL running on the appli until he has been paid. This fundamental commercial con cation Server as a target language, and (ii) converting a flict has led to various paradigms, most involving hard copy response to the application request from the COBOL “near moneys' or instruments of one form or another. Today, running on the application Server as a Source language the financial transactions are most frequently those involv to the first language of the first end user application as ing electronic fund transfers, and electronic versions of 40 a target language, each comprise the Steps of: notes, instruments, negotiable instruments, documentary 1) invoking connector metamodels of respective Source drafts, payment orders, letters of credit, warehouse receipts, and target languages, delivery orders, bills of lading, including claims on goods, 2) populating the connector metamodels with meta that is, documents of title that purport to transfer title or model data of each of the respective Source and physical custody of goods to the bearer or to a named perSon, 45 target languages, and and Security interests in goods. Typically, the customer 4103 3) converting the Source language to the target lan executes an instrument in favor of the seller 4101, directing guage. the buyer's bank 4121 to pay buyer's money to the seller 2. The method of claim 1 wherein the end user application 4101 through seller's bank 4125. Normally, this is a simple is a web browser. electronic transaction between buyers and Sellers who have 50 3. The method of claim 2 wherein the end user application dealt with each other before, dealing through banks or is connected to the application Server through a web server, financial intermediaries who have dealt with each other and the Web Server comprises a connector. before, and who are using the same or compatible Software 4. The method of claim 1 wherein the metamodel meta applications. However, in the extraordinary case where these data comprises invocation metamodel metadata, application preconditions are not Satisfied, the connectors of the inven 55 domain interface metamodel metadata, and type descriptor tion facilitate the electronic, bank-to-bank, Side of the trans metamodel metadata. action. 5. The method of claim 4 wherein the invocation meta While the invention has been described and illustrated model metadata is chosen from the group consisting of with respect to applications having a single level of appli message control information, Security data, transactional cation program interfaces or converters, it is, of course, to be 60 Semantics, trace and debug information, pre-condition and understood that Such application program interfaces or con post-condition resources, and user data. verters may be present at various levels in the processing 6. The method of claim 4 wherein the application domain hierarchy, for example between Web Clients and Web interface metamodel metadata comprises input parameter Servers, between web servers and application Servers, Signatures, output parameter signatures, and return types. between application Servers and database Servers, and 65 7. The method of claim 4 wherein the application domain between application Servers or database Servers or both and interface metamodel metadata further includes language various specialized repositories. metamodel metadata. US 6,904,598 B2 39 40 8. The method of claim 7 wherein the language meta 16. The system of claim 15 wherein the end user appli model metadata includes mappings between the Source and cation is connected to the application Server through a web target languages. Server, and the Web Server comprises a connector. 9. The method of claim 8 wherein the source language is 17. The system of claim 14 wherein the metamodel object oriented, and the language metamodel metadata maps metadata comprises invocation metamodel metadata, appli encapsulated objects into code and data. cation domain interface metamodel metadata, and type 10. The method of claim 9 wherein the language meta descriptor metamodel metadata. model metadata maps object inheritances into references and pointers. 18. The system of claim 17 wherein the invocation 11. The method of claim 4 wherein the type descriptor metamodel metadata is chosen from the group consisting of metamodel metadata defines physical realizations, Storage message control information, Security data, transactional mapping, data types, data Structures, and realization con Semantics, trace and debug information, pre-condition and Straints. post-condition resources, and user data. 12. The method of claim 1 wherein processing the appli 19. The system of claim 18 wherein the type descriptor cation request relates to a rich transaction comprising a metamodel metadata defines physical realizations, Storage 15 mapping, data types, data Structures, and realization con plurality of individual transactions, and wherein the plurality Straints. of individual transactions are processed on one end user 20. The system of claim 17 wherein the application application and a plurality of application Servers. domain interface metamodel metadata comprises input 13. The method of claim 12 comprising passing individual parameter Signatures, output parameter Signatures, and transactions among individual application Servers. return types. 14. A transaction processing System comprising a client, 21. The system of claim 17 wherein the application a Server, and at least one connector therebetween, domain interface metamodel metadata further includes lan a) the client having an end user application, and being guage metamodel metadata. controlled and configured to initiate an application 22. The System of claim 21 wherein the language meta request with the Server in a first language with a first 25 model metadata includes mappings between the Source and application program and to transmit the application target languages. request to the Server; 23. The System of claim 22 wherein the Source language b) the connector being configured and controlled to is object oriented, and the language metamodel metadata receive the application request from the client, convert maps encapsulated objects into code and data. the application request from the first language of the 24. The System of claim 23 wherein the language meta first end user application running on the client to model metadata maps object inheritances into references and COBOL running on the Server; pointers. c) the server being configured and controlled to receive 25. The system of claim 14 wherein said system has a the converted application request from the connector plurality of application Servers and is configured and con and process the application request in COBOL with a 35 trolled to process rich transactions. Second application program residing on the Server, and 26. A transaction processing System configured and con to thereafter transmit a response to the application trolled to interact with a client application, and comprising request through the connector back to the first appli a Server and at least one connector between the Server and cation program on the client; the client application, wherein: d) the connector being configured and controlled to 40 a) the client has an end user application, and is controlled receive the response to the application request from the and configured to initiate an application request with Server, to convert the response to the application the Server in a first language with a first application request from the COBOL running on the application program and to transmit the application request to the Server to the first language of the first application Server, program running on the client; and 45 b) the connector being configured and controlled to e) wherein the connector between the client and the server receive the application request from the client, convert is configured and controlled to (i) convert the applica the application request from the first language of the tion request from the first language of the first appli first end user application running on the client to the cation on the client as a Source language to the COBOL COBOL running on the server; running on the application Server as a target language, 50 and (ii) convert the response to the application request c) the server being configured and controlled to receive from the COBOL running on the application server as the converted application request from the connector a Source language to the first language of the first and process the application request in the COBOL with application running on the client as a target language, a Second application program residing on the Server, each by a method comprising: 55 and to thereafter transmit a response to the application 1) retrieving connector metamodels of respective request through the connector back to the first appli Source and target languages from a metamodel meta cation program on the client; data repository; d) the connector being configured and controlled to 2) populating the connector metamodels with meta receive the response to the application request from the model data from the metamodel metadata repository 60 Server, to convert the response to the application for each of the respective Source and target lan request from the COBOL running on the server to the guages, and first language of the first application program running 3) invoking the retrieved, populated connector meta on the client; and models and converting the Source language to the e) wherein the connector between the client and the server target language. 65 is configured and controlled to (i) convert the applica 15. The system of claim 14 wherein the end user appli tion request from the first language of the client appli cation is a web browser. cation on the client as a Source language to the COBOL US 6,904,598 B2 41 42 running on the Server as a target language, and (ii) 39. A program product comprising a computer-readable convert the response to the application request from the Storage medium having invocation metamodel metadata, COBOL running on the Server as a Source language to application domain interface metamodel metadata, and lan the first language of the client application running on guage metamodel metadata; the client as a target language, each by a method 5 computer instructions for building a metamodel metadata comprising: repository of Source and target language metamodel 1) retrieving connector metamodel metadata of respec metadata; and tive Source and target languages from a metamodel computer instructions to build a connector for: metadata repository; 1) retrieving connector metamodel metadata of respec 2) populating the connector metamodels with meta tive Source and target languages from the metamodel model data of each of the respective Source and metadata repository; target languages from the metamodel metadata 2) populating the connector metamodels with meta repository and invoking the retrieved, populated model data of each of the respective Source and connector metamodels, and target languages from the metamodel metadata 3) converting the Source language to the target lan 15 repository and invoking the retrieved, populated guage. connector metamodels, and 27. The system of claim 26 wherein the end user appli 3) converting the Source language to the target lan cation is a web browser. guage. 28. The system of claim 27 wherein the end user appli 40. The program product of claim 39 wherein the cation is connected to the application Server through a web computer-readable Storage medium includes computer Server, and the Web Server comprises a connector. instructions for building connector Stubs from Said meta 29. The system of claim 26 wherein the metamodel model metadata. metadata comprises invocation metamodel metadata, appli 41. The program product of claim 39 wherein the meta cation domain interface metamodel metadata, and type model metadata in the repository comprises invocation descriptor metamodel metadata. 25 metamodel metadata, application domain interface meta 30. The system of claim 29 wherein the invocation model metadata, and type descriptor metamodel metadata. metamodel metadata is chosen from the group consisting of 42. The program product of claim 41 wherein the invo message control information, Security data, transactional cation metamodel metadata is chosen from the group con Semantics, trace and debug information, pre-condition and Sisting of message control information, Security data, trans post-condition resources, and user data. actional Semantics, trace and debug information, pre 31. The system of claim 29 wherein the application condition and post-condition resources, and user data. domain interface metamodel metadata comprises input 43. The program product of claim 42 wherein the type parameter Signatures, output parameter Signatures, and descriptor metamodel metadata defines physical return types. realizations, Storage mapping, data types, data structures, 32. The system of claim 29 wherein the application 35 and realization constraints. domain interface metamodel metadata further includes lan 44. The program product of claim 41 wherein the appli guage metamodel metadata. cation domain interface metamodel metadata comprises 33. The system of claim 32 wherein the language meta input parameter Signatures, output parameter Signatures, and model metadata includes mappings between the Source and return types. target languages. 40 45. The program product of claim 41 wherein the appli 34. The system of claim 33 wherein the source language cation domain interface metamodel metadata further is object oriented, and the language metamodel metadata includes language metamodel metadata. maps encapsulated objects into code and data. 46. The program product of claim 45 wherein the lan 35. The method of claim 33 wherein the source language guage metamodel metadata includes mappings between the and the target language are different object oriented 45 Source and target languages. languages, and the language metamodel metadata maps 47. The program product of claim 46 wherein the source encapsulated code and data between the languages. language is object oriented, and the language metamodel 36. The system of claim 33 wherein the language meta metadata maps encapsulated objects into code and data. model metadata maps object inheritances into references and 48. The program product of claim 46 wherein the lan pointers. 50 guage metamodel metadata maps object inheritances into 37. The system of claim 29 wherein the type descriptor references and pointers. metamodel metadata defines physical realizations, Storage 49. The program product of claim 39 wherein the source mapping, data types, data Structures, and realization con language is COBOL. Straints. 50. The program product of claim 39 wherein the target 38. The system of claim 26 wherein said system has a 55 language is COBOL. plurality of application Servers and is configured and con trolled to process rich transactions.