a natural web front end using cics transaction gateway
TRANSCRIPT
05/02/23
A Natural Web Front End usingCICS Transaction Gateway
Michael Erichsen, CSC
GSE Nordic and UK CICS ConferenceHursley, May 1999
Session N25
05/02/23
Agenda
CSC
Covering Students’ Living Costs
The US2000 Project
A three Tier Architecture
Three different views of Data
The Program Flow
Java Development
Other Challenges
05/02/23
CSC
A “Collection of Small Companies” - 51,000 employees Management Consulting Systems Integration & IT Consulting Technology Management
CSC Scandinavia CSC Denmark CSC Computer Management CSC Sweden
05/02/23
Agenda
Covering Students’ Living Costs
05/02/23
Covering Students’ Living Costs
SU (Statens Uddannelsesstøtte) is the Danish State Education Grants and Loan Scheme Agency
Provides for 250,000 students every year
Tuition is free at public and most private educational institutions
Supports students with grants and loans
Annual budget over 8,000,000,000 DKK - 0.6% of GNP
05/02/23
Agenda
The US2000 Project
05/02/23
The US2000 Project
The current system consists of 70+ 3270 applications running Software AG Natural and Adabas on CICS/VSE
The Agency decided in 1997 to modernise system
Asked three partners for proposals November 1997
A technical model was prepared by CSC in May 1998
Specification made in June 1998
CSC on project July 1998
Pilot production 2Q 1999
Full implementation 4Q 1999
05/02/23
Why a Web Interface?
A modern graphical user interface
Safeguard the investment in business logic
Maintain a stable environment
Easier to learn for new users
Can cooperate with PC environment
Relieve the Agency of the responsibility for the users’ network connections and software distribution
Enabling self service by students
05/02/23
Agenda
A Three Tier Architecture
05/02/23
PC UNIX Server VSEWEBBrowser
CICS Client
CICS Gatewayfor Java
WEB Server
VTA
M
CICS
Natural
HTTP
APPC
ADABAS
Personal Comm
A Three Tier Architecture
05/02/23
The Communication Architecture
A classic Windows Client/server model was rejected due to configuration and software distribution problems
A general transaction format is designed to simplify programming
Application logic in Client and on CICS/VSE, not on middle tier
Fundamentally just a new incarnation of the well-tested, rock-solid transaction processing model
05/02/23
Why a Middle Tier?
CICS/VSE has no direct Web interface - yet
Design prepared for interfacing directly with CICS
Two different proposals: SAG Entire Broker CICS Transaction Gateway
The Agency bought a complete IBM package with RS/6000, AIX, LDGWS, and CICS Transaction Gateway for the middle tier
05/02/23
The Server Architecture
Total separation of user dialogue from business logic and data access
Natural programmers can concentrate on business logic
Willing to reprogram 3270 applications to server programs
Prepare architecture for the future
Two simple CICS Assembler programs make up server end of "Pipeline"
05/02/23
The NATCALL Interface
05/02/23
The Client Architecture
Visual classes
Formatting classes
Transaction classes
The architecture has matured through three steps to Client heaven
Step 1: The decision to use Java Step 2: Applets or Applications Step 3: Java Beans
05/02/23
Step 1: The Decision to use Java
Better function than plain HTML
Enables mouseless operation
Java Applets are easy to distribute on-line
Response time proves acceptable Averaging 0.5 seconds on browser
05/02/23
Step 2: Applets or Applications
Applications run Stand-alone on the desktop
Applets run inside a browser
Problems with caching of jar files
Browsers are not compatible
Applications can also be distributed on-line
But loses some functionality
05/02/23
Step 3: Java Beans
Java Beans is a component technology
Helps to design for code reuse
Visual builder tools understands the components
Systems programmers can encapsulate complexities and validation in Java Beans
Application programmers can concentrate on user interfaces
Both applets and applications can be built from Java Beans
05/02/23
Agenda
Three Different Views of Data
05/02/23
Three Different Views of Data
Java classes Internal fields/properties with names and types Accessed through "setter" and "getter" methods
CICS Program One long buffer (Commarea) with an implicit structure Each end must understand offsets, lengths and types
Natural Programs Positional parameters with names and types Accessed by name
05/02/23
How to Map a Commarea?
Different models Self describing format Variable length fields Predefined structure known by both ends ...
Characters only or binary numeric data?
05/02/23
Predefined Transaction Format
SSeeggmmeenntt UUsseedd bbyy CCoonntteennttssA Pipeline only Password
Natural andAdabas identifiersInternal responsetime
B PipelineNatural Control
UseridError information
C Natural ControlServer Programs
Personal ID No.Response textJournalinformation
D Specific ServerProgram only
Transactionspecific fields
05/02/23
Data Inversions
SSuubbssyysstteemm DDaattaa vviieewweedd aass DDaattaa aacccceesssseedd bbyy
Client front-end Visual fields Getters andsetters
Client back-end Bean Properties Getters andsetters
Pipeline Data buffer -
Natural programs Positionalparameters
Name
05/02/23
Agenda
The Program Flow
05/02/23
PC UNIX Server
VSE
Java Client
CICS Transaction Gateway
ADABAS
The Program Flow
Frontend
Backend
Bootstrap
Control
Server
05/02/23
The US2000 Java Client
05/02/23
Formatting Beans
A M O U N T_ N 8B ean
D D _ M M _ Y Y Y YB ean
C P R N RB ean
E tc .
N atu ra lF orm ate rin g(A b s trac t)
C om p on en t
O b jec t
05/02/23
Transaction Beans
D is p layS tu d en tIn fo rm ationB ean
D isp layP aren tIn com eB ean
E tc .
C s cA b s trac tTran sac tion
O b jec t
05/02/23
CICS Transaction Gateway
05/02/23
Front-ending Natural
TS Queue
05/02/23
3GL Front End on CICS
Distributed Program Link with a Commarea from CICS Client through APPC
Saves Commarea in a Temporary Storage queue
Saves User id, response time etc. in a Data Table for surveillance and performance monitoring
Links to Natural Boot Strap with a list of dynamic parameters including data from the A and B segments
05/02/23
Natural Boot Strap Program
Does Natural initialisation and housekeeping behind the covers
Cannot be called with data
Calls out again to another 3GL program
Just two lines of code
05/02/23
3GL Back End on CICS
Reads the Commarea from Temporary Storage
Allocates extra storage for communication between Natural subprograms to prevent storage violations
Calls Natural Parameter List Builder Program
Calls Natural Control Subprogram with Commarea as a single positional parameter
Afterwards data is returned through Temporary Storage
A dummy back end seems to be necessary to get around Natural’s Menu system...
05/02/23
Natural Subprograms
Natural Control Subprogram Subdivides the Commarea into positional parameters Gives control to the appropriate server subprogram Saves response time returned from the Client Assembles data from server subprogram back into a single
positional parameter
Natural Server Subprogram Validates data Does business logic Accesses Adabas Eventually about 100 server programs with as many
different D segments
05/02/23
Other CICS programs
05/02/23
Agenda
Java Development
05/02/23
Java Development
Objects, reuse, and components
Division of work
Education
Designing the component architecture
Visual builder tools and how to choose them
05/02/23
Objects, Reuse, and Components
Object technology still hasn’t fulfilled the promises of code reuse
Have to consciously build code reuse into the design of classes and applications
Components can help doing this
Supported by a new generation visual builders
Need to organise the project group division of work
Need to adopt an iterative development process
05/02/23
Division of Work
Visual application programmers User interface
Systems programmers Communication Complex technical matters
Tools for each kind of person
Optimal use of differentiated qualifications and interests
Make it fun for everybody to ensure motivation and to reduce staff turnover
05/02/23
Visual Programming
05/02/23
Education
Java is difficult to learn for a Natural or 3GL developer Objects is a different ballgame than structured (or even
unstructured) programming Components are something else again
Three distinct education needs User interface design Object design Using the specific tool
05/02/23
Designing the Component Architecture
Generalise common functionality into abstract parent classes
Secures optimal reuse of code Concrete, derived classes only contain what is specific to
them
An iterative development process Continuous identification of functions to be moved from
application to systems programming
Keep classes small and simple
05/02/23
Visual Builder Tools
Visual Café from Symantec
Visual Age from IBM
More than 20 others
Started with Visual Café 2.5
Changed to Visual Age 2.0
05/02/23
Criteria for Visual Builder Choice
Import/export of source
Support for the preferred division of work
Support for programming styles and services
External support
05/02/23
Keeping Java classes in Sync with Natural Development
05/02/23
Natural in - Java out
16:23:44 Subprogram ISTA Library U 0010 ************************************0020 * PROGRAM : ISTA 0030 * FUNKTION : Stamoplysninger0040 * BESKRIVELSE : Viser stamoplysnin0050 * støtteår. 0060 * Programmør : Finn Jørgensen 0070 * OPRETTET : 16-12-1998 0080 ************************************0090 * Versionsændringer: 0100 * 0110 * Version Init Dato Beskrivelse 0120 * ------- ---- -------- ------------0130 * 001 FJ 16-12-98 VERSION 1. 0140 ************************************0150 DEFINE DATA PARAMETER 0160 * 0170 USING A-PARMTR 0180 * 0190 LOCAL USING T-PERSON 0200 LOCAL USING T-REKVIS 0210 * 0220 LOCAL 0230 * 0240 * TRANS-AREAL D 0250 * TRANSNAVN=VIS_STAMOPLYSNINGER0260 * COMMAREAID=ISTA0270 1 W-TRANSDATA (A1/1:400280 1 REDEFINE W-TRANSDATA0290 2 TR-VERSION (N3) /*V0300 2 TR-LGD (N5) /*V0310 * Adresse10320 2 TR-CONAVN1 (A34)0330 2 TR-OPKRADR1 (A34)0340 2 TR-BYNAVN1 (A34)
package dk.su.us2000.trans;import java.beans.*;import com.sun.java.swing.*;
/*** This class represents the commarea b * It is generated by the CSC Commarea Ge * <p>This class contains accessors and m * in the D segment of the transaction de * It inherits accessors and mutators * for the A, B, and C segments from its * @version Natural: 981216 16:23, Java: * @author Finn Jørgensen */public class ISTA extends dk.su.us2000.tr
/** No-arg constructor */public ISTA() {super();initialize();} // No-arg c:tor
/** Gets the VERSION property (String) va * @return The VERSION field. * @see #setVERSION */public String getVERSION() {byte[] ba = new byte[3];System.arraycopy(commarea, 830, ba, 0, 3)String sout = new String(ba);if (isDebug()) {System.out.println("Method getVERS} // if debugreturn strip(sout, "N");} // getVERSION()
05/02/23
Properties of a Generated Transaction Bean
05/02/23
Agenda
Other Challenges
05/02/23
State Handling
CICS pseudo transactions have states - web transactions are stateless
User can go away without telling CICS
Retaining sign-on between calls
Achieving update integrity by serialisation using timestamps on each database record
05/02/23
New Version Problems on Old Bottles
Web distribution solves the old version problems
But the most common browsers do not implement Java identically
Can be remedied by using the Java Plug-In
Still have to handle a multitude of version interdependencies and incompatibilities
05/02/23
Security
Logon is done with userid and password and is validated by Natural Security
A user profile is retrieved from Adabas and sent to the Client to control the dynamic menu
Security of userids, passwords, and data when running on the open network is currently being analysed
05/02/23
Any Questions?