* VSAMCOND DOC * --------------------------------------------- 20/03/93

   Documentazione del programma batch VSAMCOND per LISTCAT condensato

-------------------------------------------------------------- Rel. 1.0




1)                      G E N E R A L I T A'


    Il programma VSAMCOND permette di ottenere la lista dei files
appartenenti ad un catalogo VSAM (o ICF) in maniera piu' leggibile
di quanto permetta il comando LISTCAT dell'IDCAMS. Il listato e' scritto
in maniera molto sintetica rispetto al LISTCAT: i parametri di ogni
file sono scritti in una sola riga o al massimo due, in modo da avere
una visione complessiva che consenta una gestione dei cataloghi e delle
anomalie per eccezioni.
    E' possibile restringere l'insieme dei files listati per nome, per
tipo (Cluster, Path, GDG ecc.) o per volume, oltre che, ovviamente, per
catalogo. Invece che ottenere una stampa si puo' salvare l'output su
un file per ulteriori elaborazioni o per tenere uno storico.

    Il programma ottiene comunque i dati dal catalogo non direttamente
ma attraverso un LISTCAT IDCAMS intermedio che puo' essere generato
dal programma stesso o essere generato in un passo precedente ed essere
preso in input.

    I comandi al programma sono dati attraverso il PARM='....'; se il
listcat viene generato direttamente dal programma, allora sara' neces-
sario anche una (o piu') schede di SYSIN con la quale generare il LISTCAT
IDCAMS voluto; tipicamente questa scheda sara':
    LISTCAT ALL CAT(nome.catalogo)
con la quale si produrra' il listcat delle entrate di tutto un catalogo;
l'output di questo listcat va su un file transitorio con nome logico
LSTWORK che percio' e' aperto in output dal programma; terminato il
listcat, il programma prosegue aprendo il file transitorio in input,
leggendo il listcat ed estraendovi le informazioni volute.
E' quindi importante che nella scheda IDCAMS di SYSIN vi sia, assieme
al comando LISTCAT, il parametro ALL: solo cosi' il programma potra'
estrarre dal file transitorio tutte le informazioni volute.
Per il resto, si puo' utilizzare qualunque variante permessa del
comando LISTCAT per restringere opportunamente i files listati; ad
esempio, in MVS:
    LISTCAT LEVEL(qualific) ALL
per avere tutti i files che iniziano con un determinato qualificatore
    LISTCAT ENTRY(nome.mio.file) ALL CATALOG(nome.catalogo)
per avere listato un solo file
    LISTCAT CLUSTER ALL CAT(nome.catalogo)
per avere solo i cluster ed escludere PATH, NONVSAM ecc.
Si possono anche dare piu' comandi LISTCAT assieme, uno dopo l'altro;
i corrispondenti listati saranno accodati sullo stesso file transitorio
e saranno interpretati come un unico listcat.
In ogni caso, le schede di SYSIN devono avere dei comandi IDCAMS validi
e percio' devono seguire tutte le regole di sintassi dell'IDCAMS.

    La versione MVS e DOS sono esattamente identiche nelle funzionalita';
la versione CMS non puo' produrre autonomamente il listcat transitorio
ma prende in input un file CMS nel quale vi e' un listcat generato a sua
volta in ambiente DOS o MVS; l'output di default in CMS e' il terminale
mentre files di output saranno sempre files CMS.







2)            D E S C R I Z I O N E        C O M A N D I


    I comandi veri e propri del programma verranno dati, nella versione
DOS ed MVS, sulla scheda EXEC in PARM=; ogni comando deve essere separato
dagli altri con una virgola od un punto e virgola; non devono essere
lasciati blank all'interno dei parametri.
    Nella versione CMS i parametri verranno scritti di fianco al nome
VSAMCOND, con una sintassi che e' esattamente uguale alle versioni MVS
o DOS.
    Elenchiamo, uno per volta, i comandi del programma:

GEN    : indica che il listcat transitorio viene generato direttamente
         dal programma e che quindi e' richiesta una scheda LISTCAT in
         SYSIN. E' richiesto un file sequenziale transitorio con nome
         logico LSTWORK sufficentemente grande da contenere il LISTCAT
         IDCAMS voluto; ad esempio, in MVS:
          //LSTWORK DD DSN=&&LISTWORK,SPACE=(TRK,(2,1)),DISP=(NEW,PASS),
          //           UNIT=SYSDA
         in DOS:
          // DLBL LSTWORK,'LISTCAT.TEMP',,VSAM,CAT=nomecat,
                         RECORDS=(numpri,numsec),RECLEN=133,DISP=(OLD,KEEP)
         in DOS questo file transitorio deve essere gia' stato creato ma
         deve essere vuoto, perche' nello stesso step verra' aperto prima
         in output e poi in input.

         In ambiente MVS e DOS il comando GEN e' il default e quindi
         puo' venire omesso; in CMS la generazione del listcat non e'
         possibile per cui questo comando non ha effetto.

NOGEN  : il programma prende in input un file contenente il listato di un
         LISTCAT IDCAMS; il nome logico di default di questo file e'
         LISTCAT; la lunghezza record che deve avere, se non esplicitamente
         indicata nel parametro LRECLIN=, e' 133 e il formato record in MVS
         deve essere FB.
         Questo parametro e' il default nella versione CMS; il file in
         input di default e' LISTCAT VSAMCOND A1.

LRECLIN=n : lunghezza record del file in input; il default e' 133.

OUTPUT=ddname : specifica la DD (o la DLBL) del file su cui si vuole che
         venga scritto l'output del programma. Se non viene cambiata
         dal comando LRECLOUT=, la lunghezza record di questo file e' 133.
         Di default l'output viene messo in stampa in questo modo:
         nella DD SYSOUT nella versione MVS, che percio' dovra' avere:
          //SYSOUT DD SYSOUT=A
         nell'unita' logica SYS001 nella versione DOS, per cui:
          // ASSGN SYS001,01E
         in cui 01E e' una stampante virtuale corrispondente ad una scheda
         POWER di LST.
         Nel caso invece si voglia l'output sul file indicato in OUTPUT=
         si dovra' scrivere nel job MVS:
          //ddname DD DSN=nome.file.output,DISP=  ecc.
         e nella versione DOS:
          // DLBL ddname,'nome.file.output',,VSAM,CAT=nomecat,DISP=(NEW,KEEP),
                         RECORDS=(n1,n2),LRECL=133

LRECLOUT=m : lunghezza record del file in output; il default e' 133.
           Se c'e' il parametro FULL e l'output e' redirezionato su file
           con OUTPUT= , allora la lunghezza record di default e' 236.

NOHEADER : non scrive in output la testata e i caratteri di controllo di
           stampa. Si puo' abbreviare in NOH.

NOTITLE  : non scrive in output le prime due righe in cui e' scritto il
           nome del catalogo e la data e l'ora. Il resto dell'intestazione
           e i salti pagina rimangono inalterati. Si puo' abbreviare in
           NOTIT.

PAGELEN=l: imposta la lunghezza della pagina di stampa; di default e' 58.

FULL   : da un report completo delle caratteristiche dei files.
         Normalmente ad ogni riga di stampa corrisponde un files, per cui
         vengono date per ragioni di spazio solo le caratteristiche piu'
         importanti; col parametro FULL ad ogni file corrispondono due
         righe di dati che riportano in maniera pressoche' esauriente
         il resto dei parametri omessi nel report di default.
         Se l'output e' su file, con FULL si ha sempre un record per ogni
         file, solo che la lunghezza record questa volta e' 250 invece
         di 133: nel resto del record ci sono i dati che in stampa
         erano sulla seconda riga. Vedi piu' avanti per la spiegazione
         della stampa in output.

DATE   : aggiunge all'inizio di ogni riga la data del giorno; ha lo
         scopo di poter accumulare sullo stesso file le caratteristiche
         di uno o piu' files in tempi diversi, in modo da tenere uno
         storico sull'evoluzione del file stesso. Questo parametro
         funziona solo se l'output e' su file.

