27
Exploiting the CICS Socket Interface Steve Ware - UF SHARE 97 Session 1057 *Permission is granted to SHARE Inc. to copy, reproduce or republish this document in whole or in part for SHARE activities only.

Exploiting the CICS Socket Interface Steve Ware − UF SHARE …nersp.nerdc.ufl.edu/~sfware/share97/s1057sw.pdf · Exploiting the CICS Socket Interface Steve Ware − UF SHARE 97

Embed Size (px)

Citation preview

Exploiting the CICS Socket Interface

Steve Ware − UF

SHARE 97

Session 1057

*Permission is granted to SHARE Inc. to copy, reproduce or republish this document inwhole or in part for SHARE activities only.

Exploiting the CICS Socket Interface

SHARE Session Information

Title: Exploiting the CICS Socket Interface

Conference: SHARE 97.0, Minneapolis, MN

Session No.: 1057

Speaker: Steve Ware

Email: mailto:[email protected]

IBMMail: us4qnpwn

Phone: 352−392−4601

Installation Code:UF

Northeast Regional Data Centerat the University of FloridaNERDC CICS Systems

Date: Wednesday, July 25th, 2001

Time: 3:00 p.m.

Location: Convention Center, First Level, Room 103B

This technical session will begin with a brief overview of the CICS Socket Interface (CSI). The speaker willthen discuss several applications for which the University of Florida uses this interface, such as File Transfer,CGI/Web access to CICS, and Email via an SMTP server from CICS.

Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/index.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 1 of 26

Exploiting the CICS Socket Interface − Table ofContents

Introduction.•

Issues and Considerations Discussion.•

File Transfer.•

CGI/Web access to CICS.•

Email via an SMTP server from CICS.•

Summary.•

Appendix.•

Back to Session Abstract.•

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/toc.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 2 of 26

Exploiting the CICS Socket Interface − Introduction

NERDC at UF operates as a service bureau. UF is our "host" institution.•

Primary customers are FCLA, UF, UNF, UF Foundation, and IFAS.•

Production: CICS for MVS/ESA 4.1 (CICS/ESA 4.1), OS/390 2.10, RACF, etc.•

Internal Test: CICS TS 1.3 (CICS/ESA 5.3).•

We currently do over a million CICS tasks daily in 12 CICS test and production regions, with over50% of these CICS tasks CICS Socket Interface related.

Display Introduction Notes, or Jump to More Introduction, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/intro.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 3 of 26

Exploiting the CICS Socket Interface − IntroductionNotes

The Northeast Regional Data Center (NERDC) at the University of Florida (UF) operates as a service bureau(formerly a State University System or SUS auxiliary) with our primary CICS customers being the FloridaCenter for Library Automation (FCLA), the University of Florida (UF − our host institution), the Universityof North Florida (UNF − located in Jacksonville, FL), the University of Florida Foundation, and the Instituteof Food and Agricultural Sciences (IFAS).

Our current production environment on our IBM 9672−R36 is CICS for MVS/ESA 4.1, OS/390 2.10, withRACF, IBM's IP stack, etc. Our current internal test environment includes CICS TS 1.3 (CICS/ESA 5.3). InCICS, we're presently supporting applications written in COBOL and Assembler. We have support in CICSfor C/C++ application development. Most of our current CICS socket application development is being donein COBOL and Assembler.

Our site first took a look at the IBM CICS Socket Interface feature of the IBM TCP/IP for MVS programproduct several years ago, but never purchased this (optional at the time) feature due to budget considerations.Once we installed OS/390 1.3, we ended up with this feature bundled "for free", and initially began workingwith FCLA on implementing some CICS socket applications.

Jump to More Introduction, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/intro.notes.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 4 of 26

Exploiting the CICS Socket Interface − Introduction

The first "socket" RFC (Request For Comments) appeared in about 1971.•

Socket applications are peer−to−peer with both ends programmable.•

The IBM CICS Socket Interface (CSI) is a feature of TCP/IP for MVS.•

