CICS
Encyclopedia
Customer Information Control System (CICS) is a transaction server
Transaction server
A transaction server is a software component that is used in implementing transactions.A transaction involves multiple steps which must be completed atomically, as though it is a single operation which can not be interrupted, even though it may require multiple steps...

 that runs primarily on IBM mainframe
IBM mainframe
IBM mainframes are large computer systems produced by IBM from 1952 to the present. During the 1960s and 1970s, the term mainframe computer was almost synonymous with IBM products due to their marketshare...

 systems under z/OS
Z/OS
z/OS is a 64-bit operating system for mainframe computers, produced by IBM. It derives from and is the successor to OS/390, which in turn followed a string of MVS versions.Starting with earliest:*OS/VS2 Release 2 through Release 3.8...

 and z/VSE.

CICS is a transaction manager designed for rapid, high-volume online processing. This processing is mostly interactive (screen-oriented), but background transactions are possible. Applications are written in a variety of languages and use CICS-supplied language extensions to interact with CICS resources such as files, database connections or to invoke functions such as web services. CICS manages the entire transaction such that if for any reason a part of the transaction fails all recoverable changes can be backed out.

While CICS has its highest profile among financial institutions such as banks and insurance companies, over 90 percent of Fortune 500
Fortune 500
The Fortune 500 is an annual list compiled and published by Fortune magazine that ranks the top 500 U.S. closely held and public corporations as ranked by their gross revenue after adjustments made by Fortune to exclude the impact of excise taxes companies collect. The list includes publicly and...

 companies are reported to rely on CICS (running on z/OS) for their core business functions, along with many government entities. CICS is used in bank-teller applications, ATM
Automated teller machine
An automated teller machine or automatic teller machine, also known as a Cashpoint , cash machine or sometimes a hole in the wall in British English, is a computerised telecommunications device that provides the clients of a financial institution with access to financial transactions in a public...

 systems, industrial production control systems, insurance applications, and many other types of interactive applications.

Recent CICS Transaction Server enhancements include support for Web service
Web service
A Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...

s and Enterprise Java Beans (EJBs), Event processing, Atom
Atom (standard)
The name Atom applies to a pair of related standards. The Atom Syndication Format is an XML language used for web feeds, while the Atom Publishing Protocol is a simple HTTP-based protocol for creating and updating web resources.Web feeds allow software programs to check for updates published on a...

 feeds, and REST
Representational State Transfer
Representational state transfer is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The term representational state transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation...

ful interfaces.
CICS Transaction Server version 4.2, which became generally available on 24 June 2011, includes support for
system events, 64-bit Java, transaction tracking, and password phrases
Passphrase
A passphrase is a sequence of words or other text used to control access to a computer system, program or data. A passphrase is similar to a password in usage, but is generally longer for added security. Passphrases are often used to control both access to, and operation of, cryptographic programs...

.

History

The first release of the CICS Program Product developed by IBM became available on July 8, 1969, not long after IMS database management system
Database management system
A database management system is a software package with computer programs that control the creation, maintenance, and use of a database. It allows organizations to conveniently develop databases for various applications by database administrators and other specialists. A database is an integrated...

. CICS was originally developed in the United States
United States
The United States of America is a federal constitutional republic comprising fifty states and a federal district...

 at an IBM Development Center in Des Plaines, Illinois, beginning in 1966. The first CICS product was released in 1968, named Public Utility Customer Information Control System, or PU-CICS. CICS was originally developed to address requirements from the public utility industry, but it became clear immediately that it had applicability to many other industries, so the Public Utility prefix was dropped with the introduction of the first release of the CICS Program Product.

Early evolution

CICS originally only supported a few IBM-brand devices like the 1965 IBM 2741
IBM 2741
The IBM 2741 was a printing computer terminal introduced in 1965.It combined a ruggedized Selectric typewriter mechanism with IBM SLT electronics and an RS-232-C serial interface. It operated at about 14.1 characters per second with a data rate of 134.5 bits/second...

 Selectric (golf ball) typewriter. The 1964 IBM 2260
IBM 2260
The text-only 960-character monochrome IBM 2260 cathode ray tube video display terminal plus computer keyboard was a 1964 predecessor to the more-powerful color text-and-graphics IBM 3270. The 2260 screen image was normally configured with 12 lines of 80 characters each, which corresponded to IBM...

 and 1972 IBM 3270
IBM 3270
The IBM 3270 is a class of block oriented terminals made by IBM since 1972 normally used to communicate with IBM mainframes. As such, it was the successor to the IBM 2260 display terminal. Due to the text colour on the original models, these terminals are informally known as green screen terminals...

 video display terminals eventually played major roles in the evolution of CICS paperless office