NOEXIT : (solo per la versione MVS) impedisce la raccolta dati per i
         files NONVSAM. Di default, poiche' il catalogo per i files
         NONVSAM contiene solo il nome file e il volume di residenza,
         viene innescata una routine che ricerca sulla VTOC del volume
         gli altri dati come la organizzazione, gli extent, la lunghezza
         record ecc. richiamando un opportuno sottoprogramma, presente
         solo nella versione MVS. Inoltre, se il file o il volume non e'
         effettivamente presente viene evidenziato l'errore, utile per
         scoprire eventuali disallineamenti tra catalogo e VTOC.
         Con NOEXIT si impedisce il richiamo di questa routine e quindi
         questi dati non sono raccolti.

NOMECHECK: controlla che il nome della parte dati e della eventuale parte
         indici del cluster sia una estensione del nome cluster: in altre
         parole la parte dati o indici deve avere un nome uguale al nome
         cluster con una eventuale aggiunta di uno o piu' qualificatori
         (ad esempio .DATA e .INDEX). Se il file non e' conforme a
         questo standard, viene stampato un messaggio. Il controllo viene
         fatto solo per file ESDS, KSDS, RRDS e AIX. Si puo' abbreviare
         con NOMEC.


/VOLUME: non scrive in output il report finale sullo stato degli spazi
         vsam usati dalcatalogo. Si noti che questo report sullo stato
         dei volumi non c'e' in MVS per i cataloghi ICF, poiche' non
         vi sono spazi vsam.

/PATH  : non scrive in output le entrate relative ai PATH.

/NONVSAM: non scrive in output le entrate relative ai files sequenziali
         catalogati, usato di solito solo in MVS. Si puo' abbreviare
         con /NONV.

/GDG   : non scrive in output le entrate relative ai GDG, usati in
         ambiente MVS.

/ALIAS : non scrive in output le entrate relative agli ALIAS, usati in
         ambiente MVS.

/CLUSTER: non scrive in output le entrate relative ai files ESDS, KSDS,
         RRDS, AIX, USERCATALOG, LINEAR, PAGESPACE. Si puo' abbreviare
         con /CLUS.

CMSFTYPE=    : solo per la versione CMS, cambia il FileType di default
         da 'VSAMCOND' al FileType voluto.

VOLDD=ddname : scrive il report finale sullo stato degli spazi vsam sul
         file sequenziale con nome logico specificato. Come si e' detto,
         non ha senso in ambiente MVS con cataloghi ICF.

VTOCDD=ddname: scrive un report nel quale sono scritte tutte le entrate
         del catalogo che occupano spazio, ossia:
         - la parte dati e la eventuale parte indici di cluster, aix,
           usercatalog e linear
         - i pagespace MVS
         - i files nonvsam
         sono invece esclusi path, alias, e gdg
         Lo scopo di questo report e', in MVS, rilevare le eventuali
         anomalie confrontandolo con le liste delle VTOC dei corrispondenti
         dischi.

ONLY=  : permette di selezionare i nomi delle entita' di cui si vuole
         il report: indicare il nome fisico voluto, tenendo presente che
         per ogni qualificatore si puo' usare l'asterisco (*) per
         indicare un numero qualunque di caratteri. L'asterisco a fine
         nome sostituisce un numero qualunque di lettere e qualificatori;
         l'asterisco in un qualificatore deve essere unico e deve essere
         all'inizio o alla fine del qualificatore stesso.
         Esempi corretti:    PIPPO.PAPER*.*LINO
                             *PO.MINNI.PLU*
                             *.PIPPO.*
         Esempi sbagliati:   *PIPPO*.PLUTO
                             PI*PPO.PLUTO

VOLONLY= : permette di selezionare le entita' di cui si vuole i report
         a seconda del volume su cui risiedono; si puo' indicare un solo
         volume; se il nome volume e' piu' corto di sei caratteri si
         intende che saranno scelti tutti i volumi che iniziano per i
         caratteri indicati.

      I seguenti ultimi tre parametri sono da intendersi come criteri