The CSI is bi−directional (inbound and outbound socket calls) and provides a comprehensive socketAPI (Application Programming Interface). It is implemented in CICS as a TRUE (Task Related UserExit) similarly to DB2, and provides reusable MVS TCBs, a listener, a security exit point, etc.

According to IBM CICS Development, the CSI is "non−strategic". CICS Web Services (CWS), etc.,are considered "strategic".

Display Introduction Notes, or Jump to More Introduction, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/intro2.html>.

Last updated on July 3, 2001, by Steve Ware, <mailto:[email protected]>.

Page 5 of 26

Exploiting the CICS Socket Interface − IntroductionNotes

The Appendix has a link to the Internet RFCs Archive, etc. The discussion of a socket as it related to "theInternet" started in about 1971 − sockets are not new, but their use is CICS is much more recent − under 10years or so ago (1993?).

The IBM CICS Socket Interface (CSI) feature is intended to support peer−to−peer applications as opposed totraditional CICS interactive applications with programs in CICS connected to 3270−type terminals.Peer−to−peer applications have both ends of the connection programmable − you may get to write at least 2programs.

The CSI is a feature of TCP/IP for MVS, aka z/OS Communications Server, aka OS/390 IBMCommunications Server, aka OS/390 SecureWay Communications Server, aka OS/390 eNetworkCommunications Server, etc. It is not a feature of the base CICS (or CICS TS) product, and does not(currently) use the new CICS TS "Sockets" Domain.

The CSI is bi−directional, supporting both inbound and outbound (to CICS) socket calls, and provides acomprehensive socket API (Application Programming Interface). It is implemented in CICS as a TRUE (TaskRelated User Exit) similarly to DB2, and provides a listener, security exit point, ASCII/EBCDIC conversionsubroutines, configuration utilities, etc. It is fairly comprehensive.

IBM CICS Development considers CWS (CICS Web Services) and other Hursley developed CICScomponents "strategic" − the CSI is considered "non−strategic" by IBM CICS Development. Sites like ours,with over 50% of our over 1 million daily CICS tasks socket related, do not agree with IBM CICSDevelopment in this assessment of "strategic" vs "non−strategic" − it is "strategic" at our site.

Jump to More Introduction, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/intro2.notes.html>.

Last updated on July 3, 2001, by Steve Ware, <mailto:[email protected]>.

Page 6 of 26

Exploiting the CICS Socket Interface − MoreIntroduction

We now have many CICS socket applications in production. Almost all of our CICS regions have theCICS Socket Interface enabled. Approximately half of our CICS workload is now socket (vs 3270)based.

FCLA has a file transfer application (IND$FILE replacement), a CICS email client that communicateswith an SMTP server on AIX, and a version of their WebLUIS application that utilizes the CICSSocket Interface instead of SNA LU6.2/APPC.

UF O.U.R. has a Web−based student records system called ISIS, and an instructor grade uploadapplication called Grade−A−Gator.

IS has a CICS socket client application used to perform credit card verification for student payment ofUF course fees.

UNF has CICS socket applications used for student self service applications. They have recentlyadded UNF staff administrative socket applications.

Display More Introduction Notes, or Jump to Issues and Considerations, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/intro3.html>.

Last updated on July 3, 2001, by Steve Ware, <mailto:[email protected]>.

Page 7 of 26

Exploiting the CICS Socket Interface − MoreIntroduction Notes

We now have many CICS socket applications in production, developed by FCLA (Florida Center for LibraryAutomation), UF's O.U.R (Office of the University Registrar), IS (Information Systems), and UNF(University of North Florida in Jacksonville). All but one of our CICS regions have the CICS Socket Interfaceenabled.

FCLA has a file transfer application (replacement for IND$FILE) using CICS as the server with a WindowsVisual Basic client, an email application with CICS acting as the email client connecting to an SMTP serveron AIX (replacement for a JES2 internal reader email submission application), and a CICS Socket Interfaceversion of WebLUIS, which was originally developed utilizing SNA LU6.2/APPC. WebLuis utilizes CGIcode written in C running on AIX and CICS socket code written in Assembler.

