* PSDCE6
*D
*D    ESTE PROGRAMA SIRVE PARA LISTAR LAS ESTADISTICAS DE USO
*D    DE UN PROGRAMA EN QUE SE PUSO LA OPCION *EST-USO*
*D    EL PRIMER PASO ES LEER EL NOMBRE Y DISPOSITIVO DEL
*D    PROGRAMA Y LLAMAR A EUFT PARA SACAR LA INFORMACION DE
*D    ESXXYY
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      PROGRAMA 'ESTADISTICAS DE USO DE UN PROGRAMA'
      DOCUMENTACION 2 0 
      OPCION DISCO SIUS EXCLUSIVO
      OPCION TERMINAL AREA 100 /RENGLON /POS. 5 3 /LONG. 5 76 $
      /MARCO /BN NO-E VI  /COLOR BLANCO BLANCO NEGRO AZUL BLANCO $
      /TECLAS-DE-FUNCION 1 'TERMINAR  ELS' 2 'MENU DOC' 3 '? AYUDA' $
      /CONDICION-EJECUTA '/F' '/M'     /INF-GLOBAL       $
      /TAB. 3 28  /CAMPOS                                       $
       NOM-PROG-EU         DIS-PROG-EU    /NO-INF.     PRE-LIS-EX
*
      OPCION TERMINAL AREA 101 /RENGLON 1 1 /POS. 11 3 /LONG. 8 76 $
      /MARCO /COLOR CELESTE CELESTE NEGRO /CONFIRMAR /CAMPOS $
      2 3 'Esta opcion sirve para imprimir'      $
          'el uso de las diferentes'             $
      3 3 'instrucciones de un programa'         $
          'para con ello poder optimizarlo.'     $
      4 3 '-Se debe contestar con el nombre del' $
          'progama como PSxxyy'                  $
      5 4 'El programa debe tener EST-USO'       $
          '(Ver explicacion en MENU).'           $
      6 3 '-Se debe especificar el grupo y'      $
          'cuenta donde esta el programa.'       $
      7 3 '-Al final en forma opcional se puede' $
          'Imprimir una explicacion.'
*
      OPCION TERMINAL AREA 102 /ERROR /POS. 22 1 /LONG. 2 80
10    OPCION TERMINAL AREA 100 /DESPLEGAR
11    LEER TERMINAL EJECUTA 12  NOM-PROG-EU DIS-PROG-EU PRE-LIS-EX
      OPCION TEMPORAL 901 ESCRITURA ASCII
      OPCION TEMPORAL 902
      OPCION TEMPORAL 903
      OPCION TEMPORAL 904
      ESCRIBIR TEMPORAL 901 NOM-PROG-EU DIS-PROG-EU
      LLAMAR 'EUFT  ' 901
      EJECUTA 14
*
12    SACAR PARAMETROS CONDICION-EJECUTA COND
      SI COND = -1  EJECUTA  1000
      SI COND =  1  EJECUTA  1000
      SI COND = -4  EJECUTA  1000
      SI COND =  2  EJECUTA   999
      SI COND = -5  EJECUTA   999
      OPCION TERMINAL AREA 101 /DESPLEGAR /SALVAR-ANTERIORES /EMPALMAR
      OPCION TERMINAL AREA 101 /TERMINAR
      EJECUTA 11