che permettono di individuare i cluster critici, che richiedono una
riorganizzazione o un ampliamento dello spazio.

EXTENT>n : vengono stampati solo i cluster (o aix) che hanno un numero
         di extent maggiore del numero specificato; per numero di extent
         si intende la somma degli extent dati ed indici; se il file ha
         indici, il valore n viene automaticamente incrementato di uno.
         In altre parole, per selezionare i file che hanno almeno un
         extent secondario scrivere:  EXTENT>1.

CISPLIT>n : vengono stampati solo i cluster KSDS o AIX che presentano
         un numero di split di control interval maggiore del numero
         specificato.

CASPLIT>n : vengono stampati solo i cluster KSDS o AIX che presentano
         un numero di split di control area maggiore del numero specificato.


      Se viene specificato piu' di uno dei tre precedenti parametri, le
condizioni di selezione vengono intese come OR logico, ossia il file viene
stampato se soddisfa almeno una delle condizioni specificate.
      Per le altre condizioni di selezione (ONLY=, VOLONLY= ecc.) viene
sempre fatto un AND logico, ossia il file deve soddisfare tutte le
condizioni specificate.


      Limitazioni:
   Non sono supportati files multi-volume, sia quelli con extent secondari
su piu' volumi, sia quelli con un extent primario suddiviso su piu'
volumi; il programma indichera' sempre un solo volume, e precisamente
il primo che ha trovato nel Listcat IDCAMS.
   Viene assunto che nel listcat generato nel file transitorio i files
appartengano tutti allo stesso catalogo; di cio' bisogna tener conto
quando nello stesso step si scrivono piu' schede LISTCAT in SYSIN.
   Quando si seleziona un insieme di file con la scheda LISTCAT specifi-
cando ENTRY o LEVEL in ambiente MVS, il programma non e' in grado di
riconoscere a quale catalogo appartengono.
   Il file di Listcat in input quando si usa 'NOGEN' deve essere di
lunghezza record fissa se no il programma non funziona correttamente:
se ad esempio ha RECFM=VBA, bisogna preventivamente copiarlo con una
REPRO in un altro file con RECFM=FB.



3)             S P I E G A Z I O N E      R E P O R T


      Possiamo dividere le spiegazioni in tre parti:

- report standard
- campi aggiuntivi presenti quando si imposta 'FULL'
- report finale sullo stato dei volumi nel caso si abbiano gli spazi VSAM



      Report standard
(nel numero di colonna non consideriamo il carattere di controllo stampa)

