Appunti per la sopravvivenza del programmatore SAS in ambiente HOST



Documenti analoghi
. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

MANUALE PARCELLA FACILE PLUS INDICE

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Premessa Se e stata installata la versione 1.0 del programma procedere alla rimozione dei seguenti elementi.

Esercizio data base "Biblioteca"

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Database 1 biblioteca universitaria. Testo del quesito

1. Le macro in Access 2000/2003

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

Manuale Utente MyFastPage

CdL in Medicina Veterinaria - STPA AA

Sistema Informativo Gestione Fidelizzazione Clienti MANUALE D USO

Olga Scotti. Basi di Informatica. File e cartelle

Inserimento dei dati

Editor vi. Editor vi

INDICE. Accesso al Portale Pag. 2. Nuovo preventivo - Ricerca articoli. Pag. 4. Nuovo preventivo Ordine. Pag. 6. Modificare il preventivo. Pag.

ACCESSO AL SISTEMA HELIOS...

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

Access. P a r t e p r i m a

CREAZIONE DI UN AZIENDA

I file di dati. Unità didattica D1 1

MANUALE PER CONSULTARE LA RASSEGNA STAMPA VIA WEB

PROTOCOLLO INFORMATICO

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo

Istruzioni per installare EpiData e i files dati ad uso di NetAudit

Manuale Utente. Sistema Informativo Ufficio Centrale Stupefacenti

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

GESGOLF SMS ONLINE. Manuale per l utente

Le query. Lezione 6 a cura di Maria Novella Mosciatti

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

SendMedMalattia v Manuale d uso

Gestione Turni. Introduzione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO)

1.0 GUIDA PER L UTENTE

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

Workland CRM. Workland CRM Rel /11/2013. Attività --> FIX. Magazzino --> NEW. Nessuna --> FIX. Ordini --> FIX

Database Manager Guida utente DMAN-IT-01/09/10

Centro Acquisti per la Pubblica Amministrazione EmPULIA. Linee guida per gli Enti Aderenti. Procedure Negoziate: Richiesta di Preventivo. Versione 2.

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Manuale Utente Amministrazione Trasparente GA

Crotone, maggio Windows. Ing. Luigi Labonia

Promemoria delle principali funzioni di Gestione utenti e prestiti in SOL

Guida SH.Shop. Inserimento di un nuovo articolo:

Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Guida all uso di Java Diagrammi ER

Monitor Orientamento. Manuale Utente

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Guida alla registrazione on-line di un DataLogger

MANUALE EDICOLA 04.05

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

GCEWEB Denunce mensili in WEB

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

VACANZE STUDIO - MANUALE UTENTE PER SOCIETÀ APPALTATRICI

Come modificare la propria Home Page e gli elementi correlati

REGISTRO DELLE IMPRESE

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Sistema per scambi/cessioni di Gas al Punto di Scambio Virtuale

Sistema di Gestione Fornitori FGS (SQM) Manuale Fornitori

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

Capitolo 4 Pianificazione e Sviluppo di Web Part

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

SOMMARIO... 3 INTRODUZIONE...

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

Il sistema operativo: interazione con l utente

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

NOTA TECNICA UTILIZZO REGISTRO ONLINE

INDICE. IL CENTRO ATTIVITÀ... 3 I MODULI... 6 IL MY CLOUD ANASTASIS... 8 Il menu IMPORTA... 8 I COMANDI DEL DOCUMENTO...

Manuale Utente Albo Pretorio GA

Dispensa di Informatica I.1

CREAZIONE ARCHIVI 2014

Registratori di Cassa

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

[FINANZAECOMUNICAZIONE / VADEMECUM]

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

Dispensa di database Access

EasyPrint v4.15. Gadget e calendari. Manuale Utente

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

OSSIF WEB. Manuale query builder

Pagina n. 1. Via Ficili n Tolentino (MC) Tel.: Fax: info@grupposis.it

Strutturazione logica dei dati: i file

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

L amministratore di dominio

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

GESTIONE DEI BENI USATI

FPf per Windows 3.1. Guida all uso

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

MANUALE PER L UTILIZZO DELLA FUNZIONE EVENTI Rel.1.2 del 29 gennaio 2004