*D
*D    LOS TEMPORALES CREADOS POR *EUFT* CONTIENEN:
*D
*D    ****************    EL T902 CONTIENE :   **********************
*D
*D    UN REGISTRO CON:
*D
*D       X6        PSXXYY
*D       X30       DISPOSITIVO
*D       X40       NOMBRE DEL PROGRAMA
*D       N1  0     0=NO HAY ERROR, 1=ERROR EN ESXXYY, 2=NO TIENE LA OPCION
*D       N1  0     CODIGO DEL ERROR AL ABRIR
*D       X8        FECHA ULTIMA COMPILACION
*D       X8        HORA ULTIMA COMPILACION
*D       N1  0     NUMERO DE PERMANENTES QUE USA
*D       N1  0     NUMERO DE TEMPORALES  QUE USA
*D       N1  0     NUMERO DE TABLAS      QUE USA
*D       N1  0     NUMERO DE CLAVE DE ACCESO
*D
*D    N REG CON INFORMACION DE NOMBRES DE ARCHIVOS PERMANENTES
*D       X6        NOMBRE DEL PERMANENTE
*D
*D    N REG CON INFORMACION DE NOMBRES DE TEMPORALES
*D       X6        NOMBRE DEL TEMPORAL
*D
*D    N REG CON INFORMACION DE NOMBRES DE TABLAS USADAS
*D       X6        NOMBRE DE TABLA
*D
* -------------------------------------------------------------------
*D    *********    EL T903 CONTIENE:
*D
*D    UN REGISTRO CON:
*D       N1   0    NUMERO DE OBSERVACIONES HASTA LA FECHA
*D
*D    VARIOS REGISTROS CON:
*D       N2   0    PROMEDIO
*D       N1   0    DESVIACION ESTANDAR
*D
*D    *********    EL T904 CONTIENE:
*D
*D    UN REGISTRO CON:
*D
*D       N1   0    NUMERO DE ETIQUETAS
*D
*D    VARIOS REGISTROS CON:
*D       N1   0    ETIQUETAS
*
      IGUAL AREA X40 NOM-PROG-EST-EU
      IGUAL AREA N10 INDE
      IGUAL AREA N10 CEA
      IGUAL AREA X8 FEC-COM-EU
      IGUAL AREA X8 HOR-COM-EU
      IGUAL AREA N10 NPER
      IGUAL AREA N10 NTEM
      IGUAL AREA N10 NTAB
      IGUAL AREA X6 PER-EU
      IGUAL AREA X6 TEM-EU
      IGUAL AREA X6 TAB-EU
      IGUAL AREA N10 NOBS
      IGUAL AREA N20 PROM-EU-1
      IGUAL AREA N20 PROM-EU-2
      IGUAL AREA N20 PROM-EU-3
      IGUAL AREA N20 PROM-EU-4
      IGUAL AREA N20 PROM-EU-5
      IGUAL AREA N20 PROM-EU-6
      IGUAL AREA N12 DS-EU-1
      IGUAL AREA N12 DS-EU-2
      IGUAL AREA N12 DS-EU-3
      IGUAL AREA N12 DS-EU-4
      IGUAL AREA N12 DS-EU-5
      IGUAL AREA N12 DS-EU-6
      IGUAL AREA N12 COEF-EU
      IGUAL AREA N20 PROM
      VECTOR PROM RANGO 1 1000
      IGUAL AREA N20 PROM-MAX
      IGUAL AREA N12 DS
      VECTOR DS RANGO 1 1000
      IGUAL AREA N10 NET
      IGUAL AREA N10 ETIQ
      IGUAL AREA N10 N
      IGUAL AREA N10 NCOL
      IGUAL AREA N10 RENG
*
*D
*D    LEER PRIMER REGISTRO DE T902 Y REVISA SI SE PUDO LEER
*
14    OPCION  TEMPORAL  902  LECTURA  ASCII
      LEER    TEMPORAL  902  EJECUTA   902                           $
      NOM-PROG-EU        DIS-PROG-EU   INDE             CEA          $
      NOM-PROG-EST-EU    FEC-COM-EU    HOR-COM-EU       NPER         $
      NTEM               NTAB          NUM-CA
*
      MOVER ' ' A NOM-US
      BUSCAR  DISCO  SIUS  EJECUTA  15  PRIN-G1  NUM-CA
      LEER    DISCO  SIUS  NOM-US
15    SI INDE = 0 EJECUTA 25
      SI INDE = 2 EJECUTA 20
      MOVER NOM-PROG-EU A X6
      CONVERTIR 'E' A X6 POS. 1 1 EJECUTA 901
      ERROR 'ERROR AL ABRIR' X6 'CODIGO' CEA
      EJECUTA 11
20    ERROR 'NO TIENE *EST-USO* EL PROGRAMA' NOM-PROG-EU
      EJECUTA 11
*D
*D    LEER EL PRIMER REGISTRO DE T903 CON EL NUMERO DE EJECUCIONES
*D    LEER 4 REGISTROS DEL T903 CON ESTADISTICAS DE NUMERO DE
*D    INSTRUCCIONES INTERNAS, FUNCIONES FISICAS Y LOGICAS,
*D    NUMERO DE LEER TERMINAL.
*
25    OPCION TEMPORAL 903 LECTURA ASCII
      LEER TEMPORAL 903 EJECUTA 903 NOBS
      SI NOBS <> 0 EJECUTA 30
      ERROR 'NO SE HA EJECUTADO EL' NOM-PROG-EU
      EJECUTA 11
30    OPCION TERMINAL AREA 100 /TERMINAR
      OPCION TEMPORAL 904 LECTURA ASCII