Colonna:
  1 -  44 ! Nome cluster (o aix, path, ecc.)
 45 -  48 ! Tipo entita': ESDS, KSDS, RRDS, AIX, PATH, ALIAS, UCAT, NONV,
            GDG, PAGE
 49 -  55 ! Spazio primario della parte dati in tracce; si assume che ci
            siano sempre 15 tracce per cilindro (ossia il valore e'
            sempre corretto per dischi 3380 e 3390; non sono supportati
            altri tipi o dischi FBA)
 56 -  61 ! Spazio secondario della parte dati in tracce;
 62 -  65 ! Spazio primario della parte indici in tracce; per i files
            NONVSAM in ambiente MVS e' presente una sigla che indica la
            organizzazione del file: PS per i files sequenziali,
            PO per le librerie partitioned
 66 -  69 ! Spazio secondario della parte indici in tracce; per i files
            NONVSAM in ambiente MVS e' presente una sigla che indica il
            Record Format: es.: FB per fisso bloccato, U per Undefined
            (sono le librerie di eseguibili), ecc.
 70 -  73 ! Numero di extent della parte dati (non presente per i NONVSAM)
 74 -  77 ! Numero di extent della parte indici (non presente in NONVSAM)
 78 -  83 ! Numero di split di control interval (solo per KSDS e AIX)
 84 -  88 ! Numero di split di control area (solo per KSDS e AIX)
 89 -  91 ! Free space parte dati in percentuale (solo per KSDS e AIX)
 92 -  94 ! Free space parte dati in percentuale (solo per KSDS e AIX)
 95 - 100 ! Lunghezza record; se il file ha record variabili, e' la
            lunghezza media del record (e' la lunghezza massima se il file
            e' un NONVSAM)
101 - 106 ! Lunghezza control interval per parte dati (e' il BlockSize
            se il file e' un NONVSAM)
107 - 114 ! Numero di record del file; per i files NONVSAM in MVS questo
            numero non e' presente: al suo posto ci puo' essere una sigla
            che esprime delle caratteristiche particolari del file come
            ad esempio: SMS se il file e' maneggiato dall'SMS
115 - 118 ! Percentuale di occupazione dello spazio dati del file:
            e' calcolato con la formula:  (HI-USED-RBA  /  HI-ALLOC-RBA)
120 - 125 ! Volume su cui risiede la parte dati del cluster



      Report FULL

Quando si imposta FULL, ciascun cluster invece di avere una riga di dati
ne ha due: la prima e' la stessa del report standard (si assume che contenga
i dati piu' importanti) mentre con la seconda si rilevano altri dati
di secondaria importanza. Quando l'output e' su file, la riga e' sempre
unica per ogni file e questi dati sono semplicemente aggiunti al record,
che quindi, invece di essere lungo 133, e' lungo 220. Qui riportiamo
questi dati aggiuntivi, in cui le colonne che delimitano i campi sono da
intendersi nel caso di output su file.

Colonna:
130 - 137 ! Percentuale del file che e' stato letto dalla creazione del
            file stesso. Il valore viene calcolato in questo modo:
              (Num.Record.Letti  /  Num.Record.Presenti)
            Questa percentuale puo' variare da 0 a diversi milioni (poiche'
            i record presenti su cui e' stato fatto il calcolo puo'
            essere molto piccola rispetto al numero di letture che il
            file ha avuto nella sua storia) per cui il valore puo' essere
            stato abbreviato: una 'K' indica che bisogna moltiplicare per
            1000 il valore, una 'M' indica che bisogna moltiplicare per
            1000000. Se il campo non e' valorizzato (c'e' il trattino)
            vuol dire che il file ha 0 record.
138 - 142 ! Percentuale del file che e' stato aggiornato dalla creazione
            del file stesso. Il valore viene calcolato cosi':
              (Num.Rec.Aggiornati + Num.Rec.Cancellati + Num.Rec.Inseriti)
                / (Num.Rec.Presenti)
            Anche qui i valori sono molto variabili e sono abbreviati con
            le lettere 'K' e 'M'.
143 - 147 ! Lunghezza della chiave se il file e' un KSDS o un AIX
148 - 151 ! Offset della chiave se il file e' un KSDS o un AIX
153 - 157 ! Share option nella forma '(n,m)'
160 - 167 ! Data di creazione nella forma ANNO.GGG dove GGG e' il progressivo
170 - 175 ! Buffer size
178 - 185 ! Flag che indicano altre caratteristiche del file:
            sono otto lettere corrispondenti ad altrettanti attributi;
            se la lettera corrispondente non e' presente significa che
            quell'attributo ha il valore di default.
            'N'   Noallocate
            'R'   Reuse
            'S'   Speed
            'I'   Imbed
            'T'   Replicate
            'E'   Erase
            'P'   Spanned
            'W'   Writecheck
189 - 192 ! Lunghezza massima del record, nel caso che il file sia con
            record di lunghezza variabile
193 - 198 ! Control interval size della eventuale parte indici
200 - 206 ! Numero totale di record della parte indici
207 - 210 ! Percentuale di occupazione dello spazio indici del file:
            e' calcolato con la formula:  (HI-USED-RBA  /  HI-ALLOC-RBA)
            dove l'RBA e' sempre quello della parte indici
212 - 217 ! Volume su cui risiede la parte indici del cluster
219 - 226 ! Data dell'ultimo accesso al file (presente solo se l'output
            e' su file)
228 - 235 ! Data di scadenza del file (presente solo se l'output e' su
            file)


Se siamo in MVS, il file e' un NONVSAM e l'output e' su file (parametro
OUTPUT=) sono presenti i seguenti dati aggiuntivi:
133 - 140 ! data di creazione del file
142 - 149 ! data di ultimo accesso al file
151 - 158 ! data di scadenza del file (se e' 00.000, non e' gestita)

