Utilizzo di Language Environment per i programmi di CICS

Language Environment®, fornito come elemento di z/OS®, fornisce un insieme comune di librerie di runtime. Language Environment consente di utilizzare un solo ambiente di runtime per le applicazioni, indipendentemente dal linguaggio di programmazione o dalle esigenze di risorse di sistema, perché la maggior parte delle dipendenze di sistema è stata eliminata.

Prima dell'introduzione di Language Environment, ogni linguaggio di alto livello (HLL) forniva un ambiente di runtime separato. Le librerie di runtime fornite da Language Environment sostituiscono le librerie di runtime fornite con i vecchi compilatori, come VS COBOL II, OS PL/I e C/370. L'ambiente comune offre due vantaggi significativi:
  • È possibile combinare tutte le lingue supportate da CICS® in un unico programma.
  • Gli stessi servizi richiamabili da Language Environment sono disponibili per tutti i programmi. Ad esempio:
    • Un elenco collegato creato con la memoria ottenuta utilizzando i servizi richiamabili di Language Environment in un programma PL/I può essere elaborato successivamente e la memoria liberata utilizzando i servizi richiamabili di una routine COBOL.
    • Il simbolo di valuta utilizzato in una serie di rapporti può essere impostato in una routine Assembler, anche se i rapporti stessi sono prodotti da programmi COBOL.
    • I messaggi di sistema di programmi scritti in lingue diverse vengono inviati tutti alla stessa destinazione di output.
Per ulteriori informazioni, consultare la Guida ai concetti di z/OS Language Environment. Per questi vantaggi, il supporto dei linguaggi di alto livello in CICS dipende da Language Environment.

CICS supporta programmi applicativi compilati da diversi compilatori; per un elenco dei compilatori supportati in questa versione di CICS Transaction Server for z/OS, vedere Modifiche al supporto di CICS per i linguaggi di programmazione delle applicazioni.

La maggior parte dei compilatori supportati da CICS e Language Environment sono compilatori conformi a Language Environment, il che significa che i programmi compilati da questi compilatori possono sfruttare tutte le strutture di Language Environment disponibili per una regione CICS. CICS e Language Environment supportano anche programmi compilati da alcuni compilatori precedenti a Language Environment, che non sono conformi a Language Environment. Tuttavia, CICS non supporta tutti i compilatori precedenti a Language Environment che sono supportati da Language Environment.

Le applicazioni compilate e linkate con compilatori precedenti a Language Environment possono essere eseguite con successo utilizzando il supporto runtime fornito da Language Environment. Queste applicazioni potrebbero non richiedere la ricompilazione o la modifica del link. In alcune circostanze, potrebbe essere necessario regolare le opzioni di runtime di Language Environment in modo che le applicazioni vengano eseguite correttamente. Consultare la Guida alla migrazione delle applicazioni runtime z/OS Language Environment e la Guida alla migrazione del compilatore e del runtime per il linguaggio in uso.

Le librerie di runtime fornite con i compilatori pre-Language Environment non sono supportate. Non includere librerie di linguaggio diverse da quelle di Language Environment nel JCL di avvio di CICS.

Quando si modificano programmi applicativi esistenti o si scrivono nuovi programmi, è necessario utilizzare un compilatore supportato da Language Environment. I programmi applicativi devono essere collegati utilizzando la libreria Language Environment SCEELKED, il che significa che il modulo di caricamento dell'applicazione risultante può essere eseguito solo sotto Language Environment.

In CICS è anche possibile creare programmi Assembler MAIN conformi a Language Environment. Per ulteriori informazioni sui programmi Assembler, vedere Sviluppo di applicazioni in linguaggio Assembler.

L'architettura di Language Environment

L'architettura di Language Environment è costruita a partire da modelli per i seguenti aspetti:
  • Gestione programma
  • Gestione delle condizioni
  • Servizi di messaggistica
  • Gestione del magazzino.
Gestione programma
La gestione del programma definisce i costrutti di esecuzione del programma di un'applicazione e la semantica associata all'integrazione di vari componenti di gestione di tali costrutti. Tre entità, processo, enclave e thread, sono al centro del modello di gestione del programma Language Environment :
Processo
La componente di livello più alto del modello di programma Language Environment è il processo. Un processo è costituito da almeno un enclave ed è logicamente separato dagli altri processi. Language Environment in genere non consente la condivisione di file linguistici tra le enclavi e non offre la possibilità di accedere a raccolte di dati archiviati esternamente.
Enclave
Un insieme di routine che costituiscono un'applicazione. L'enclave è l'equivalente di uno dei seguenti:
  • Un'unità di corsa, in COBOL
  • Un programma, costituito da una funzione principale C® e dalle sue sottofunzioni, in C e C++
  • Una procedura principale e tutte le sue subroutine, in PL/I
Thread
Ogni enclave è costituita da almeno un thread, l'istanza di base di una particolare routine. Durante l'inizializzazione dell'enclave viene creato un thread con il proprio stack di runtime, che tiene traccia dell'esecuzione del thread, oltre a un contatore di istruzioni univoco, registri e meccanismi di gestione delle condizioni. Ogni thread rappresenta un'istanza indipendente di una routine in esecuzione sotto le risorse di un enclave.
Modello di gestione delle condizioni
La libreria runtime Language Environment fornisce una struttura di gestione delle condizioni coerente e prevedibile. Non sostituisce la gestione delle condizioni linguistiche di alto livello, ma consente invece a ciascuna lingua di rispondere al proprio ambiente unico e a un ambiente linguistico misto. I servizi richiamabili possono segnalare condizioni e consentire di interrogare informazioni su tali condizioni. Fornisce inoltre funzioni per la diagnosi degli errori, la creazione di report e il ripristino.
Modello di gestione dei messaggi e supporto per le lingue nazionali
Un insieme di servizi comuni di gestione dei messaggi che creano e inviano messaggi informativi e diagnostici in fase di esecuzione. È possibile utilizzare il token di condizione restituito da un servizio richiamabile o da qualche altra condizione segnalata, formattarlo in un messaggio e inviarlo a un dispositivo di output definito o a un buffer. I servizi attivabili di supporto per le lingue nazionali consentono di impostare una lingua nazionale che influisce sulla lingua dei messaggi di errore e sui nomi del giorno, della settimana e del mese. Consente inoltre di modificare l'impostazione del Paese, che influisce sul formato predefinito di data, ora, simbolo di valuta, separatore decimale e separatore delle migliaia.
Modello di gestione del magazzino
Vengono forniti servizi comuni di gestione dello storage per tutti i linguaggi di programmazione conformi a Language Environment; Language Environment controlla lo stack e l'heap storage utilizzati in fase di esecuzione. Le applicazioni possono accedere a un insieme centrale di strutture di gestione dell'archiviazione. Offre un modello di memorizzazione multi-heap per i linguaggi che attualmente non ne hanno uno. Il modello di archiviazione comune elimina la necessità che ogni lingua mantenga un gestore di archiviazione unico ed evita le incompatibilità tra diversi meccanismi di archiviazione.