/* REXX */ /* JFG - 14/04/2020 FORMATEA REPORT IEHLIST VTOC PARA OBTENER: */ /* NOMBRE_DATASET - NUM_EXTENSION - CILINDRO_INICIO - CILINDRO_FIN */ ADDRESS TSO "PROFILE NOPREFIX" "EXECIO * DISKR FICH(FINIS STEM FILE." /* INCIALIZAR VARIABLES */ DATASET="" CYLINI="" NEXTEN="" CYLFIN="" LINEA="" DO I=0 TO FILE.0 /* RECORRER FICHERO. SI ENCUENTRA UN DATASET, EXTRAEMOS DATOS */ IF POS('-DATA SET NAME-',FILE.I)>0 THEN DO /* GUARDAMOS LA POSICION DE LINEA SIGUIENTE Y 7 MAS */ I1 = I+1 I7 = I+7 /* UN DATASET PUEDE TENER +1 EXTENSIONES. RECORREMOS TODAS */ DO WHILE(POS(' ----',FILE.I7)=0) /* LOS DATOS DE LAS EXTENS. SON BLOQUES DE 5 DATOS */ ESPACIOS=WORDS(FILE.I7)/5 IF(ESPACIOS>0) THEN DO DO N=0 TO ESPACIOS-1 /* RECORREMOS LOS DATOS DE CADA BLOQUE */ POSICION=1+(5*N) /* EXTRAER. DATASET, NUM EXTENT, CYL INICIO, CYL FINAL */ DATASET = LEFT(WORD(FILE.I1,1),44) NEXTEN= RIGHT(WORD(FILE.I7,POSICION),4,'0') CYLINI= RIGHT(WORD(FILE.I7,POSICION+1),7,'0') CYLFIN= RIGHT(WORD(FILE.I7,POSICION+3),7,'0') LINEA= DATASET "-" NEXTEN "-" CYLINI "-" CYLFIN QUEUE LINEA END END I7=I7+1 END /* ULTIMA LINEA TRATADA PARA NO RECORRERLAS DE NUEVO */ I=I7 END /* EXTRAEMOS LOS DATOS DE LAS EXTENSIONES LIBRES */ IF POS('VPSM A =',FILE.I)>0 THEN DO /* POSICIONAMOS 3 LINEAS DESPUES PARA COGER LOS DATOS */ I3 =I+3 /* RECORREMOS TODAS LAS EXTESIONES LIBRES DEL DISCO */ DO WHILE(POS('THERE ARE ',FILE.I3)=0) /* LOS DATOS DE LAS EXTENS. LIBRES SON BLOQUES DE 3 DATOS */ ESPACIOS=WORDS(FILE.I3)/3 IF(ESPACIOS>0) THEN DO DO N=0 TO ESPACIOS-1 /* RECORREMOS LOS DATOS DE CADA BLOQUE */ POSICION=1+(3*N) /* NO HAY NUMERO DE EXTENSION. SE AÑADE POR MANTENER FORMATO */ NEXTEN= RIGHT('',4,'0') /* EXTRAER CYL INICIO, FIN, CYL LIBRES */ /* PARA CYLINI, DIVIDIR ENTRE 15 PORQUE EL ORIGEN SON TRACKS */ CYLINI= RIGHT(WORD(FILE.I3,POSICION)%15,7,'0') CYLFREE= WORD(FILE.I3,POSICION+1) /* PARA CYLFIN, SUMAMOS CYLINI Y LOS CYL LIBRRES */ CYLFIN= RIGHT(CYLINI+CYLFREE,7,'0') /* AÑADIMOS LOS CYL LIBRES PARA FACILITAR LA LECTURA */ DATASET = LEFT(' *** FREE EXTENT ***' CYLFREE 'CYLS',44) LINEA= DATASET "-" NEXTEN "-" CYLINI "-" CYLFIN QUEUE LINEA END END I3=I3+1 END /* ULTIMA LINEA TRATADA PARA NO RECORRERLAS DE NUEVO */ I=I3 END END /* ESCRIBIMOS EL FICHERO */ "EXECIO "QUEUED()" DISKW OUTPUT (FINIS" EXIT