O.U.R. has Web−based student records applications using CICS as the server and CGI client code, written inC, running on AIX. This socket application utilizes some existing CICS assembler application code withseveral socket front−end programs and replaces a "screen scraping" middleware version which providedsimilar Web−based functionality. ISIS is the Integrated Student Information System.

IS has a CICS socket client application used to perform credit card verification for student payment of UFcourse fees. The CICS socket client program connects to an NT server which then connects to a credit cardverification service.

UNF has had their student self service applications in production for over a year, and recently began movingstaff administrative applications to production. They wrote some of these new socket applications fromscratch, but also utilized some existing code. The CGI code is written in C++ and runs on an MS NT platform,and the CICS socket code is written in COBOL.

Our peak socket activity in one CICS region in one 24 hour period is approximately 800K socket tasks out ofabout 1.2M tasks total. Our peak production CICS task count in one 24 hour period is approximately 2.3M inour 7 production regions − we normally run an additional 5 development/test regions and run 2 internal testregions as needed.

Jump to Issues and Considerations, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/intro3.notes.html>.

Last updated on July 3, 2001, by Steve Ware, <mailto:[email protected]>.

Page 8 of 26

Exploiting the CICS Socket Interface − Issues

Issues:

The good, the bad, and the ugly.• FMID for CICS Socket Interface same as base IP component. (Bad and ugly.)• No 32K COMMAREA limitation. (Good.)• Low−level API = good performance/few limitations. (Good.)

Can do file transfer, web, email, etc. (Good.)♦ Could write an CICS FTP client and/or server. (Ugly?)♦ Could write a CICS HTTP client and/or server using either REXX RFS or USS HFS filesystems. (Ugly?)

Could write a telnet/ssh client and/or server. (Ugly?)♦ Etc.♦

OCO (Object Code Only). (Bad.)• Open Source/Open Standards. (Good.)•

Display Issues Notes, or Jump to More Issues and Considerations, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/issues.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 9 of 26

Exploiting the CICS Socket Interface − Issues Notes

Sometimes, it all boils down to the good, the bad, and the ugly. The CICS Socket Interface (CSI) is nodifferent in this regard.

As a systems programmer, one of our responsibilities is tracking and/or applying the appropriate maintenanceto our systems. We used to be able to track the CSI via a specific FMID (Function Management IDentifier),for use with IBMLink and ASAP (Automatic Software Alert Process), etc. Now, if you desire to track CSIissues, you must wade through all issues associated with the FMID of the base IP component (of which thereare MANY). This is bad and ugly, IMHO (In My Humble Opinion).

With the CSI, you're basically sending data/messages back and forth between the two programs that are oneach end of the socket connection. There is nothing like a 32K COMMAREA limit with this protocol. This isgood, IMHO.

Sockets use a "low−level" API. You can do almost ANYTHING − there are very few limitations, andperformance is typically good because there isn't a lot of overhead and/or layers of additional code on top ofthis interface. This is good, IMHO. Stefan Raabe (from Germany), wrote a CICS FTP client, as noted inCICS−L.

Unfortunately, IBM years ago decided that OCO (Object Code Only) was the direction that the companywould take, period. There was some benefit in this in that the suppport groups in IBM typically had an easierjob debugging and identfying code defects. However, code enhancements, performance improvements,functional extensions, are now nearly impossible (with some exceptions). OCO is bad, IMHO.

Many in the IT industry now embrace Open Source and Open Standards. IBM is coming around and seeingthe many benefits in these concepts, supporting development of Linux for S/390 (and Linux for z/OS), etc.Even IBM can be quoted as saying "Open standards are key to making the most of opportunities in ournetworked world." An interesting Linux Journal quote is "By the way, Maddog tells me that IBM CEO LouisGerstner has announced a new "open source by default" policy. All IBM software will be released under anopen−source license unless there's a business case for a proprietary license−−so now the bureaucratic burdenis on people who want to make software proprietary." This is very good, IMHO.