Paperless office
A paperless office is a work environment in which the use of paper is eliminated or greatly reduced. This is done by converting documents and other papers into digital form. Proponents claim that "going paperless" can save money, boost productivity, save space, make documentation and information...

 capabilities.

In the early days of IBM mainframes, computer software was free (bundled at no extra charge with computer hardware
Computer hardware
Personal computer hardware are component devices which are typically installed into or peripheral to a computer case to create a personal computer upon which system software is installed including a firmware interface such as a BIOS and an operating system which supports application software that...

). The OS/360 operating system and application support software like CICS were "open" to IBM customers long before the open source software initiative. Corporations like Standard Oil of Indiana (Amoco) made major contributions to CICS.

The IBM Des Plaines team tried to add support for popular non-IBM terminals like the ASCII
ASCII
The American Standard Code for Information Interchange is a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that use text...

 Teletype
Teletype Corporation
The Teletype Corporation, a part of American Telephone and Telegraph Company's Western Electric manufacturing arm since 1930, came into being in 1928 when the Morkrum-Kleinschmidt Company changed its name to the name of its trademark equipment...

 Model 33 ASR, but the small low-budget software development team could not afford the $100-per-month hardware to test it. IBM executives incorrectly felt that the future would be like the past with batch processing
Batch processing
Batch processing is execution of a series of programs on a computer without manual intervention.Batch jobs are set up so they can be run to completion without manual intervention, so all input data is preselected through scripts or command-line parameters...

 using traditional punch cards.

IBM reluctantly provided only minimal funding when public utility companies, banks and credit-card companies demanded a cost-effective real-time computing
Real-time computing
In computer science, real-time computing , or reactive computing, is the study of hardware and software systems that are subject to a "real-time constraint"— e.g. operational deadlines from event to system response. Real-time programs must guarantee response within strict time constraints...

 system (similar to the 1965 IBM Airline Control Program used by the American Airlines Sabre
Sabre
The sabre or saber is a kind of backsword that usually has a curved, single-edged blade and a rather large hand guard, covering the knuckles of the hand as well as the thumb and forefinger...

 computer reservations system
Computer reservations system
A computer reservations system is a computerized system used to store and retrieve information and conduct transactions related to air travel. Originally designed and operated by airlines, CRSes were later extended for the use of travel agencies...

) for high-speed data access-and-update to customer information for their telephone operators (without waiting for over-night batch processing punch card systems).

When CICS was delivered to Amoco with Teletype Model 33 ASR support, it caused the entire OS/360 operating system to crash (including non-CICS application programs). The majority of the CICS Terminal Control Program (TCP - the heart of CICS) and part of OS/360 had to be laboriously redesigned and rewritten by Amoco Production Company in Tulsa Oklahoma. It was then given back to IBM for free distribution to others.

In a few short years, CICS generated over $60 Billion dollars in new hardware revenue for IBM, and became their most-successful mainframe software product.

In early 1970, a number of the original developers, including Ben Riggins (the principal architect of the early releases) relocated to California and continued CICS development at IBM's Palo Alto
Palo Alto, California
Palo Alto is a California charter city located in the northwest corner of Santa Clara County, in the San Francisco Bay Area of California, United States. The city shares its borders with East Palo Alto, Mountain View, Los Altos, Los Altos Hills, Stanford, Portola Valley, and Menlo Park. It is...

 Development Center. IBM executives did not recognize value in software as a revenue-generation product, until after federal law required software unbundling. In 1980, IBM executives failed to heed Ben Riggins' strong suggestions that IBM should provide their own EBCDIC
EBCDIC
Extended Binary Coded Decimal Interchange Code is an 8-bit character encoding used mainly on IBM mainframe and IBM midrange computer operating systems....

-based operating system and integrated-circuit microprocessor
Microprocessor
A microprocessor incorporates the functions of a computer's central processing unit on a single integrated circuit, or at most a few integrated circuits. It is a multipurpose, programmable device that accepts digital data as input, processes it according to instructions stored in its memory, and...

 chip for use in the IBM Personal Computer as a CICS intelligent terminal (instead of the incompatible ASCII
ASCII
The American Standard Code for Information Interchange is a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that use text...

-based Intel chip, and immature Microsoft 1980 DOS
DOS
DOS, short for "Disk Operating System", is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.Related...

).

In 1974, CICS development responsibility was shifted to IBM's Hursley
Hursley
Hursley is a village and civil parish in Hampshire, England with a population of around 800 in 2005. It is located roughly mid-way between Romsey and Winchester on the A3090...

, United Kingdom
United Kingdom
The United Kingdom of Great Britain and Northern IrelandIn the United Kingdom and Dependencies, other languages have been officially recognised as legitimate autochthonous languages under the European Charter for Regional or Minority Languages...

 Laboratory, where development work continues today.

