[comp.lang.misc] CICS what is it?

u-dmfloy%sunset.utah.edu@utah-cs.UUCP (Daniel M Floyd) (09/21/88)

CICS.

Since I don't know what it is, I don't know where to post;
however, I think it's some sort of language.

Could anyone tell me?

Thanks.

Maybe Crumbly Icky Computer System. :-))

Dan Floyd
8<D=

EGNILGES@pucc.Princeton.EDU (Ed Nilges) (09/22/88)

In article <5740@utah-cs.UUCP>, u-dmfloy%sunset.utah.edu@utah-cs.UUCP (Daniel M Floyd) writes:
 
>CICS.
>
>Since I don't know what it is, I don't know where to post;
>however, I think it's some sort of language.
>
>Could anyone tell me?
>
>Thanks.
 
Customer Information Control System was developed in the late Sixties
for IBM for medium to large scale business customers.  It runs under
the operating system to provide telecommunications and real time
response where the main operating system is a dinosaur batch-oriented
monster like MVS or DOS which runs preplanned "jobs" only; in other
words, it provides an online responsiveness in an environment that
is anything but.
 
CICS is controlled typically be user or vendor written programs
that issue calls on CICS functions such as "get storage for
this transaction" or "write data about this transaction".  Programmers
conversant with CICS calls and especially those conversant with
CICS internal control blocks make big bucks.
 
The last time you were in the hospital, bleeding copiously onto the
reception desk while the clerk banged away at an enormous IBM
terminal, the system was probably CICS.

kjc@cuuxb.ATT.COM (~XT4134000~Kevin Coulter~C29~L18~6282~) (09/22/88)

In article <5740@utah-cs.UUCP> u-dmfloy%sunset.utah.edu.UUCP@utah-cs.UUCP (Daniel M Floyd) writes:
>CICS.
>
>Since I don't know what it is, I don't know where to post;
>however, I think it's some sort of language.

CICS (what the acronym stands for - hmm - maybe Customer Interactive Computer
System?) What it basically is is an operating system that allows on line 
transactions. It was developed by IBM for their machines. As far as I know, the
only two languages you can use with it are COBOL & assembler. Since COBOL is
not my favorite language, but is the recommended language for it, I agree with
your guess:
>Maybe Crumbly Icky Computer System. :-))

			Kevin

soley@ontenv.UUCP (Norman S. Soley) (09/25/88)

In article <2081@cuuxb.ATT.COM>, kjc@cuuxb.ATT.COM (~XT4134000~Kevin Coulter~C29~L18~6282~) writes:
> In article <5740@utah-cs.UUCP> u-dmfloy%sunset.utah.edu.UUCP@utah-cs.UUCP (Daniel M Floyd) writes:
> >CICS.
> >
> >Since I don't know what it is, I don't know where to post;
> >however, I think it's some sort of language.
> 
> What it basically is is an operating system that allows on line transactions. 

Not quite. It's a "conversation monitor" for the MVS operating system (roughly 
analogous to sh in UNIX, very roughly), It's tunable (or programmable if 
you prefer) and optimised for transaction processing.

> As far as I know, the only two languages you can use with it are 
> COBOL & assembler. 

You can also use the IMS DBMS and I think DB2 with CICS.


-- 
Norman Soley - Data Communications Analyst - Ontario Ministry of the Environment
UUCP:	uunet!attcan!lsuc!ncrcan!ontenv!soley	VOICE:	+1 416 323 2623
OR:     soley@ontenv.UUCP 

doug@edge.UUCP (Doug Pardee) (09/27/88)

>CICS.
>
>Since I don't know what it is, I don't know where to post;
>however, I think it's some sort of language.
>
>Could anyone tell me?

The 2 previous responses I've seen are basically correct; here's some
additional info...

CICS stands for Customer Information Control System.  It is a DB/DC
(DataBase/Data Communications) program for the IBM 360/370/30xx/43xx/9370
series of computers.  CICS is typically used for handling database
update/inquiry transactions.  Hotel reservations, bank tellers, library
card catalogs, police records, whatever.

It was originally written by IBM as a custom program for one of their
customers.  IBM was, for many years, reluctant to sell it to other customers
because it competed with the (bigger and much more expensive) DB/DC program
that IBM had developed as a commercial product (namely IMS).  But even IBM
knows that the customer is always right -- IF you can't change his mind.  So
IBM has sold CICS/VS as a Licensed Program Product for some time now.

CICS provides multiple-user terminal access, screen data formatting, and data
base access (although the actual database is a separate Licensed Program
Product, usually DL/1 but some sites are now using the DB2 relational data
base).  CICS can automatically log all transactions, and provides both
back-up and back-out (if a transaction half-completes and then aborts)
facilities.

The terminal operator begins a transaction by typing a 4-character
code which CICS looks up in a table and runs an appropriate transaction
program.  Transaction programs can be written in COBOL, PL/1, or assembler.
As a practical matter, almost all are written in COBOL because that is the
language that business-type programmers are most familiar with.

CICS's most unloveable feature is that all transaction programs are run
as subroutines of CICS and so are NOT protected from each other.  Nor is
CICS itself protected from the transaction programs.  A minor screw-up
in a transaction program can bring the whole CICS region crashing down,
leaving hundreds of terminal operators cursing at the computer and telling
their customers that "the computer's down".  Naturally, you can buy some
special software which will reduce the likelihood of such disasters :-)

A side effect is that data security is difficult.  This is a major
consideration in many database applications; there are laws about this
stuff.  And what a surprise!  It turns out that you can buy some special
CICS security software  :-)