OSSERVATORIO REGIONALE CONTRATTI PUBBLICI DI LAVORI, SERVIZI E FORNITURE

Guida per la registrazione alla piattaforma di Gestione dei Corsi per il Consulente Tecnico Telematico

Accesso all Area di Lavoro

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Dipartimento per le Libertà Civili e l Immigrazione

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A

Transcript:

Appunti per la sopravvivenza del programmatore SAS in ambiente HOST

Come sopravvivere ad una piattaforma HOSTile Per cominciare Come accedere alla sessione TSO (Time Sharing Option) E necessario disporre di:! un programma che consenta di aprire una sessione in emulazione (una interfaccia! Pc per il Mainframe);! una utenza con relativa password. Per aprire una sessione TSO:! lanciare il programma che apre l emulazione;! seguire le istruzioni a video per l inserimento di utenza e password! raggiungere il menu principale Come uscire dalla sessione TSO Dal menu principale, digitare X (Exit) e premere invio: seguire le istruzioni a video per il salvataggio eventuale dei files temporanei. Si giunge in in una schermata vuota con il messaggio Ready :! per tornate al menu principale digitare logon + invio;! per uscire digitare logoff + invio (aiuta pensare a Michele Logoff, immortale protagonista della letteratura russa dell 800) 2

La tastiera Generalmente, lavorando con una utenza TSO, la funzione svolta da alcuni tasti cambia: ecco una rassegna minima per la sopravvivenza. Ctrl di destra Ctrl di sinistra F7 F8 INVIO INVIO sblocca la tastiera Page up Page down next line Conviene verificare comunque i settaggi della tastiera. La posizione della command line Per impostare la posizione della command line selezionare 0 ISPF PARMS quindi 4 DISPLAY impostare COMMAND LINE PLACEMENT.. ASIS Lo split della finestra Per poter lavorare contemporaneamente su 2 funestre posizionare il cursore nelle parte alta della schermata premere F2 Si ottiene così una nuova finestra : le due finestre ora attive saranno separate da una linea punteggiata, e la posizione della linea punteggiata sarà data dalla posizione del cursore nel momento in cui si è premuto F2. Per passare da una finestra all altra F9. Per chiudere unadelle finestre procedere con F3 successivi in alternativa digitare =x sulla command line e premere invio. La descrizione delle chiavi funzionali Per far comparire sulla parte bassa dello schermo la descrizione delle azioni collegate alle chiavi funzionali F1 F12, digitare PFSHOW ON + invio. Per eliminare la descrizione delle chiavi funzionali digitare PFSHOW OFF + invio. Caro vecchio SQL Tabelle DB2 (solo F&F) Le tabelle DB2 sono reperibili in Produzione DBAPD01.table_name Test FF01.table_name La documentazione relativa alle tabelle DB2 è reperibile in FF.DUT.LIBRARY(table_name) Come verificare il contenuto di una tabella DB2 Conviene scrivere una piccola query SQL. Ecco il cammino: Q QMF 1 PRODUZIONE - QMF per sottosistema DB2P F6 Query # Scrivere la query SQL F2 lancio query 3

