Configurazione del gateway ISPF legacy per il supporto alla compilazione, alla distribuzione e alla promozione
Con IBM® Engineering Workflow Management, è possibile eseguire programmi e file eseguibili come parte di build, deployment e promozione. Se questi programmi o file eseguibili sono ISPF, devono essere avviati attraverso il gateway ISPF. Come questi programmi e file eseguibili vengono eseguiti dipende dall'ambiente da cui sono avviati. È possibile configurare il gateway Legacy ISPF per supportare i componenti di creazione, distribuzione e promozione disponibili con una licenza di accesso client Developer for IBM Enterprise Platforms.
Il gateway Interactive ISPF può essere utilizzato solo per i traduttori di build delle Estensioni Enterprise. Per ulteriori informazioni, vedere Configurazione del gateway Interactive ISPF per il supporto alla compilazione di Enterprise Extensions.
Le spiegazioni seguenti descrivono come utilizzare il gateway Legacy ISPF per la creazione, la distribuzione e la promozione.
Il gateway ISPF consente alle applicazioni client di connettersi a un hostz/OS® ed eseguire comandi TSO e ISPF. Il gateway ISPF è installato come parte di ISPF sotto forma di moduli e file di carico nell'HFS. Questi file sono generalmente installati in /usr/lpp/ispf/bin. I componenti di compilazione, distribuzione e promozione vengono creati come parte dell'installazione di SMP/E. A seconda della configurazione, potrebbero essere necessarie ulteriori modifiche agli script e ai componenti forniti dal gateway Legacy ISPF. Le impostazioni predefinite e la procedura per la modifica dei default vengono descritte in seguito.
| Definizione | Comando | Avviato da |
|---|---|---|
| Crea traduttore | Comando ISPF o file eseguibile | Gateway ISPF tradizionale o interattivo |
| Comando TSO o file eseguibile | Gateway ISPF tradizionale o interattivo | |
| Definizione di build | Riga comandi pre-build | comando Servizi di sistema z/OS UNIX |
| Riga comandi post-build | comando Servizi di sistema z/OS UNIX | |
| Definizione package | Pre - comando del pacchetto | Gateway ISPF tradizionale |
| Pacchetto post - comando | Gateway ISPF tradizionale | |
| Definizione distribuzione | Distribuire pre - comando | Gateway ISPF tradizionale |
| Distribuire post - comando | Gateway ISPF tradizionale | |
| Pre - comando di rollback | Gateway ISPF tradizionale | |
| Rollback post - comando | Gateway ISPF tradizionale | |
| Definizione promozione | Riga comandi pre-build | comando Servizi di sistema z/OS UNIX |
| Riga comandi post-build | comando Servizi di sistema z/OS UNIX |
I programmi o i file eseguibili possono essere eseguiti utilizzando il gateway ISPF o un comando UNIX System Services. i comandi di z/OS UNIX System Services non possono avviare comandi ISPF e possono avviare solo comandi TSO limitati. I comandi avviati tramite il gateway ISPF hanno a disposizione l'intero set di API ISPF e TSO. I comandi di pre-costruzione e post-costruzione per le definizioni di build e promozione vengono avviati tramite z/OS UNIX System Services. Per ulteriori informazioni, vedere Avvio del gateway Legacy ISPF da un comando di z/OS UNIX System Services.
I seguenti componenti sono inclusi nel gateway ISPF Legacy:
- File di ambiente del gateway ISPF legacy: ISPZXENV
- File di ambiente del gateway ISPF che contiene impostazioni personalizzabili per il gateway ISPF.Il file 'ISPZXENV è fornito come parte di z/OS. Per impostazione predefinita questo file è installato in /usr/lpp/ispf/bin. Tuttavia, questa directory è contrassegnata READ solo dopo l'installazione. Questo file di ambiente viene eseguito dal gateway ISPF per ottenere il valore di alcune variabili di ambiente necessarie al funzionamento del gateway ISPF. Le variabili predefinite includono quanto segue:
- STEPLIB
- Per impostazione predefinita è impostato su
STEPLIB = 'ISP.SISPLPA:ISP.SISPLOAD'Nota: È possibile aggiungere più librerie di caricamento del sistema a questa assegnazione STEPLIB. Ad esempio, DB2.SDSNLOAD, se avete programmi o file eseguibili che avviano funzioni di Db2 come BIND.
- CGI_ISPCONF
- Per impostazione predefinita è impostato su
CGI_ISPCONF = '/etc/ispf' - CGI_ISPWORK
- Per impostazione predefinita è impostato su
CGI_ISPWORK = '/var/ispf'
Per impostare le variabili su valori non predefiniti, copiare ISPZXENV in una directory di configurazione scrivibile, come /etc/ispf e impostare le variabili sui valori richiesti. È quindi necessario modificare la variabile d'ambiente path in 'Startispf.sh, descritta più avanti, per leggere questa posizione prima del percorso bin predefinito di ISPF.
Ad esempio:export PATH=/etc/ispf:$PATHNella directory di lavoro del gateway ISPF legacy, per impostazione predefinita '/var/ispf, è necessario creare una directory esistente chiamata 'WORKAREA, che abbia i permessi di lettura e scrittura per tutti gli utenti. Quando si utilizza il gateway ISPF, vengono create directory temporanee del formato '/var/ispf/WORKAREA/<userid>/*. Se si utilizza l'installazione predefinita del gateway ISPF fornita da ISPF, questa directory si trova tipicamente in '/var/ispf/WORKAREA. Se la directory non esiste, seguire le istruzioni riportate nel capitolo intitolato " Installazione e personalizzazione del gateway " in ISPF Planning and Customizing ( GC19-3623 ).
- Script di avvio del gateway ISPF legacy: startispf.sh
- Script di shell per avviare il gateway ISPF legacy per la distribuzione e la promozione.Per avviare il gateway ISPF, Engineering Workflow Management fornisce uno script di shell che viene richiamato dai task Ant di distribuzione e promozione. Questo script è installato in '/usr/lpp/jazz/v7.2.0/buildsystem/buildtoolkit/examples/ispfgateway. Come parte della personalizzazione standard, questo script viene copiato nella directory di configurazione di Engineering Workflow Management, tipicamente '/etc/jazz720/ccm dal lavoro 'BLZCPBTK. A seconda del setup potrebbe essere necessario modificare questo script di shell per impostare alcune variabili di ambiente.
- PERCORSO
- La variabile PATH deve puntare alla directory home del gateway ISPF:
Se è stato modificato ISPZXENV , potrebbe essere necessario impostare PATH su:export PATH=$PATH:/usr/lpp/ispf/binexport PATH=$PATH:/etc/ispf:/usr/lpp/ispf/bin
Se si utilizzano diverse concatenazioni di librerie in ISPF.conf, configurare l'installazione per supportare più progetti e stream creando più copie dello script startispf.sh , del file ISPF.conf e del file ISPZXENV . In ogni copia del file ISPZXENV , impostare la variabile CGI_ISPFCONF in modo che punti all'ubicazione del file ISPF.conf correlato. Quindi, in ogni copia dello script startispf.sh , impostare la variabile PATH in modo che punti alla copia appropriata del file ISPF.conf . Quindi, utilizzare lo script startispf.sh che corrisponde all'ambiente necessario per un particolare progetto.
- Script di avvio build Enterprise Extensions: startbfa.sh
- Script di shell per avviare Rational Build Agent utilizzando una build di Enterprise Extensions.Enterprise Extensions build fornisce un meccanismo per avviare una build che a sua volta avvia un programma. Il programma può essere un comando o un file eseguibile ISPF o un comando o un file eseguibile TSO. Se un oggetto di libreria allocato ISPF viene avviato dalla compilazione, è necessario configurare la compilazione per fornire l'accesso all'oggetto richiesto. In 'startbfa.sh è necessario elencare la posizione dei file ISPF, in modo che Rational Build Agent possa avviare il gateway ISPF. Per impostazione predefinita questi file si trovano in /usr/lpp/ispf e sono specificati in startbfa.sh utilizzando la variabile _CMDSERV_BASE_HOME. Se i file binari del gateway ISPF sono installati in un'altra posizione, è necessario modificare questa variabile. Ad esempio:
# # Specify the home directory for the ISPF programs. # export _CMDSERV_BASE_HOME=/usr/lpp/ispfI programmi ISPF e i file eseguibili devono essere allocati nel file di configurazione del gateway ISPF (ISPF.conf) come descritto in seguito. Rational Build Agent richiede anche l'accesso a ISPF.conf. L'accesso è impostato nel file di ambiente del gateway ISPF (ISPZXENV). Se si intende utilizzare le funzionalità ISPF nelle build e non si utilizza il percorso predefinito '/usr/lpp/ispf/bin, è necessario creare una copia di 'ISPZXENV in una directory di configurazione scrivibile e puntare il Rational Build Agent a tale percorso. Impostare la proprietà di generazione team.enterprise.build.ant.myISPFBinPath sull'ubicazione della directory contenente il file ISPZXENV . È possibile modificare il valore o aggiungere la proprietà utilizzando la scheda Proprietà nella propria definizione build. Per ulteriori informazioni, vedere Gestione delle build di z/OS.
- File di configurazione del gateway ISPF legacy: ISPF.conf
- File di configurazione del gateway ISPF che contiene impostazioni personalizzabili per il gateway ISPF.Il file 'ISPF.conf è fornito come parte di z/OS. Il file di configurazione del gateway ISPF fornisce le allocazioni necessarie per avviare una sessione ISPF in un task creato. Il file 'ISPF.conf svolge una funzione simile a quella di una procedura di logon che alloca l'ambiente ISPF per un utente ISPF connesso. Affinché le funzioni di compilazione, distribuzione e promozione avviino i moduli per eseguire compiti specifici, i moduli devono essere resi disponibili nelle concatenazioni ISPF. Per impostazione predefinita queste assegnazioni sono impostate come segue:
sysproc=ISP.SISPCLIB sysexec=ISP.SISPEXEC ispmlib=ISP.SISPMENU isptlib=ISP.SISPTENU ispplib=ISP.SISPPENU ispslib=ISP.SISPSLIB ispllib=ISP.SISPLOADPer il funzionamento della distribuzione e della promozione, aggiungere la Engineering Workflow Management libreria di caricamento del prodotto (hlq.SBLZLOAD) e la libreria di messaggi del prodotto (hlq.SBLZMENU) alla concatenazione ISPLLIB e ISPMLIB. Le assegnazioni modificate sembrano simili a questo esempio:sysproc=ISP.SISPCLIB sysexec=ISP.SISPEXEC ispmlib=BLZ.SBLZMENU,ISP.SISPMENU isptlib=ISP.SISPTENU ispplib=ISP.SISPPENU ispslib=ISP.SISPSLIB ispllib=BLZ.SBLZLOAD,ISP.SISPLOADDurante la compilazione, la promozione o la distribuzione, se si eseguono i propri programmi o file eseguibili REXX e tali programmi o file eseguibili vengono chiamati come comando ISPF, ad esempio 'TSO DOSTUFF, che non è completamente qualificato, come 'EX 'MYPROJ.MYREXX(DOSTUFF)', aggiungere i programmi o i file eseguibili alla concatenazione ISPF nel file 'ISPF.conf. Nel file ISPF.conf , rendere i dataset del modulo di caricamento disponibili nella concatenazione ISPLLIB e rendere disponibili i file eseguibili nelle concatenazioni SYSPROC o SYSEXEC. Ad esempio:sysproc=ISP.SISPCLIB,MYPROJ.MYCLIST sysexec=ISP.SISPEXEC,MYPROJ.MYREXX ispmlib=BLZ.SBLZMENU,ISP.SISPMENU isptlib=ISP.SISPTENU ispplib=ISP.SISPPENU ispslib=ISP.SISPSLIB ispllib=BLZ.SBLZLOAD,ISP.SISPLOAD,MYPROJ.LOADNota: Le assegnazioni di 'ISPF.conf vengono effettuate solo quando il metodo di chiamata per eseguire un comando è ISPF e non TSO. Questo vale anche per il " allocjob che può essere eseguito per fornire allocazioni utente aggiuntive. Il " allocjob fornito non verrà invocato se il metodo di chiamata è TSO.
Esecuzione di moduli di distribuzione interpretativi
Se si desidera aggiungere i propri processi di distribuzione o funzioni, è possibile eseguire le versioni interpretative dei moduli di distribuzione. Il componente di distribuzione esegue i seguenti programmi:| Programma | Funzione | Descrizione |
|---|---|---|
| BLZPKGZP | Imballaggio di distribuzione | L'utilizzo del file manifest crea un file .zip dei contenuti specificati. |
| BLZBKPZP | Backup di distribuzione | Utilizzando il file di pacchetto, effettuare copie di backup dei moduli la distribuzione sovrascrive. |
| BLZDEPZP | Distribuzione | Utilizzando il file manifest di distribuzione, distribuire il contenuto del file .zip specificato. |
sysproc=ISP.SISPCLIB,BLZ.SBLZSAMP
sysexec=ISP.SISPEXEC
ispmlib=BLZ.SBLZMENU,ISP.SISPMENU
isptlib=ISP.SISPTENU
ispplib=ISP.SISPPENU
ispslib=ISP.SISPSLIB
ispllib=BLZ.SBLZLOAD,ISP.SISPLOADISPF controlla prima la concatenazione ISPLLIB, a meno che il comando non abbia il prefisso del simbolo percentuale '%; pertanto, è necessario rinominare o rimuovere i moduli modificati dal set di dati 'hlq.SBLZLOAD.Aggiunta delle proprie librerie EXEC al file di configurazione del gateway Legacy ISPF
Per le build di Enterprise Extensions, se si utilizza il metodo di chiamata ISPF, è necessario aggiungere la propria libreria di file eseguibili alle concatenazioni 'SYSEXEC o 'SYSPROC nel file 'ISPF.conf. Se si è specificato un nome di file eseguibile o un 'SELECT CMD(executable file), ISPF richiede l'accesso al file eseguibile richiesto nella concatenazione appropriata. È necessario modificare ISPF.conf per includere le librerie di file eseguibili richieste, ad esempio:sysproc=ISP.SISPCLIB
sysexec=ISP.SISPEXEC,MY.PROJECT.EXEC
ispmlib=BLZ.SBLZMENU,ISP.SISPMENU
isptlib=ISP.SISPTENU
ispplib=ISP.SISPPENU
ispslib=ISP.SISPSLIB
ispllib=BLZ.SBLZLOAD,ISP.SISPLOADPer ulteriori informazioni sul gateway ISPF, consultare il capitolo intitolato Gateway client ISPF in Pianificazione e personalizzazione ISPFGC19-3623).
Esecuzione del gateway ISPF legacy con build di dipendenze multithreading
Se il gateway ISPF deve essere eseguito come parte di una compilazione che utilizza processi multipli per le attività di compilazione, potrebbero esserci dei problemi con le code su ISPTLIB. Questo problema è documentato nella sezione Protezione delle risorse delle tabelle in Abstract for ISPF Dialog Developer's Guide and Reference. Normalmente con JCL, per fermare queste encode che si verificano, viene assegnato un dataset temporaneo come primo dataset in dotazione ISPTLIB in modo che l'enqueue sia fatto sul primo dataset e che il primo dataset sia univoco per l'esecuzione di JCL.
*allocjob = HLQ.test.exec(alocsamp)Indirizzare l'allocjob ad un dato fisico exec che contiene un exec REXX per effettuare le assegnazioni. Il seguente esempio REXX può essere utilizzato per assegnare un nuovo dataset temporaneo e concatenarlo davanti alla concatenazione ISPTLIB esistente. Inoltre, si veda il membro ISPZISP2 nell'insieme di dati forniti di campioni ISPF, per default 'ISP.SISPSAMP, per altri esempi di utilizzo di questo exec.
TEMPDSFORMAT(UNIQUE) nel membro ALLOCxx in PARMLIB. In caso contrario, il nome dataset temporaneo generato potrebbe non essere univoco. Per verificare quali opzioni sono in vigore, utilizzare il comando operatore DALLOC,OPTION .
/*REXX*/
/*************************************************************************/
/* This is a sample test exec job for the "TSO/ISPF Client Gateway" */
/* may be invoked by ISPF.conf for additional ISPF dataset */
/* concatentations. */
/* Customize accordingly if required. */
/* */
parse arg $args
parse var $args USERID
say '*************************************** '
say 'Running allocation job'
say 'USERID = 'USERID
say '*************************************** '
/* Work out current allocation using LISTA */
x = outtrap('out.','*','concat')
"lista status sysnames"
lc = rc
x = outtrap('off')
/* Specify DDNAMES you need to reallocate */
DDS = 'ISPTLIB'
DD# = O
DSN. = ''
I = 2
Do While I <= OUT.0 /* @01c */
If Substr (OUT.I,1,1) = ' ' Then
Do
Parse var OUT.I DDN . 12 DISP
If DDN = ' ' Then
DSN.DD# = DSN.DD# "'"DSN"'"
Else
Do
DD# = Wordpos(DDN,DDS)
DSN.DD# = "'"DSN"'"
End
End
Else
Parse var OUT.I DSN .
I = I +1
End
"FREE FILE(ISPTLIB)"
Call BPXWDYN ("alloc FI(ISPTLIB) cyl space(1,1) RTDSN(DSN)"||,
" blksize(27920) lrecl(80) dsorg(po) recfm(f,b) dir(1) new")
Do i = 1 to Words(DSN.1)
Call BPXWDYN("alloc FI(TMP00001) dsn("Word(DSN.1,i)") shr")
Call BPXWDYN("concat ddlist(ISPTLIB,TMP00001)")
End
Say 'ISPTLIB : Reallocated with following concatenation -'
LISTA ST SY HI
Exit
Inoltre, quando si esegue in modalità multi-thread, è necessario creare diversi set di dati ISPF temporanei. L'identificatore univoco generato da ISPF Gateway non è sufficientemente univoco quando viene eseguito in modalità multi-thread. Tuttavia, è possibile apportare alcune modifiche per creare un prefisso unico che ISPF possa utilizzare. In 'ISPZXENV, invece di impostare la variabile d'ambiente CGI_ISPPREF a &SYSPREF.ISPF.VCMISPF, è possibile generare un prefisso. Si basa sul PID (Process Identifier) del processo ISPF Gateway in esecuzione. Aggiungere il seguente codice per sostituire l'impostazione di CGI_ISPPREF.
/* Running multithreaded we get issues with ISPF.VCMISPF not being unique */
/* Use a hex representation of the PID to uniquelly create ISPF.VCMISPF */
address syscall 'getpid' ; pid = retval
Say 'Pid:'pid
If Length(Pid) > 7 Then
Do
CGI_ISPPREF = '&SYSPREF..P$'D2X(Substr(pid,1,5))||,
'.P$'D2X(Substr(pid,6))
End
Else
CGI_ISPPREF = '&SYSPREF..P'D2X(pid)
Avvio del gateway Legacy ISPF da un comando System Services z/OS UNIX
Se è necessario aggiungere un comando di pre-build o di post-build per la definizione di build o di promozione e tale comando richiede i servizi TSO o ISPF, avviare il gateway Legacy ISPF dal comando z/OS UNIX System Services. Il membro 'BLZGTWY in hlq.SBLZSAMP è un file eseguibile di esempio per avviare il gateway ISPF. È possibile eseguire questo file eseguibile dai punti di invocazione dei comandi di z/OS UNIX System Services o da un file XML contenente macro Ant. Utilizzando le istruzioni contenute nel membro 'BLZGTWY, potrebbe essere necessario personalizzare la specifica della directory '/tmp e la variabile PATH per puntare al luogo in cui è stato installato il codice del gateway ISPF.
BLZGTWY accetta i seguenti parametri:- Metodo
- Metodo di invocazione, TSO o ISPF. Il metodo TSO assegna solo SYSPROC e SYSEXEC dal file ISPF.conf . Il metodo ISPF alloca tutte le concatenazioni ISPF dal file 'ISPF.conf.
- exec
- Nome del file eseguibile da eseguire.
- Log
- Facoltativo. Specificando '
LOG=YESsi scrive il registro completo del gateway ISPF, utile per il debug dei problemi.
Avvio del gateway ISPF Legacy da comandi pre o post-build e pre o post-promotion