When CICS was first released, it only supported application transaction programs written in IBM 360 Assembler
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

. COBOL
COBOL
COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....

 and PL/I
PL/I
PL/I is a procedural, imperative computer programming language designed for scientific, engineering, business and systems programming applications...

 support were added years later.

Multiple-user interactive-transaction application programs were required to be quasi-reentrant in order to support multiple concurrent transaction
Database transaction
A transaction comprises a unit of work performed within a database management system against a database, and treated in a coherent and reliable way independent of other transactions...

 thread
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...

s. A software coding error in one application could block all users from the system. The modular design of CICS reentrant / reusable control programs meant that, with judicious "pruning," multiple users with multiple applications could be executed on a computer with just 32K of expensive magnetic core
Magnetic core
A magnetic core is a piece of magnetic material with a high permeability used to confine and guide magnetic fields in electrical, electromechanical and magnetic devices such as electromagnets, transformers, electric motors, inductors and magnetic assemblies. It is made of ferromagnetic metal such...

 physical memory (including the operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

).

Because of the limited capacity of even large processors of that era every CICS installation was required to assemble the source code for all of the CICS system modules after completing a system generation (sysgen) process to establish values for conditional assembly language statements. This process allowed each customer to exclude support from CICS itself for any feature they did not intend to use, such as device support for terminal types not in use. CICS services emulated the functions of the operating system, but provided services tailored to support only quasi-reentrant transaction processing that were more efficient than the generalized services in the operating system and much simpler for programmers to use, particularly with respect to communication with diverse terminal devices.

Considerable effort was required by CICS application programmers to make their transactions as efficient as possible. A common technique was to limit the size of individual programs to no more than 4,096 bytes, or 4K, so that CICS could easily reuse the memory occupied by any program not currently in use for another program or other application storage needs. When virtual memory
Virtual memory
In computing, virtual memory is a memory management technique developed for multitasking kernels. This technique virtualizes a computer architecture's various forms of computer data storage , allowing a program to be designed as though there is only one kind of memory, "virtual" memory, which...

 was added to versions OS/360 in 1972, the 4K strategy became even more important to reduce paging
Paging
In computer operating systems, paging is one of the memory-management schemes by which a computer can store and retrieve data from secondary storage for use in main memory. In the paging memory-management scheme, the operating system retrieves data from secondary storage in same-size blocks called...

 and thrashing (computer science) unproductive resource-contention overhead.

The efficiency of compiled high-level (COBOL and PL/I) language programs left much to be desired. Many CICS application programs continued to be written in assembler language, even after COBOL and PL/I support became available.

With 1960s-and-1970s hardware resources expensive and scarce, a competitive "game" developed among system optimization analysts. When critical path
Critical Path
Critical Path may refer to:*The Critical Path, the longest necessary path through a network of activities when respecting their interdependencies, which may be identified with the Program Evaluation and Review Technique and the Critical path method...

 code was identified, a code snippet was passed around from one analyst to another. Each person had to either (a) reduce the number of bytes of code required, or (b) reduce the number of CPU cycles required. Younger analysts learned from what more-experienced mentors did. Eventually, when no one could do (a) or (b), the code was considered optimized, and they moved on to other snippets. Small shops with only one analyst learned CICS optimization very slowly (or not at all).

CICS owes its early popularity to its relatively-efficient implementation when hardware was very expensive, its multi-threaded processing architecture, its relative simplicity for developing terminal-based real-time transaction applications, and many open-source customer contributions, including both debugging and feature enhancement.

An earlier, single thread transaction processing system
Transaction Processing System
A transaction processing system is a type of information system. TPSs collect, store, modify, and retrieve the transactions of an organization. A transaction is an event that generates or modifies data that is eventually stored in an information system. To be considered a transaction processing...

, IBM MTCS, existed prior to CICS and an 'MTCS-CICS bridge', a type of middleware
Middleware
Middleware is computer software that connects software components or people and their applications. The software consists of a set of services that allows multiple processes running on one or more machines to interact...

, was developed to allow these transactions to execute under CICS with no change to the original application programs.

Each unique CICS "Task
Task (computers)
A task is an execution path through address space. In other words, a set of program instructions that are loaded in memory. The address registers have been loaded with the initial address of the program. At the next clock cycle, the CPU will start execution, in accord with the program. The sense is...

" or transaction was allocated its own dynamic memory
Computer storage
Computer data storage, often called storage or memory, refers to computer components and recording media that retain digital data. Data storage is one of the core functions and fundamental components of computers....

 at start-up and subsequent requests for additional memory were handled by a call to the "Storage Control program" (part of the CICS nucleus or "kernel"), which is analogous to an operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

.

Because application programs could be shared by many concurrent
Concurrency (computer science)
In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other...

 threads, the use of static variable
