                        P D S B A T C H



      L'utility batch PDSBATCH e' per l'ambiente MVS e serve per
eseguire via Batch alcune manipolazioni sui membri di librerie partitioned.
Corrispondentemente, la routine linkabile PDSUTIL puo' eseguire funzioni
simili, rendendole disponibili a qualunque programma chiamante, Cobol
o Assembler.

      PDSBATCH si usa passandogli i comandi nel parametro PARM= della
scheda EXEC:

      //STEP1  EXEC PDSBATCH,PARM='funzione,membro,par.opzionale'

la libreria su cui agiscono i comandi deve essere specificata in una
scheda DD con nome logico DDPDS:

      //DDPDS   DD   DSN=nome.fisico.libreria,DISP=SHR

      E' obbligatorio specificare anche le schede SYSPRINT e SYSIN.


Il parametro 'funzione' puo' essere uno dei seguenti:

DIR     - in SYSPRINT viene listata la directory della libreria;
          normalmente non si specifica nient'altro per avere la directory
          completa; se si specifica come 'membro' un nome, allora il
          listato stampato parte dal primo nome uguale o seguente il
          nome specificato; se come nome membro infine si specifica un
          nome parziale immediatamente seguito da un asterisco (*),
          allora vengono listati solo i membri che iniziano per le lettere
          specificate. Non si puo' usare l'asterisco in mezzo o all'inizio
          di una parola. Se si specifica come parametro opzionale la
          parola 'NOHEAD', l'elenco NON e' preceduto da una intestazione.
          I dati visualizzati sono spiegati piu' oltre.

QUERY   - serve per verificare se il membro specificato esiste effettivamente
          nella libreria; se esiste il Return code di PDSBATCH e' 0 e in
          SYSPRINT sono mostrate le caratteristiche del membro, come si
          vedrebbero col comando DIR; se il membro non esiste il programma
          finisce con Return Code 4.
          Se si specifica come parametro opzionale la parola 'NOHEAD',
          l'elenco NON e' preceduto da una intestazione.

READ    - il membro specificato viene letto e messo in SYSPRINT; con il
          parametro opzionale 'NOHEAD' viene omessa l'intestazione.

WRITE   - legge i record in SYSIN e li scrive nel membro specificato,
          ricoprendo il membro eventualmente gia' esistente con lo stesso
          nome. Per creare un membro vuoto si puo' fare WRITE senza
          specificare alcun record in SYSIN. Non si puo' accodare record
          ad un membro gia' esistente.

COPY    - il membro specificato viene letto dalla libreria puntata dal
          nome logico DDPDS e viene scritto in output nella libreria
          di nome logico DDPDSOUT, la cui DD percio' deve essere presente.
          Specificando come parametro opzionale un secondo nome membro,
          la copia verra' fatta con il cambio del nome. Le due DD possono
          puntare anche alla stessa libreria, nel qual caso il membro
          sara' copiato all'interno della stessa libreria: in questo
          caso, ovviamente, bisogna specificare un nome membro in output
          diverso.

MOVE    - e' come il comando COPY, solo che alla fine della copia il
          membro in input viene cancellato.

DEL     - cancella il membro specificato dalla libreria puntata da 'DDPDS'

REN     - rinomina il membro specificato col secondo nome indicato sopra
          come 'par.opzionale', sempre nella libreria DDPDS.


      I dati visualizzati con il comando 'DIR' e 'QUERY' sono i seguenti:
- Nome del membro
- Indicazione se il nome si riferisce ad un alias (nel qual caso e'
  indicato un 'A') oppure no (nel qual caso e' "-")
- Lunghezza della User Area della directory relativa al membro ('Directory
  User Data Length' = DUDL, nella intestazione): se e' uguale a 30,
  questa area e' decodificata nei dati seguenti; se e' 0 o diversa da
  30 (p.e. e' 24 per le librerie di eseguibili, con formato 'U') l'area
  e' semplicemente riportata in esadecimale.

  I dati seguenti sono praticamente gli stessi che vengono visualizzati
  con l'ISPF per una libreria NON di eseguibili.
- VV : PDF version number
- MM : PDF modification level
- CREATED : e' la data (in formato GG/MM/AA) nella quale il membro e'
  stato creato
- CHANGED : e' la data e l'ora nella quale e' stato fatto l'ultimo
  aggiornamento del membro
- SIZE : numero totale di linee del membro
- INIT : numero di linee che aveva il membro quando e' stato creato
- MOD  : numero di linee che sono state modificate
- USERID : nome dell'utente che ha fatto l'ultimo aggiornamento