Early "macro level" CICS was very fast and efficient, but required very
smart and careful programmers.  Finding the data that you needed was
difficult, and changing the wrong data was therefore too easy.

Almost all CICS these days is done at "command level".  A command level
transaction program is mostly just a zillion calls on special CICS
subroutines, with the host language being used mainly for "if" tests
and for looping.  To make the programmer's life easier, IBM provides a
translator program which takes in "command level statements", all of
which begin with the words EXEC CICS, and produces the appropriate
subroutine calls.  Command level programming is much easier, especially
for the "average COBOL programmer", and it's a lot harder to make a
catastrophic boo-boo, but the overall efficiency of CICS suffers.  Ah well,
if it isn't fast enough IBM will be glad to sell you a bigger computer :-)

It isn't unreasonable to call the CICS command level statements a "language",
and I've seen books that treat them that way.  Just remember that it's not a
complete language; the CICS statements are always embedded inside a COBOL,
PL/1, or assembler program.

IBM has been claiming that "one of these days" the old macro level CICS
will go away.  As of a year and a half ago it hadn't; I don't know about
today.
-- 
Doug Pardee, Edgcore Technology (formerly Edge Computer), Scottsdale, AZ  
{ames,hplabs,sun,amdahl,allegra}!oliveb!edge!doug    uunet!ism780c!edge!doug

brunjes@kadsma.kadsm (Roy Brunjes) (09/27/88)

In article <2081@cuuxb.ATT.COM> kjc@cuuxb.UUCP (Kevin Coulter) writes:
>In article <5740@utah-cs.UUCP> u-dmfloy%sunset.utah.edu.UUCP@utah-cs.UUCP (Daniel M Floyd) writes:
>>CICS.
>>
>>Since I don't know what it is, I don't know where to post;
>>however, I think it's some sort of language.
>
>CICS (what the acronym stands for - hmm - maybe Customer Interactive Computer
>System?) What it basically is is an operating system that allows on line 
>transactions. It was developed by IBM for their machines. As far as I know, the
>only two languages you can use with it are COBOL & assembler. Since COBOL is
>not my favorite language, but is the recommended language for it, I agree with
>your guess:
>>Maybe Crumbly Icky Computer System. :-))
>
>			Kevin

CICS stands for "Customer Information Control System".  It is not an operating
system perse, rather it runs on top of an operating system (MVS) on an
IBM 370 architecture machine.  It does to its own "internal" multitasking, and
thus is sometimes mistaken for an operating system.

It's main function in life is to process transactions, which are tied to
application programs via a set of tables (CICS tables that are actually
files maintained by system programmers).  The user talks to CICS usually
through a 3278-type terminal which has the usual drawbacks for the ability
to supply an acceptable user interface.

CICS can utilize DL1 (Data Language 1) to talk to an IMS database.  I haven't
been in that world for three years now and so I don't know if it can talk
to DB2 (but I would assume IBM would want this since DB2 is a strategic
product of theirs).

IBM calls CICS a "telecommunications monitor" or "telecommunications
monitoring subsystem" or words like that.  Having been both a VTAM systems
programmer (VTAM being IBM's contribution to telecommunications on mainframes)
and a CICS systems programmer, I fail to see anything related to telecomm.
in CICS.  Oh sure, it can be accessed via a network, but so can anything
else!

From a programming language interface point of view, I know that COBOL and
Assembler interfaces are provided, and I believe PL/1 and FORTRAN (I'm really
stretching my faulty memory here) are also provided.  COBOL is by far the
most commonly used language with CICS.

A big drawback of CICS 1.6.1 at least (the last release I worked with -- I
now work on Suns and VAXen [Suns preferred]) is that all applications live
in the same chunk of memory (address space to use the MVS term).  Thus, if
you and I both write applications, and my application has an array index that
gets set to some wild value, I may write data all over your executable code,
thereby causing your program to crash (almost assuredly) with an S0C1 (invalid
instruction exception).  Nasty.  Your code may be just fine.  YOU must read
the transaction dump to see why your program crashed.  You must then determine
who's program plunked some string into the middle of your code!  Nasty.

Better yet, my junky program might write on CICS code!  Yeah!  Now the whole
"region" (as it is usually called) goes down the tubes.  Several hundred
users can be blown out of the water when this happens [actual numbers depend
naturally enough on the number of users on when this happened].  Nasty.

You get the feeling I don't like CICS?  No kidding!  It is stone-age stuff.
Just like the terminals it runs on.  Living dinosaurs.  But, you can make
around $40K these days being one who babysits CICS while it runs (a systems
programmer) or even more being one who writes clunky applications to run on
CICS!  So, given that approx. 70% of all IBM mainframe shops run CICS, there
is some job security (for the near term at least, if not more).

Sorry to ramble so much.  I don't often get the chance to spout off about
how much I think CICS stinks.

Roy Brunjes   ...rochester!kodak!kadsma!brunjes
Disclaimer:   These opinions are my own, not those of my employer.

markd@proxftl.UUCP (Mark Davidson) (09/28/88)

CICS.  Customer Information Control System.  It's an IBM monitor, mostly
used under MVS, for those people who don't need all the database support
that IMS provides.  Mostly provides terminal support, transaction processing,
message passing, and nicer file I/O support than "raw" MVS (which isn't
saying much).  Also provides some security to prevent unauthorized access
to "transactions" (analagous to programs, except not all programs are trans-
actions).
-- 
  In real life: Mark E. Davidson       uflorida!novavax!proxftl!markd
  Proximity Technology Inc., 3511 NE 22nd Ave, Ft. Lauderdale FL, 33308
  #define STANDARD_DISCLAIMER          <Quote construction site>