My Java App Called Your COBOL DB2 Stored Procedure

Size: px
Start display at page:

Download "My Java App Called Your COBOL DB2 Stored Procedure"

Transcription

1 Session: F13 My Java App Called Your COBOL DB2 Stored Procedure John Mallonee Highmark Inc. May 22, :00 a.m. 9:00 a.m. Platform: Cross-platform Abstract See the experiences of a Java development team that had the guts to call DB2 for z/os stored procedures written in COBOL. See how the application was developed, challenges faced ranging from Workload Manager to developer diversity, and tips for support. Java experience is preferred, but not a must. 1

2 Objectives Objective 1: Learn why and where a COBOL stored procedure makes sense for Java applications. Objective 2: Learn the basics of building a COBOL stored procedure. Objective 3: Learn the basics of calling a DB2 stored procedure from a Java application. Objective 4: Understand the potential challenges. Objective 5: Develop a methodology for ongoing support What are COBOL SP's and Why use them - Explain what a COBOL stored procedure is and why we choose this solution for Java/web application. 2. The COBOL/DB2 side - Look at the definition of the stored procedure in DB2 and how the COBOL application was designed. 3. The Java side - Look at how the Java application was designed, how the JDBC API was used, how transaction management was implemented, and how problems were resolved. 4. Challenges Encountered - Review the challenges and issues that came up and how they were solved. Look at how to avoid some of these challenges. 5. Support Hints - Discuss how to support these cross-platform applications once they're in production and some tools that can help. 2

3 Progress Why, What DB2 COBOL Java Challenges Support 3 Objective 1 Let s start by taking a look at what DB2 Stored Procedures (on z/os) are and why we choose them for our project. 3

4 What and Why Review DB2 Stored Procedures on z/os Business Needs of our project Project Overview Our Environment Decision Process Why to use DB2 Stored Procedures Why to not use DB2 Stored Procedures 4 4

5 Review COBOL DB2 SP External stored procedure definition and program code are separate CREATE PROCEDURE SYSIBM.SYSROUTINES, SYSIBM.SYSPARMS WLM Workload Manager Address space for stored procedures COBOL code SQL, packages Created (global) temporary tables result sets SQL CALL from client application See IBM Redbook SG Review COBOL Stored Procedures on z/os Our use of stored procedures was for external stored procedures indicating that we coded the stored procedure in a language other than SQL, in our case COBOL. The CREATE PROCEDURE statement is used to inform the system of the name of the load module and what parameters are expected when the procedure is called, as well as other execution and environment options. As a reminder, the DB2 catalog tables used to store the details of the declared stored procedure are SYSIBM.SYSROUTINES and SYSIBM.SYSPARMS We are currently at DB2 version 8, so we use DB2 s Workload Manager (WLM) instead of the older SPAS (Stored Procedure Address Space) Our SQL was coded in COBOL programs and we bound packages for each program containing SQL. We used created/global temporary tables to return result sets from the COBOL program to the calling Java program. The SQL CALL command is used to invoke the stored procedure from WLM within a DB2 connection in Java. 5

6 Business Need New application Reuse mainframe COBOL SQL on Java/web application Existing subprograms, DB2 packages Avoid duplication Development Maintenance Business risk Performance 6 Business Need Our business need was to create an online application for a web browser which is our standard for new applications. However, there were existing COBOL subprograms that contained SQL needed by the new application. Our choice was to make that SQL reusable by both COBOL components and Java components. This minimized duplication of effort both at development time and for ongoing maintenance in the future. Additionally, we wanted to minimize risk to the business functionality so that COBOL code and Java code didn t function differently as the application changed over time. Performance is always a consideration. Since we had existing SQL on the mainframe, we didn t want to lose the performance that already existed, especially given the added costs and risks of duplication. 6

7 Project Overview Internal customer billing application Web user interface Shared SQL batch COBOL z/os online Java/HTML Linux Reuse existing business/database logic 16 DB2 Stored Procedures 8 read 8 insert/update Mainframe and Java developers 7 Project Overview The application to be built was an extension to an existing application. The new functionality revolved around tracking customer invoices through a browser-based interface and was to be used specifically for internal users (Intranet). There were also to be batch components to the application, so there was a need to share DB2 SQL between the batch processes (COBOL on z/os) and online processes (Java on Linux). Some of these processes already existed, and we didn t want to duplicate the code between COBOL and Java. Ultimately, we ended up with 16 stored procedures, half of which were SELECT statement based, and half of which were INSERT or UPDATE statement based. The project team was composed of developers that were mixed between COBOL development and Java development. 7

8 Our Environment Mainframe z/os version 1.8 Test and production LPAR s DB2 version 8 full function mode LE COBOL Open Systems DB2 Connect version 8.2 on zlinux Red Hat Linux version WebSphere Application Server 6.0 Java JDK 1.4 JDBC Java EE Environment Our environment is obviously mixed between mainframe and open systems. Our mainframe environment is a multiple LPAR z/os configuration where our COBOL applications access DB2 version 8 using separate sets of packages for each collection (multiple collections for test, one for production). Our open systems environment includes a DB2 Connect server to communicate between WebSphere and DB2 on z/os. Our open systems applications are Java EE applications running in a WebSphere Application Server using the JDBC API. 8

9 Why use DB2 SP s SP s do the job Uses existing skills DB2, COBOL, Java, SQL Minimize middleware use Minimize COBOL coding Intra-application communication not shared across apps Reusable for standards-based SOA with wrappers See Update at end Reusable by any application or tool using DB2/SQL Application Query Tool Reporting Tool 9 Why to use DB2 SP s We had a lot of discussion about whether to use Stored Procedures as compared to our standard component methodology for this application. Some of the pros to using Stored Procedures were that they matched our current skill set and that the team saw them as being less complicated than using messaging middleware. Since the database processes were cross-platform, but not crossapplications, there was not a pressing need to support the messaging approach. Additionally, even though the Stored Procedures are not reusable by other applications as is, they can be adapted to be shared if the need arises in the future through a SOA approach. They also have the added benefit of being used for query and report tools that support SQL CALL commands. 9

10 Why to Not use DB2 SP s Tied to DB2 as a DBMS Not our standard methodology use of WebSphere MQ Not exactly standard for SOA (but pluggable to SOA standards) We chose To use DB2 Stored Procedures 10 Why to not use DB2 SP s A drawback from an architecture perspective is that the application is more tightly coupled to a particular DBMS (DB2). However, since we re not a product vendor, there is less risk in needing to deploy our application on a different DBMS than DB2. As mentioned in the previous slide, our standard methodology is to use messaging middleware to loosely couple applications, so this approach deviates. Additionally, this approach doesn t immediately support typical SOA standards such as web services, but they can be extended to fit into that approach. Ultimately, the choice was made to move forward with them, so let s move on 10

11 Progress Why, What DB2 COBOL Java Challenges Support 11 Objective 2 Let s now take a look at the mainframe side and how the stored procedures were defined in DB2 and how the programs were coded in COBOL. 11

12 The COBOL/DB2 Side Defining the Stored Procedure to DB2 (v. 8) Designing the COBOL application Dynamically called subroutines Different collection id's Interface input/output, messages, errors, result sets Coding the COBOL application PROCEDURE DIVISION USING statement DECLARE Temporary Table DECLARE cursor Data retrieval Data updates 12 COBOL/DB2 This section will discuss what we did on the mainframe side (COBOL and DB2) to configure and build the stored procedures to be later called from the Java application. Defining the stored procedure to DB2 using the CREATE PROCEDURE command Designing the COBOL application that will return results (parameters and result sets) including how we used dynamically called subprograms and how we designed the interface to the procedure The actual COBOL program code with examples from the passing of parameters to the SQL to retrieve and update data. 12

13 DB2 Define Stored Proc CREATE PROCEDURE TST1.GET_LIST ( IN COL_1 CHAR(9), IN COL_2 CHAR(16), OUT RETURN_STATUS CHAR(8), OUT RETURN_MESSAGES VARCHAR(1002), OUT COL_5 DATE ) DYNAMIC RESULT SET 1 LANGUAGE COBOL EXTERNAL NAME MYPROG PARAMETER STYLE GENERAL NOT DETERMINISTIC FENCED 13 CREATE PROCEDURE CREATE PROCEDURE stores the procedure definition in the DB2 catalog tables. In this case, the owner is the TST1 collection and the procedure name is GET_LIST. There are 2 input parameters and 3 output parameters with varying field types. DYNAMIC RESULT SET 1 this indicates that one result set will be returned by the COBOL program, meaning that a cursor will be open to a global temporary table which can then be read from the Java application (estimated upper bound) LANGUAGE COBOL COBOL is the programming language for the stored procedure EXTERNAL NAME MYPROG MYPROG is the name of the program/load module that the Workload Manager will call when the stored procedure is invoked PARAMETER STYLE GENERAL parameters are 13