Static variable
In computer programming, a static variable is a variable that has been allocated statically — whose lifetime extends across the entire run of the program...

s embedded within a program (or use of operating system memory) was restricted (by convention only).

Unfortunately, many of the "rules" were frequently broken, especially by COBOL programmers who were frequently unaccustomed to the internals of their programs or else did not use the necessary restrictive compile time
Compile time
In computer science, compile time refers to either the operations performed by a compiler , programming language requirements that must be met by source code for it to be successfully compiled , or properties of the program that can be reasoned about at compile time.The operations performed at...

 options. This resulted in "non-re-entrant" code that was often unreliable, leading to many spurious storage violation
Storage violation
A storage violation occurs when a task modifies, or attempts to modify, computer storage that it does not own.-Types of storage violation:Storage violation can, for instance, consist of writing to or freeing storage not owned by the task....

s and entire CICS system crashes.

The entire partition, or Multiple Virtual Storage (MVS) region, operated with the same memory protection
Memory protection
Memory protection is a way to control memory access rights on a computer, and is a part of most modern operating systems. The main purpose of memory protection is to prevent a process from accessing memory that has not been allocated to it. This prevents a bug within a process from affecting...

 key including the CICS kernel code. Program corruption and CICS control block corruption was a frequent cause of system downtime. A software error in one application program could overwrite the memory (code or data) of one-or-all currently-running application transactions. Locating the offending application code for complex transient timing errors could be a very-difficult operating-system analyst problem.

These serious shortcomings persisted for multiple new releases of CICS over a period of more than 20 years. CICS application transactions were often mission-critical for public utility companies, large banks and other multi-billion-dollar financial institutions. Top-quality CICS skills were in high demand and short supply. The complex learning curve was shallow and long. Unqualified novice developers could have a major negative impact on company operations.

Eventually, it became possible to provide a measure of advance application protection by performing all testing under control of a monitoring program that also served to provide Test and Debug features. One such software offering was known as OLIVER, which prevented application programs corrupting memory by using instruction set simulation
Instruction Set Simulator
An instruction set simulator is a simulation model, usually coded in a high-level programming language, which mimics the behavior of a mainframe or microprocessor by "reading" instructions and maintaining internal variables which represent the processor's registers.Instruction simulation is a...

 of the application code, providing partial virtualization.

System calls to CICS (for example to read a record from a file) were elicited by a macro call and this gave rise to the later terminology "Macro-level CICS." An example of a call to the "File Control Program" of CICS might look like this:

DFHFC TYPE=READ,DATASET=myfile,TYPOPER=UPDATE,....etc.

This was converted by a pre-compile Assembly that expanded the conditional assembly language
Conditional assembly language
A Conditional Assembly Language is that part of an Assembly Language used to write macros.- Example :In the IBM conditional assembly language, the most important statements are:-* MACRO and MEND - used to start and finish a macro...

 macros to their COBOL or PL/I CALL statement equivalents. Thus preparing a HLL
High-level programming language
A high-level programming language is a programming language with strong abstraction from the details of the computer. In comparison to low-level programming languages, it may use natural language elements, be easier to use, or be from the specification of the program, making the process of...

 application was effectively a "two-stage" compile
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

; output from the Assembler fed straight into the HLL compiler as input.

Command-level CICS

During the 1980s, IBM at Hursley
Hursley
Hursley is a village and civil parish in Hampshire, England with a population of around 800 in 2005. It is located roughly mid-way between Romsey and Winchester on the A3090...

 produced a "half-way house" version of CICS that supported what became known as "Command-level CICS." This release still supported the older programs but introduced a new layer of execution to the new Command level application programs.

A typical Command-level call was given in the first MAPSET example above. This was pre-processed by a pre-compile batch translation stage, which converted the embedded Command-level commands (EXECs) into Call statements to a stub subroutine. So, preparing application programs for later execution still required two stages. It was possible to write "Mixed mode" applications using both Macro-level and Command-level statements.

At execution time, the carefully built Command-level commands were converted back using a run-time translator ("The EXEC Interface Program"; part of the CICS-supplied nucleus) to the old Macro-level call, which was then executed by the mostly-unchanged CICS nucleus programs.

CEDF: This IBM-produced "Command Execution Diagnostic Facility" helped debug 'EXEC CICS' commands by showing before and after results. The "OLIVER" software predated this free add-on by more than 10 years, and yet CEDF came without any form of memory protection. It was, however, complementary to OLIVER, and both could be used simultaneously.

The Command-level-only CICS introduced in the early 1990s offered some advantages over earlier versions of CICS. However, IBM also dropped support for Macro-level application programs written for earlier versions. This meant that many application programs had to be converted or completely rewritten to use Command-level EXEC commands only, usually by programmers without exposure to earlier versions or to the original code.