Avvio del gateway Legacy ISPF da comandi pre o post distribuzione
- Carica pre - comando
- Carica post - comando
- Distribuire pre - comando
- Distribuire post - comando
- Pre - comando di rollback
- Rollback post - comando
- Il comando da eseguire deve esistere in una libreria assegnata a SYSPROC, SYSEXEC o ISPLLIB nel file ISPF.conf utilizzato dalla distribuzione.
- È possibile passare fino a 10 parametri al comando chiamato.
- Non è possibile utilizzare doppie virgolette nel comando.
- Le virgolette singole nel comando originale vengono eliminate.
- I parametri sono racchiusi tra doppi apici da startispf.sh.
- Il file eseguibile REXX deve eliminare i doppi apici che vengono passati attraverso gli argomenti.

/* REXX */
Arg Parms
Parse var Parms '"'Parm1'" "'Parm2'" "'Parm3'"' . Il codice di esempio accetta tre parametri e il punto finale (.) scarta dallo script startispf.sh il resto delle virgolette doppie passate.Avvio del gateway Legacy ISPF da uno script build.xml Ant
<!-- Macro definition for ZIP command -->
<macrodef name="zipISPF">
<sequential>
<exec executable="tso" failonerror="true">
<arg line=""EXEC 'MYHLQ.SBLZSAMP(BLZGTWY)' 'TSO EX MYHLQ.EXEC(ZIPEXEC) parm1 parm2 parm3'""/>
</exec>
</sequential>
</macrodef>
<!-- ZIP -->
<target name="zip" description="zip ISPF">
<startBuildActivity label="zip ISPF">
autoComplete="true"
buildResultUUID="${buildResultUUID}"
repositoryAddress="${repositoryAddress}"
userId="${userId}"
passwordFile="${passwordFile}"/>
<zipISPF/>
</target>Avvio del gateway ISPF legacy da TSO a scopo di test
EXEC 'MYHLQ.SBLZSAMP(BLZGTWY)' 'ISPF EX MYHLQ.EXEC(TESTEXEC) LOG=YES'Per eseguire il comando 'TSO TIME attraverso il gateway ISPF, utilizzare uno dei seguenti comandi:EXEC 'MYHLQ.SBLZSAMP(BLZGTWY)' 'TSO TIME'oppureEXEC 'MYHLQ.SBLZSAMP(BLZGTWY)' 'ISPF TIME'I parametri TSO o ISPF che vengono passati indicano al gateway ISPF cosa allocare, ovvero le allocazioni TSO richieste o le allocazioni ISPF complete.Risoluzione dei problemi della configurazione del gateway ISPF Legacy
Verificare che il gateway ISPF sia configurato correttamente. Tutti gli ID utente che eseguono funzioni di Engineering Workflow Management che utilizzano il gateway ISPF devono disporre delle autorizzazioni necessarie, descritte in Pianificazione e personalizzazione ISPF (GC19-3623).
export TMPDIR=/yourTemporaryDirdove yourTemporaryDir è una directory con accesso in scrittura per gli utenti di build.