14 DB2 Define Stored Proc # 2 READS SQL DATA NO DBINFO COLLID XXX WLM ENVIRONMENT XXXXXX ASUTIME LIMIT STAY RESIDENT YES PROGRAM TYPE SUB SECURITY DB2 COMMIT ON RETURN NO We varied between test and production COBOL doesn t manage transaction RUN OPTIONS 'MSGFILE(SYSPRINT,,,,ENQ)'; 14 CREATE PROCEDURE - continued READS SQL DATA program within procedure reads data through SQL (use MODIFIES SQL DATA for INSERTs/UPDATEs) NO DBINFO no database info such as database name, application id, version are passed to procedure COLLID XXX collection name WLM ENVIRONMENT XXXXXX - WLM environment name ASUTIME LIMIT STAY RESIDENT YES program will not be loaded for every call which should perform better in higher volume situations when used in conjunction with PROGRAM TYPE SUB PROGRAM TYPE SUB indicates the program can be called as a subprogram (vs. main program) see STAY RESIDENT SECURITY DB2 authentication to stored procedure call is using DB2 security COMMIT ON RETURN NO transaction is not managed by the stored procedure (managed by caller) RUN OPTIONS 'MSGFILE(SYSPRINT,,,,ENQ) specific runtime options 14

15 COBOL Design Application Load module per stored procedure Dynamically called subprograms Dynamic load module SQL Packages Different collection id's One per test environment One for Production Application Interface Transaction Management calling application 15 Application Design Each of our stored procedures consists of an entry level load module to process the SQL CALL and multiple subprograms which are called dynamically. DB2 is accessed via SQL through packages at the subprogram level. Collections are pervasive in our test and production environments and were tied to our stored procedure definitions. We had to be careful especially when switching environments, or supporting multiple environments. We use a distinct collection per test environment and a different one for production. We maintain separate load libraries per environment and have separate stored procedure definitions per environment. The application interface is described on the next slide. To be reusable, our stored procedures don t maintain transaction state. In other words, the stored procedures don t commit updates, but allow for transaction management to occur in the program or application that calls the stored procedure. In our application, that means that we do the commits from the Java application using container management from within a session bean. 15

16 COBOL Design Application Application Interface Input parameters Output parameters Business data Status OKAY, NOTFOUND, WARN, ERROR Error Handling/Messages (multiple occurrences) Error messages include embedded DB2 messages Result set(s) 16 Application Design Interface The interface from a calling program to our stored procedures included input parameters, output parameters, and optional returned result sets. Standard output parameters for all of our stored procedures were a status code and set of error messages The status code includes common values to indicate that a call was successful, that a requested key wasn t found from the stored procedure, or a value indicating a warning or error in which case a message(s) is included in the error message section Error messages might also include other values for business conditions or errors vs. infrastructure errors. Error messages include SQL error codes that occur from SQL issued by the stored procedure. In this case, the SQL code and any associated text was included in the error message as compared to being returned as a separate code. The Java application responds to the value of ERROR returned in the status code. 16

17 COBOL Design Application Stored Procedure PROCEDURE DIVISION USING IN, OUT parameters SQL Package Dynamic Subroutine Dynamic Subroutine SQL Package DB2 IMS File 17 This is a high level depiction of the major components of the z/os stored procedures. Stored Procedure this is the load module level program which is triggered by the SQL CALL statement from Java. It accepts the input parameters and returns the output parameters through the PROCEDURE DIVISION USING statement (through LINKAGE SECTION fields). Dynamic Subroutine this is a program that is dynamically called by the Stored Procedure load module program. This means that the subprogram is a separate load module as well as a called subprogram. The SQL coded to read or update a DB2 table is coded in a dynamic subprogram and has a corresponding bound DB2 package. DB2, IMS, File These represent the various data sources that are accessed by the subprograms. In our example, we didn t read IMS or flat files, just DB2, but they are available options. 17

18 COBOL Code Application PROCEDURE DIVISION USING statement DECLARE result set cursor optional DECLARE Temporary Table optional SELECT/INSERT/UPDATE data from/to DB2 or obtain from other source MOVE data to INOUT/OUTPUT parameters INSERT to temporary table (result set) optional 18 COBOL application The following components of the COBOL application are further described with examples in the following slides PROCEDURE DIVISION USING entry to the stored procedure with parameters passed through linkage section fields DECLARE CURSOR for stored procedures returning result sets, the definition of the cursor to be made available to the calling program DECLARE GLOBAL TEMPORARY TABLE for stored procedures returning result sets that are built in the procedure. In other words, the returned data is not a simple SELECT to a table or tables, but involves procedural processing or other translation of the raw data. We tried to avoid these where possible to avoid the overhead of building the temp table(s). SELECT/INSERT/UPDATE subprograms read data from DB2 (or insert or update) and translate it if necessary INPUT/OUTPUT parameters single iteration data was returned to the calling program through output parameters Result set(s) when data to be returned was more than a single iteration, a result set cursor was populated and returned 18

19 COBOL Parameters IDENTIFICATION DIVISION. PROGRAM-ID. MYPROG.... PROCEDURE DIVISION USING VAR-1 VAR-2 RETURN-STATUS RETURN-MSGS VAR-5 Input Output 19 Parameters As indicated, input and output parameters are defined in the PROCEDURE DIVISION USING statement. Each parameters is also defined as a LINKAGE SECTION field. The order of the parameters in the USING statement match the order passed from the SQL CALL statement in the calling program. 19

20 DECLARE Temp Table DECLARE GLOBAL TEMPORARY TABLE SESSION.XXX_RETURN_LIST ( COL_A CHAR(5) NOT NULL, COL_B CHAR(10)NOT NULL, COL_C DATE NOT NULL, )ON COMMIT DROP TABLE Temporary table is dropped when main application commits Declare temporary table to store results set 20 DECLARE GLOBAL TEMPORARY TABLE For stored procedures that in some way translate the data to be returned, global temporary tables are defined to contain the returned data. The temporary table is tied to the current session and contains columns that are defined by the COBOL program, similar to defining other permanent tables to DB2. The ON COMMIT DROP TABLE clause indicates that the temporary table will be dropped once the current transaction is committed (by the Java program). This indicates that there is overhead for declaring, populating, and dropping temporary tables for each stored procedure invocation. 20

21 DECLARE CURSOR DECLARE REVIEWLIST CURSOR WITH RETURN FOR SELECT COL_A, COL_B, COL_C FROM SESSION.XXX_RETURN_LIST EXEC SQL OPEN REVIEWLIST END-EXEC Declare cursor for returned results set 21 DECLARE CURSOR returned data For stored procedures that return a result set(s), a CURSOR is declared per result set. Declaring the cursor is the same as a typical cursor in a COBOL program with the addition of the WITH RETURN clause. Note that this example is returning a cursor that selects data from a global temporary table that has been populated with the result set. 21

22 INSERT to Temporary Table INSERT INTO SESSION.XXX_RETURN_LIST SELECT COL_1, COL_2, RETURN_STATUS, RETURN_MSGS, COL_5 FROM XXX_TABLE_A FROM... WHERE... Populate results set into temporary table 22 INSERT to Temporary Table Data to be returned as a result set is inserted into the declared global temporary table. This example shows a simple case of inserting directly from a SELECT statement against a DB2 table. The SELECT could also be separate with data populated to host variables which can be manipulated or translated with the INSERT referring to a set of host variables. Additionally, the population of the rows can be from other sources such as IMS databases, flat files, or other sources accessible by the COBOL program, again using host variables within the INSERT statement. 22

23 INSERT/UPDATE Same structure as stored procedure for data retrieval Probably don t need returned results set (or temporary table or cursor) INPUT parameters Key(s) for row to UPDATE Column data to UPDATE or INSERT OUTPUT parameters Communicate status (OKAY, WARN, NOTFOUND, ERROR) # Rows inserted/updated 23 INSERT/UPDATE example The previous example showed a stored procedure retrieving data based on a key specified in an input parameter(s). For an INSERT or UPDATE, the process is similar, but it s not likely that there would be any returned result set(s). This implies that there would be no need to declare a temporary table or cursor for the result set. Input parameters would contain any column data to be inserted, and the INSERT statement would refer to the input parameter host variables. For an UPDATE, the key of the row(s) to be updated would also be included as a parameter(s). In most cases, the output parameters would include a status of the call (status code, error messages) as well as a count for the number of rows affected by the call. 23

24 Progress Why, What DB2 COBOL Java Challenges Support 24 Objective 3 This section looks at how a Java application is coded using the JDBC API to CALL the z/os external stored procedure. 24

25 The Java Side Java application design Java API s JDBC, SQLJ, others JDBC Steps JDBC Example SQLJ Example 25 The Java Side This section shows the overall design of our Java application, a quick review of some of the Java API s available. 25

26 Java Application Design Java Enterprise Edition application HTML screens through JSP pages Struts (open source web framework) Session Beans for transaction management (EJB) Handles commits, rollback Data Access Objects (DAO) to invoke stored procedure using JDBC Reusable objects for error handling Debug capabilities for CallableStatement class More in Support Hints 26 Java Application Design Our online application is a Java EE (Java Enterprise Edition) application based on the Struts MVC framework to present data to the user via HTML pages in a web browser. Behind the presentation layer we use EJB Session beans to manage the transactions for commits and rollbacks (the Java EE server manages the transactions instead of application code to do the commits and rollbacks as needed). The session beans provided an interface to business classes which in turn invoke methods in Data Access Objects which contain the database SQL. The SQL (CALL statement) is transmitted to the database through the JDBC API using the CallableStatement class. NOTE: For debug purposes, the CallableStatement class can be extended to show the values of host variables in application logging. This is discussed further in the Support Hints section. 26