By this time, there were perhaps millions of programs worldwide that had been executing fairly reliably; for decades in many cases. Rewriting them inevitably introduced new bugs without necessarily adding new features.

Run-time conversion

It was, however, possible to execute old Macro-level programs using conversion software such as "Command CICS" produced by APT International, a former CICS Software Specialist company that had earlier produced OLIVER, described above. It was possible to take advantage of the new features of later versions of CICS while, at the same time, retaining the original unaltered codebase. It is believed that there are still programs running today using this same technology.
The overhead was minimal, since additional overhead was limited to the CICS calls only.

Z notation

Part of CICS was formalized using the Z notation
Z notation
The Z notation , named after Zermelo–Fraenkel set theory, is a formal specification language used for describing and modelling computing systems. It is targeted at the clear specification of computer programs and computer-based systems in general.-History:...

 in the 1980s and 1990s in collaboration with the Oxford University Computing Laboratory
Oxford University Computing Laboratory
The Department of Computer Science, until 2011 named the Computing Laboratory , is a department of Oxford University in England...

, under the leadership of Sir Tony Hoare. This work won a Queen's Award
Queen's Award
Queen's Award can refer to:* The Queen's Awards for Enterprise, formerly The Queens Awards to Industry.* The Queen's Award for Voluntary Service* The Queen's Award for Forestry* The Queen's Award for Services in the Community...

 for Technological Achievement.

New programming styles

Recent CICS Transaction Server enhancements include support for a number of modern programming styles.

CICS Transaction Server Version 2.1 introduced support for Enterprise Java Beans (EJB). CICS Transaction Server Version 2.2 supported the Software Developers Toolkit. CICS provides the same run-time container as IBM's WebSphere product family so EJB applications are portable between CICS and Websphere and there is common tooling for the development and deployment of EJB applications.

Also introduced with CICS TS 2.1 was the capability for CICS transactions to be invoked via an HTTP request. This allowed CICS transactions to participate as servers in a POX
Plain Old XML
Plain Old XML is a term used to describe basic XML, sometimes mixed in with other, blendable specifications like XML Namespaces, Dublin Core, XInclude and XLink. People typically use the term as a contrast with complicated, multilayered XML specifications like those for web services or RDF...

 or REST
Representational State Transfer
Representational state transfer is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The term representational state transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation...

 conversation.

CICS Transaction Server 2.3 added new EJB tracing capabilities, and new JCICS classes, allowing the invocation of CICS services using Java. End-to-end debugging was also introduced, making it easier to debug applications, from the Java client to the CICS application.

The Web services support in CICS Transaction Server Version 3.1 enables a CICS program to be a Web service provider or requester. CICS supports a number of industry standard and specifications including SOAP Version 1.1 and Version 1.2, Web services distributed transactions (WS-Atomic Transaction) and XML Encryption and Signing.

The CICS Web Services Assistant includes two batch processing
Batch processing
Batch processing is execution of a series of programs on a computer without manual intervention.Batch jobs are set up so they can be run to completion without manual intervention, so all input data is preselected through scripts or command-line parameters...

 utilities, DFHWS2LS and DFHLS2WS, which are used to map WSDL
Web Services Description Language
The Web Services Description Language is an XML-based language that is used for describing the functionality offered by a Web service. A WSDL description of a web service provides a machine-readable description of how the service can be called, what parameters it expects and what data structures...

 to programming language structures and vice versa, respectively.

The input to DFHWS2LS is a set of control statements governing its processing and file containing WSDL
Web Services Description Language
The Web Services Description Language is an XML-based language that is used for describing the functionality offered by a Web service. A WSDL description of a web service provides a machine-readable description of how the service can be called, what parameters it expects and what data structures...

 for a web service to be accessed. The output is a set of language structures, each corresponding to a method in the WSDL
Web Services Description Language
The Web Services Description Language is an XML-based language that is used for describing the functionality offered by a Web service. A WSDL description of a web service provides a machine-readable description of how the service can be called, what parameters it expects and what data structures...

, and a WSBIND file. This utility is intended for use by an application developer who wishes to access a web service as a client and has been provided its WSDL
Web Services Description Language
The Web Services Description Language is an XML-based language that is used for describing the functionality offered by a Web service. A WSDL description of a web service provides a machine-readable description of how the service can be called, what parameters it expects and what data structures...

.

In this case, the application developer populates the language structure corresponding to the method they wish to invoke, writes the structure to the DFHWS-BODY CICS container, and executes the INVOKE WEBSERVICE API. Execution of the API is synchronous, on return the DFHWS-BODY contains the response from the invoked web service mapped to a language structure.