Se il file e' un NONVSAM e l'output e' in stampa, non e' presente nessuna
riga aggiuntiva.
Non vi e' nessun dato aggiuntivo nemmeno se e' un GDG, un PATH, un ALIAS
o un USERCATALOG.


      Report sui volumi occupati da spazi  Vsam

Colonna:
  1 -  44 ! Nome del catalogo
 45 -  50 ! Nome del volume a cui lo spazio appartiene
 55 -  64 ! Numero totale di tracce occupate dallo spazio
 65 -  74 ! Numero totale di tracce libere nello spazio
 77 -  79 ! Numero di extent dello spazio VSAM (normalmente e' 1)
 83 -  87 ! Numero di dataset nello spazio VSAM


      Tutti i campi qui sopra riportati normalmente sono valorizzati per
le entrate di tipo cluster o aix; se non lo sono c'e' qualche anomalia,
come per esempio aver omesso ALL nella scheda LISTCAT.
      Alcune entrate non hanno in ogni caso dei campi valorizzati perche'
l'IDCAMS stesso non li riporta nel LISTCAT ALL: cio' accade per i files
NONVSAM, per i PATH, gli ALIAS e i GDG.
      Se l'output e' su file, bisogna aggiungere 1 alle colonne indicate,
come si e' gia' detto.





4)                           E S E M P I



- Esempio DOS di stampa standard di un catalogo:

* $$ JOB JNM=VSAMCOND,CLASS=0,DISP=D
* $$ LST LST=SYSLST,DISP=D,CLASS=X,DEST=(,PIERO),JSEP=0  <- superflua
* $$ LST LST=01E,DISP=H,CLASS=A,JSEP=0
// JOB VSAMCOND -------- STAMPA SINTETICA DEL LISTCAT DI CATALOGO
// ASSGN SYSLST,IGN    <-- ignora i messaggi IDCAMS del DELETE
// ASSGN SYS001,01E    <-- mette il listcat condensato in classe A
// EXEC IDCAMS,SIZE=AUTO      <-- solo per cancellare il transitorio
  DELETE  PROVA.PIERO.LISTCAT CLUSTER PURGE  CAT(CATALOGO.SYSWKA)
  SET MAXCC = 0