*
      SACAR PARAMETROS FECHA FEC
      OPCION IMPRIMIR LET. 'ESTADISTICAS DE USO' $
      FECHA FEC ENC. 2 GUION40 42 GUION40 COL. 80  $
      ENC. 2 'PROGRAMA' 20 NOM-PROG-EU VAR. 30 NOM-PROG-EST-EU VAR.   $
      ENC. 2 'COMPILADO POR' 20 NUM-CA VAR. LONG. 4 30 NOM-US VAR. $
          LONG. 34 65 FEC-COM-EU VAR. 74 HOR-COM-EU VAR. $
      ENC. 2 'EJECUCIONES' 20 NOBS VAR. LONG. 5 $
      ENC. 2 GUION40 42 GUION40
      IMPRIMIR ENCABEZADO 30 'INSTRUCCION DE' 66 'PROMEDIO Y DS'
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-1 DS-EU-1
      IMPRIMIR DETALLE  1 '0' 30 '/INTERNAS ' $
                       60 PROM-EU-1 72 DS-EU-1
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-1 DS-EU-1
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-2 DS-EU-2
      COEF-EU = 0
      SI PROM-EU-2 = 0 EJECUTA 31
      COEF-EU = PROM-EU-1 / PROM-EU-2
31    IMPRIMIR DETALLE 1 ' ' / 30 '/PERMANENTES FUNCIONES LOGICAS' $
                               60 PROM-EU-1 72 DS-EU-1   $
                             / 30 '/PERMANENTES FUNCIONES FISICAS' $
                               60 PROM-EU-2 72 DS-EU-2   $
                             / 30 '/RELACION LOGICAS Y FISICAS' $
                               64 COEF-EU
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-1 DS-EU-1
      IMPRIMIR DETALLE 1 '0' 30 'LEER TERMINAL' $
                             60 PROM-EU-1 72 DS-EU-1
*D
*D    SE LEE UN REGISTRO DEL T902 CON EL NOMBRE DE UN PERMANENTE
*D    Y SE LEEN 6 REGISTOS DEL T903 CON INFORMACION DE ESTADISTICA
*D
*
35    SI NPER = 0 EJECUTA 40
      LEER TEMPORAL 902 EJECUTA 902 PER-EU
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-1 DS-EU-1
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-2 DS-EU-2
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-3 DS-EU-3
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-4 DS-EU-4
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-5 DS-EU-5
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-6 DS-EU-6
      IMPRIMIR DETALLE                     1  '0'                    $
       2 'PERMANENTE'                     15 PER-EU                  $
      30 'BUSCAR DISCO'                 60 PROM-EU-1  72 DS-EU-1   / $
      30 'BUSCAR DISCO /BORRADO'        60 PROM-EU-2  72 DS-EU-2   / $
      30 'BUSCAR RECURRENTE'            60 PROM-EU-3  72 DS-EU-3   / $
      30 'BUSCAR RECURRENTE /BORRADO'   60 PROM-EU-4  72 DS-EU-4   / $
      30 'BUSCAR RECURRENTE /VARIABLES' 60 PROM-EU-5  72 DS-EU-5   / $
      30 'INSERTAR DISCO'               60 PROM-EU-6  72 DS-EU-6
      NPER = NPER - 1
      EJECUTA 35
*D
*D    SE LEE UN REGISTRO DEL T902 CON EL NOMBRE DE UNA TABLA
*D    Y 2 REGISTROS DEL T903 CON LA ESTADISTICA
*
40    SI NTAB = 0 EJECUTA 45
      LEER TEMPORAL 902 EJECUTA 902 TAB-EU
      LEER TEMPORAL 903 EJECUTA  903 PROM-EU-1 DS-EU-1
      LEER TEMPORAL 903 EJECUTA  903 PROM-EU-2 DS-EU-2
      IMPRIMIR DETALLE 1 '0TABLA' 15 TAB-EU 30 'BUSCAR TABLA' $
                       60 PROM-EU-1 72 DS-EU-1  $
                     / 30 'BUSCAR TABLA /RENGLON' $
                       60 PROM-EU-2 72 DS-EU-2
      NTAB = NTAB - 1
      EJECUTA 40