27 Java Application Design Action Session Bean Business Object Data Access Open systems z/os JDBC DB2 Connect WLM DB2 27 Java Application Design Our Java application uses Struts for its presentation and control framework. The basic design uses an instance of a Struts Action to process the web request which in turn invokes a business method on an EJB session bean (through an EJB façade class not shown here). Behind the session bean method is a corresponding method on a business object which manages the connection to the database and invokes a database access method in a data access object. The data access object contains the interaction with the JDBC API to issue the CALL statement to DB2. In our environment, we use DB2 Connect as middleware from WebSphere (where the Java application runs) to DB2 on z/os. The stored procedures are running in a Workload Manager (WLM) region. 27

28 Java API s JDBC Dynamic SQL Part of Java Standard Edition specification Dynamic statement caching SQLJ Static SQL ISO Standard not part of base Java specification DB2 packages SQL is in the DB2 catalog We use JDBC Others Hibernate, ibatis, EJB 28 Java API s There are many API s available for issuing SQL statements from Java. Two major API s are JDBC and SQLJ. JDBC is part of the base Java JDK (Java Standard Edition) and issues dynamic SQL. To help in performance, dynamic statement caching is used to improve the throughput of SQL. SQLJ is not part of the JDK, but is an ISO standard and issues static SQL (packages are bound to DB2). Our applications use JDBC (very common). There are also other options available such as Hibernate, ibatis, and the EJB specification (enterprise beans). 28

29 Java JDBC Steps CallableStatement extension of Statement class Step 1 build CALL string and prepare the call Step 2 set input parameters, register output parameters Step 3 execute and retrieve output parameters Step 4 iterate through any result sets NOTE: This example does not show the EJB which manages the transaction, issuing commits or rollbacks in the case of failure. 29 JDBC Steps The steps to invoke a stored procedure using the JDBC API in a Java application are similar to using JDBC for other SQL statements like SELECT, INSERT, and UPDATE. A major difference is the use of the CallableStatement class from the API as compared to the PreparedStatement or Statement class. First, the CALL statement is built and then the CallableStatement is obtained from the Connection object using the preparecall( ) method. Second, any input and output parameters are defined to the CallableStatement by setting the contents of each input parameter and registering the location of each output parameter. Third, the CallableStatement is executed which invokes the stored procedure. On return, the output parameters are retrieved from the CallableStatement. Fourth, if there were any result sets returned, the JDBC API is used to iterate through the rows in the result set(s). 29

30 JDBC Example Part 1 String procname = GET_LIST"; String proccall = "CALL " + proccollection + "." + procname + "(?,?,?,?,?)"; CallableStatement cs = conn.preparecall(proccall); cs.setstring(1,keyobject.getfield1( )); cs.setstring(2,keyobject.getfield2( )); cs.registeroutparameter(3, java.sql.types.char); cs.registeroutparameter(4, java.sql.types.char); cs.registeroutparameter(5, java.sql.types.date); cs.execute( ); someobject.setstatus(cs.getstring(3)); 30 JDBC Example As indicated in the previous slide, the Java code starts with building a CALL statement string. This string is used to build a CallableStatement object from the current Connection object which represents the connection to the database. Any input parameters values are populated in the CALL statement from the local Java fields using the set methods of the CallableStatement (cs is the local instance name in this example for the CallableStatement). Additionally, any output parameters need to be registered with the CallableStatement with the registeroutparameter( ) method. Once the input and output parameters are accounted for, the CallableStatment is executed using the execute( ) method which processes the CALL statement, invoking the remote stored procedure. On return, the output parameters are obtained using the associated get method(s) of the CallableStatement class. 30

