                           A S K V T O C


      Questa routine puo' essere richiamata da un programma Cobol o Assembler
in MVS; fornendogli in input il nome fisico di un file e il corrispondente
volume di residenza, ritorna alcune caratteristiche del file stesso cosi'
come sono state trovate in VTOC.

      Per richiamare la routine in COBOL:

      CALL 'ASKVTOC' USING RC DSNAME VOL AREAOUT

      Uso in ASSEMBLER:

      CALL ASKVTOC,(RC,DSNAME,VOL,AREAOUT),VL

      Con le variabili che hanno questo significato:
      RC:      al ritorno al chiamante contiene il return code.
      DSNAME:  nome fisico del file (anche vsam o pds), in input alla
               routine
      VOL:     nome volume su cui cercare il file, in input alla routine
      AREAOUT: area di 80 bytes con i dati in output

      Il tracciato Cobol che si puo' usare e' il seguente:

          RC         PIC    S9(7)   COMP.
          DSNAME     PIC     X(44).
          VOL        PIC     X(6).
          AREAOUT.
              TRACKPRI   PIC     X(6).
                 ZTRKPRI  REDEFINES TRACKPRI    PIC    9(6).
              TRACKSEC   PIC     X(6).
                 ZTRKSEC  REDEFINES TRACKSEC    PIC    9(6).
              DSORG      PIC     X(4).
              RECFM      PIC     X(4).
              NUMEXTENT  PIC     X(4).
                 ZNUMEXT  REDEFINES NUMEXTENT   PIC    9(4).
              LRECL      PIC     X(6).
                 ZLRECL   REDEFINES LRECL       PIC    9(6).
              BLKSIZE    PIC     X(6).
                 ZBLKSIZE REDEFINES BLKSIZE     PIC    9(6).
              SMSFLAG    PIC     X(4).
              OCCUPAZ    PIC     X(4).
                 ZOCCUPAZ REDEFINES OCCUPAZ     PIC    9(4).
              DATACRE    PIC     X(8).
              DATAEXP    PIC     X(8).
              DATAACC    PIC     X(8).
              FILLER     PIC     X(12).

      Le REDEFINES di alcune variabili servono se viene richiesto alla
      routine di restituire i valori numerici in ZONED invece che in
      forma editata.

      Il tracciato per i programmi Assembler:

              RC       DS  F
              DSNAME   DS  CL44
              VOLSER   DS  CL6

              AREAOUT  DS 0CL80
              ZTRKPRI  DS 0ZL6
              TRACKPRI DS  CL6
              ZTRKSEC  DS 0ZL6
              TRACKSEC DS  CL6
              DSORG    DS  CL4
              RECFM    DS  CL4
              ZNUMEXT  DS 0ZL4
              NUMEXT   DS  CL4
              ZLRECL   DS 0ZL6
              LRECL    DS  CL6
              ZBLKSIZE DS 0ZL6
              BLKSIZE  DS  CL6
              SMSFLAG  DS  CL4
              ZOCCUPAZ DS 0ZL4
              OCCUPAZ  DS  CL4
              DATACRE  DS  CL8
              DATAEXP  DS  CL8
              DATAACC  DS  CL8
                       DS  CL12

      Il significato delle variabili in output e' il seguente:

TRACKPRI - Numero di tracce dell'extent primario (si assume che vi siano
           15 tracce per cilindro, ossia che il disco sia un 3380 o un
           3390)
TRACKSEC - Numero di tracce dell'eventuale extent secondario
DSORG    - Organizzazione del file: PS per i file sequenziali
                                    PO per le librerie partitioned
                                    VS per i files VSAM
                                    IS per i files ISAM
RECFM    - Record Format; ad esempio: FB, U, FBA ecc.
NUMEXT   - Numero totale di extent, ossia extent primario piu' extent
           secondari
LRECL    - Lunghezza del record
BLKSIZE  - Lunghezza del blocco fisico
SMSFLAG  - Segnalatore aggiuntivo
OCCUPAZ  - percentuale di riempimento del file
DATACRE  - Data di creazione (nella forma AA.GGG)
DATAEXP  - Data di scadenza (nella forma AA.GGG, e' 00.000 se non presente)
DATAACC  - Data dell'ultimo accesso al file.


      I valori numerici restituiti per default sono in forma editata,
ossia sono numeri interi allineati a destra preceduti da blank; per
avere questi numeri in formato zoned bisogna preventivamente passare
alla routine il valore -1 nella variabile RC.

      Se viene riscontrato un errore (ad esempio volume o file mancante
o errato) il Return Code restituito e' diverso da 0 e la variabile
AREAOUT contiene una spiegazione dell'errore.

      Non si puo' usare questa routine in un programma CICS.