Jump to More Issues and Considerations, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/issues.notes.html>.

Last updated on July 3, 2001, by Steve Ware, <mailto:[email protected]>.

Page 10 of 26

Exploiting the CICS Socket Interface − More Issues

More Issues:

Sample code. (Good, bad, and ugly.)• Sockets available on all platforms. (Good.)• Security/Cryptography. (Good, bad, and ugly.)• Scalability. (Good and bad?)• Performance. (Good, bad, and ugly.)

Monitoring/tracing. (Good, bad, and ugly.)♦ ASCII/EBCDIC conversion. (Good, bad and ugly.)♦ START vs RETURN IMMEDIATE. (Bad.)♦

CICS TS 1.3 "Sockets Domain" vs CICS Socket Interface. (Ugly.)• CICS TS 2.x (CICS TS for z/OS aka "z/TS" or "zits" ;−) Sockets API promised by IBM. (Good.)• CICS development in Hursley, UK vs TCP/IP development in Raleigh, NC. (Ugly.)•

Display More Issues Notes, or Jump to File Transfer, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/issues2.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 11 of 26

Exploiting the CICS Socket Interface − More IssuesNotes

We all need more sample code to better exploit technology. IBM should put more emphasis and devote moreresources to providing sample code and assisting in application development. The trend seems to be more inthis direction recently − this is good, but the lack of sample code is bad and ugly, IMHO.

Sockets are available on any platform that has a TCP/IP stack. This makes CICS (via the CSI) a better playerin an Open Standards world. This is very good, IMHO.

Basic CSI security can be implemented with a CSI security exit (see EZACICSE skeleton in the Appendix).We're using "secure" Apache servers (when necessary) for basic session security between "secure" webbrowsers and "secure" web server (via SSL). Cryptograpy schemes could be implemented between the CGIcode and your EZACICSE equivalent − this is a "roll your own opportunity". So, there's good, bad, and uglywith CSI security, IMHO.

Just like security, scalability should also be a consideration when deploying any technology. We've foundOS/390, CICS, and the CSI to be scalable up to our current needs. Scalability has been fairly good, IMHO.Note that if you are attempting to use MRO and the CSI, CICS socket applications used to have to executewithin the CICS region where the first socket call is invoked − this limitation may have recently been lifted,but still requires execution within the same MVS image as the initially used IP stack.

Overall performance of the CSI has been good, but we'd like to see IBM implement our requirement(REQ00076494) to turn off CSI internal tracing/monitoring. Also, we'd like the START of incoming socketrequests changed to RETURN IMMEDIATE. These 2 items, and the requirement to do lots ofASCII/EBCDIC conversions has driven up our CICS CPU consumption. CSI performance gets labeled good,bad, and ugly, IMHO.

Don't get confused with the new CICS TS 1.3 "Sockets Domain" and the CSI − they are not the same. Guesswhat IBM is using with CICS Web Services? You guessed it − sockets (but not via the CSI). I'd have to labelthis confusion ugly, IMHO.