31 JDBC Example Part 2 ResultSet rs = cs.getresultset( ); while (rs.next( )) { MyResult result = new MyResult( ); result.setstatus(rs.getstring( RETURN_MSGS")); result.setmessages(rs.getstring( RETURN_MSGS")); result.setdatefield(rs.getdate( COL_5")); } if (rs.getmoreresults( )) { rs = cs.getresultset( ); while (rs.next( )) { } } Iterate through additional result sets if any 31 JDBC Example Part 2 After the CALL is complete and any output parameters obtained (assuming that no error was identified), result sets are processed if there are any. This example shows that the first result set is located using the getresultset( ) method on the CallableStatement object. Similar to how result sets are processed for SELECT statements through a PreparedStatement, the next( ) method of the ResultSet object is used to iterate through the returned rows and the appropriate get( ) methods called to get individual column values. The getmoreresults( ) method (returns true or false) is invoked to determine if more result sets exist to be processed. If there are, the getresultset( ) method is repeated and the returned ResultSet object is processed the same as the first until there are no remaining result sets. 31

32 SQLJ Example #sql [myconnctx] {CALL GET_LIST( :IN field1, :IN field2, :OUT status, :OUT messages, :OUT datefield)}; Multiple result sets: index.jsp?topic=/com.ibm.db2.udb.doc/ad/ cjvsjmlt.htm 32 SQLJ Example This slide is provided mainly to indicate that the SQLJ API supports calls to DB2 Stored Procedures and to give a visual example. We do not use the SQLJ API in our application or within other applications. 32

33 Progress Why, What DB2 COBOL Java Challenges Support 33 Objective 4 We obviously had some challenges in pulling the two sides together. The objective of this section is to communicate some of the challenges we encountered and how we resolved them. 33

34 Challenges Encountered SQL Error Codes there were many Application changes even when there weren t any Distributed development Mainframe COBOL vs. Java WLM environment Miscellaneous Client fields (e.g. use in triggers) Security calling from program vs. testing 34 Challenges Encountered We certainly encountered our share of problems and issues which made our development challenging at times (what else is new). There was a learning curve as we learned how to avoid SQL errors (at least partly avoid) and understand what needed to be done when different types of application changes were made on the mainframe side. Having a mixture of mainframe COBOL developers and Java developers implies that there will be some confusion when it comes to problem resolution, and our project was no different. The WLM environment still remains partially a mystery to the developers, but we have made some progress. Finally, we experienced some miscellaneous challenges, some of which we re still trying to resolve. 34

35 SQL Error Codes -805/SQL0805N Ensure STAY RESIDENT NO (main) STOP/STA procedure for main program change Quiesce/resume WLM pick up load module changes for lower level AI s or wait for WLM recycle Migrating to new test environments 35 SQL Error -805 Stored procedures in COBOL wasn t unlike other mainframe COBOL DB2 applications in that there were plenty of -805 errors to track down. The difference was that the developers couldn t always explain them. An initial learning opportunity was to declare our stored procedures as STAY RESIDENT NO so that changes are more readily effective in the test environment. Unfortunately, if we changed a dynamically called subprogram, the WLM wouldn t know about the change. In this event, we had to contact our administrators to quiesce and resume the WLM environment to pick up the change. Alternatively, we could wait for the WLM to recycle naturally (such as in an overnight cycle), but usually, we couldn t wait. This issue alone could cause much confusion, especially if no one knew what changed when a -805 would occur. Most of the issues revolved around the use of dynamically called subprograms. This problem was also common when moving from one test environment to another. 35

36 SQL Error Codes -471/SQL0471N stored procedure is stopped DIS PROCEDURE(TSTn.MY_PROC_NAME) to view status STA PROCEDURE(TSTn.MY_PROC_NAME) Use SCOPE(GROUP) for data sharing -430/SQL0430N stored procedure abended Correct COBOL program abend Repeated instances may cause SQL Error Codes continued -471 We received this error off and on when a stored procedure would be stopped in DB2. Sometimes the stop would be as a result of repeated program abends, but sometimes it was unclear why the procedure was stopped. The START/-STA command was used to start the procedure in the appropriate test environment This occurred as a result of the COBOL program abending. In the Java application, we handled any ERROR status in the same way and indicated to the user that there was a temporary problem with the system (as compared to displaying a specific error code). Specific error information was logged for developer review. Repeated occurrences of this SQL code resulted in stopping the procedure, so we would have to start the procedure after the error was corrected. 36

37 Application Changes Don t always know application changed stored procedures aren t working Making application changes effective Use STAY RESIDENT NO for test Picks up SP load module changes Use STAY RESIDENT YES for production for performance Must STOP/START procedure on change Dynamic subprograms Not affected by STAY RESIDENT NO/YES Quiesce/refresh WLM environment for changes 37 Application Changes This was one of our biggest challenges for support by the developers. To make COBOL programs reusable (i.e. between multiple stored procedures or between multiple COBOL-only processes), subprograms were called dynamically. Declaring the Stored Procedure as STAY RESIDENT NO accounted for refreshing the version of changed stored procedure main programs. However, this did not account for making changes to dynamically called subprograms effective. This required a refresh of the WLM environment which had cached versions of those subprograms. So, it could be very challenging to keep track of each program change and what was required to make it effective. For production, with STAY RESIDENT YES for better performance. See the article in the reference section to see how STAY RESIDENT YES works with PROGRAM TYPE SUB. 37

38 Distributed Environment COBOL/mainframe vs. Java developers Logon to multiple platforms View debug info Tools on different platforms Unit testing tools Debug tools Release management We had lack of mainframe debug tool Ownership of different application code Same issues as for any cross-platform applications 38 Distributed Environment It was challenging for developers to coordinate problem resolution between the Java and COBOL sides. Bringing the two sides together in a single application was basically the same as having an integration point between two separate applications. To make a problem determination, it was necessary for a collective access to messages (e.g. SYSOUT) on z/os as well as log information on the Java application server. This is more convenient for developers who are familiar with both sides (and we were lucky to have that), but it is even more troublesome when the Java developers don t even know how to logon to the mainframe. As with any cross-platform project, there were challenges in managing all of the tools and release management, but the bigger challenges were with identifying what to fix when something was broken. It s helpful to have a developer(s)/architect(s) that is familiar with both platforms to coordinate and resolve issues between platforms (plentiful). However, it is also helpful to have problem resolution tools which indicate the source of the problem (see Support Hints). 38

39 WLM Environment WLM address space management/monitoring Know the right people to contact WLM administrators didn t have much more experience than the development team Dynamic subroutines changes require WLM quiesce/refresh Consider WLM Refresh Stored Procedure (more in Support Hints) Stopped procedures occurred periodically Difficult to identify results of stored procedure call -STOP/-STA PROC(ALL) admin access required 39 WLM Environment The WLM environment was new to the technical staff on the team, so it was imperative to know who the administrators were and how to contact them. In our case, we had a mailbox which was monitored by the administrators. Even with that, there were situations where the administrators couldn t readily identify why stored procedures weren t running, even if the WLM was up. As indicated earlier, the nature of dynamically called subprograms has a big impact on how applications are managed in a WLM environment. Any change required a WLM refresh which was only in the hands of our administrators. We are currently working on a stored procedure to allow us to do a refresh from the development area. There were many times when the application would receive an error because stored procedures were stopped. We attributed much of this to previous abends, but we weren t always sure of the cause. 39

40 Progress Why, What DB2 COBOL Java Challenges Support 40 Objective 5 As a result of our experiences in developing, testing, implementing, and supporting this application, this section shares some of the hints that we have for supporting DB2 Stored Procedures on z/os that are called by Java. 40

41 Support Hints Testing (including security) Debugging (cross-platform) Environment Developer skills Documentation Security Where we are today over one year later 41 Support Hints This section covers some of the things that we learned from a support perspective through the development, implementation, and support of our application. At the end of a discussion on the various areas of support, there is a summary on the state of the application today, over a year after implementation. 41

42 Support Hints Testing Stored Procedure tester (HTML/Java) Setting input parameters generically Obtaining output parameters generically Returning list of SP s More details on next slide Testing from COBOL Stub module to invoke SP Generic mainframe tool for calling load module Specify parameters/configuration 42 Support Hints Testing One tool that we found to be extremely valuable was an independent tool for invoking a stored procedure from a Java client program. There were numerous times when both the COBOL developers and mainframe developers believed that their components were functioning correctly, but problems were occurring. The tester removed the layer of business code to provide a generic interface to pass input parameters and receive output parameters and result sets through a web browser (HTML) interface. Additionally, mainframe developers used stub programs to call the stored procedure in two different ways. One was to use an in-house driver utility to call the dynamic subprograms. This allowed for unit testing of the called programs. Additionally, stub programs were used to actually perform an SQL CALL from another COBOL program. Even with these tools, there were many times when the Java/HTML tester was still necessary to resolve differences. See the next slide for more details on the Java/HTML stored procedure tester. 42

43 Support Hints SP Tester SELECT NAME, SCHEMA, EXTERNAL_NAME, RESULT_SETS, PARM_COUNT FROM SYSIBM.SYSROUTINES WHERE NAME LIKE? AND SCHEMA =? INPUT and OUTPUT parameters CallableStatement set and get methods Identify parameter field types at input time Convert entered name mask to all CAPS Special characters view HTML Security for SP execution Or third party product 43 Support Hints Stored Procedure Tester Here are some hints about building a custom Java/HTML stored procedure tester. A set of generic HTML pages displays a list of available stored procedures and accepts parameter values to be used in stored procedure execution. The SELECT statement retrieves stored procedure names from the DB2 catalog based on an entered schema and name mask. INPUT parameters and parameter (field) types are entered and set in the CallableStatement through get methods. The specified stored procedure is invoked through the CallableStatement and OUTPUT parameters are obtained through the set methods. Additionally, any result sets are obtained and displayed. We made the decision to automatically convert the entered procedure name mask to all CAPS to avoid confusion for the user. For a given user to be able to run a stored procedure, it was required that EXECUTE be granted to the user in DB2 (such as through as secondary authid). 43

44 Support Hints SP Tester 44 Support Hints Debugging These are two sample pages from the custom stored procedure tester that we created. Left: This shows the entry of a stored procedure mask to display a list of stored procedures matching the mask for a given schema name. Right: After selecting a stored procedure from a list, the user can specify all INPUT parameter values and Execute the procedure. The same page is redisplayed with results at the bottom of the page and with OUTPUT parameter values. 44

45 Support Hints Debugging Trace information DISPLAYs in COBOL log4j in Java (dynamic setting, multi-server) What to DISPLAY/log: All interface fields (input, output) Date/time differentiate between instances Java and COBOL show both sides Tool for stored procedure program tracing (mainframe) Stored Procedure tester Independent verification separate from Java/web application Debug capabilities for CallableStatement 45 Suport Hints Debugging It was difficult at times during testing to know what part of the application had a problem when things weren t working as expected. Trace information became very important to focus on either the Java or COBOL side. Some information that we included in Java logging and COBOL DISPLAY s: All interface fields (INPUT parameter values, OUTPUT parameter values) from the Java CALL and the COBOL SP Stored Procedure Name and date/time to differentiate between different instances of a call In our environment, we did not have support in our third party product to trace in the COBOL programs, so we were hampered with stepping through code as it executed. The stored procedure tester came in very handy to isolate issues between Java and COBOL. We have previously extended the PreparedStatement class to log host variable values when debugging, but we have yet to do so for the CallableStatement. As it is, only parameter markers (? s) show in the log. 45

46 Support Hints - Environment Ability to recycle WLM environment WLM_REFRESH IBM Stored Procedure We use SP Tester to invoke (test only) See STOP/-STA commands above Looking at the catalog (definitions and other) WLM view Need to know started task name(s) Indicates whether regions are running, when they started JESMSGLG error messages SYSOUT DISPLAY messages 46 Support Hints Environment During testing, we found it necessary to repeatedly recycle our WLM environment to pick up changed COBOL dynamically called subprograms. We had to submit requests to our administrators to do this which was cumbersome, and we ve since enabled the process for senior-level architects by configuring the WLM_REFRESH stored procedure from IBM. Our stored procedure tester provided an easy user interface to call this utility procedure. The STOP and START commands in DB2 were very useful, primarily for starting procedures that had reached a threshold for abends. We had to start the procedure after the program was corrected for errors introduced in testing. The ability to see the catalog for stored procedure definitions was important to validate which version of a stored procedure definition was in effect in a given test region. This was more of an issue when the definitions were still changing. The ability to view the WLM was critical. We used it to view DISPLAY s from the COBOL programs, view program dumps, and to determine whether WLM regions were actually running and if they had been restarted since latest changes were introduced into runtime libraries. 46

47 Support Hints Skills Mainframe COBOL WLM viewing started tasks DB2 programming (SQL, binds) DB2 commands (STOP, START, DIS) Open Systems Java/JDBC CallableStatement ResultSet DB2 SQL, error codes 47 Support Hints Skills There were obviously different sets of skills required to make the application work. It was useful to have some team members who had cross-domain skills to resolve differences between the mainframe and open systems environments. Additionally, it was helpful to have developers or architects who were knowledgeable of DB2 commands and who would navigate the WLM environment. As with any DB2 application, an understanding of DB2 SQL, binds, and error codes was essential (from a z/os perspective since DB2 is on z/os in our environment). 47

48 Support Hints Documents DB2 How to create stored procedures How the WLM works including refreshing, viewing current and history regions COBOL What comprises the standard interface and what common fields mean (status, messages) Java How to test stored procedures How to view results on the mainframe Overall Coding practices e.g. DISPLAY and logging 48 Support Hints Documents Our project created a large number of design and support documents to be used by developers during development and support. New developers rely on this documentation to understand the application and how to test and diagnose issues. DB2 We found it helpful to document how stored procedures are created including examples and where to find the DCLGEN card library files. It was also valuable to have information on how to work with and understand our Workload Manager environments, how to view them, how to recycle them, etc. COBOL We documented the standard interfaces, including what common fields mean such as error status codes. Doing things a common way made the application easier to understand. Java The stored procedure tester was used repeatedly, so it was important for developers to know how to use the tool. Sometimes, however, it was still necessary for Java developers to view results in the WLM on the mainframe. Overall Whether in Java or COBOL, we had documented coding practices which included minimum requirements for application logging. 48

49 Support Hints - Security SELECT vs. INSERT, UPDATE, DELETE Application requirements Debugging requirements (e.g. SELECT) Test vs. production Debugging, unit testing Querying Secondary authid Application id Individual users stored procedure testing 49 Support Hints Security In general, we apply DB2 security using secondary authid s with a few exceptions: Unit testing developers have individual access in test since they test with their own id s vs. an application level id. It s possible to include the individual user in the secondary authid, but we try to keep the test privileges equivalent to production privileges for an authid to show that it was adequately tested. Stored procedure testing for SELECT only stored procedures, we have granted access to EXECUTE for developers to validate that stored procedures are functioning properly. This implies that the user has read access to the results of the stored procedure (i.e. would normally have inquiry access in the application). Querying we have separate access for doing native SELECT statements to the database, especially in the test environment. Overall, we had to manage security for the application (application level id) and developer needs. 49

50 Support Hints - Status Application in production for almost a year Running smoothly Maintainable Some functionality exposed as web services from Java to another application Documentation is a must Coding Testing Errors Code changes 50 Support Hints The status of our application After going into production in 2007, the application has functioned normally for almost a year. The response time for the web application is good (generally 1-3 seconds per page). Almost as important as the stability of the runtime environment, the application has been maintainable with multiple subsequence functionality releases. The WLM environment is still a challenge at times and developers still get confused with dynamically-called subroutines, but the application continues to evolve. As an example, a few processes were adapted to function as web services to be called from another web application. Documentation has been a must for reference by developers maintaining the application, even by developers who contributed to the original coding. 50

51 References DB2 Stored Procedures for z/os - html CREATE PROCEDURE topic/com.ibm.db2.udb.doc/admin/r htm CREATE GLOBAL TEMPORARY TABLE index.jsp?topic=/com.ibm.db2.udb.doc/admin/ r htm Java CallableStatement (J2SE 1.4.2) lablestatement.html 51 51

52 References (cont d) SQLJ calls to Stored Procedures - index.jsp?topic=/com.ibm.db2.udb.doc/ad/ tjvsjcal.htm Article on STAY RESIDENT

53 That s a Wrap 53 53

54 Session F13 My Java App Called Your COBOL DB2 Stored Procedure John Mallonee Highmark Inc

DB2 for z/os Stored Procedures Update

DB2 for z/os Stored Procedures Update Robert Catterall, IBM rfcatter@us.ibm.com DB2 for z/os Stored Procedures Update Michigan DB2 Users Group May 15, 2013 Information Management Agenda A brief review of DB2 for z/os stored procedure enhancements

More information

Building and Managing Efficient data access to DB2. Vijay Bommireddipalli, Solutions Architect, Optim

Building and Managing Efficient data access to DB2. Vijay Bommireddipalli, Solutions Architect, Optim Building and Managing Efficient data access to DB2 Vijay Bommireddipalli, vijayrb@us.ibm.com Solutions Architect, Optim September 16, 2010 Information Management Disclaimer THE INFORMATION CONTAINED IN

More information

IBM Rational Business Developer (RBD) is a development environment that

IBM Rational Business Developer (RBD) is a development environment that C H A P T E R1 Introduction IBM Rational Business Developer (RBD) is a development environment that helps programmers write business applications quickly. An organization uses RBD to meet the following

More information

DB2 Stored Procedure and UDF Support in Rational Application Developer V6.01

DB2 Stored Procedure and UDF Support in Rational Application Developer V6.01 Session F08 DB2 Stored Procedure and UDF Support in Rational Application Developer V6.01 Marichu Scanlon marichu@us.ibm.com Wed, May 10, 2006 08:30 a.m. 09:40 a.m. Platform: Cross Platform Audience: -DBAs

More information

purequery Deep Dive Part 2: Data Access Development Dan Galvin Galvin Consulting, Inc.

purequery Deep Dive Part 2: Data Access Development Dan Galvin Galvin Consulting, Inc. purequery Deep Dive Part 2: Data Access Development Dan Galvin Galvin Consulting, Inc. Agenda The Problem Data Access in Java What is purequery? How Could purequery Help within My Data Access Architecture?

More information

DB2 Development Center Advanced Topics for z/os

DB2 Development Center Advanced Topics for z/os IBM Software Group DB2 Development Center Advanced Topics for z/os Peggy Rader - peggyr@us.ibm.com Agenda Getting Started Environment Settings JDBC Driver Support Using Java SDK 1.3.1 and SDK 1.4.1 Multiple

More information

DB2 for z/os: Programmer Essentials for Designing, Building and Tuning

DB2 for z/os: Programmer Essentials for Designing, Building and Tuning Brett Elam bjelam@us.ibm.com - DB2 for z/os: Programmer Essentials for Designing, Building and Tuning April 4, 2013 DB2 for z/os: Programmer Essentials for Designing, Building and Tuning Information Management

More information

Luckily, our enterprise had most of the back-end (services, middleware, business logic) already.

Luckily, our enterprise had most of the back-end (services, middleware, business logic) already. 2 3 4 The point here is that for real business applications, there is a connected back-end for services. The mobile part of the app is just a presentation layer that is unique for the mobile environment.

More information

Copyright 2016 Ramez Elmasri and Shamkant B. Navathe

Copyright 2016 Ramez Elmasri and Shamkant B. Navathe Chapter 10 Outline Database Programming: Techniques and Issues Embedded SQL, Dynamic SQL, and SQLJ Database Programming with Function Calls: SQL/CLI and JDBC Database Stored Procedures and SQL/PSM Comparing

More information

Tools to Develop New Linux Applications

Tools to Develop New Linux Applications Tools to Develop New Linux Applications IBM Software Development Platform Tools for every member of the Development Team Supports best practices in Software Development Analyst Architect Developer Tester

More information

Chapter 13 Introduction to SQL Programming Techniques

Chapter 13 Introduction to SQL Programming Techniques Chapter 13 Introduction to SQL Programming Techniques Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 13 Outline Database Programming: Techniques and Issues Embedded

More information

What s New in Studio and Server Enterprise Edition 6.0?

What s New in Studio and Server Enterprise Edition 6.0? What s New What s New in Studio and Server Enterprise Edition 6.0? Micro Focus Studio Enterprise Edition provides a contemporary analysis and development suite for migrating applications from traditional

More information

Migrating traditional Java EE applications to mobile

Migrating traditional Java EE applications to mobile Migrating traditional Java EE applications to mobile Serge Pagop Sr. Channel MW Solution Architect, Red Hat spagop@redhat.com Burr Sutter Product Management Director, Red Hat bsutter@redhat.com 2014-04-16

More information

DB2. Developing SQL and External Routines. DB2 Version 9 SC

DB2. Developing SQL and External Routines. DB2 Version 9 SC DB2 DB2 Version 9 for Linux, UNIX, and Windows Developing SQL and External Routines SC10-4373-00 DB2 DB2 Version 9 for Linux, UNIX, and Windows Developing SQL and External Routines SC10-4373-00 Before

More information

WebSphere Application Server, Version 5. What s New?

WebSphere Application Server, Version 5. What s New? WebSphere Application Server, Version 5 What s New? 1 WebSphere Application Server, V5 represents a continuation of the evolution to a single, integrated, cost effective, Web services-enabled, J2EE server

More information

Using SQL Developer. Oracle University and Egabi Solutions use only

Using SQL Developer. Oracle University and Egabi Solutions use only Using SQL Developer Objectives After completing this appendix, you should be able to do the following: List the key features of Oracle SQL Developer Identify menu items of Oracle SQL Developer Create a

More information

IBM Application Performance Analyzer for z/os Version IBM Corporation

IBM Application Performance Analyzer for z/os Version IBM Corporation IBM Application Performance Analyzer for z/os Version 11 IBM Application Performance Analyzer for z/os Agenda Introduction to Application Performance Analyzer for z/os A tour of Application Performance

More information

Quick Web Development using JDeveloper 10g

Quick Web Development using JDeveloper 10g Have you ever experienced doing something the long way and then learned about a new shortcut that saved you a lot of time and energy? I can remember this happening in chemistry, calculus and computer science

More information

Rational Application Developer 7 Bootcamp

Rational Application Developer 7 Bootcamp Rational Application Developer 7 Bootcamp Length: 1 week Description: This course is an intensive weeklong course on developing Java and J2EE applications using Rational Application Developer. It covers

More information

Oracle Application Development Framework Overview

Oracle Application Development Framework Overview An Oracle White Paper July 2009 Oracle Application Development Framework Overview Introduction... 1 Oracle ADF Making Java EE Development Simpler... 2 THE ORACLE ADF ARCHITECTURE... 3 The Business Services

More information

J2EE Development. Course Detail: Audience. Duration. Course Abstract. Course Objectives. Course Topics. Class Format.

J2EE Development. Course Detail: Audience. Duration. Course Abstract. Course Objectives. Course Topics. Class Format. J2EE Development Detail: Audience www.peaksolutions.com/ittraining Java developers, web page designers and other professionals that will be designing, developing and implementing web applications using

More information

IBM Rational Developer for System z Version 7.5

IBM Rational Developer for System z Version 7.5 Providing System z developers with tools for building traditional and composite applications in an SOA and Web 2.0 environment IBM Rational Developer for System z Version 7.5 Highlights Helps developers

More information

Generic Attach on Z/OS (or attachment demystified)

Generic Attach on Z/OS (or attachment demystified) Generic Attach on Z/OS (or attachment demystified) Jack Bailey BlueCross BlueShield of South Carolina Jack.bailey@bcbssc.com Session Code: A13 Date and Time of Presentation: May 14, 2010 08:30 AM 09:30

More information

Android PC Splash Brothers Design Specifications

Android PC Splash Brothers Design Specifications Android PC Splash Brothers Design Specifications Contributors: Zach Bair Taronish Daruwalla Joshua Duong Anthony Nguyen 1. Technology background The Android x86 project has been in existence since 2011.

More information

Develop a batch DB2 for z/os COBOL application using Rational Developer for System z

Develop a batch DB2 for z/os COBOL application using Rational Developer for System z Develop a batch DB2 for z/os COBOL application using Rational Developer for System z Make use of multiple Eclipse perspectives Skill Level: Intermediate Laurence England (englandl@us.ibm.com) STSM IBM

More information

2008 WebSphere System z Podcasts - Did you say Mainframe?

2008 WebSphere System z Podcasts - Did you say Mainframe? TITLE: WebSphere Extended Deployment for z/os HOST: Hi, and welcome to the Did you say mainframe? podcast series. This is where we regularly interview IBM technical experts who can help you to understand

More information

Java and the Java DataBase Connectivity (JDBC) API. Todd Kaufman April 25, 2002

Java and the Java DataBase Connectivity (JDBC) API. Todd Kaufman April 25, 2002 Java and the Java DataBase Connectivity (JDBC) API Todd Kaufman April 25, 2002 Agenda BIO Java JDBC References Q&A Speaker 4 years Java experience 4 years JDBC experience 3 years J2EE experience BS from

More information

Object Persistence Design Guidelines

Object Persistence Design Guidelines Object Persistence Design Guidelines Motivation Design guideline supports architects and developers in design and development issues of binding object-oriented applications to data sources The major task

More information

CSE 308. Database Issues. Goals. Separate the application code from the database

CSE 308. Database Issues. Goals. Separate the application code from the database CSE 308 Database Issues The following databases are created with password as changeit anticyber cyber cedar dogwood elm clan Goals Separate the application code from the database Encourages you to think

More information

IBM WebSphere Studio Asset Analyzer, Version 5.1

IBM WebSphere Studio Asset Analyzer, Version 5.1 Helping you quickly understand, enhance and maintain enterprise applications IBM, Version 5.1 Highlights n Provides interactive textual n Helps shorten the learning curve and graphic reports that help

More information

WebSphere Java Batch WP at ibm.com/support/techdocs Version Date: September 11, 2012

WebSphere Java Batch WP at ibm.com/support/techdocs Version Date: September 11, 2012 WebSphere Java Batch Version Date: September 11, 2012 Agenda Business Pressures on Traditional Batch IBM WebSphere Java Batch Overview IBM WebSphere Java Batch Feature Focus IBM WebSphere Java Batch for

More information

Oracle Warehouse Builder 10g Runtime Environment, an Update. An Oracle White Paper February 2004

Oracle Warehouse Builder 10g Runtime Environment, an Update. An Oracle White Paper February 2004 Oracle Warehouse Builder 10g Runtime Environment, an Update An Oracle White Paper February 2004 Runtime Environment, an Update Executive Overview... 3 Introduction... 3 Runtime in warehouse builder 9.0.3...

More information

Introduction and Overview

Introduction and Overview IBM z/os Connect Enterprise Edition V2.0 API API API API API CICS Clients in the API Economy IMS DB2 Other Introduction and Overview 1 2015, IBM Corporation Topics to be Discussed Links to Pages Setting

More information

Description of CORE Implementation in Java

Description of CORE Implementation in Java Partner s name: Istat WP number and name: WP6 Implementation library for generic interface and production chain for Java Deliverable number and name: 6.1 Description of Implementation in Java Description

More information

APIs Economy for Mainframe Customers: A new approach for modernizing and reusing mainframe assets

APIs Economy for Mainframe Customers: A new approach for modernizing and reusing mainframe assets Contact us: ZIO@hcl.com APIs Economy for Mainframe Customers: A new approach for modernizing and reusing mainframe assets www.zio-community.com Meet Our Experts and Learn the Latest News Copyright 2018

More information

The Modern Mainframe. IBM Systems. Powerful, secure, dependable and easier to use. Bernice Casey System z User Experience

The Modern Mainframe. IBM Systems. Powerful, secure, dependable and easier to use. Bernice Casey System z User Experience Powerful, secure, dependable and easier to use Bernice Casey (casey@us.ibm.com) System z User Experience Steven Ma (stevenma@us.ibm.com) Application Integration Middleware User Experience 2006 IBM Corporation

More information

Overview. Database Application Development. SQL in Application Code. SQL in Application Code (cont.)

Overview. Database Application Development. SQL in Application Code. SQL in Application Code (cont.) Overview Database Application Development Chapter 6 Concepts covered in this lecture: SQL in application code Embedded SQL Cursors Dynamic SQL JDBC SQLJ Stored procedures Database Management Systems 3ed

More information

Database Application Development

Database Application Development Database Application Development Chapter 6 Database Management Systems 3ed 1 Overview Concepts covered in this lecture: SQL in application code Embedded SQL Cursors Dynamic SQL JDBC SQLJ Stored procedures

More information

Database Application Development

Database Application Development Database Application Development Chapter 6 Database Management Systems 3ed 1 Overview Concepts covered in this lecture: SQL in application code Embedded SQL Cursors Dynamic SQL JDBC SQLJ Stored procedures

More information

DB2 QMF Data Service Version 12 Release 1. Studio User's Guide IBM SC

DB2 QMF Data Service Version 12 Release 1. Studio User's Guide IBM SC DB2 QMF Data Service Version 12 Release 1 Studio User's Guide IBM SC27-8886-00 DB2 QMF Data Service Version 12 Release 1 Studio User's Guide IBM SC27-8886-00 Note Before using this information and the

More information

2017, IBM Corporation Liberty z/os Good Practices. WebSphere Liberty z/os A review of key concepts

2017, IBM Corporation Liberty z/os Good Practices. WebSphere Liberty z/os A review of key concepts WebSphere Liberty z/os A review of key concepts 1 Objective of this Presentation Baseline of Understanding???!!! Provide a set of key concepts and principles of Liberty z/os that will help with the details

More information

An Introduction to Stored Procedures in MySQL 5 by Federico Leven6 Apr 2011

An Introduction to Stored Procedures in MySQL 5 by Federico Leven6 Apr 2011 An Introduction to Stored Procedures in MySQL 5 by Federico Leven6 Apr 21 MySQL 5 introduced a plethora of new features - stored procedures being one of the most significant. In this tutorial, we will

More information

"Web Age Speaks!" Webinar Series

Web Age Speaks! Webinar Series "Web Age Speaks!" Webinar Series Java EE Patterns Revisited WebAgeSolutions.com 1 Introduction Bibhas Bhattacharya CTO bibhas@webagesolutions.com Web Age Solutions Premier provider of Java & Java EE training

More information

Solution overview VISUAL COBOL BUSINESS CHALLENGE SOLUTION OVERVIEW BUSINESS BENEFIT

Solution overview VISUAL COBOL BUSINESS CHALLENGE SOLUTION OVERVIEW BUSINESS BENEFIT BUSINESS CHALLENGE There is an increasing demand from users of business software for easier to use applications which integrate with other business systems. As a result IT organizations are being asked

More information

COMMUNICATION PROTOCOLS

COMMUNICATION PROTOCOLS COMMUNICATION PROTOCOLS Index Chapter 1. Introduction Chapter 2. Software components message exchange JMS and Tibco Rendezvous Chapter 3. Communication over the Internet Simple Object Access Protocol (SOAP)

More information

2012 Microsoft Corporation. All rights reserved. Microsoft, Active Directory, Excel, Lync, Outlook, SharePoint, Silverlight, SQL Server, Windows,

2012 Microsoft Corporation. All rights reserved. Microsoft, Active Directory, Excel, Lync, Outlook, SharePoint, Silverlight, SQL Server, Windows, 2012 Microsoft Corporation. All rights reserved. Microsoft, Active Directory, Excel, Lync, Outlook, SharePoint, Silverlight, SQL Server, Windows, Windows Server, and other product names are or may be registered

More information

To find a quick and easy route to web-enable

To find a quick and easy route to web-enable BY JIM LEINBACH This article, the first in a two-part series, examines IBM s CICS Web Support (CWS) and provides one software developer s perspective on the strengths of CWS, the challenges his site encountered

More information

ClearPath Secure Java Overview For ClearPath Libra and Dorado Servers

ClearPath Secure Java Overview For ClearPath Libra and Dorado Servers 5/18/2007 Page 1 ClearPath Secure Java Overview For ClearPath Libra and Dorado Servers Technical Presentation 5/18/2007 Page 2 Agenda ClearPath Java for Core Business Transformation Overview Architectural

More information

Idle WebSphere Tuning Considerations

Idle WebSphere Tuning Considerations Idle WebSphere Tuning Considerations Now updated for WebSphere v8.5.5 Beena Hotchandani, IBM Performance Analyst Stephen Kinder, IBM Senior Technical Staff, WebSphere Virtualization Architect Table of

More information

sqamethods Approach to Building Testing Automation Systems

sqamethods Approach to Building Testing Automation Systems sqamethods Approach to Building Testing Automation Systems By Leopoldo A. Gonzalez leopoldo@sqamethods.com BUILDING A TESTING AUTOMATION SYSTEM...3 OVERVIEW...3 GOALS FOR AN AUTOMATION SYSTEM...3 BEGIN

More information

IBM CICS TS V5.5. Your essential guide to this release

IBM CICS TS V5.5. Your essential guide to this release IBM CICS TS V5.5 Your essential guide to this release CICS TS V5.5 As CICS reaches its 50th year of CICS Transaction Server we arrive at the launch of CICS TS V5.5, our most advanced and powerful version

More information

Certkiller.P questions

Certkiller.P questions Certkiller.P2140-020.59 questions Number: P2140-020 Passing Score: 800 Time Limit: 120 min File Version: 4.8 http://www.gratisexam.com/ P2140-020 IBM Rational Enterprise Modernization Technical Sales Mastery

More information

Db2 for z/os Gets Agile

Db2 for z/os Gets Agile New England Db2 Users Group September 28, 2017 Db2 for z/os Gets Agile Robert Catterall IBM Senior Consulting Db2 for z/os Specialist 2017 IBM Corporation Agenda The distinction between data-as-a-service

More information

Learning Objectives. Description. Your AU Expert(s) Trent Earley Behlen Mfg. Co. Shane Wemhoff Behlen Mfg. Co.

Learning Objectives. Description. Your AU Expert(s) Trent Earley Behlen Mfg. Co. Shane Wemhoff Behlen Mfg. Co. PL17257 JavaScript and PLM: Empowering the User Trent Earley Behlen Mfg. Co. Shane Wemhoff Behlen Mfg. Co. Learning Objectives Using items and setting data in a Workspace Setting Data in Related Workspaces

More information

ZOS15P1 - Rational Business Developper : Comment développer rapidement une application zos/db2 sans connaissance Cobol avec EGL et RBD

ZOS15P1 - Rational Business Developper : Comment développer rapidement une application zos/db2 sans connaissance Cobol avec EGL et RBD IBM Software Group ZOS15P1 - Rational Business Developper : Comment développer rapidement une application zos/db2 sans connaissance Cobol avec EGL et RBD What is EGL? IBM s high-level procedural programming

More information

DB2 for z/os Distributed Data Facility Questions and Answers

DB2 for z/os Distributed Data Facility Questions and Answers DB2 for z/os Distributed Data Facility Questions and Answers Michigan DB2 Users Group Robert Catterall, IBM rfcatter@us.ibm.com May 11, 2016 2016 IBM Corporation Agenda DDF monitoring and tuning DDF application

More information

Expert Stored Procedure Monitoring, Analysis and Tuning on System z

Expert Stored Procedure Monitoring, Analysis and Tuning on System z Expert Stored Procedure Monitoring, Analysis and Tuning on System z Steve Fafard, Product Manager, IBM OMEGAMON XE for DB2 Performance Expert on z/os August 16, 2013 13824 Agenda What are stored procedures?

More information

Service-Oriented Architecture (SOA)

Service-Oriented Architecture (SOA) Service-Oriented Architecture (SOA) SOA is a software architecture in which reusable services are deployed into application servers and then consumed by clients in different applications or business processes.

More information

10. Replication. CSEP 545 Transaction Processing Philip A. Bernstein. Copyright 2003 Philip A. Bernstein. Outline

10. Replication. CSEP 545 Transaction Processing Philip A. Bernstein. Copyright 2003 Philip A. Bernstein. Outline 10. Replication CSEP 545 Transaction Processing Philip A. Bernstein Copyright 2003 Philip A. Bernstein 1 Outline 1. Introduction 2. Primary-Copy Replication 3. Multi-Master Replication 4. Other Approaches

More information

IBM DB2 for z/os Application Developer Certification

IBM DB2 for z/os Application Developer Certification IBM DB2 for z/os Application Developer Certification Professional Certification Exam Copyright 2018 Computer Business International, Inc. www.cbi4you.com 1 What does it involve? IBM DB2 for z/os Application

More information

Introduction to Computer Science and Business

Introduction to Computer Science and Business Introduction to Computer Science and Business The Database Programming with PL/SQL course introduces students to the procedural language used to extend SQL in a programatic manner. This course outline

More information

In the most general sense, a server is a program that provides information

In the most general sense, a server is a program that provides information d524720 Ch01.qxd 5/20/03 8:37 AM Page 9 Chapter 1 Introducing Application Servers In This Chapter Understanding the role of application servers Meeting the J2EE family of technologies Outlining the major

More information

IBM Tivoli OMEGAMON XE on z/os. Troubleshooting No-data Conditions on the Enhanced 3270 User Interface

IBM Tivoli OMEGAMON XE on z/os. Troubleshooting No-data Conditions on the Enhanced 3270 User Interface IBM Tivoli OMEGAMON XE on z/os Troubleshooting No-data Conditions on the Enhanced 3270 User Interface Version 1.3, November, 2013 IBM Tivoli OMEGAMON XE on z/os Troubleshooting No-data Conditions on the

More information

Websphere Server 8.5 Best Practices Oracle FLEXCUBE Universal Banking Release [December] [2016]

Websphere Server 8.5 Best Practices Oracle FLEXCUBE Universal Banking Release [December] [2016] Websphere Server 8.5 Best Practices Oracle FLEXCUBE Universal Banking Release 12.3.0.0.0 [December] [2016] Table of Contents 1. INTRODUCTION... 1-1 1.1 BACKGROUND... 1-1 1.2 BASICS OF WEBSPHERE... 1-1

More information

JDBC [Java DataBase Connectivity]

JDBC [Java DataBase Connectivity] JDBC [Java DataBase Connectivity] Introduction Almost all the web applications need to work with the data stored in the databases. JDBC is Java specification that allows the Java programs to access the

More information

Appendix C WORKSHOP. SYS-ED/ Computer Education Techniques, Inc.

Appendix C WORKSHOP. SYS-ED/ Computer Education Techniques, Inc. Appendix C WORKSHOP SYS-ED/ Computer Education Techniques, Inc. 1 Preliminary Assessment Specify key components of WSAD. Questions 1. tools are used for reorganizing Java classes. 2. tools are used to

More information

Version Overview. Business value

Version Overview. Business value PRODUCT SHEET CA Ideal for CA Datacom CA Ideal for CA Datacom Version 14.0 An integrated mainframe application development environment for z/os which provides an interface for web enablement, CA Ideal

More information

IZ0-144Oracle 11g PL/SQL Certification (OCA) training

IZ0-144Oracle 11g PL/SQL Certification (OCA) training IZ0-144Oracle 11g PL/SQL Certification (OCA) training Advanced topics covered in this course: Managing Dependencies of PL/SQL Objects Direct and Indirect Dependencies Using the PL/SQL Compiler Conditional

More information

On slide 2 here I have a disclaimer about particular trademarks that are used in this presentation. Now let s go to slide 3.

On slide 2 here I have a disclaimer about particular trademarks that are used in this presentation. Now let s go to slide 3. DB2 for z/os Best Practices DDF Connectivity John J. Campbell Distinguished Engineer DB2 for z/os Development db2zinfo@us.ibm.com 2011 IBM Corporation Transcript of webcast Slide 1 (00:00) Hello, this

More information

Stored Procedure Monitoring and Analysis

Stored Procedure Monitoring and Analysis Stored Procedure Monitoring and Analysis Paul Bartak, IBM DB2 Advisor Agenda What are stored procedures? Benefits of stored procedures Stored procedure analysis Issues and solutions Monitoring stored procedures

More information

Questions and Answers. A. A DataSource is the basic service for managing a set of JDBC drivers.

Questions and Answers. A. A DataSource is the basic service for managing a set of JDBC drivers. Q.1) What is, in terms of JDBC, a DataSource? A. A DataSource is the basic service for managing a set of JDBC drivers B. A DataSource is the Java representation of a physical data source C. A DataSource

More information

Speech 2 Part 2 Transcript: The role of DB2 in Web 2.0 and in the IOD World

Speech 2 Part 2 Transcript: The role of DB2 in Web 2.0 and in the IOD World Speech 2 Part 2 Transcript: The role of DB2 in Web 2.0 and in the IOD World Slide 1: Cover Welcome to the speech, The role of DB2 in Web 2.0 and in the Information on Demand World. This is the second speech

More information

JCL JOB CONTROL LANGUAGE

JCL JOB CONTROL LANGUAGE Mainframe Concepts:- What is Mainframe Difference between Open source Applications and Mainframe Application Where do we use Mainframe Applications Operating System information Resource Access Control

More information

DB2 for z/os Distributed Data Facility Questions and Answers

DB2 for z/os Distributed Data Facility Questions and Answers Robert Catterall, IBM rfcatter@us.ibm.com DB2 for z/os Distributed Data Facility Questions and Answers New England DB2 Users Group March 26, 2015 Information Management 2015 IBM Corporation Agenda Some

More information

What s new with EntireX Communicator 7.3 Rolf Bahlke crossvision Chief Architect

What s new with EntireX Communicator 7.3 Rolf Bahlke crossvision Chief Architect What s new with EntireX Communicator 7.3 Rolf Bahlke crossvision Chief Architect October 2006 Project Status Next release of EntireX Communicator Version 7.3 Planned release date end of November 2006 z/os

More information

Oracle Fusion Middleware 11g: Build Applications with ADF I

Oracle Fusion Middleware 11g: Build Applications with ADF I Oracle University Contact Us: +966 1 1 2739 894 Oracle Fusion Middleware 11g: Build Applications with ADF I Duration: 5 Days What you will learn This course is aimed at developers who want to build Java

More information

REPORT MICROSOFT PATTERNS AND PRACTICES

REPORT MICROSOFT PATTERNS AND PRACTICES REPORT MICROSOFT PATTERNS AND PRACTICES Corporate Headquarters Nucleus Research Inc. 100 State Street Boston, MA 02109 Phone: +1 617.720.2000 Nucleus Research Inc. TOPICS Application Development & Integration

More information

The QMF Family Newsletter 1 st Quarter 2012 Edition

The QMF Family Newsletter 1 st Quarter 2012 Edition The QMF Family Newsletter 1 st Quarter 2012 Edition In this Issue QMF Classic perspective Latest Tip using the ISPF editor with QMF queries and procedures A message from the developers of QMF Want to see

More information

Build and Deploy Stored Procedures with IBM Data Studio

Build and Deploy Stored Procedures with IBM Data Studio Build and Deploy Stored Procedures with IBM Data Studio December 19, 2013 Presented by: Anson Kokkat, Product Manager, Optim Database Tools 1 DB2 Tech Talk series host and today s presenter: Rick Swagerman,

More information

2017, IBM Corporation Liberty z/os Good Practices. WebSphere Liberty z/os Applications and Application Deployment

2017, IBM Corporation Liberty z/os Good Practices. WebSphere Liberty z/os Applications and Application Deployment WebSphere Liberty z/os Applications and Application Deployment 1 Objective of this Presentation Provide an understanding of the application types supported by Liberty Provide a general understanding of

More information

Designing your BI Architecture

Designing your BI Architecture IBM Software Group Designing your BI Architecture Data Movement and Transformation David Cope EDW Architect Asia Pacific 2007 IBM Corporation DataStage and DWE SQW Complex Files SQL Scripts ERP ETL Engine

More information

Lecture 2. Introduction to JDBC

Lecture 2. Introduction to JDBC Lecture 2 Introduction to JDBC Introducing JDBC According to Sun, JDBC is not an acronym, but is commonly misinterpreted to mean Java DataBase Connectivity JDBC: is an API that provides universal data

More information

Migrating Oracle Databases To Cassandra

Migrating Oracle Databases To Cassandra BY UMAIR MANSOOB Why Cassandra Lower Cost of ownership makes it #1 choice for Big Data OLTP Applications. Unlike Oracle, Cassandra can store structured, semi-structured, and unstructured data. Cassandra

More information

Exam Name: IBM Certified System Administrator - WebSphere Application Server Network Deployment V7.0

Exam Name: IBM Certified System Administrator - WebSphere Application Server Network Deployment V7.0 Vendor: IBM Exam Code: 000-377 Exam Name: IBM Certified System Administrator - WebSphere Application Server Network Deployment V7.0 Version: Demo QUESTION 1 An administrator would like to use the Centralized

More information

THIS IS ONLY SAMPLE RESUME - DO NOT COPY AND PASTE INTO YOUR RESUME. WE ARE NOT RESPONSIBLE Name: xxxxxx

THIS IS ONLY SAMPLE RESUME - DO NOT COPY AND PASTE INTO YOUR RESUME. WE ARE NOT RESPONSIBLE Name: xxxxxx Name: xxxxxx Email ID: xxxxxx Ph: xxxxxx Summary: Over 7 years of experience in object oriented programming, design and development of Multi-Tier distributed, Enterprise applications using Java and J2EE

More information

C Q&As. DB2 9.7 SQL Procedure Developer. Pass IBM C Exam with 100% Guarantee

C Q&As. DB2 9.7 SQL Procedure Developer. Pass IBM C Exam with 100% Guarantee C2090-545 Q&As DB2 9.7 SQL Procedure Developer Pass IBM C2090-545 Exam with 100% Guarantee Free Download Real Questions & Answers PDF and VCE file from: https://www.pass4lead.com/c2090-545.html 100% Passing

More information

MongoDB Web Architecture

MongoDB Web Architecture MongoDB Web Architecture MongoDB MongoDB is an open-source, NoSQL database that uses a JSON-like (BSON) document-oriented model. Data is stored in collections (rather than tables). - Uses dynamic schemas

More information

A Perspective on the Transformation of zseries to Support New Workloads

A Perspective on the Transformation of zseries to Support New Workloads A Perspective on the Transformation of zseries to Support New Workloads Carl Wohlers IBM Corporation carlw@us.ibm.com 1-877-535-6382 Mainframe and Distributed Server Integration In days of yore, the mainframe

More information

Key Metrics for DB2 for z/os Subsystem and Application Performance Monitoring (Part 1)

Key Metrics for DB2 for z/os Subsystem and Application Performance Monitoring (Part 1) Key Metrics for DB2 for z/os Subsystem and Application Performance Monitoring (Part 1) Robert Catterall IBM March 12, 2014 Session 14610 Insert Custom Session QR if Desired. The genesis of this presentation

More information

Adapter for Mainframe

Adapter for Mainframe BEA WebLogic Java Adapter for Mainframe Introduction Release 5.1 Document Date: August 2002 Copyright Copyright 2002 BEA Systems, Inc. All Rights Reserved. Restricted Rights Legend This software and documentation

More information

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc. Chapter 1 GETTING STARTED SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: WSAD. J2EE business topologies. Workbench. Project. Workbench components. Java development tools. Java projects

More information

Architecting Java solutions for CICS This course presents the compelling reasons for developing Java applications in CICS Transaction Server. The course covers the various usage models of Java applications

More information

CICS VSAM Transparency

CICS VSAM Transparency Joe Gailey Senior IT Specialists Client Technical Specialist for CICS z/os Tools 10 th May 2013 CICS VSAM Transparency AGENDA Business Issue IBM s Solution How CICS VT Works (Deep Dive) Conclusions / Questions

More information

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc. Chapter 1 GETTING STARTED SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: The IDE: Integrated Development Environment. MVC: Model-View-Controller Architecture. BC4J: Business Components

More information

Text search on DB2 for z/os data

Text search on DB2 for z/os data Session: H03 Text search on DB2 for z/os data Peggy Zagelow IBM May 07, 2007 01:40 p.m. 02:40 p.m. Platform: DB2 for z/os If you have text data in DB2 for z/os character, varchar, and CLOB fields, how

More information

Mainframe Developer NO.2/29, South Dhandapani St, Burkit road, T.nagar, Chennai-17. Telephone: Website:

Mainframe Developer NO.2/29, South Dhandapani St, Burkit road, T.nagar, Chennai-17. Telephone: Website: Mainframe Developer Mainframe Developer Training Syllabus: IBM Mainframe Concepts Architecture Input/output Devices JCL Course Syllabus INTRODUCTION TO JCL JOB STATEMENT CLASS PRTY MSGCLASS MSGLEVEL TYPRUN

More information

More reading: A series about real world projects that use JavaServer Faces:

More reading: A series about real world projects that use JavaServer Faces: More reading: A series about real world projects that use JavaServer Faces: http://www.jsfcentral.com/trenches 137 This is just a revision slide. 138 Another revision slide. 139 What are some common tasks/problems

More information

Announcements. SQL: Part IV. Transactions. Summary of SQL features covered so far. Fine prints. SQL transactions. Reading assignments for this week

Announcements. SQL: Part IV. Transactions. Summary of SQL features covered so far. Fine prints. SQL transactions. Reading assignments for this week Announcements 2 SQL: Part IV CPS 216 Advanced Database Systems Reading assignments for this week A Critique of ANSI SQL Isolation Levels, by Berenson et al. in SIGMOD 1995 Weaving Relations for Cache Performance,

More information

Application Development Best Practice for Q Replication Performance

Application Development Best Practice for Q Replication Performance Ya Liu, liuya@cn.ibm.com InfoSphere Data Replication Technical Enablement, CDL, IBM Application Development Best Practice for Q Replication Performance Information Management Agenda Q Replication product

More information

Architecting Java solutions for CICS

Architecting Java solutions for CICS Architecting Java solutions for CICS Architecting Java solutions for CICS Course introduction Course introduction Reasons for hosting Java in CICS Requirements: Knowledge of transaction processing Experience

More information