/*
/* ----- Passo di creazione del transitorio vuoto
// DLBL LSTWORK,'PROVA.PIERO.LISTCAT',,VSAM,CAT=SYSWKA,                X
               RECSIZE=133,RECORDS=(1000,1000),DISP=(NEW,KEEP)
// EXEC OPENSAM,SIZE=AUTO,PARM='LSTWORK,133'
/* ----- Passo di generazione listcat
// DLBL LSTWORK,'PROVA.PIERO.LISTCAT',,VSAM,CAT=SYSWKA,DISP=(OLD,KEEP)
// EXEC VSAMCOND,SIZE=200K
      LISTCAT ALL  CAT(CATALOGO.SYSWK3)
/*
// EXEC IDCAMS,SIZE=AUTO
  DELETE  PROVA.PIERO.LISTCAT CLUSTER PURGE  CAT(CATALOGO.SYSWKA)
/*
/&
* $$ EOJ

Note: il passo col programma OPENSAM serve solo per creare il file
      transitorio vuoto; potrebbe essere benissimo sostituito con il
      DEFINE IDCAMS di un file sequenziale SAM feature.
      Il file transitorio non puo' essere creato nel passo di VSAMCOND
      mettendo DISP=(NEW,KEEP): questo perche' il programma prima apre
      in output il file per scrivergli il listcat attraverso l'IDCAMS,
      poi chiude il file e lo riapre in input; il DOS non accetta una
      apertura in input di un file con DISP=NEW, percio' il file deve
      essere creato vuoto nel passo precedente.
      Il programma OPENSAM apre sempilcemente il file sam in output
      con la lunghezza record specificata e poi lo richiude.



- Esempio MVS di stampa standard di un catalogo:

//LISTCOND JOB (TSO,PIERO),'PIERO',NOTIFY=PIERO,
//             CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//*
//* Stampa del Listcat condensato del CATALOGO.COGE
//* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//*
//LISTCOND EXEC PGM=VSAMCOND
//LSTWORK  DD DSN=&&LISTCAT,DISP=(NEW,PASS),
//         UNIT=SYSDA,SPACE=(TRK,(2,2)),
//         DCB=(RECFM=FB,LRECL=133,BLKSIZE=1330)
//SYSPRINT DD  SYSOUT=*
//SYSOUT   DD  SYSOUT=A
//SYSIN    DD  *
  LISTCAT ALL CAT(CATALOGO.COGE)
/*


- Esempio di stampa del listcat condensato di un catalogo in ambiente
  CMS, assumendo che il LISTCAT standard sia gia' stato ottenuto in DOS
  (o in MVS) e che sia stato portato in un minidisco CMS col nome:
     LISTCAT VSAMCOND A

  Per avere il report su file CMS si digiti:

     VSAMCOND OUTPUT=LISTCOND

  e si avra' il file LISTCOND VSAMCOND A voluto.


      Nei prossimi esempi le schede jcl che omettiamo, rimangono le
medesime degli esempi precedenti.


- Esempio di stampa del listcat di una sola entrata, da salvare su un
  file storico di nome logico OUTPUT (in MVS):

//LISTCOND EXEC PGM=VSAMCOND,PARM='FULL,DATE,OUTPUT=OUTPUT'
//LSTWORK  DD DSN=&&LISTCAT,DISP=(NEW,PASS),
//         UNIT=SYSDA,SPACE=(TRK,(2,2)),
//         DCB=(RECFM=FB,LRECL=133,BLKSIZE=1330)
//SYSPRINT DD  SYSOUT=*
//SYSOUT   DD  SYSOUT=*
//OUTPUT   DD DSN=LISTCAT.OUTPUT.SAM,DISP=MOD   <-----
//SYSIN    DD  *
     LISTCAT ENTRY(SOCI.LIRA.ANSO) ALL  CAT(CATALOGO.SOCI)
/*

Note: Si veda la DISP=MOD per accodare i record.
      Puo' essere necessario specificare LRECLOUT per adattare la
      lunghezza record al file esistente.



- Esempio di rilevazione di tutti i files del centro che richiedono una
  riorganizzazione (in DOS):


/* ----- LISTCAT CONDENSATO DI TUTTI I CATALOGHI CON SELEZIONE
// DLBL LSTWORK,'VSAMCOND.PIERO.LISTCAT',,VSAM,CAT=SYSWKB,             X
               DISP=(OLD,KEEP)
// EXEC VSAMCOND,SIZE=200K,PARM='NOTITLE,CASPLIT>0,EXTENT>1,/VOLUME'
  LISTCAT ALL  CAT(VSESP.USER.CATALOG)
  LISTCAT ALL  CAT(CATALOGO.SYSWK2)
  LISTCAT ALL  CAT(CATALOGO.SYSWK4)
  LISTCAT ALL  CAT(CATALOGO.SYSWK5)
  LISTCAT ALL  CAT(CATALOGO.SYSWK7)
  LISTCAT ALL  CAT(CATALOGO.SYSWK8)
  LISTCAT ALL  CAT(CATALOGO.SYSWK9)
  LISTCAT ALL  CAT(CATALOGO.SYSWKB)
  LISTCAT ALL  CAT(CATALOGO.SYSWKC)
  LISTCAT ALL  CAT(CATALOGO.SYSWKE)
  LISTCAT ALL  CAT(CATALOGO.SYSWKF)
  LISTCAT ALL  CAT(CATALOGO.SYSWKG)
  LISTCAT ALL  CAT(CATALOGO.SYSWKI)
/*

Note: E' stato tolto il Titolo perche' inesatto.