Come salvare una query A volte conviene salvare una query SQL per poterla riutilizzare in futuro: nella command line della finestra Q-1-F6 digitare SAVE QUERY AS nome_query in command line + invio La query sarà salvata nella propria libreria identificata con l utenza TSO. Se si vuole rendere disponiblile la query ad altri utenti: digitare SAVE QUERY AS nome_query (S=Y + invio Come recuperare una query precedentemente salvata Nella command line della finestra Q-1 : digitare LIST? in command line + invio impostare Type a QUERIES selezionare la query desiderata e digitare DIS alla sua sinistra + invio Come stampare il risultato di una query Se si vuole stampare l output di una query F4 uscire dal QMF e raggiungere il Menu principale PQMF in command line + invio (viene lanciata la stampa) S.O da command line + invio indivuduato il Job di stampa, modificare la classe C in A e l indirizzo della stampante DEST ( R10 solo F&F ) + invio Programmi SAS e JCL (solo F&F) Sono memorizzati in due librerie distinte, per ogni ambiente: FFP.SAS.SOURCE (SAS produzione) FF.SAS.SOURCE (SAS test) FFP.CM.JOBLIB (JCL produzione) FF.JCL.CNTL (JCL test) La gestione dei files Come recuperare il nome di un file Generalmente i file vengono salvati con nomi a 4 livelli: project group type member. Per avere una visione completa di tutti i file che appartengono ad un project, o ad un group o ad un type 3 UTILITIES + invio 4 Dslist + invio digitare nel campo Dsname Level i livelli noti ed utilizzare il wild character * per sostituire le parti non note + invio Compare la lista dei mebri:per capire la natura di un membro, digitare S alla sinistra del membro + invio 4

Come allocare risorse per un file Le risorse fisiche necessarie per un file vanno sempre specificate. Una possibilità è la sequenza: 3 UTILITIES 2 Data Set Allocate, rename, delete, catalog, uncatalog, or display information of an entire data set Parametro fondamentale è la dimensione dell area di memoria (PRIMARY QTY): è definita in termini di cilindri (SPACE UNIT) e per intuire la dimensione di un cilindro valgono le equivalenze seguenti: Volume Cilindro Traccia 800 Cilindri 15 19 Tracce (secondo piattaforma) 0,75 MG circa 50 KB Altri parametri sono: RECORD LENGHT BLOCK SIZE # deve essere un multiplo della record lenght ORGANISATION # RECORD FMT # Libreria SAS File Sequenziale Libreria di Membri Organisation PS PS PO Record Fmt FS FB FB Infine bisogna specificare l azione nella command line: A per allocare una nuova area di memoria D per cancellare un'area di memoria. Come applicare le risorse allocate per un file ad un secondo file 3 UTILITIES 2 Data Set Allocate, rename, delete, catalog, uncatalog, or display information of an entire data set Specificare nel campo DATA SET NAME il nome del file con gli attributi da copiare, e premere INVIO: compaiono a video le risorse. Uscire dalla schermata con F3. Modificare il contenuto del campo DATA SET NAME digitando il nome del file su cui copiare gli attributi. Digitare A (allocate) nel campo OPTION e premere INVIO: ricompaiono le risorse viste in precedenza. Premere invio. NB. Cancellare la Block Size: verrà ricalcolata dal sistema. Come modificare le risorse allocate per un file 3 UTILITIES 2 Data Set Allocate, rename, delete, catalog, uncatalog, or display information of an entire data set Specificare nel campo DATA SET NAME il nome del file, e premere INVIO: compaiono a video le risorse allocate precedentemente. Uscire dalla schermata con F3. Il nome del file cancellato rimane nel campo DATA SET NAME. Digitare D (delete) nel campo OPTION e premere INVIO: confermare la cancellazione premendo ancora INVIO. Il nome del file cancellato rimane nel campo DATA SET NAME. 5

Digitare A (allocate) nel campo OPTION e premere INVIO: ricompaiono le risorse viste in precedenza. Modificarle e premere INVIO. NB. Se si modifica la lunghezza di un file, conviene cancellare la Block Size: verrà ricalcolata dal sistema. Come cercare una stringa in uno o più files 3 UTILITIES 14 Search-For Specificare la stringa da ricercare nel campo Search String tra apici; specificare il nome a 4 livelli del codice (Project-Group-Type-Member); premere INVIO. Compare il messaggio di ricerca in corso e, successivamente, la schermata con l esito della ricerca. Per una ricerca in una serie di codici, specificare nel campo Member la radice comune ed il wild character * (eg R221X*): comparirà una schermata con l elenco dei codici con la radice indicata. Evidenziare, con una S alla sinistra del campo Name, i codici coinvolti nella ricerca e premere F3: tornati nella maschera 3.14, premere INVIO per scatenare la ricerca. Come rinominare un file 3 Utilities 1 Library inserire R in command line digitare i quattro livelli del nome in ISPF Library digitare il nuovo nome del file in New Name premere invio Il SAS Come scrivere o modificare un programma SAS Ecco due modalità per lavorare in SAS:! SAS interarattivo # 6 COMMAND SAS609 in command line include del codice SAS o scrittura ex novo! Edit # 2 EDIT Generalmente un progetto non ha elaborazioni non in interattivo e quindiconviene scrivere o modificare i programmi in Edit. Non è possibile scrivere un programma SAS direttamente in produzione: il passaggio da FF ad FFP è a cura della sala macchine che va avvertita con una mail standard. Come salvare un programma SAS scritto in interattivo Per salvare un codice SAS scritto in interattivo digitare in command line della sessione SAS FILE project.group. type. (member) + invio eg FILE FF.SAS.SOURCE.(STRUZZO) Come copiare un programma preesistente Andare in 2 EDIT, specificando il nome del nuovo programma: comparirà una schermata vuota. Digitare COPY sulla command line, premere INVIO e specificare nella schermata successiva il nome 4 livelli del codice da copiare. Per includere un programma preesistente, digitare INCLUDE. 6

Come stampare un codice Dalla command line della schermata che visualizza il codice digitare =3.6 (UTILITIES/HARDCOPY) [conviene copiare il nome a 4 livelli] specificare il nome del codice e premere INVIO [ed incollarlo] premere F3 e specificare un carattere che comparirà come suffisso premere INVIO digitare S.O (SDSF Spool Display and Search Facility/ Display jobs in the JES2 output queue) identificare il job specificando come prefix UNI930 carattere specificato porre RMT10 in DEST (indirizzo stampante alternativo RM10) (solo F&F) premere INVIO rinfrescare il video con INVIO fino alla scomparsa del job. Se si hanno dei dubbi, modificare il jcl UNI030.JCL.CNTL.PRINT (membro e stampante) e sottometterlo (solo F&F) Come eliminare un job di stampa Identificato il job in S.O, eliminarlo con P in NP e, nella maschera successiva, 1 di conferma. Come testare un programma SAS Il testing di uno o più programmi SAS passa sempre attraverso : la scrittura di un JCL (modificando un JCL preesistente): ad esempio //FXFRANC0 JOB (010001),'Q002**' CLASS=X,MSGCLASS=W,USER=DBAPD01 //* //* -------------------------------------------------------------------- //* ESECUZIONE DI Q002STOR DI TEST //* -------------------------------------------------------------------- //STEPX010 EXEC SAS609,REGION=4096K, // PARM='MACRO,MAUTOSOURCE,SYSPARM=Q002_DB2PX' //SASLIST DD SYSOUT=X,DCB=(BLKSIZE=264,LRECL=260,RECFM=VBA) //LIBDATA DD DSN=FFP.SAS.DATA,DISP=SHR //QUOTAZST DD DSN=FF.SQFB.Q002STOR.D01,DISP=OLD //SYSIN DD DSN=FFP.SAS.SOURCE(GENSDB2),DISP=SHR // DD DSN=FF.SAS.SOURCE(Q002STOR),DISP=SHR //* il JCL FXFRANC0 1. serve a testare il programma SAS FF.SAS.SOURCE(Q002STOR) 2. rende possibile la lettura di tabelle DB2 (USER=DBAPD01) 3. consente la lettura della libreria SAS FFP.SAS.DATA 4. consente la scrittura del sequenziale QUOTAZST il submit del JCL digitare submit nella command line della finestra che visualizza il Jcl la verifica del log:! =S.ST dalla command line! selezionare il job con? # compare l elenco degli output (esito JCL, log SAS, eventuali proc print o contents, )! selezionare un output con S 7

verifica eventuali dataset SAS: è necessario entrare in SAS interattivo# 6 COMMAND+SAS609 In command line allocare la libreria che contiene i dataset (eg. FFP.SAS.DATA DISP=SHR) e analizzare il dataset. 8

Il JCL: croce o delizia? JCL (Job Control Language) L attivazione di lavori batch dalle utenze TSO (time sharing option) avviene sempre comunicando, al sottosistema JES (Job Entry Subsystem) del sistema operativo MVS, quali programmi eseguire e con quali modalità mediante un linguaggio chiamato JCL (Job Control Language). Tramite il linguaggio JCL il programmatore è in grado di gestire il lavoro prima e dopo la sua esecuzione, mentre l esecuzione rimane a carico delle componenti dell MVS stesso. Si tratta quindi di un codice che:! imposta il nome del job che sarà sottomesso! alloca le risorse necessarie per l elaborazione (aree di memoria);! sottomette i codice nella sequenza desiderata;! genera un output. Tutte queste informazioni sono codificate su record di 80 byte: ogni record è detto scheda. Questa terminologia, così come la lunghezza del record, sono un eredità del passato: una volta scheda era una vera scheda perforata e la sua perforazione doveva cominciare dalla colonna 1 ed estendersi, in alcuni casi, fino alla colonna 80. Il JCL assolve alle sue funzioni utilizzando le seguenti schede: JOB EXEC DD DELIMITER PROC PEND COMMENTO indica l inizio di un job e gli assegna il nome indica l inizio del job step: assegna un nome allo step ed indica il nome del programma che deve essere eseguito nello step identifica e descrive un dataset indica la fine dei dataset inseriti nella input stream indica l inizio di una procedura indica la fine di una procedura Ecco la struttura di una scheda JCL: campo identificatore costituito dalle colonne 1 e 2, dice al sistema che si tratta di un a scheda JCL. le due colonne devono contenere // in tutte le schede con eccezione della Delimiter /* per la scheda Delimiter //* per la scheda commento campo nome comincia alla colonna 3, può essere lungo da 1 a 8 caratteri alfanumerici, il primo carattere deve essere alfabetico, deve essere seguito da un blank campo operazione specifica il tipo di scheda, deve seguire il campo nome e deve essere preceduto da almeno un blank campo operandi contiene i parametri che identificano la funzione richiesta, deve seguire il campo operazione e deve essere preceduto da almeno un blank, i parametri vanno separati da virgole 9

Come interpretare un JCL La scheda JOB La scheda JOB è unica e deve precedere ogni altra scheda: Contiene tutte le informazioni necessarie al sistema per mandare in esecuzione ed eseguire il lavoro. Contiene: // + campo nome (obbligatorio) + operazione JOB. Seguono i parametri della scheda. Codice di addebito ([numero di account][,informazioni di accounting] ) Nome del Programmatore o altro Identificatore racchiuso tra apici se contiene caratteri speciali Class assegna una classe di esecuzione al job (i lavori batch sono divisi in classi, ed ogni classe corrisponde a determinate condizioni di esecuzione del lavoro: le classi e le loro caratteristiche vengono definite da chi gestisce il sistema) MSGLevel indica il tipo di informazioni che il sistema deve produrre per il job: in assenza di indicazioni specifiche, si utilizza il default (0, 0) MSGLEVEL = (istruzioni, messaggi) istruzioni 0 viene stampata solo la scheda job 1 vengono stampate tutte le schede di controllo comprese le procedure catalogate 2 vengono stampate tutte le schede di controllo messaggi 0 non viene stampatoalcun messaggio sulle unità utilizzate: vengono emessi invece eventuali messaggi di errore nella codifica delle schede di controllo 1 vengono stampate informazioni sulle unità e sui supporti di registrazione utilizzati, oltre ai messaggi su eventuali eerori di codifica. MSGClass specifica la classe di output o di stampa da associare alla messagistica prodotta (se si tratta di una stampa, la classe di output stabilisce se dirottarla immediatamente ad una printer e su quale) User in quale archivio DB2 andare a lavorare (DBAPD01 per la produzione) Eg //R221JO05 JOB (010001),'R221**',CLASS=R,MSGCLASS=J,USER=DBAPD01, // TIME=NOLIMIT,REGION=0M,PERFORM=11 10

La scheda EXEC Scopo principale della scheda EXEC è quello di fornire il nome del programma che deve essere eseguito. E la prima scheda di ogni step e specifica il programma o la procedura JCL da richiamare. Contiene: // + stepname (meglio se con prefisso step ) + operazione EXEC. Seguono i parametri. PGM= nome del programma da richiamare PROC= nome della procedura JCL da richiamare COND si usa per specificare un codice di ritorno in base al quale il sistema determina se eseguire o meno uno step. Il Job è visto come l esecuzione in cascata di diversi Pgm: se uno di questi genera problemi o viene eseguito in un certo modo, può risultare inutile proseguire nella successione dei Pgm. Ogni Pgm fornisce dopo la sua esecuzione un return Code che stabilisce come è andata l esecuzione. Con il parametro COND si può condizionare l esecuzione di un Job controllando i return Code. La sintassi è COND=((valore,operatore,stepname), ) dove! valore è un numero compreso fra 0 e 4095,! operatore è un operatore logico,! stepname è il nome di uno step, e va intesa come segue: se la condizione specificata nel parametro COND risulta vera rispetto al Return Code dello step indicato, allora lo step corrente non viene eseguito e si continua con i successivi. Si possono inserire fino a 8 condizioni: se solo una delle condizioni è soddisfatta viene saltato lo step. PARM usato per passare dati ad un programma mentre è in esecuzione: se i dati contengono più espressioni, vanno separate da virgole ed il tutto racchiuso tra apici o parentesi (apici nel caso di caratteri speciali). Eg //STEPI005 EXEC PGM=ICEGENER,COND=(4,LT) 11

La scheda DD (Data Definition) Scopo principale della scheda DD e quello di fornire informazioni su un data set di input o di output al programma. Ci deve essere una scheda DD per ogni data set elaborato nel programma. Contiene: // + campo nome + operazione DD. SYSIN è una scheda di sistema nella quale si passano i parametri di input per la procedura. Nel caso di una procedura SAS609, nella SYSIN si elencano i programmi SAS da eseguire Eg //SYSIN DD DSN=FFP.SAS.SOURCE(GENSDB2),DISP=SHR Seguono gli operandi ed i commenti: SYSOUT ci sono due modi per stampare un data set in output: indicare direttamente l unità su cui l output deve essere stampato, con UNIT; depositare i dati da stampare su un data set, chiamato SYSOUT, situato su uno spazio disco di sistema (SPOOL), associando questo data set ad una classe di stampa o output. La sintassi è SYSOUT=x, dove le possibili classi sono 36, da A a Z e da 0 a 9. Nel caso di nua procedura SAS609, nella SYSOUT finisce il contenuto della finestra di OUTPUT. NB se si sta testando un jcl, è bene assegnare una classe diversa da quella assegnata nella scheda JOB, per poter distinguere. Eg //SASLIST DD SYSOUT=X DSNAME specifica il nome di un data set (nel caso di data set temporanei, che vengono eliminati automaticamente a fine job, il nome va preceduto da &&) FF.SQFB.XX.YY identifica un file sequenziale fisso bloccato Eg //IND FF.SQVB.XX.YY identifica un libreria SAS (variabile bloccata) DD DSN=FFP.SQFB.Q002JO01.INDICI,DISP=OLD 12

DISP descrive lo stato di un data set e comunica al sistema cosa farne alla fine dello step. La sintassi è DISP=[stato][,disp fine normale][,disp fine anormale - abend] I valori possibili sono DISP= (stato,normale,abend) OLD KEEP KEEP SHR DELETE DELETE MOD CATLG CATLG NEW UNCATLG UNCATLG Le informazioni del primo sottoparametro riguardano la stato del data set DISP=NEW DISP=OLD DISP=SHR DISP=MOD il data set va creato nello step esiste e NON PUO essere usato contemporaneamente da altri programmi esiste e PUO essere usato contemporaneamente da altri programmi deve essere aggiornato in accodamento Le informazioni del secondo sottoparametro riguardano le disposizioni in caso di fine normale DELETE KEEP PASS CATLG NOCATLG lo spazio riservato al data set sul volume può essere rilasciato e può essere utilizzato da altri data set il data set deve essere mantenuto sul volume il data set deve essere a disposizione per essere usato da uno step successivo all interno del job il data set va catalogato il data set va scatalogato Le informazioni del terzo sottoparametro riguardano le disposizioni in caso di abend ed indicano al sistema che DELETE KEEP CATLG NOCATLG lo spazio riservato al data set sul volume può essere rilasciato e può essere utilizzato da altri data set il data set deve essere mantenuto sul volume il data set va catalogato il data set va scatalogato NB. Se manca il primo parametro, ma ci sono il secondo ed il terzo, il primo sara inteso come NEW. VOLUME serve ad identificare il volume o i volumi su cui il data set risiede o risiederà UNIT una volta indicato il volume, questo volume verrà utilizzato su di un dispositivo di I/O: il parametro UNIT indica questo dispositivo. SPACE si usa per richiedere spazio per un nuovo data set. La sintassi è SPACE=(UNITA, QUANTITA, RLSE, CONTIG, ROUND) dove UNITA è l unità di misura 13

QUANTITA RLSE CONTIG ROUND [primaria][, secondaria][, directory] dove primaria indica quanti cilindri, tracce o blocchi vanno allocati secondaria indica quanto spazio va aggiunto nel caso che la allocazione primaria non basti directory indica il numero di blocchi da 256 byte assegnati alla directory di un data set partitioned. serve a rilasciare lo spazio inutilizzato richiede che lo spazio allocato al data set sia contiguo richiede che lo spazio allocato sia eguale ad un numero intero di cilindri se l allocazione è a blocchi DCB usato solo nella creazione di nuovi data set, contiene le informazioni relative alla struttura dei record. La sintassi è DCB=(caratteristiche del data set) dove le caratteristiche più frequenti sono RECFM =F / FB / V / VB (fixed, fixed blocked, variable, variable blocked) DSORG LRECL = lunghezza logica del record BLKSIZE = ampiezza di un blocco fisico di dati sull unità I/O DUMMY quando viene definito un data set dummy, le operazioni di lettura-scrittura non vengono eseguite per quel data set e tutti i parametri della scheda DD non vengono codificati, eccetto per il parametro DCB Concatenazione di schede DD Significa collegamento di più schede DD delle quali solo la prima ha il DDNAME. Ma un solo DDNAME equivale ad un solo DCB per più data set (e quindi un solo formato record, una sola lunghezza di record logico...). Perciò, i data set concatenati devono essere quasi identici, sebbene possano stare su volumi diversi. Sono consentiti BLOCKSIZE diversi, ma conviene che il data set con BLOCKSIZE massima sia il primo della lista. Alla luce di tutto quello che si è detto, appare evidente come convenga scrivere i JCL andando a modificare un JCL preesistente e funzionante. 14

Esempio 1 Scheda JOB Operazione Codice di addebito Nome Identificatore Classe di esecuzione //FXPIETRO JOB (010001),'R221**',CLASS=X, // MSGCLASS=N,MSGLEVEL=(1,1), // USER=DBAPD01 Archivio DB2 in cui lavorare Scheda EXEC Operazione Memoria virtuale allocata - preferibile 0M Stepname Procedura //STEPX010 EXEC SAS609,REGION=4096K,WORK='400,95', // PARM='MACROGEN,SYMBOLGEN,NODATE,MPRINT,NOCAPS,SYSPARM=NUC1EDB2PN' dati passati al programma mentre è in esecuzione Scheda Data Definition Nome Dataset su cui depositare i dati Stato del Dataset Nome Dataset //SASLIST DD SYSOUT=X //LIBOUT DD DSN=FF.SQVB.UNI032.LIBOUT,DISP=OLD //LIBDATA DD DSN=FFP.SAS.DATA,DISP=SHR //PARAMETR DD * Rimando alla linea successiva 1998 //SYSIN DD DSN=FFP.SAS.SOURCE(GENSDB2),DISP=SHR // DD DSN=FF.SAS.SOURCE(IGUANA),DISP=SHR 1. Chiediamo che venga eseguita la procedura SAS609 2. passiamo il dato 1998 3. la procedura esegue una routine che mi consente di connettermi al DB2 FFP.SAS.SOURCE(GENSDB2) 4. la procedura esegue il programma IGUANA in FF.SAS.SOURCE(IGUANA) 5. al quale vengono resi disponibili i dataset di LIBDATA 6. il risultato viene memorizzato nel dataset SAS LIBOUT (con disp=old) 7. il contenuto della finestra di OUTPUT viene mandato in SASLIST 15

Esempio 2 Scheda JOB Nome Operazione Codice di addebito Identificatore //FXPIETRO JOB (010001),'R221**',CLASS=X, // MSGCLASS=N,USER=DBAPD01, // TIME=NOLIMIT,REGION=0M,PERFORM=11 Classe di esecuzione Archivio DB2 in cui lavorare Scheda EXEC Operazione Memoria virtuale allocata - preferibile 0M Stepname Procedura Condizione sul return code //STEPX110 EXEC SAS609,WORK='400,95',COND=(00,NE), // PARM='MACRO,MAUTOSOURCE,NOCAPS,NOCAPSOUT,SYSPARM=R221_DB2PX' dati passati al programma mentre è in esecuzione Scheda Data Definition Dataset su cui depositare i dati Nome Dataset Nome in questo caso il default Stato del Dataset //SASLIST DD SYSOUT=* //LIBDATA DD DSN=FFP.SAS.DATA,DISP=SHR //PARAMETR DD DSN=FFP.SQFB.R221JO01.T01,DISP=SHR //DOSSIER DD DSN=FF.SQFB.UNI032.DOSSIER,DISP=OLD //SYSIN DD DSN=FFP.SAS.SOURCE(GENSDB2),DISP=SHR // DD DSN=FF.SAS.SOURCE(DOSSIER),DISP=SHR 1. Chiediamo che venga eseguita la procedura SAS609 che 2. esegue una routine che mi consente di connettermi al DB2 FFP.SAS.SOURCE(GENSDB2) 3. esegue il programma DOSSIER in FF.SAS.SOURCE(DOSSIER) 4. al quale vengono resi disponibili i dataset di LIBDATA 5. e vengono passati dei dati contenuti nel file seqienziale PARAMETR 6. il risultato viene memorizzato nel file sequenziale DOSSIER (con disp=old) 7. rende il contenuto della finestra di OUTPUT reperibile in SASLIST 16

Esempio 3 //Q002JO01 JOB (010001),'Q002**',CLASS=X,MSGCLASS=W,USER=DBAPD01 //* //* -------------------------------------------------------------------- //* ESTRAZIONE RICHIESTA E PREPARAZIONE FILE QUOTAZIONI //* -------------------------------------------------------------------- //STEPX010 EXEC SAS609,REGION=4096K, // PARM='MACRO,MAUTOSOURCE,SYSPARM=Q002_DB2PX' //SASLIST DD SYSOUT=X,DCB=(BLKSIZE=264,LRECL=260,RECFM=VBA) //LIBDATA DD DSN=FFP.SAS.DATA,DISP=SHR //QUOTAZ DD DSN=FFP.SQFB.Q002JO01.D01,DISP=OLD //IND DD DSN=FFP.SQFB.Q002JO01.INDICI,DISP=OLD //REG DD DSN=FFP.SQFB.Q002JO01.REG,DISP=OLD //GET84AA DD DSN=FFP.SQFB.Q002JO01.GET84AA,DISP=OLD //SYSIN DD DSN=FFP.SAS.SOURCE(GENSDB2), DISP=SHR // DD DSN=FFP.SAS.SOURCE(GENSEG01),DISP=SHR // DD DSN=FFP.SAS.SOURCE(Q002ER01),DISP=SHR // DD DSN=FFP.SAS.SOURCE(Q002XR01),DISP=SHR // DD DSN=FFP.SAS.SOURCE(Q002XR02),DISP=SHR // DD DSN=FFP.SAS.SOURCE(R221XO9C),DISP=SHR // DD DSN=FFP.SAS.SOURCE(GENSXG01),DISP=SHR //* //STEPX020 EXEC SAS609,COND=(00,NE), // PARM='MACRO,MAUTOSOURCE,MACROGEN,SYMBOLGEN' //SASLIST DD SYSOUT=X //TRANSFER DD DSN=FFP.SQFB.Q002JO01.D03,DISP=OLD //FLG DD DSN=FFP.SQFB.Q002JO01.D04,DISP=OLD //SYSIN DD DSN=FFP.SAS.SOURCE(Q002XR03),DISP=SHR // DD DSN=FFP.SAS.SOURCE(R221X900),DISP=SHR //* Abbiamo il jcl Q002JO01 con codice di addebito 01001 identificatore Q002** classe di esucuzione X archivio DB2 su cui lavorare DBAPD01 Nello STEPX010 chiediamo che venga eseguita la procedura SAS609 allocando 4098K di memoria cache. Il contenuto della finestra di OUTPUT viene spedito in SASLIST Viene definita la libreria SAS LIBDATA Vengono definiti i file sequenziali QUOTAZ, IND, REG, GET84AA Vengono indicati nella libreria di sistema SYSIN i programmi da lanciare Nello STEPX020 chiediamo che venga eseguita la procedura SAS609 Il contenuto della finestra di OUTPUT viene spedito in SASLIST Vengono definiti i file sequenziali TRANSFER, FLG Vengono indicati nella libreria di sistema SYSIN i programmi da lanciare 17