The input to DFHLS2WS is a set of control statements governing its processing and file containing the language structure corresponding to the invocation parameters of a CICS application program. The output is the WSDL
Web Services Description Language
The Web Services Description Language is an XML-based language that is used for describing the functionality offered by a Web service. A WSDL description of a web service provides a machine-readable description of how the service can be called, what parameters it expects and what data structures...

 corresponding to the language structure, and a WSBIND file. This utility is intended for use by an application developer who wishes to expose a program's functionality as a web service.

In this case, the application program is invoked when an HTTP request for its services is received by the CICS region. The application program sees the request as language structure in either a CICS container or a commarea (communication area), which one is governed by the control statements fed into DFHLS2WS. The application program performs its processing and writes the response back to the language structure it was invoked with.

In either case, whether the CICS application is acting as a web services client or server, the mapping of data to and from XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

 is governed by the generated WSBIND file. The message body is wrapped in, and unwrapped from, a SOAP
SOAP
SOAP, originally defined as Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks...

 envelope by CICS Web Services "plumbing" code external to the application program.

The connections between a web service, the WSBIND file, the WSDL
Web Services Description Language
The Web Services Description Language is an XML-based language that is used for describing the functionality offered by a Web service. A WSDL description of a web service provides a machine-readable description of how the service can be called, what parameters it expects and what data structures...

, and the CICS transaction requesting or providing the service is done with CICS system level definitions and a configuration file.

Also introduced with CICS TS 3.1 was the capability for CICS applications to act as HTTP clients. This allowed CICS transactions to participate as clients in a POX
Plain Old XML
Plain Old XML is a term used to describe basic XML, sometimes mixed in with other, blendable specifications like XML Namespaces, Dublin Core, XInclude and XLink. People typically use the term as a contrast with complicated, multilayered XML specifications like those for web services or RDF...

 or REST
Representational State Transfer
Representational state transfer is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The term representational state transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation...

 conversation.

CICS TS can be extended with additional programming features using SupportPacs. For example SupportPac CA8K introduces support for Atom
Atom (standard)
The name Atom applies to a pair of related standards. The Atom Syndication Format is an XML language used for web feeds, while the Atom Publishing Protocol is a simple HTTP-based protocol for creating and updating web resources.Web feeds allow software programs to check for updates published on a...

 feeds, and SupportPac CA1S adds support for the PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

 scripting language, using the same Java-based PHP engine as Project Zero
Project Zero
WebSphere sMash is a development and runtime environment from IBM for the creation of dynamic web applications using the scripting languages Groovy and PHP...

. Often SupportPac introduce new technologies into CICS before they are added into the main product, for example CA8K introduced Atom feeds before it was officially integrated into the product in CICS TS 4.1

New Management Interface – CICS Explorer

On 5 November 2008, IBM introduced a SupportPac containing the new CICS Explorer Eclipse
Eclipse (software)
Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

-based graphical tooling interface for CICS.

Transactions

A CICS transaction is a set of operations that perform a task together. Usually, the majority of transactions are relatively simple tasks such as requesting an inventory list or entering a debit or credit to an account. A primary characteristic of a transaction is that it should be atomic. On IBM System z servers, CICS easily supports thousands of transactions per second, making it a mainstay of enterprise computing.

CICS applications comprise transactions, which can be written in numerous programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

s, including COBOL
COBOL
COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....

, PL/I
PL/I
PL/I is a procedural, imperative computer programming language designed for scientific, engineering, business and systems programming applications...

, C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

, C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

, IBM Basic assembly language, REXX
REXX
REXX is an interpreted programming language that was developed at IBM. It is a structured high-level programming language that was designed to be both easy to learn and easy to read...

, and Java.

Each CICS program is initiated using a transaction identifier. CICS screens are sent as a construct called a map, a little program created with BMS
BMS
BMS is a three letter acronym that may refer to:* Be-Music Script, a computer file format* Black Mesa * Borane-methylsulfide* Bristol Motor Speedway* Broadmeadows railway station, Melbourne...

 (Basic Mapping Support) assembler macros, SDEF or Delta Map. The end user inputs data, which is made accessible to the program by receiving a map from CICS. CICS screens may contain text that is highlighted, has different colors, and/or blinks. An example of how a map can be sent through COBOL is given below.

EXEC CICS
SEND MAPSET(MPS1) MAP(MP1)
END-EXEC.

Example of BMS Map Code

LOSMATT DFHMSD TYPE=MAP, X
MODE=INOUT, X
TIOAPFX=YES, X
TERM=3270-2, X
LANG=COBOL, X
MAPATTS=(COLOR,HILIGHT), X
DSATTS=(COLOR,HILIGHT), X
STORAGE=AUTO, X
CTRL=(FREEKB,FRSET)
*
LOSATT DFHMDI SIZE=(24,80), X
LINE=1, X
COLUMN=1
*
LSSTDII DFHMDF POS=(1,01), X
LENGTH=04, X
COLOR=BLUE, X
INITIAL='MQCM', X
ATTRB=PROT
*
DFHMDF POS=(24,01), X
LENGTH=79, X
COLOR=BLUE X
ATTRB=ASKIP, X
INITIAL='PF7- 8- 9- 10- X
11- 12-CANCEL'
*
DFHMSD TYPE=FINAL
END

