Programmazione in linguaggio Rexx
Descrizione
Il corso Programmazione in linguaggio Rexx, sul Linguaggio Rexx (REstructured eXtended eXecutor) per z/OS, offre una formazione completa e approfondita su questo potente linguaggio di programmazione, specificamente ottimizzato per l’ambiente Mainframe IBM.
Il corso mostrerà la versatilità e la facilità di utilizzo, rappresentando uno strumento fondamentale per l’automazione dei processi, la manipolazione di dati e lo sviluppo di applicazioni su piattaforme z/OS.
Il corso è stato progettato per fornire una comprensione completa del linguaggio e combinare teoria e pratica, con particolare enfasi sugli scenari reali di utilizzo in ambiente Mainframe.
Gli argomenti principali di questo corso intensivo saranno
- Architettura z/OS e linguaggio Jcl
- Struttura e Statement del linguaggio Rexx
- Funzioni principali e Funzioni avanzate
- Gestione dei Dataset
- Accesso al DB2
- Utilizzo di Servizi di Sistema come MVS, SDSF, TSO
Al termine del corso, i partecipanti saranno in grado di
- Scrivere applicazioni in Rexx
- Utilizzare le funzionalità principali
- Sviluppare applicazioni con interfaccia ISPF
- Richiedere servizi al Sistema
- Utilizzare Statement di Diagnostica e Monitoraggio
Solo su richiesta, e solo per utenti altamente qualificati, sarà possibile chiedere una estensione del corso del linguaggio Rexx, riguardante l’utilizzo dei Dataset SMF per il monitoraggio delle applicazioni e dei SubSystem del Sistema Operativo; ad esempio, sarà possibile richiedere l’implementazione sui Record SMF di tipo 30 per il monitoraggio dei Processi Batch oppure i Record SMF di tipo 100, 101 e 102 per il monitoraggio del DB2.
Il corso è strautturato in modo tale da consentire ai partecipanti di implementare il linguaggio Rexx con i linguaggi Panel Definition Language e Command LIST, per consentire la costruzione e la definizione di pannelli ISPF per la creazione e la gestione di applicazioni 3270 di tipo interattivo; questo consentirà di customizzare anche i pannelli ufficiali di IBM in modo tale da personalizzare l’accesso e la gestione di Dataset, Utilities e Device.
Prerequisiti
- Conoscenza dei Sistemi Operativi
- Conoscenza base dei Sistemi Mainframe e z/OS
- Conoscenza dei linguaggi di Programmazione
Programma Corso
Panoramica sul Sistema Operativo z/OS
- Panoramica sui Mainframe
- Introduzione al Sistema Operativo z/OS
- Architettura dei Sistemi Mainframe e dello z/OS
- Tipologia di Workload dei Mainframe
- Compiti e Ruoli nei Sistemi Mainframe
- Introduzione alla Virtualizzazione
- Dal 1960 un Sistema Operativo che fornisce ambienti Virtuali
- Gli Address Space
- Concetti principali della Memoria e delle Risorse Hardware
- Concetti della Memoria - Mainframe Memory
- Concetti della Memoria - La Memoria Centrale
- Concetti della Memoria - Memoria di Paging
- Concetti della Memoria - La Word ed i Registri
- Concetti della Memoria - Indirizzamento
- Memoria Reale e Memoria Virtuale
- I Frame, le Pagine e gli Slot
- I gestori della memoria sui sistemi Z Series
- Utilizzo della Memoria Virtuale
- Tipologie di Address Space
- Vista generale dello z/OS
- Vista generale dello z/OS - System Service
- Vista generale dello z/OS - Systems Management Services
- Vista generale dello z/OS - RACF Security Services
- Vista generale dello z/OS - Application Enablement Services
- Vista generale dello z/OS - Distributed Computing Services
- Vista generale dello z/OS - Communications Server
- Vista generale dello z/OS - UNIX System Services
- Vista generale dello z/OS - Softcopy Publication Services
- Vista generale dello z/OS - Cryptographic Services
- Da un Single System ad un Sysplex
I SubSystem
- Il Time Sharing Option e Time Sharing Option/Extension
- TSO ed accesso al Sistema mediante il TCAS
- Il JES2
- Il Customer Information Control System
- L'Information Management System
- Il Virtual Telecommunications Access Method
- Il Resource Access Control Facility
- Il DB2
- DFSMS ed HSM
- Esercizio #02.01 - Accesso al Sistema
Lo Storage dei Mainframe
- Cosa si intende per Storage ?
- Gestione dello Storage
- Tipologia dei Dispositivi
- Memorizzazione fisica dei dati
- La VTOC
- Gestione dei dati
- Il Ciclo di vita di un Dataset
- Il Catalogo z/OS
- I Files in ambiente Mainframe
- I Datasets di Sistema
Introduzione al JES2 ed al linguaggio Jcl
- Introduzione al JES2
- Architettura del JES2
- Il JES2 ed il suo sistema di Code
- Il Ciclo di Vita di un Processo
- La fase di INPUT del Ciclo di Vita di un Processo
- La fase di CONVERSION del Ciclo di Vita di un Processo
- La fase di PROCESSING del Ciclo di Vita di un Processo
- La fase di OUTPUT del Ciclo di Vita di un Processo
- La fase di PRINT del Ciclo di Vita di un Processo
- Termine di un Processo
- I Datasets di controllo del JES2
- Definizione dello Spool
- Il JES2 e la gerarchia dei pannelli
- Ambiente SDSF
- Il pannello SDSF - Active User
- Il pannello SDSF - Input Queue
- Il pannello SDSF - Output Queue
- Il pannello SDSF - Il System Log
- SDSF ed Automatic Restart Management
- Introduzione al linguaggio Jcl
- Il Layout di un Job
- Layout di uno Statement del Jcl
- Il campo IDENTIFIER
- Il Nome
- L'Operazione
- I Parametri
- I Parametri Posizionali
- I Parametri Keyword
- I commenti e la continuazione
- Gli Statement del Jcl
Gli Statement del linguaggio Jcl
- Lo Statement JOB e la tipologia di Parametri
- Il Parametro CLASS
- Il Parametro COND
- Il Parametro MSGCLASS
- Il Parametro MSGLEVEL
- Il Parametro NOTIFY
- Il Parametro PASSWORD
- Il Parametro PRTY
- Il Parametro REGION
- Il Parametro RESTART
- Il Parametro SCHENV
- Il Parametro TIME
- Il Parametro TYPRUN
- Introduzione allo Statement EXEC
- Lo Statement Data Definition ed il Parametro DISPosition
- I dati INSTREAM
- Statement IF, THEN, ELSE ed ENDIF
- Gli Operatori dello Statement IF
- Started Task, Procedure Instream e Procedure Catalogate
- Dichiarazione di Librerie Utenti per Procedure
- Overridding Procedure Statement
- I simboli del Jcl
- Includere un gruppo di Statement in un Jcl
Le Utilities zOS
- Introduzione alle Utilities
- Utility IEFBR14
- Esercizio #06.01 - Utilizzo della IEFBR14
- Utility IEBCOPY
- Esempio di Utility IEBCOPY
- Esercizio #06.02 - Utilizzo della IEBCOPY
- Funzione di COMPRESS con la IEBCOPY
- Le Schede in comune tra le Utilities
- Utility IEBGENER
- Utility IDCAMS
- Esercizio #06.03 - Utilizzo della IEBGENER e della IDCAMS
- Il Processo di SORT
- DFSORT
- Utility ICETOOL
- DFSORT con opzione INREC
- Esercizio #06.04 - Utilizzo delle Utilities per il SORT
Errori ed Abend
- Introduzione agli errori
- ABEND di un servizio di sistema e la Macro SETRP
- Cosa è un DUMP
- Formato del Completion Code
- Formato dei messaggi MVS
- Esempi di Messaggi MVS
- WTOR - Messaggi che richiedono una risposta
- Il comando DISPLAY R
- WTOR - Come determinare la risposta
- Come identificare chi emette il messaggio
- Gli ABENDs
- Errore S001, esempio ed analisi
- Errore S002, esempio ed analisi
- Errore S013, esempio ed analisi
- Errore S03B, esempio ed analisi
- Errore S04E, esempio ed analisi
- Errore S0CA, esempio ed analisi
- Errore S0CB, esempio ed analisi
- Errore S0C1, esempio ed analisi
- Errore S0C4, esempio ed analisi
Introduzione alla programmazione
- La Programmazione
- I linguaggi di Programmazione
- Tipologia dei linguaggi
- I linguaggi Compilati
- I linguaggi Interpretati
- Analisi e Programmazione
- Metodologie di Programmazione
- Programmazione non Strutturata e concetto di Spaghetti Code
- La Programmazione Strutturata
- Metodologia TOP-DOWN
- Gli Algoritmi
- Gli Array
Introduzione al linguaggio Rexx
- Introduzione al linguaggio Rexx
- Regole di sintassi
- Linguaggio REXX per sistemi z/Series
- Rexx, TSO e modalit? di esecuzione
- Explicit Execution
- Implicit Execution
- Extended Implicit Execution
- Commenti nel linguaggio Rexx
- Indentazione e continuazione
Le aree di memoria
- Le Variabili e le Costanti
- Compound Variable e Data Stack
- Utilizzo delle Compound Variable
- Utilizzo del TAIL come Indice di un Dataset
- La Funzione SYMBOL
- La Funzione OUTTRAP
- Il Data Stack
- Il Buffer
- Riempimento Stack Area
- Comandi di Stack
- Il comando NEWSTACK
- Il comando DELSTACK
- Il comando QSTACK
- Comandi MAKEBUF e QBUF
- Comando QELEM
- Il comando DROPBUF
- I comandi ĞImmediatiğ
- Le operazioni matematiche in Rexx
- Concatenazione di Stringhe
- Esercizio #10.01 - Cattura dei messaggi con OUTTRAP
- Esercizio #10.02 - Lavorare con le aree di memoria
Panoramica sugli Statement e la gestione del Flusso Logico
- Panoramica sugli Statement
- Lo Statement SAY
- Lo Statement PARSE
- Lo Statement PARSE con l'operando ARG
- Lo Statement TRACE
- Lo Statement IF
- Lo Statement IF nidificato
- Lo Statement SELECT
- Gli operatori Logici e l'algebra di Boole
- Esercizio #11.01 - Utilizzo del PARSE ed ARG
- Esercizio #11.02 - Tracciamento del programma
- Esercizio #11.03 - Controllo del flusso con la IF
- Esercizio #11.04 - Controllo del flusso con la SELECT
Cicli Iterativi
- Cosa sono i Cicli Iterativi ?
- Il Loop
- Il Ciclo DO WHILE
- Il Ciclo DO UNTIL
- Il Ciclo CR DO, Controlled Repetitive
- Il NOT DO o Number Of Times
- Il Ciclo DO FOREVER
- Utilizzare il GOTO
- Gli Statement LEAVE ed ITERATE
- Esercizio #12.01 - Sviluppo programma con Ciclo DO WHILE
- Esercizio #12.02 - Sviluppo programma con Ciclo DO UNTIL
- Esercizio #12.03 - Sviluppo programma con LEAVE ed ITERATE
File, Record e Campi
- La gestione dei Dataset in REXX
- Organizzazione dei Dataset
- La Variabile di controllo dei Dataset
- Dichiarazione della struttura del Dataset e come strutturare un Record
Funzioni e Sub Routine
- Introduzione alle Funzioni
- Tipologia di Funzioni
- Funzioni BUILT-IN
- La Funzione ABBREV
- La Funzione ABS
- La Funzione B2X
- La Funzione BITAND
- La Funzione BITOR
- La Funzione BITXOR
- La Funzione C2D
- La Funzione C2X
- La Funzione CENTER
- La Funzione COMPARE
- La Funzione COPIES
- La Funzione D2C
- La Funzione D2X
- La Funzione DATATYPE
- La Funzione DATE
- La Funzione DELSTR
- La Funzione DELWORD
- La Funzione DIGITS ed il Numeric Digits
- La Funzione ERRORTEXT
- La Funzione FORM
- La Funzione FORMAT
- La Funzione FUZZ
- La Funzione INSERT
- La Funzione JUSTIFY
- Le Funzioni LASTPOS e POS
- Le Funzioni LEFT e RIGHT
- La Funzione LENGTH
- La Funzione LINESIZE
- Le Funzioni MAX e MIN
- La Funzione OVERLAY
- La Funzione RANDOM
- La Funzione REVERSE
- La Funzione SIGN
- La Funzione SOURCELINE
- La Funzione SPACE
- La Funzione STRIP
- La Funzione SUBSTR
- La Funzione SUBWORD
- La Funzione SYSCPUS
- La Funzione SYSVAR
- La Funzione TIME
- La Funzione TRANSLATE
- La Funzione TRUNC
- La Funzione USERID
- La Funzione VERIFY
- La Funzione WORD
- La Funzione WORDINDEX
- La Funzione WORDLENGTH
- La Funzione WORDPOS
- La Funzione WORDS
- La Funzione X2B
- La Funzione X2C
- La Funzione X2D
- La Funzione XRANGE
- Esercizio #14.01 - Sviluppo di un Programma REXX con l'utilizzo delle principali Funzioni
Testing di un Programma Rexx
- Debug e gestione degli errori
- Lo Statement SIGNAL
- SIGNAL ON NOVALUE
- SIGNAL ON ERROR
- Convenzioni per il Return Code
- Diagnosi degli errori e relativa gestione
- La fase di Test
- Lo Statement TRACE
- Lo Statement EXECUTIL
Introduzione ai Comandi HOST
- Cosa sono gli Statement HOST ?
- Eseguire gli Statement HOST
- Lo Statement SUBCOM
- Lo Statement ADDRESS
- Lo Statement ISPEXEC
- Lo Statement ISREDIT
- Lo Statement CONSOLE
- Altri Statement HOST
Interagire con i Dataset e compilazione
- Gestione dei Dataset in Rexx
- Lo Statement EXECIO
- Parametri per la gestione dei Dataset
- Struttura generale dello Statement EXECIO
- Il Parametro Lines
- Allocazione di un Dataset
- Il Parametro DISKR
- Lo Statement DISKW
- Il Parametro STEM
- I Metodi FIFO e LIFO
- Pacchetto di Funzioni per lo Stream INPUT ed OUTPUT
- Lo Statement STREAM
- La Funzione CHARIN
- La Funzione CHAROUT
- La Funzione CHARS
- La Funzione LINEIN
- La Funzione LINEOUT
- La Funzione LINES
- Il Compilatore Rexx
- Metodi di compilazione
- I comandi per il Compilatore e le Direttive di Controllo
- Esecuzione di un Programma Rexx tramite Jcl
- Gli Statement CONSPROF e CONSOLE
- Esercizio #17.01 - Sviluppo per lettura e scrittura Dataset
Il linguaggio Rexx ed il DB2
- Overview sul DB2
- Il Database e gli archivi
- IL DB2 dell'IBM
- Architettura DB2
- Catalogo DB2
- Gli Address Space del DB2
- Il linguaggio Sql
- Lo Statement di SELECT
- Lo Statement di UPDATE
- Gli Statement INSERT e DELETE
- Il Rexx ed il DB2
- Interfaccia DSNREXX e lo Statement RXSUBCOM
- Connessione al DB2 da Rexx
- Dichiarazione dei Cursori
- Lo Statement PREPARE
- Lo Statement OPEN
- Lo Statement FETCH
- Lo Statement CLOSE
- Disconnesione dal DB2
- La Variabile SQLCODE
- Esercizio #18.01 - Sviluppo di un programma con accesso al DB2
Funzionalità avanzate del REXX
- Sottomettere un Job dinamicamente dal Rexx
- Gli Statement VGET e VPUT e le aree di memoria del Profilo ISPF
- Esempio di definizione e valorizzazione di una Variabile
- Cosa si intende per Tailoring ?
- Gli Statement FTOPEN, FTINCL, FTCLOSE ed FTERASE
- Il linguaggio Panel Definition Language
- La sezione ATTR
- La sezione BODY, il Front End dell'ISPF
- La sezione INIT, le prime operazioni al caricamento del Pannello
- La sezione PROC
- Lo Statement VER
- Esercizio #19.01 - Sviluppo Software con Pannello e DB2
Note
Laboratori
- Laboratori messi a disposizione su una Istanza z/OS
- Necessaria una connessione Internet “aperta” senza restrizioni per accedere al Server Remoto
- Utilizzo di emulatore 3270
- I corsisti dovranno avere la possibilità di installare liberamente i Tools