IBM indicated at one time that CICS TS 2.x (CICS TS for z/OS aka "z/TS" or "zits" ;−) will include CICSAPI (Application Programming Inferface) extensions for sockets (don't hold your breath). This is very good,IMHO.

Jump to File Transfer, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/issues2.notes.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 12 of 26

Exploiting the CICS Socket Interface − File Transfer

FCLA:

First CICS Socket Interface application @ NERDC.• IND$FILE replacement.• Visual Basic client program, winsock.vb.txt.• CICS assembler child server program, ldl000p.asm.• EZACICSE security exit code to verify RACF userid/password, ezacicse.asm. (Skeleton provided.)•

UF O.U.R. Grade−A−Gator:

HTML form text file upload, file_upload.html.txt.• AIX "C" client CGI program (uploader).• CICS assembler child server program.• Application security to verify RACF or GatorLink userid/password.•

Display File Transfer Notes, or Jump to CGI/Web Access to CICS, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/filetransfer.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 13 of 26

Exploiting the CICS Socket Interface − File TransferNotes

FCLA has a file transfer application (replacement for IND$FILE) using a CICS assembler child serverprogram with a Windows Visual Basic client program. Our local CSI EZACICSE security exit was modifiedto support the FCLA requirement that these file transfers be done from a validated RACF userid/password.FCLA was running into too many problems supporting IND$FILE file transfer on the windows clients, andwanted to "roll their own" solution. This was our first CSI application, and neither the FCLA applicationprogrammer nor I had any sockets experience. Within about a week, we had a viable solution deployed − wechose to RTFM (Read The "Fine" Manual) and looked at some sample code. We came to the conclusion that"it's not rocket science".

The UF (University of Florida) O.U.R. (Office of the University Registrar) was looking at an easier way forinstructors to enter their course grades. Many instructors wanted a way to "upload" grade data. A CSIapplication was developed called "Grade−A−Gator" using the HTML "<input type="FILE">" tag. O.U.R usesan AIX "C" client CGI program called "uploader" (a modified version of "nirvana") and a CICS assemblerchild server program. There is application security to verify either a RACF or "GatorLink" userid/passwordand to verify that this userid is authorized to upload grades for the specific course section.

Jump to CGI/Web Access to CICS, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/filetransfer.notes.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 14 of 26

Exploiting the CICS Socket Interface − CGI/WebAccess

NERDC:

Check the CICS Socket Interface (similar to PING).http://cics.nerdc.ufl.edu/cgi−bin/sokt.pl♦

Perl CGI client program (replaces a "C" program), sokt.pl.• CICS assembler child server program, dcsokt00.asm.• Useful for systems, applications, and operations staff.• Useful as an IVP after installation of the CICS Socket Interface.•

FCLA:

WebLUIS (Library User Information System)http://webluis.fcla.edu/♦

AIX "C" CGI client program.• CICS assembler child server program(s).• Replaces old LU6.2/APPC version.• CICS Socket Interface version faster and more stable.• Hundreds of thousands of tasks per day.•

Display the CGI/Web Access Notes, or Jump to More CGI/Web Access, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/webaccess.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 15 of 26

Exploiting the CICS Socket Interface − Web AccessNotes

For NERDC, I wrote a little CICS Socket Interface (CSI) CGI/Web Access application to verify (IVP −Installation Verification Procedures) the CSI. This has also been found to be useful for our systems,operations, and applications staff. The current version uses a Perl CGI program (sokt.pl) and a CICSassembler child server program, DCSOKT00. Input to sokt.pl includes a text file that has the transids, anotherfile that has the host names, and 3rd file that has the CSI listener port numbers, making it easily configurable.

FCLA, our largest customer, first deployed WebLUIS (Web Library User Information System) utilizingLU6.2/APPC, but ran into too many problems with reliability and scalability with the AIX SNACommunication Services on a RS/6000 SP platform. After seeing our successes with UF O.U.R. ISIS(Integrated Student Information System) and the IND$FILE replacement, FCLA rewrote WebLUIS using theCSI. We've both been very happy with this conversion. They use an AIX "C" CGI client program and severalCICS assembler child server programs. On average, this is one of our highest volume CICS applications withhundreds of thousands of uses daily.

Jump to More CGI/Web Access to CICS, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/webaccess.notes.html>.

Last updated on July 3, 2001, by Steve Ware, <mailto:[email protected]>.

Page 16 of 26

Exploiting the CICS Socket Interface − More CGI/WebAccess

UF O.U.R.:

ISIS (Integrated Student Information System)http://www.isis.ufl.edu/♦

AIX "C" CGI client program (nirvana).• CICS assembler child server program(s).• Enhances/replaces 3270/telephone access.• Replaces old OS/2 based middleware version that was a POS.• Hundreds of thousands of tasks per day.• IS (Information Systems) CICS COBOL ICVERIFY interface for student fee payment by credit card,is.cob.

Display More CGI/Web Access Notes, or Jump to Email via SMTP, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/webaccess2.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 17 of 26

Exploiting the CICS Socket Interface − More WebAccess Notes

ISIS, the "Integrated Student Information System" uses an AIX "C" CGI client program called "nirvana" andseveral CICS assembler child server programs. The "Nirvana" name actually came into being due to a(SCIDS?) conversation at SHARE nearly 5 years ago. An IBM employee and I were discussing the fact thatwe (UF/NERDC) were looking for web access to CICS that was scalable, secure, a fast performer, andavailable NOW! The IBM employee said "What do you want − nirvana?". I said yes, of course! After passingalong this conversation to the UF ISIS CGI developer, he named his CSI AIX CGI program "nirvana".Nirvana, n. "A state of freedom from pain, worry, and the external world".

ISIS enhances/replaces 3270 and/or telephone access (using DirectTalk). The CSI version replaces an OS/2based middleware version that was, well, a POS. (POS = Piece Of S#!+). ISIS does hundreds of thousands oftasks per day, and near a million during the beginning of term peak. UF IS (Information Systems) has a CICSCOBOL ICVERIFY (CyberCash) CSI interface for student fee payment by credit card. The CICS programtalks to an NT "C/C++" program that communicates with ICVERIFY, all via sockets. Visithttp://www.icverify.com/ for more information about ICVERIFY.

Jump to Email via an SMTP server from CICS, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/webaccess2.notes.html>.

Last updated on July 3, 2001, by Steve Ware, <mailto:[email protected]>.

Page 18 of 26

Exploiting the CICS Socket Interface − Email viaSMTP

IBM:

IBM CICS SupportPac CA1H:http://www−4.ibm.com/software/ts/cics/txppacs/ca1h.html♦

"This SupportPac provides sample programs that show methods of interfacing a CICS applicationwith SMTP. The programs are intended to demonstrate various methods of sending EMail fromwithin a CICS application. This is accomplished by utilizing either the CICS SPOOL interface or theCICS TCPIP Sockets interface. The SPOOL Interface requires the use of the OS/390 SMTP server.The Sockets Interface may utilize any SMTP server accessible on the TCPIP network. There is alsoan example CICS based mail server that could be used for receiving EMail in CICS. Examples areprovided in Assembler, COBOL and C/370."

FCLA:

Send WebLUIS search results to your specified email address.•

Display the Email via SMTP Notes, or Jump to the Appendix, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/smtp.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 19 of 26

Exploiting the CICS Socket Interface − Email viaSMTP Notes

There are some hidden treasures in the IBM SupportPacs. One of them, CA1H, includes good CSI examples,at http://www−4.ibm.com/software/ts/cics/txppacs/ca1h.html. Quoted from the IBM site, "This SupportPacprovides sample programs that show methods of interfacing a CICS application with SMTP. The programsare intended to demonstrate various methods of sending EMail from within a CICS application. This isaccomplished by utilizing either the CICS SPOOL interface or the CICS TCPIP Sockets interface. TheSPOOL Interface requires the use of the OS/390 SMTP server. The Sockets Interface may utilize any SMTPserver accessible on the TCPIP network. There is also an example CICS based mail server that could be usedfor receiving EMail in CICS. Examples are provided in Assembler, COBOL and C/370." Special thanks go tothe authors of this SupportPac, Don Grinsell, IS Division, State of Montana, USA, and Corneel Booysen,EITS, South Africa.

"SHARE − It's not an acronym, it's what we do."

FCLA has been providing the capability to send WebLUIS search results to your specified email address forseveral years now, utilizing the CSI.

One could send email when a certain situation occurs in CICS, or ???. The only limit is your imagination...

Jump to Summary, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/smtp.notes.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 20 of 26

Exploiting the CICS Socket Interface − Summary

The CICS Socket Interface feature is fairly easy to install, configure, and implement.• Small learning curve for application developers (maybe).• Unlimited ways to exploit this interface − makes CICS look more like an "Open Systems" and/or"Client/Server" environment. CICS = Cics Is Client Server.

We like the "roll your own" capabilities that the interface provides, and the "low−level" socket API.• We're getting near "sub−second" response time from CICS Web−based socket applications with up tohundreds of thousands of socket tasks daily in single CICS regions.

CICS is and has been a stable and robust server for us − plans are to continue to exploit CICS with thesocket interface to provide more Web−based access and additional client/server type access from avariety of platforms.

IBM has been recommending their CICS Web Interface/Services and the 3270 Bridge, which aredeveloped and maintained by the IBM CICS Hursley labs. The CICS Socket Interface is developedand maintained by the IBM TCP/IP folks here in the "colonies".

Display the Summary Notes, or Jump to Appendix, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/summary.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 21 of 26

Exploiting the CICS Socket Interface − SummaryNotes

We've found that the CICS Socket Interface feature is fairly easy to install, configure, and implement. Ourapplication developers have had a bit of a learning curve with their initial socket applications, but they seemto be constantly looking at more ways to exploit this interface in new and existing applications. Although wewere initially asked to look at the interface to provide non−SNA access to CICS, our application developersare finding innovative uses for this interface, including client/server and Web−based CICS applications.

We think we "found what we're looking for" in the CICS Socket Interface. We've used and/or looked at CICSmiddleware, the CICS Internet Gateway, the CICS Web Interface, the 3270 Bridge, etc. Our applicationdevelopers are very pleased with the low−level socket API and the "roll your own" capabilities that theinterface provides. Some of our developers have been able to provide Web−based access to existing CICSapplications with a single socket "front−end" program and minor changes to their existing applicationprograms. This type of work has also been required with CICS middleware and some of the other productsnoted above.

They can't believe that they can now get near "sub−second" response time from Web−based applications! Thisfrom non−3270 devices!

CICS is and has been a stable and robust server for us. We now have plans to continue to exploit CICS withthe socket interface to provide more Web−based access and additional client/server type access from a varietyof platforms.

We're a little bit surprised that IBM has not been advocating the CICS Socket Interface more than they have −it provides an "open systems" interface to CICS and could be exploited more than it has in the past.

Jump to Appendix, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/summary.notes.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 22 of 26

Exploiting the CICS Socket Interface − Appendix

NERDC CICS assembler application program DCNEIP00 used to check and/or restart the CICSsocket interface via an INQUIRE TASK looking for the supplied CSKL listener. This programutilizes a LINK to IBM supplied program EZACIC20. We run this program in all local CICS regionscontaining the CICS socket interface via "NEIP CHECK\" (without the quotes) in a sequentialterminal at CICS startup, and "NEIP CANCEL\" at shutdown. The REGS register equates macro usedin this program is also available.

NERDC CICS assembler sample security exit program EZACICSE used by the CICS SocketInterface via the SECEXIT configuration option. This is a "stripped down" version of our program,but should at least be a good starting point.

NERDC CICS Check CICS Socket Interface Perl CGI program sokt.pl and NERDC CICS socketassembler program DCSOKT00 invoked via the sokt.pl CGI program. sokt.pl has been tested withAIX, but should work with most Unix systems. The SOKT transaction identifier will need to bedefined to the CICS PCT to invoke DCSOKT00, which needs to be defined in the CICS PPT, andassembled as a CICS socket application program, by adding a SYSLIB DD for DSN=hlq.SEZATCPto your linkedit step with an INCLUDE SYSLIB(EZACICAL) to your linkedit SYSIN DD. Note thatall of the above programs "need work" − but at least they're "free" and "open source". To see theseprograms in action, try URL:

http://cics.nerdc.ufl.edu/cgi−bin/sokt.pl

Jump to More Appendix, or Jump to Title Page, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/appendix.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 23 of 26

Exploiting the CICS Socket Interface − MoreAppendix

Prior SHARE CICS CSI sessions:•

"CICS Socket Interface − Tips and Techniques"http://nersp.nerdc.ufl.edu/~sfware/share93/.

"CICS TCP/IP Sockets − User Experience" (split session with Ned Stewart)http://nersp.nerdc.ufl.edu/~fclned/share91/.

NERDC CICS COBOL application program DCSO2500 used to do DNS lookup testing/verification.This program utilizes a LINK to IBM supplied program EZACIC25. This is similar to the "nslookup"command found on many platforms. Here's an example of what this program can do from a clearscreen in CICS (3270−based):

so25 www.nerdc.ufl.edu

results in:

SO25 sp19fe.nerdc.ufl.edu = 128.227.128.99

SAS sample code, including TCP/IP socket client and server examples:•

http://www.sas.com/techsup/download/SASC/sample/

WSA − The Windows Socket API − winsock.dll•

http://www.nexit.com/wsock.html

There are some samples in the TCP/IP OS dataset 'prefix.SEZAINST'.•

RFCs (Request For Comments) − search for "socket", etc.:•

http://www.faqs.org/rfcs/

Jump to More Appendix, or Jump to Title Page, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/appendix2.html>.

Last updated on June 27, 2001, by Steve Ware, <mailto:[email protected]>.

Page 24 of 26

Exploiting the CICS Socket Interface − MoreAppendix

IBM Softcopy Publications (as of 06/29/2001):For OS/390:http://www−1.ibm.com/servers/s390/os390/bkserv/

For z/OS:http://www−1.ibm.com/servers/eserver/zseries/zos/bkserv/

SC31−8518, "OS/390 V2R8.0−V2R10.0 SecureWay CS IP CICS Sockets Guide"http://publibz.boulder.ibm.com:80/cgi−bin/bookmgr_OS390/BOOKS/F1AI4010/CCONTENTS

IBM Red Books (as of 06/29/2001):http://www.redbooks.ibm.com/♦ GG24−4026, "CICS/ESA and TCP/IP for MVS Sockets Interface"(From Sept. 1993, but still has good info., and includes a diskette with sample code. Note thatI can't find a softcopy version of this Red Book on the internet, but a softcopy version wasavailable several years ago.)

GG24−2561, "MVS TCP/IP Sockets"http://publibz.boulder.ibm.com:80/cgi−bin/bookmgr_OS390/BOOKS/ez306700/CCONTENTS

GG24−3376, "TCP/IP Tutorial and Technical Overview"http://publibz.boulder.ibm.com:80/cgi−bin/bookmgr_OS390/BOOKS/ez306201/CCONTENTS

SG24−5229, "CS for OS/390 TCP/IP Implementation: MVS Applications"http://publibz.boulder.ibm.com:80/cgi−bin/bookmgr_OS390/BOOKS/ez3aby01/CCONTENTS

Jump to More Appendix, or Jump to Title Page, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/appendix3.html>.

Last updated on June 29, 2001, by Steve Ware, <mailto:[email protected]>.

Page 25 of 26

Exploiting the CICS Socket Interface − MoreAppendix

IBM CICS Home Page:http://www−4.ibm.com/software/ts/cics/

IBM zSeries Networking Home Page:http://www−1.ibm.com/servers/eserver/zseries/networking/

IBM Communications Server Home Page:http://www−4.ibm.com/software/network/commserver/

Mailing Lists, discussion groups, etc.:CataList, the official catalog of LISTSERV® lists:http://www.lsoft.com/lists/listref.html

CICS−[email protected] (CICS)To subscribe, send email to [email protected] with the command:SUBSCRIBE CICS−L

IBM−[email protected] (IBM Mainframes)To subscribe, send email to [email protected] with the command: SUBSCRIBEIBM−MAIN

IBMTCP−[email protected] (IBM TCP/IP)To subscribe, send email to [email protected] with the command:SUBSCRIBE IBMTCP−L

Jump to Title Page, or Jump to Table of Contents.

The URL for this document is <http://nersp.nerdc.ufl.edu/~sfware/share97/appendix4.html>.

Last updated on June 29, 2001, by Steve Ware, <mailto:[email protected]>.

Page 26 of 26