Example of SDEF Map Code

TITLE 'LOS FAC SCAN'
SCANLOSI AUSN1ST SCREEN=S001,LEVEL=10,PREFIX=XX01
** COMMENTS.
** LAST CHANGED: JANUARY 21 1987
**
AUSNSDF NEW,1,1,UALM,'LOSI',ITMNM=CL
PUNCH 'COBDAT 12 FILLER REDEFINES XX01-CL.'
AUSNSDF NEXT,23,01,PAL,'PF1-HELP ',ITMNM=PF1
AUSNSDF NEXT,23,15,PAL,'2- ',ITMNM=PF2
AUSNSDF NEXT,23,28,PAL,'3- ',ITMNM=PF3
AUSNSDF NEXT,23,41,PAL,'4- ',ITMNM=PF4
AUSNSDF NEXT,23,54,PAL,'5- ',ITMNM=PF5
AUSNSDF NEXT,23,67,PAL,'6- ',ITMNM=PF6
AUSNSDF NEXT,24,01,PAL,'7- ',ITMNM=PF7
AUSNSDF NEXT,24,15,PAL,'8- ',ITMNM=PF8
AUSNSDF NEXT,24,28,PAL,'9- ',ITMNM=PF9
AUSNSDF NEXT,24,40,PAL,'10- ',ITMNM=PF10
AUSNSDF NEXT,24,53,PAL,'11- ',ITMNM=PF11
AUSNSDF NEXT,24,66,PAL,'12-CANCEL ',ITMNM=PF12
AUSNLST
END SCANLOSI

Example of Delta Map Code

**PDL**0003467834/LOSACCT/01/LOS TRANSACTION SCREEN
.*D
.*D Screen Layout for primary LOS Transaction Screen
.*D
.LAYOUT-LOS,-
. CURSOR = VOUCHER-NUM,-
. LAYOUT-SIZE=(24,80)
.*-----------------------------------------------------------------
LOSS TRANSACTION ACCOUNTING
Client Details:
Transaction Number &&&&&&&&&&&&&&&&&&& DATE && && &&&&
Account &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Client &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

.*
.VARIABLES ,UNPROTECTED,PAD,PREFIX=LPS,COLOR=GREEN
.* CONTROL-LINE AND MESSAGE-LINE DEFINED IN STANDARD MACRO
.*
-TRANS-NUM ,UPDATE
-DOT-DD ,UPDATE,NUM
-DOT-MM ,UPDATE,NUM
-DOT-CCYY ,UPDATE,NUM
-ACCOUNTNUM ,FROM,PROTECTED,COLOR=BLUE
-COMPANYNAME ,FROM,PROTECTED,COLOR=BLUE
.CONSTANTS, COLOR=BLUE
'LOS Accounting', COLOR=TURQUOISE
'Account:', COLOR=TURQUOISE
'Client:', COLOR=TURQUOISE
.END

CICS Family

Although when CICS is mentioned, people usually mean CICS Transaction Server, the "CICS Family" refers to a portfolio of transaction servers, connectors (called CICS Transaction Gateway) and CICS Tools.

CICS on distributed platforms (i.e. not z/OS) is called IBM TXSeries
IBM TXSeries
TXSeries for Multiplatforms is a distributed CICS Online Transaction Processing environment for mixed language applications. It is widely used for integrating data and applications between distributed solutions and enterprise systems, and the deployment of CICS applications written in COBOL, C ,...

, which is available on AIX, Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, Solaris, and HP-UX
HP-UX
HP-UX is Hewlett-Packard's proprietary implementation of the Unix operating system, based on UNIX System V and first released in 1984...

 operating systems. CICS is also available on other operating systems, notably IBM i and OS/2
OS/2
OS/2 is a computer operating system, initially created by Microsoft and IBM, then later developed by IBM exclusively. The name stands for "Operating System/2," because it was introduced as part of the same generation change release as IBM's "Personal System/2 " line of second-generation personal...

. The z/OS implementation (i.e., CICS Transaction Server for z/OS) is by far the most popular and significant.

Structure

In the z/OS
Z/OS
z/OS is a 64-bit operating system for mainframe computers, produced by IBM. It derives from and is the successor to OS/390, which in turn followed a string of MVS versions.Starting with earliest:*OS/VS2 Release 2 through Release 3.8...

 environment, a CICS installation comprises one or more regions (generally referred to as a "CICS Region")
