Il sistema denominato CICS ( Customer Information Control System , ovvero “ Sistema di controllo delle informazioni sul cliente ”) è un sistema che consente di effettuare operazioni transazionali (in generale consultazione o aggiornamento di database o archivi ) con una grande economia di mezzi . CICS viene generalmente utilizzato su mainframe per IBM , incluso zSeries 900 o S / 390 , ma può anche essere su sistemi più piccoli come AS / 400 , RS / 6000 o persino PC server .
A titolo indicativo, un IBM 3033 dotato di 16 MB di memoria, che corrispondeva all'incirca in potenza di calcolo a un Pentium 100, poteva gestire 17.500 terminali CICS contemporaneamente.
Su un attuale processore della serie Z (2009), CICS può gestire facilmente migliaia di transazioni al secondo, il che lo rende particolarmente adatto per transazioni bancarie automatizzate.
CICS è comunemente e principalmente utilizzato da istituzioni finanziarie, applicazioni bancarie, ATM, ma anche nei sistemi di produzione industriale. Oltre il 90% delle aziende Fortune 500 si affida a CICS per la gestione delle proprie transazioni .
La maggior parte delle applicazioni CICS sono scritte in COBOL , ma è anche possibile utilizzare il linguaggio assembly , il linguaggio C o C ++ , PL / I , REXX e, più recentemente, Java .
L'ultima versione di CICS per z / OS è la 5.6 (2020).
I mainframe convenzionali sono progettati principalmente per l'elaborazione batch delle applicazioni e quindi per l'elaborazione simultanea di un numero limitato di attività, che generalmente hanno accesso esclusivo ai file e alle risorse che utilizzano. Piuttosto, per la gestione delle transazioni, ci si aspetterebbe che un sistema sia progettato per gestire molte attività simultanee, utilizzando le stesse risorse. CICS è stato proposto già nel 1968 con l'obiettivo di fornire una soluzione a questo problema.
Da un lato, CICS funge da interfaccia tra i programmi ei servizi del sistema operativo. Quindi, quando un programma vuole, ad esempio, visualizzare qualcosa su un terminale, accedere a un file, ecc. non sarà in grado di farlo direttamente e dovrà passare attraverso CICS.
D'altra parte, CICS consente di simulare la gestione multiutente e multi-task con un notevole risparmio di risorse derivante dai seguenti principi:
In CICS non è possibile chiamare direttamente un programma: l'utente deve richiamare una transazione , che specificherà il programma da avviare. CICS individuerà l'applicazione, la caricherà in memoria se non è già stata eseguita e avvierà un'attività.
Ogni transazione è identificata da un codice di quattro lettere chiamato trans-id . CICS dispone di una tabella denominata PCT ( Program Control Table ) che elenca i trans-ID validi e li associa al nome dei programmi CICS che devono essere caricati quando viene richiamata la transazione. Per sapere se caricare una nuova copia di un programma in memoria, CICS utilizza un'altra tabella, la PPT ( Processing Program Table ), che contiene un elenco di tutti i nomi di programma in memoria.
Quindi, se un utente richiama una transazione, CICS cercherà prima nel PCT per trovare il programma da eseguire, quindi controllerà nel PPT se il programma è già caricato in memoria. Se non lo è già, CICS individuerà il programma, lo caricherà e aggiornerà il PPT, quindi avvierà una nuova attività.
CICS utilizza anche una tabella dei terminali, la TCT (Terminal Control Table), che identifica ogni terminale mediante un identificatore di terminale, chiamato term-id . Questa tabella consente di garantire che i processi e i risultati siano correttamente attribuiti al terminale corretto.
Per quanto riguarda l'accesso ai file, è gestito da CICS tramite una tabella file, la FCT ( File Control Table ) che elenca i file e il tipo di operazioni autorizzate.
CICS fornisce una serie di servizi, accessibili tramite un'API , che garantisce che tali servizi vengano richiamati in modo coerente.
Servizi di comunicazione datiI servizi di comunicazione dati consentono in particolare ai programmi di comunicare con i terminali. Questi servizi consentono, ad esempio, di inviare informazioni ai terminali o di recuperare informazioni scritte in un modulo, ecc.
CICS ha accesso ai metodi di telecomunicazione del sistema operativo tramite un'interfaccia chiamata controllo terminale . Tuttavia, l'utilizzo del controllo del terminale direttamente in un programma può essere laborioso poiché comporterebbe la gestione di un insieme piuttosto complicato di stringhe e dati. Per semplificare la decodifica di queste stringhe di caratteri, è stata sviluppata un'interfaccia chiamata BMS ( Basic Mapping Support ). BMS consente di creare facilmente moduli, chiamati mappe , e di gestire l'invio o la ricezione di dati da questi moduli.
Servizi di gestione dei datiI servizi di gestione dei dati consentono l'accesso a database, file, ecc. Essi comprendono gli strumenti di verifica preliminare, come VSAM , o l'accesso alle interfacce SQL , o DL / I . Pertanto, quando un programma deve accedere a un file, i servizi di gestione dei dati CICS si collegheranno a VSAM per gestire l'accesso al file. Il sistema di gestione dei dati CICS consente di gestire la condivisione dei file e quindi di evitare il danneggiamento dei dati che potrebbe ad esempio causare l'aggiornamento simultaneo dello stesso record da parte di due utenti.
Domini di gestione CICSI sistemi di gestione CICS sono una raccolta di servizi organizzati in domini per gestire la consegna del programma. Ad esempio, il dominio di controllo del programma viene utilizzato per gestire il flusso di controllo da un programma a un altro. Il dominio di controllo del dump consente la generazione di dump , ecc.
La tabella delle transazioni è stata mantenuta in forma sequenziale e non codificata hash. L'attraversamento sequenziale della tabella a ogni nuova chiamata produceva grosse inefficienze se un sistema aveva diverse migliaia di nomi di attività. Le statistiche fornite da CICS hanno permesso di mitigare un po 'questo inconveniente inserendo (manualmente) i nomi delle transazioni più utilizzate in testa alla tabella.
Un sottosistema non IBM denominato ROSCOE utilizzava una somiglianza pseudo-conversazionale, ma richiedeva invece una ricompilazione completa con ogni nuova transazione aggiunta al sistema.
IMS è l'altro monitor transazionale di IBM che compete con CICS (ma solo su mainframe).
Il principio che consente a CICS di lavorare in modalità transazionale su un sistema senza multitasking nel senso letterale del termine ha ispirato in Francia una serie di server Minitel che gestivano 80 connessioni apparentemente simultanee su un 386 funzionante sotto DOS … che era esso stesso un unico compito.
I server Minitel sono stati sviluppati anche sotto CICS sul mainframe. A causa della sicurezza attiva per impostazione predefinita in CICS e inutile nella messaggistica per il tempo libero ( backup dinamico della transazione , commit / rollback , ecc.), I test iniziali si sono rivelati inefficaci. Una volta disattivate queste funzioni, CICS ha gestito i terminali consumando una media di 0,02 MIPS dal server centrale per Minitel connesso.