*D
*D    SE LEE UN REGISTRO DEL T902 CON EL NOMBRE DE UN TEMPORAL
*D    Y 2 REGISTROS DEL T903 CON ESTADISTICA
*
45    N = 20 - NTEM * 2
46    SI NTEM = 0 EJECUTA 47
      LEER TEMPORAL 902 EJECUTA 902 TEM-EU
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-1 DS-EU-1
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-2 DS-EU-2
      IMPRIMIR DETALLE 1 '0TEMPORAL' 15 TEM-EU $
                             30 'OPCION TEMPORAL' $
                             60 PROM-EU-1 72 DS-EU-1  $
                     / 30 'LECTURAS/ESCRITURAS' $
                       60 PROM-EU-2 72 DS-EU-2
      NTEM = NTEM - 1
      EJECUTA 46
*D
*D    BRINCARSE ESTADISTICAS EN CERO YA QUE SE ASUMIO QUE
*D    HABIAN 20 TEMPORALES
*
47    SI N = 0 EJECUTA 50
      LEER TEMPORAL 903 EJECUTA 903 PROM-EU-1 DS-EU-1
      N = N - 1
      EJECUTA 47
*D
*D    SE LEE EL RESTO DEL T903 CON LA ESTADISTICA DE ETIQUETAS
*D    SE ALMACENAN Y SE SACA EL MAXIMO PROMEDIO
*
50    LEER TEMPORAL 904 EJECUTA 904 NET
      N = 0
      PROM-MAX = 0
51    N = N + 1
      LEER TEMPORAL 903 EJECUTA 52 PROM ( N ) DS ( N )
      SI PROM ( N ) <= PROM-MAX EJECUTA 51
      PROM-MAX = PROM ( N )
      EJECUTA 51
*D
*D    SE REVISA CONSISTENCIA DE NUMERO DE ETIQUETAS, OBSERVACIONES
*D    Y REGISTROS EN T903
*
52    N = N - 1
      SI N <> NET EJECUTA 905
*D
*D    SE IMPRIMEN LA ESTADISTICA DE ETIQUETAS CON SU GRAFICA DE USO
*D    PARA ELLO SE ESCALA A 50 COLUMNAS CON EL MAXIMO PROMEDIO.
*
      SACAR PARAMETROS RENG. RENG
      N = RENG + NET + 5
      SI N < 54 EJECUTA 55
      BRINCAR
      EJECUTA 56
55    IMPRIMIR ENCABEZADO 1 '0' 2 GUION40 42 GUION40 / 1 ' '
56    IMPRIMIR ENCABEZADO 2 'ETIQUETA' 16 'PROMEDIO Y DS' $
                 / 1 ' '
      N = 1
60    LEER TEMPORAL 904 EJECUTA 904 ETIQ
      NCOL = PROM ( N ) * 50 / PROM-MAX + 30
61    SI NCOL = 30 EJECUTA 62
      DETALLE NCOL '*'
      NCOL = NCOL - 1
      EJECUTA 61
62    IMPRIMIR DETALLE 2 ETIQ 10 PROM ( N ) 22 DS ( N ) 30 'I'
      N = N + 1
      SI N <= NET EJECUTA 60
*
*     BORRAR LOS TEMPORALES Y PEDIR OTRO PROGRAMA
*
      OPCION TEMPORAL 901 BORRAR
      OPCION TEMPORAL 902 BORRAR
      OPCION TEMPORAL 903 BORRAR
      OPCION TEMPORAL 904 BORRAR
      EJECUTA 950
*
*     ERRORES
*
901   ERROR 'ERROR 1 AL CONVERTIR'
      FIN
902   ERROR 'ERROR 1 EN PSDCE6' 'EOF EN T902'
      FIN
903   ERROR 'ERROR 1 EN PSDCE6' 'EOF EN T903'
      FIN
904   ERROR 'ERROR 1 EN PSDCE6' 'EOF EN T904'
      FIN
905   ERROR 'ERROR 1 EN PSDCE6' 'INCONSISTENCIA EN INF'
      FIN
*D
*D    SE PREGUNTA SI SE LISTA LA EXPLICACION DEL TEMPORAL 703
*D    Y DE SER AFIRMATIVO SE PROCEDE A LISTARLO
*
950  SI PRE-LIS-EX = 'NO' EJECUTA 10
      OPCION TEMPORAL 703 LECTURA ASCII DISCO 'C:\SISINF\DSIS'
      OPCION IMPRIMIR LET. 'EXPLICACION ESTADISTICAS DE USO' COL. 80
951   LEER TEMPORAL 703 EJECUTA 10 X30 X40 X10
      IMPRIMIR DETALLE 2 X30 32 X40
      EJECUTA 951
*
999   FIN 'DCE0'
1000  FIN
