a natural extension: using the com-plete http server for web-enablement
DESCRIPTION
A Natural Extension: Using the Com-plete HTTP Server for Web-Enablement. David Wimberly Project/Program Director, University of Arkansas [email protected]. Presentation Overview. The Com-plete HTTP server A Natural tool for web enablement Web-Enablement at the University of Arkansas - PowerPoint PPT PresentationTRANSCRIPT
Moving Beyond Boundaries
A Natural Extension:Using the Com-plete HTTP
Server for Web-EnablementDavid Wimberly
Project/Program Director, University of Arkansas [email protected]
Moving Beyond Boundaries
Presentation Overview
The Com-plete HTTP serverA Natural tool for web enablement
Web-Enablement at the University of ArkansasEnhancing existing applications with web
technologies Implementation considerations
Tips and techniquesExamples
Moving Beyond Boundaries
The Com-plete HTTP Server
A Natural tool for web-enablementCom-plete 6.1 architectureNatural and the HTTP serverNatural programmer’s viewSystem viewAdvantages of this native MVS web and application
server
Moving Beyond Boundaries
Com-plete 6.1 Architecture
VTAMInter-face
Utilities
Spool Telnet
HTTP
CGIapplications
Product X
Moving Beyond Boundaries
Natural and the HTTP Server
HTTP
CGIapplications
Moving Beyond Boundaries
Natural Programmer’s View
** Read user input from the webCALL ‘HAANUPR’ #CGI-STATUS /* Return code and reason code #CGI-ACTION /* GET-DATA or PUT-DATA #FIELD-NAME /* HTML form field name #FIELD-VALUE /* User input value #FIELD-LENGTH /* Length anticipated/returnedSEPARATE…FIND EMPLOYEE WITH…
Simple CALL interface
Moving Beyond Boundaries
System View
Natural programs:Run in the buffer poolAccess ADABAS and other resourcesCall external module HAANUPR
To read HTML form inputs and controls (GET or POST)To send dynamically generated HTML to the browser
Configuration parameters for default user ID, library, buffer sizes, etc.
Automatic EBCDIC/ASCII translations and url encoding/decoding
Moving Beyond Boundaries
Native MVS Web and Application Server
NaturalCGI interface(HAANUPR)
HTTP
Moving Beyond Boundaries
Web-Enablement with the Com-plete HTTP Server
Enhancing existing applications with web technologiesObjectivesBackgroundWeb session examples
Moving Beyond Boundaries
U of A’s Objectives
To enhance and extend our mainframe applicationsReach new audiences
Employees and vendorsEnhance the presentation of information
Consolidate information and dress it upSimplify access for infrequent users
Not to replace all or even most 3270 functions Not to literally move a 3270 application to the web
Moving Beyond Boundaries
U of A Background
Natural and ADABAS mainframe shop since 1986 BASIS: Business & Administrative Strategic
Information SystemsCustom inhouse developed applicationsEverything but student systems
Separate groups doing Java web development and screen scraping web deploymentPreference for Natural application code
Timing was right for the Com-plete HTTP Server
Moving Beyond Boundaries
Logon
Moving Beyond Boundaries
Menu
Moving Beyond Boundaries
Browse PO selection screen
Moving Beyond Boundaries
Help for Date-Close-Anticipated
Moving Beyond Boundaries
Help for PO status, selection
Moving Beyond Boundaries
Help for PO status, window
Moving Beyond Boundaries
PO status returned
Moving Beyond Boundaries
Budgetary Unit help
Moving Beyond Boundaries
BU help search
Moving Beyond Boundaries
Browse PO for Status and BU by Date
Moving Beyond Boundaries
Browse result and PO selection
Moving Beyond Boundaries
View of PO, top
Moving Beyond Boundaries
View of PO, bottom
Moving Beyond Boundaries
Select a PO to Browse Invoices for PO
Moving Beyond Boundaries
Browse Invoices for PO
Moving Beyond Boundaries
View Invoice
Moving Beyond Boundaries
Select a PO to e-mail
Moving Beyond Boundaries
E-mail the PO
Moving Beyond Boundaries
PO list, vendor help
Moving Beyond Boundaries
Vendor name search
Moving Beyond Boundaries
Select vendor
Moving Beyond Boundaries
PO search by vendor and date, initiated
Moving Beyond Boundaries
PO search by vendor and date, results
Moving Beyond Boundaries
Main menu, select pay activity
Moving Beyond Boundaries
Browse pay activity
Moving Beyond Boundaries
View earnings statement
Moving Beyond Boundaries
Main menu, select addresses
Moving Beyond Boundaries
3270 Addresses, etc. equivalent
Moving Beyond Boundaries
Addresses, etc
Moving Beyond Boundaries
Enter changes, view errors and previous values
Moving Beyond Boundaries
Correct errors and update
Moving Beyond Boundaries
Update confirmation screen
Moving Beyond Boundaries
Logoff screen
Moving Beyond Boundaries
Implementation Considerations
How to maintain state Back button Back button vs Return Data security Configuration Essential JavaScript Techniques for generating HTML Coding tips, debugging tips, and more Example HTML and Natural code
Moving Beyond Boundaries
How to Maintain State
The web is statelessEach interaction (submission) is self containedNo provision for a continuous user session
To maintain stateUse conversational mode, orCreate a session ID (*TIMESTMP)
Place it on the form as a hidden fieldSave and restore user session information using ADABAS
Moving Beyond Boundaries
Back Button
Can subvert your state informationUser reappears not from where you left him
We consideredDisabling itRunning in a window without the toolbar or menubar Issuing errors if they used it
Limit the state information you maintainNot the active position within a READ loop Instead, hide the first and last ISN on a page
Have one entry point -- a dispatcher program action=“uwowdis”
Moving Beyond Boundaries
Back Button vs Return
As1 - 10
Bs1 - 10
Bs11 - 20
Bs21 - 30
Cs1 - 10
Cs11 - 20
Object selection or Paging
Back button
Return
Browse A objects at level 1
Browse B objects at level 2
Browse C objects at level 3
Moving Beyond Boundaries
How to Return
Save program hierarchy information in hidden fields Our browse functions stack for each level:
Program IDSearch type in effect ISN and MU/PE occurrence of first record on the
screenWhether page back was valid
A Return Pops one of these from the stackExecutes the program and re-initiates the browse
Moving Beyond Boundaries
Data Security
Sensitive data requires encryptionCom-plete HTTP server does not do SSLProxy server introduced to do all encryption and
decryption To avoid mixing document types and client side
warningsStyle sheets and graphics are delivered from a
separate web server using HTTPS
Moving Beyond Boundaries
U of A’s Environment
HTTPS HTTP
Client with SSL enabled Web Browser
Proxy Server for SSL encryption
Web Server for *.gif and *.css files
IBM OS/390 running ADABAS, Natural, and Com-plete 6.1
Moving Beyond Boundaries
Com-plete HTTP Server Configuration
HAANCONFSERVPOOL=YES
Uses a shared logon or sessionNATLIB=default library
Natural CGI programs in other libraries require an implicit logon
HTTPUSER=default user ID URL processing user exit
Restrict access to specific hosts or domains
Moving Beyond Boundaries
Essential JavaScript
Cursor placement Selection processing and linking to different
servicesSet hidden form element to selected valueSubmit form
Window managementOpen and Close windowsPass and return values
Moving Beyond Boundaries
Techniques for Generating HTML
Output your HTML to the Source Work Area Use Natural ISPF macros
But macros cannot be invoked directly as a Natural CGI program Use Natural
DEFINE PRINTER (1) OUTPUT 'SOURCE'FORMAT (1) PS=0 LS=133 EJECT OFF (1) SET CONTROL 'Z‘WRITE (1) NOTITLE …
Send the generated HTML to the browser HNANCGIP is provided, but limited to 72 character lines Create your own using longer lines via the USR1035N interface
Moving Beyond Boundaries
Coding Tips
Develop an architecture and generate your Natural CGI programs using Natural ISPF macrosFast delivery of new functionsConsistentEasy to implement changes -- REGEN
To simplify making changes in page appearanceUse copy code, subprograms, constants defined in
an LDA, and an external style sheet HTML form fields can have dashes, but javascript
cannot reference themTranslate them to under-scores
Moving Beyond Boundaries
HAANUPR Tips
Field namesMust end with a blank character
Field valuesAre not blank filled, reset them before your CALL
Field lengthPassed in: the largest value you will receiveReturned: the actual size of the field entered
CALL ‘HAANUPR’ #CGI-STATUS /* Return and reason code #CGI-ACTION /* GET-DATA or PUT-DATA #FIELD-NAME /* HTML form field name #FIELD-VALUE /* User input value #FIELD-LENGTH /* Length anticipated/returned
Moving Beyond Boundaries
Debugging Tips
You can’t sprinkle WRITEs into your code You can’t run the Natural debugger Trap and log errors on a data base file
Note: *ERROR-TA always starts as HNANERR and can only be changed by an assignment statement
Output your debugging information with your web page using HTMLThis may mean holding information until you reach
the page <body>
Moving Beyond Boundaries
Code Reuse
Develop a Natural subprogram to output the core HTML document for an object (Purchase Order, Earnings Statement, etc.)Call from your Com-plete web application (Natural
CGI program)Call from online 3270 session to generate an HTML
e-mail attachmentRead the source work area and send to SMTP using ESS’ PROCESS WRITE-SPOOL
Call from batch to generate an HTML e-mail attachment
Moving Beyond Boundaries
HTML for UWOMENU, part 1
Moving Beyond Boundaries
HTML for UWOMENU, part 2
Moving Beyond Boundaries
Natural code, UWCSBH
Moving Beyond Boundaries
Natural code, output Action
Moving Beyond Boundaries
Natural code, output table of Services
Moving Beyond Boundaries
Natural code, read HTML form fields
Moving Beyond Boundaries
Enhancement Proposal 958
Efficient browsing of ADABAS data (no wasted I/O)Forward or backward (descending)Possible due to STARTING WITH ISNRegular descriptorsMU type descriptorsUnique PE type descriptors
It is not possible with non-unique PE type descriptors!
Vote for FIND DESCENDING, enhancement proposal 958
Moving Beyond Boundaries
Presentation Review
The Com-plete HTTP serverA great run time environment for Natural, and now
an enabler for Natural based web applications Web-Enablement at the University of Arkansas
Examples of what can be done with the Com-plete HTTP server
Implementation considerationsTips and examples from the University of Arkansas
Moving Beyond Boundaries
Thank You!