, spread across one or more z/OS
Z/OS
z/OS is a 64-bit operating system for mainframe computers, produced by IBM. It derives from and is the successor to OS/390, which in turn followed a string of MVS versions.Starting with earliest:*OS/VS2 Release 2 through Release 3.8...

 system images. Although it processes interactive transactions, each CICS region may be started as a batch
Batch processing
Batch processing is execution of a series of programs on a computer without manual intervention.Batch jobs are set up so they can be run to completion without manual intervention, so all input data is preselected through scripts or command-line parameters...

 address space with standard JCL
Job Control Language
Job Control Language is a scripting language used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem....

 statements: it's a job that runs indefinitely. Alternatively, each CICS region may be started as a started task. Whether a batch job or a started task, CICS regions may run for days, weeks, or even months before shutting down for maintenance (MVS or CICS).

Each region comprises one major task — the "Quasi-Reentrant Task Control Block" (or QR TCB for short), on which every transaction runs. When certain services are required (such as access to DB2
IBM DB2
The IBM DB2 Enterprise Server Edition is a relational model database server developed by IBM. It primarily runs on Unix , Linux, IBM i , z/OS and Windows servers. DB2 also powers the different IBM InfoSphere Warehouse editions...

 data), other tasks (or TCBs) are used. Transactions marked Threadsafe don't return to the QR TCB when their use of a service is complete.

Installations are divided into multiple address spaces for a wide variety of reasons, such as:
  • application separation,
  • function separation,
  • avoiding the workload capacity limitations of a single region, or address space.


A typical installation consists of a number of distinct applications. Each application usually has its own "Terminal-Owning Region" (TOR) and one or more "Application-Owning Regions" (AORs), though other topologies are possible. For example, the AORs might not perform File I/O. Instead there would be "File-Owning Regions" (FORs) that performed the File I/O on behalf of transactions in the AOR.

Pronunciation

Different countries have differing pronunciations
  • Within IBM (specifically Tivoli
    Tivoli Software
    Tivoli Software is the service management brand of the IBM Software Group. IBM purchased Austin-based Tivoli Systems, Inc. on March 4, 1996 and allowed existing executive management to operate Tivoli as a wholly owned subsidiary in the IBM Software Group...

    ) it is referred to as ˈkɪks kicks.
  • In the US, it is more usually pronounced by reciting each letter (C-I-C-S ˌsiːˌaɪˌsiːˈɛs).
  • In Australia, Belgium, Canada, Hong Kong, the UK and some other countries, it is pronounced ˈkɪks.
  • In Finland, it is pronounced kiks
  • In France, it is pronounced se.i.se.ɛs.
  • In German, it is pronounced ˈtsɪks and, less often, ˈkɪks.
  • In India, it is pronounced kicks.
  • In Italian, is pronounced ˈtʃiks.
  • In Poland, it is pronounced ˈkʲiks.
  • In Portugal and Brazil, it is pronounced ˈsiks.
  • In Russia, it is pronounced kiks.
  • In Slovenia, it is pronounced kiks.
  • In Spanish, it is pronounced ˈθiks.
  • In Israel, it is pronounced kicks.
  • In Uganda, it is pronounced kicks.
  • In Turkiye, it is pronounced kiks.

See also

  • IBM TXSeries
    IBM TXSeries
    TXSeries for Multiplatforms is a distributed CICS Online Transaction Processing environment for mixed language applications. It is widely used for integrating data and applications between distributed solutions and enterprise systems, and the deployment of CICS applications written in COBOL, C ,...

     (CICS on distributed platforms)
  • IBM WebSphere
    IBM WebSphere
    IBM WebSphere refers to a brand of computer software products in the genre of enterprise software known as "application and integration middleware". These software products are used by end-users to create applications and integrate applications with other applications...

  • IBM 2741
    IBM 2741
    The IBM 2741 was a printing computer terminal introduced in 1965.It combined a ruggedized Selectric typewriter mechanism with IBM SLT electronics and an RS-232-C serial interface. It operated at about 14.1 characters per second with a data rate of 134.5 bits/second...

  • IBM 2260
    IBM 2260
    The text-only 960-character monochrome IBM 2260 cathode ray tube video display terminal plus computer keyboard was a 1964 predecessor to the more-powerful color text-and-graphics IBM 3270. The 2260 screen image was normally configured with 12 lines of 80 characters each, which corresponded to IBM...

  • IBM 3270
    IBM 3270
    The IBM 3270 is a class of block oriented terminals made by IBM since 1972 normally used to communicate with IBM mainframes. As such, it was the successor to the IBM 2260 display terminal. Due to the text colour on the original models, these terminals are informally known as green screen terminals...

  • OS 360
  • VSAM
  • z/TPF
  • Command CICS a run-time macro to Command level translator

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK