* PSDCEA
*D
*D    ESTE PROGRAMA AGREGA UNA DBD A DOCSIS, SI NO EXISTE SE CREA
*D    PARA ELLO SE EJECUTAN 7 PASOS.
*D
*D    ANTES DE EJECUTAR ESTE PROGRAMA SE DEBE RESPALDAR LOS
*D    ARCHIVOS DE DOCSXX Y DOCSIS.
*D
*D    SI POR ALGUNA RAZON NO SE TERMINA ESTE PROCESO SE DEBERA
*D    BAJAR LOS RESPALDOS Y EJECUTAR NUEVAMENTE. SI ESTOS NO SE
*D    TIENEN SE DEBERA BORRAR DOCSIS Y CREARLO CON LAS DBD
*D    QUE TENIA.
*D
*D    DAR LA EXPLICACION
*=====================================================================
      PROGRAMA  'AGREGAR UNA DBD'
      OPCION  DISCO   DOCSIS  EXCLUSIVO
      DOCUMENTACION   1    5    EST-USO
*
      OPCION TERMINAL COL1. 10
      ESCRIBIR TERMINAL 'Esta opcion sirve para agregar' $
                        'una DBD al archivo DOCSIS.'     $
                        '                          '        $
                        '-Se debe dar las iniciales de DBD' $
                        ' y el dispositivo.' $
                        '                          '        $
                        '-Solo se acepta \ para terminar.' ' ' ' '
*D
*D    *****  PASO I
*D
*D    LEE LAS INICIALES Y SU DISPOSITIVO DE LA DBD A AGREGAR
*D    Y REVISA SI ESTAN EN DOCSIS.
*
      IGUAL AREA N10 NERR
      NERR = 0
      OPCION TERMINAL LET. 'ACTUALIZACION'    COL1. 10  COL2. 41
1     LEER TERMINAL EJECUTA 700 INI-DBD   DIS-DBD
      BUSCAR DISCO DOCSIS EJECUTA 2 PRIN-G1 INI-DBD
      ERROR 'YA EXISTE ESTA DBD EN DOCSIS'
      EJECUTA 1
*D
*D    LLAMAR AL PROGRAMA 'DOCFT' PARA FORMAR LOS TEMPORALES
*D    QUE SE NECESITAN, PARA ELLO SE CREA EL TEMPORAL 901
*D    CON:
*D
*D       N1  0     1=SACAR TODO, 2=SACAR PSXXYY MODIFICADOS
*D       X2        INICIALES DE DBD
*D       X14       DISPOSITIVO DE DBD
*D       N1  0     NUMERO DE REGISTROS ESTIMADOS POR PROGRAMA
*D                 PARA EL TEMPORAL 906
*D       N1  0     IGUAL AL CAMPO ANTERIOR PERO PARA EL T907
*D
*D    ******  ESTOS DOS ULTIMOS CAMPOS SE DEBERAN DE AUMENTAR
*D    ******  SI SE TIENEN PROBLEMAS DE FALTA DE AREA SEPARADA
*D    ******  AL FORMAR T906 O T907.
*
2     OPCION    TEMPORAL  901  ESCRITURA ASCII
      ESCRIBIR  TEMPORAL  901  1 INI-DBD DIS-DBD 50 70
      LLAMAR 'DOCFT ' 901
*D
*D    *****  PASO II
*D
*D    FORMAR EL R0, R14, R15, R6 Y R7 CON INFORMACION DEL
*D    TEMPORAL 902 EL CUAL TIENE:
*D
*D    1 REG CON EL DISPOSITIVO DE DBD.
*D
*D       X7        EN HP-3000 GRUPO Y CUENTA.
*D
*D    1 REG CON DATOS DE CREACION DE LA DBD
*D
*D       N1  0     VALOR DE 2.
*D       X8        FECHA DE INICIO DE DBD
*D       X8        HORA DE INICIO DE DBD
*D       N1 0      NUMERO DE CLAVE DE ACCESO
*D
*D    10 REG CON DATOS DE ULTIMAS EJECUCIONES DE DBD
*D
*D       N1 0      0=NO SE USA, 1=SI SE USA, 2=REGISTRADO EN DOCSIS
*D       X8        FECHA DE EJECUCION
*D       X8        HORA DE EJECUCION
*D       N1 0      NUMERO DE CLAVE DE ACCESO
*D
*D    10 REG CON DATOS DE LAS 10 ULTIMAS ACTUALIZACIONES
*D
*D       N1 0      0=NO SE USA, 1=SI SE USA, 2=REGISTRADO EN DOCSIS
*D       X8        FECHA DE ACTUALIZACION
*D       X8        HORA DE ACTUALIZACION
*D       N1 0      NUMERO DE CLAVE DE ACCESO
*D
*D    N REG CON NOMBRES DE SISTEMAS Y GRUPOS
*D
*D       N1 0      NUMERO DEL SISTEMA
*D       N1 0      NUMERO DEL GRUPO, SI ES CERO EL NOMBRE ES
*D                 DEL SISTEMA, SI ES DIFERENTE A CERO ES EL
*D                 NOMBRE DEL GRUPO.
*D       X40       NOMBRE DEL SISTEMA O DEL GRUPO
*D
*D    FORMAR EL R0 CON LA INICIALES DE DBD Y DISPOSITIVO
*D    PARA ELLO SE SACA EL DISPOSITIVO DEL T902
*
      OPCION TEMPORAL 902 LECTURA ASCII
      LEER TEMPORAL 902 EJECUTA 60 DIS-DBD
      INSERTAR DISCO DOCSIS INI-DBD DIS-DBD
      IGUAL AREA N10 N
      IGUAL AREA N10 IND
*D
*D    FORMAR R14 CON FECHAS DE EJECUCION DE DBD, PARA ELLO
*D    SE LEEN 11 REGISTROS DEL TEMPORAL 902. EL MODULO DBD
*D    DEJA ESTA INFORMACION DE MAS ANTIGUA A NUEVA.
*
      N = 11
10    LEER TEMPORAL 902 EJECUTA 60  IND FEC-EJE HOR-EJE $
                                    CTA-EJE
      SI IND = 0 EJECUTA 11
      INSERTAR DISCO DOCSIS FEC-EJE HOR-EJE CTA-EJE
11    N = N - 1
      SI N > 0 EJECUTA 10
*D
*D    FORMAR R15 CON FECHAS DE ACTUALIZACION DE DOCSIS, PARA
*D    ELLO SE LEEN 10 REGISTROS DEL TEMPORAL 902. EL PROGRAMA
*D    DOCFT DEJA ESTA INFORMACION DE MAS ANTIGUA A NUEVA
*
      N = 10
20    LEER TEMPORAL 902 EJECUTA 60 IND FEC-ACT HOR-ACT $
                                   CTA-ACT
      SI IND = 0 EJECUTA 21
      INSERTAR DISCO DOCSIS FEC-ACT HOR-ACT CTA-ACT
21    N = N - 1
      SI N > 0 EJECUTA 20
*D
*D    DEJAR LA FECHA DE ULTIMA ACTUALIZACION PARA LOS PROGRAMAS
*
      BUSCAR RECURRENTE DOCSIS 15 EJECUTA 64 SUP.
      LEER DISCO DOCSIS FEC-ACT HOR-ACT
      MOVER FEC-ACT A FEC-ACT-PRO
      MOVER HOR-ACT A HOR-ACT-PRO
*D
*D    FORMAR R6 CON SISTEMAS DE LA DBD Y R7 CON GRUPOS DE
*D    PROGRAMAS DE LA DBD. PARA ELLO SE USA EL RESTO DE LA INFORMACION
*D    DEL TEMPORAL 902. EL PROGRAMA DOCFT LOS DEJA EN EL MISMO
*D    ORDEN EN QUE APARECEN EN DBDSXX EN LAS DECLARACIONES
*D    DE D1 Y D2.
*
30    LEER TEMPORAL 902 EJECUTA 50 NUM-SIS NUM-GRU NOM-GRU
      SI NUM-GRU <> 0 EJECUTA 40
*     SI YA EXISTE EL SISTEMA, ERROR
      BUSCAR RECURRENTE DOCSIS 6 EJECUTA 31 INF. NUM-SIS
      EJECUTA 61
31    MOVER NOM-GRU A NOM-SIS
      TOT-NUM-GRU = 0
      INSERTAR DISCO DOCSIS NUM-SIS NOM-SIS TOT-NUM-GRU
      EJECUTA 30
*     REVISA QUE EXISTA EL SISTEMA, SI NO ERROR.
40    BUSCAR RECURRENTE DOCSIS 6 EJECUTA 62 INF. NUM-SIS
      LEER DISCO DOCSIS TOT-NUM-GRU
      TOT-NUM-GRU = TOT-NUM-GRU + 1
      ESCRIBIR DISCO DOCSIS TOT-NUM-GRU
*     SI YA EXISTE EL GRUPO, ERROR
      BUSCAR RECURRENTE DOCSIS 7 EJECUTA 41 INF. NUM-GRU
      EJECUTA 63
41    TOT-NUM-PRO = 0
      INSERTAR DISCO DOCSIS NUM-GRU NOM-GRU TOT-NUM-PRO
      EJECUTA 30
*D
*D    SE REVISA SI UN SISTEMA NO TIENE GRUPOS EN CUYO CASO
*D    SE INSERTA EL GRUPO CERO.
*
50    OPCION DISCO DOCSIS INICIO-R6
      NUM-GRU = 0
      MOVER ' ' A NOM-GRU
      TOT-NUM-PRO = 0
51    BUSCAR RECURRENTE DOCSIS 6 EJECUTA 100 SIG.
      LEER DISCO DOCSIS TOT-NUM-GRU
      SI TOT-NUM-GRU <> 0 EJECUTA 51
      TOT-NUM-GRU = 1
      ESCRIBIR DISCO DOCSIS TOT-NUM-GRU
      INSERTAR DISCO DOCSIS NUM-GRU NOM-GRU TOT-NUM-PRO
      EJECUTA 51
*
*     ERRORES POR PROBLEMAS EN DOCFT O DBD.
*
60    ERROR 'ERROR 3 EN PSDCEA' 'EOF EN 902'
      FIN
61    ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR SISTEMA' $
              'ESTA DUPLICADO'
      FIN
62    ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR GRUPO' $
            'NO EXISTE SISTEMA'
      FIN
63    ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR GRUPO' $
            'ESTA DUPLICADO'
      FIN
64    ERROR 'ERROR 1 EN PSDCEA' 'NO EXISTE FECHA DE ACT'
      FIN
*D
*D    *****  PASO III
*D
*D    FORMAR EL R16 QUE TIENE LA INFORMACION CON *D DE DBD
*D    PARA ELLO SE LEE EL TEMPORAL 903 CON:
*D
*D       X40       PRIMEROS 40 CARACTERES
*D       X30       SIGUIENTES 30
*
100   OPCION TEMPORAL 903 LECTURA ASCII
101   LEER TEMPORAL 903 EJECUTA 300 DES-DBD1 DES-DBD2
      INSERTAR DISCO DOCSIS DES-DBD1 DES-DBD2
      EJECUTA 101
*D
*D    *****  PASO IV
*D
*D    FORMAR INFORMACION DE ARCHIVOS PERMANENTES
*D
*D    EL TEMPORAL 904 TIENE:
*D
*D    UN REG CON INFORMACION GENERAL DEL ARCHIVO
*D
*D       X6        NOMBRE DEL ARCHIVO
*D       X40       NOMBRE EXTENDIDO DEL ARCHIVO
*D       X14       DISPOSITIVO DEL ARCHIVO
*D       N1 0      TOTAL DE RECURRENTES
*D       N1 0      TOTAL DE GRUPOS
*D       N1 0      TOTAL DE VARIABLES
*D       N1 0      SECUENCIA DEL ARCHIVO EN DBD.
*D
*D    N REG CON INFORMACION DE RECURRENTES
*D
*D       N1 0      NUMERO DEL RECURRENTE
*D       N1 0      NUMERO DEL RECURRENTE DEL QUE DEPENDE
*D       N1 0      NIVEL DEL RECURRENTE
*D       N1 0      ORDEN DE IMPRESION EN ESTRUCTURA
*D       X40       NOMBRE DEL RECURRENTE
*D
*D    N REG CON INFORMACION DE GRUPOS PARA CAS
*D
*D       N1 0      NUMERO DEL GRUPO PARA CAS
*D       N1 0      NUMERO DE RECURRENTE
*D       X40       NOMBRE DEL GRUPO PARA CAS
*D
*D    N REG CON INFORMACION DE VARIABLES
*D
*D       N1 0      NUMERO DEL RECURRENTE A QUE PERTENECE
*D       N1 0      NUMERO DEL GRUPO DE CAS AL QUE PERTENECE
*D       N1 0      0=S 1=LL1 2=LL2, ...
*D       X30       NOMBRE DE VARIABLE
*D       X40       NOMBRE USADO PARA CRT
*D
*D    SE LEE UN REGISTRO DEL TEMPORAL 904 CON LA INFORMACION
*D    GENERAL DE UN ARCHIVO Y SE CREA EL R1. SI YA NO HAY
*D    REGISTROS SIGNIFICA QUE NO HAY ARCHIVOS
*
300   OPCION TEMPORAL 904 LECTURA ASCII
      IGUAL AREA N10 GRUPOS
      IGUAL AREA N10 VARIABLES
*
301   LEER TEMPORAL 904  EJECUTA  400                                $
      NOM-PER    NOM-PER-EXT  DIS-PER    TOT-NUM-REC    GRUPOS       $
      VARIABLES  SEC-PER
      INSERTAR   DISCO   DOCSIS                                      $
      NOM-PER   NOM-PER-EXT   DIS-PER  TOT-NUM-REC   SEC-PER
*D
*D    SE LEEN N REGISTROS DEL T904 (N = NUMERO DE RECURRENTES + 1)
*D    CON LA INFORMACION DE LOS RECURRENTES Y SE FORMA R2
*D    SE CALCULA EL NIVEL MAXIMO DEL ARCHIVO EN SUS RECURRENTES
*
      NIV-MAX = 1
      N = TOT-NUM-REC + 1
310   SI N = 0 EJECUTA 313
      LEER TEMPORAL 904 EJECUTA 390 NUM-REC NUM-REC-DEP $
                 NIV-REC ORD-IMP  NOM-REC
*     REVISA QUE NO ESTE DUPLICADO EN RECURRENTE
      BUSCAR RECURRENTE DOCSIS 2 EJECUTA 311 INF. NUM-REC
      EJECUTA 391
311   INSERTAR DISCO DOCSIS NUM-REC NUM-REC-DEP $
                 NIV-REC ORD-IMP NOM-REC
      SI NIV-REC <= NIV-MAX EJECUTA 312
      NIV-MAX = NIV-REC
312   N = N - 1
      EJECUTA 310
313   ESCRIBIR DISCO DOCSIS NIV-MAX
*D
*D    SE LEEN N REGISTROS DEL T904 (N = GRUPOS) CON LA
*D    INFORMACION DE NOMBRE DE GRUPOS DE VARIABLES PARA
*D    CAS Y SE FORMA EL R3
*
      N = GRUPOS
321   SI N = 0 EJECUTA 330
      LEER TEMPORAL 904 EJECUTA 390 NUM-GRU-CAS $
                   NUM-REC NOM-GRU-CAS
*     REVISA EXISTA EL RECURRENTE Y QUE NO ESTE DUPLICADO EL GRUPO
      BUSCAR RECURRENTE DOCSIS 2 EJECUTA 392 INF. NUM-REC
      BUSCAR RECURRENTE DOCSIS 3 EJECUTA 322 INF. NUM-GRU-CAS
      EJECUTA 393
322   INSERTAR DISCO DOCSIS NUM-GRU-CAS NOM-GRU-CAS
      N = N - 1
      EJECUTA 321
*D
*D    SE LEEN N REGISTROS DEL T904 (N = VARIABLES) CON LA
*D    INFORMACION DE LAS VARIABLES DE CADA GRUPO Y SE FORMA
*D    EL R4. EN CASO DE QUE EL GRUPO DE LA VARIABLE SEA EL
*D    CERO (NO PERTENECE A NINGUNO) SE CREA SI NO EXISTE.
*
330   N = VARIABLES
      MOVER ' ' A NOM-GRU-CAS
331   SI N = 0 EJECUTA 301
      LEER TEMPORAL 904 EJECUTA 390 NUM-REC NUM-GRU-CAS SIM-LLA $
                        NOM-VAR-DBD NOM-VAR-CRT
*     BUSCAR EL RECURRENTE Y GRUPO DE LA VARIABLE
      BUSCAR RECURRENTE DOCSIS 2 EJECUTA 394 INF. NUM-REC
      BUSCAR RECURRENTE DOCSIS 3 EJECUTA 332 INF. NUM-GRU-CAS
      EJECUTA 333
332   SI NUM-GRU-CAS <> 0 EJECUTA 395
*     INSERTAR GRUPO CERO
      INSERTAR DISCO DOCSIS NUM-GRU-CAS NOM-GRU-CAS
333   INSERTAR DISCO DOCSIS  NOM-VAR-DBD NOM-VAR-CRT SIM-LLA
      N = N - 1
      EJECUTA 331
*
*     ERRORES POR PROBLEMAS DE DOCFT O DBD
*
390   ERROR 'ERROR 3 EN PSDCEA' 'EOF EN 904'
      FIN
391   ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR RECURRENTE' $
                'ESTA DUPLICADO'
      FIN
392   ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR GRUPO' $
                'NO EXISTE RECURRENTE'
      FIN
393   ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR GRUPO' $
                'ESTA DUPLICADO'
      FIN
394   ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR VARIABLE' $
            'NO EXISTE RECURRENTE'
      FIN
395   ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR VARIABLE' $
            'NO EXISTE GRUPO'
      FIN
*D
*D    *****  PASO V
*D
*D    FORMAR R5 CON INFORMACION DE TABLAS DE UNA DBD.
*D
*D    EL TEMPORAL 905 CONTIENE:
*D
*D       X6        NOMBRE DE LA TABLA
*D       X40       NOMBRE EXTENDIDO DE LA TABLA
*D       N1 0      SECUENCIA EN DBD DE LA TABLA.
*
400   OPCION TEMPORAL 905 LECTURA ASCII
401   LEER TEMPORAL 905 EJECUTA 500 NOM-TAB NOM-TAB-EXT SEC-TAB
      INSERTAR DISCO DOCSIS NOM-TAB NOM-TAB-EXT SEC-TAB
      EJECUTA 401
*D
*D    *****  PASO VI
*D
*D    FORMAR INFORMACION DE PROGRAMAS CON EL TEMPORAL 906
*D    EL CUAL CONTIENE:
*D
*D    UN REGISTRO DE DATOS GENERALES DEL PROGRAMA
*D
*D       X6        PSXXYY
*D       X14       DISPOSITIVO
*D       X40       NOMBRE DEL PROGRAMA
*D       N1  0     0=NO HAY ERROR, 1=ERROR EN PSXXYY, 2=EN ESXXYY
*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 DEL SISTEMA A QUE PERTENECE
*D       N1  0     NUMERO DEL GRUPO A QUE PERTENECE
*D       N2  0     MEMORIA USADA
*D       N1  0     NUMERO DE CALVE DE ACCESO
*D
*D    N REG CON INFORMACION DE ARCHIVOS PERMANENTES
*D
*D       X6        NOMBRE DEL PERMANENTE
*D       N1  0     RECURRENTES USADOS
*D
*D    N REG CON INFORMACION DEL USO DEL RECURRENTE
*D
*D       N1  0     NUMERO DEL RECURRENTE
*D       N2  0     USO DEL RECURRENTE
*D
*D    N REG CON INFORMACION DE TEMPORALES
*D
*D       X6        NOMBRE DEL TEMPORAL
*D       N1  0     LONGITUD MENOR
*D       N1  0     LONGITUD MAYOR
*D       N3  0     USO
*D
*D    UN REGISTRO CON INF DE SEGURIDAD
*D
*D       N1  0     SEGURIDAD EN ESC
*D       N1  0     SEGURIDAD EN LEC
*D       N1  0     NUMERO DE OPCIONES SEG.
*D
*D    N REG CON INFORMACION DE OPCIONES SEG.
*D
*D       N1  0     NUMERO DE LA OPCION SEG.
*D
*D    N REG CON INFORMACION DE TABLAS USADAS
*D
*D       X6        NOMBRE DE TABLA
*
      IGUAL AREA N10 NPER
      IGUAL AREA N10 NTAB
      IGUAL AREA N10 NTEM
      IGUAL AREA N10 INDE
      IGUAL AREA N10 CEA
500   OPCION IMPRIMIR LET. 'ERRORES DE ACTUALIZACION' FECHA FEC $
          ENC. 5 NOM-PRO 15 DIS-PRO ENC. 15 'CAUSA DEL ERROR' $
          55 'ACCION TOMADA'
      SACAR PARAMETROS FECHA FEC
      OPCION TEMPORAL 906 LECTURA ASCII
*D
*D    SE LEE UN REG DEL T906 CON INFORMACION GENERAL DE UN
*D    PROGRAMA, SI NO HAY MAS REG NO HAY MAS PROGRAMAS
*
501   LEER TEMPORAL 906 EJECUTA 600 NOM-PRO DIS-PRO $
          INDE CEA NOM-PRO-EXT FEC-COM HOR-COM $
          NPER NTEM NTAB NUM-SIS NUM-GRU TOT-MEM CTA-COM
*D
*D    REVISA SI NO SE PUDO ABRIR EL ESXXYY O EL PSXXYY PARA
*D    INCLUIRLO EN EL REPORTE DE ACTUALIZACION
*
      SI INDE =  0 EJECUTA 503
      SI INDE = 2  EJECUTA 502
      SI INDE = 3  EJECUTA 5020
      IMPRIMIR DETALLE 5 NOM-PRO 15 DIS-PRO / $
           15 'NO SE PUEDE ABRIR ESXXYY' 45 CEA  $
           55 'NO SE INCLUYE EN DOCSIS'
      NERR = NERR + 1
      EJECUTA 501
502   IMPRIMIR DETALLE 5 NOM-PRO 15 DIS-PRO / $
         15 'NO SE PUEDE ABRIR PSXXYY' 45 CEA $
         55 'NO SE INCLUYE EN DOCSIS'
      NERR = NERR + 1
      EJECUTA 501
5020  IMPRIMIR DETALLE 5 NOM-PRO 15 DIS-PRO / $
           15 'ESXXYY INVALIDO' 55 'NO SE INCLUYE EN DOCSIS'
      NERR = NERR + 1
      EJECUTA 501
*D
*D    REVISA QUE EL PSXXYY NO ESTE DUPLICADO EN CUYO CASO
*D    SE REPORTA.
*
503   BUSCAR DISCO DOCSIS EJECUTA 504 BUSC-G2 NOM-PRO
      IMPRIMIR DETALLE  5 NOM-PRO 15 DIS-PRO / $
             15 'NOMBRE DE PROGRAMA DUPLICADO' $
             55 'NO SE INCLUYE EN DOCSIS'
      NERR = NERR + 1
      EJECUTA 550
*D
*D    SE BUSCA EL SISTEMA Y GRUPO DEL PROGRAMA, SI NO EXISTE
*D    ALGUNO DE LOS DOS SE REPORTA Y SE PONE EN EL SISTEMA
*D    CERO ES DECIR NO DOCUMENTADO.
*
504   BUSCAR RECURRENTE DOCSIS 6 EJECUTA 505 INF. NUM-SIS
      BUSCAR RECURRENTE DOCSIS 7 EJECUTA 506 INF. NUM-GRU
      EJECUTA 510
505   IMPRIMIR DETALLE 5 NOM-PRO 15 DIS-PRO / $
            15 'NO EXISTE SISTEMA' 45 NUM-SIS $
            55 'SE PONE EN NO DOCUMENTADO'
      EJECUTA 507
506   IMPRIMIR DETALLE 5 NOM-PRO 15 DIS-PRO / $
            15 'NO EXISTE EL GRUPO' 45 NUM-GRU $
            55 'SE PONE EN NO DOCUMENTADO'
507   NERR = NERR + 1
      NUM-SIS = 0
      NUM-GRU = 0
      BUSCAR RECURRENTE DOCSIS 6 EJECUTA 508 INF. NUM-SIS
      BUSCAR RECURRENTE DOCSIS 7 EJECUTA 594 INF. NUM-GRU
      EJECUTA 510
*D
*D    EN CASO DE QUE EL SISTEMA 0 (NO DOCUMENTADOS) NO
*D    EXISTA PARA ESTA DBD SE CREA.
*
508   MOVER 'NO DOCUMENTADOS' A NOM-SIS
      TOT-NUM-GRU = 1
      MOVER ' '  A NOM-GRU
      TOT-NUM-PRO = 0
      INSERTAR DISCO DOCSIS NUM-SIS NOM-SIS TOT-NUM-GRU
      INSERTAR DISCO DOCSIS NUM-GRU NOM-GRU TOT-NUM-PRO
*
*     PONER UN PROGRAMA MAS E INSERTAR R8
*
510   LEER DISCO DOCSIS TOT-NUM-PRO
      TOT-NUM-PRO = TOT-NUM-PRO + 1
      ESCRIBIR DISCO DOCSIS TOT-NUM-PRO
      INSERTAR DISCO DOCSIS NOM-PRO DIS-PRO NOM-PRO-EXT $
             FEC-COM HOR-COM TOT-MEM CTA-COM FEC-ACT-PRO HOR-ACT-PRO
*
*     MOVER NOMBRE DEL PROGRAMA A VARIABLES USADAS PARA
*     QUITAR DUPLICACION DE LLAVES
*
      MOVER NOM-PRO A PER-PRO
      MOVER NOM-PRO A TAB-PRO
      MOVER NOM-PRO A TEM-PRO
*D
*D    LEER N REG DEL  T906 (N = NPER) CON LA INFORMACION DE
*D    ARCHIVOS PERMANENTES QUE USA EL PROGRAMA Y FORMAR
*D    EL R9
*
      N = NPER
520   SI N = 0 EJECUTA 530
      IGUAL AREA N10 NREC
      LEER TEMPORAL 906 EJECUTA 590 NOM-PER-PRO NREC
*
*     REVISA QUE EXISTA EL ARCHIVO EN EL R2 Y LEER TOTAL DE RECURRENTES
*     PARA PODER VALIDAR RANGO
*
      MOVER NOM-PER-PRO A NOM-PER
      BUSCAR RECURRENTE DOCSIS 1 EJECUTA 591 INF. NOM-PER
      LEER DISCO DOCSIS TOT-NUM-REC
      INSERTAR DISCO DOCSIS NOM-PER-PRO PER-PRO
*D
*D    LEER N REG EN EL  T906 (N = NREC) CON LA INFORMACION
*D    DE COMO SE USA CADA RECURRENTE DEL ARCHIVO Y FORMAR
*D    EL R10
*
521   SI NREC = 0 EJECUTA 522
      LEER TEMPORAL 906 EJECUTA 590 NUM-REC-PRO USO-REC-PRO
      SI NUM-REC-PRO < 0 EJECUTA 592
      SI NUM-REC-PRO > TOT-NUM-REC EJECUTA 592
      INSERTAR DISCO DOCSIS NUM-REC-PRO USO-REC-PRO
      NREC = NREC - 1
      EJECUTA 521
*
*     TOMAR OTRO PERMANENTE
*
522   N = N - 1
      EJECUTA 520
*D
*D    LEER N REG DEL  T906 (N = NTEM) CON LA INFORMACION
*D    DE LOS TEMPORALES USADOS POR EL PROGRAMA Y FORMAR R11
*
530   N = NTEM
531   SI N = 0 EJECUTA 535
      LEER TEMPORAL 906 EJECUTA 590 NOM-TEM-PRO LON-MEN LON-MAY $
              USO-TEM
      INSERTAR DISCO DOCSIS NOM-TEM-PRO TEM-PRO LON-MEN LON-MAY USO-TEM
      N = N - 1
      EJECUTA 531
*D
*D    SE LEE UN REG CON INFORMACION DE SEGURIDAD Y LUEGO
*D    N REG (N = TOT-NUM-SEG) CON LAS OPCIONES SEG.
*
535   LEER TEMPORAL 906 EJECUTA 590 SEG-ESC SEG-LEC TOT-NUM-SEG
      ESCRIBIR DISCO DOCSIS SEG-ESC SEG-LEC TOT-NUM-SEG
      N = TOT-NUM-SEG
536   SI N = 0 EJECUTA 540
      LEER TEMPORAL 906 EJECUTA 590 NUM-SEG
      INSERTAR DISCO DOCSIS NUM-SEG
      N = N - 1
      EJECUTA 536
*D
*D    LEER N REG DEL  T906 (N = NTAB) CON LA INFORMACION
*D    DE TABLAS USADAS POR EL PROGRAMA Y FORMAR EL R12
*
540   N = NTAB
541   SI N = 0 EJECUTA 501
      LEER TEMPORAL 906 EJECUTA 590 NOM-TAB-PRO
*
*     REVISA QUE EXISTA EN EN R5
*
      MOVER NOM-TAB-PRO A NOM-TAB
      BUSCAR RECURRENTE DOCSIS 5 EJECUTA 593 INF. NOM-TAB
      INSERTAR DISCO DOCSIS NOM-TAB-PRO TAB-PRO
      N = N - 1
      EJECUTA 541
*D
*D    EN CASO DE ERROR, BRINCARSE HASTA EL SIGUIENTE PROGRAMA
*
550   N = NPER
551   SI N = 0 EJECUTA 555
      LEER TEMPORAL 906 EJECUTA 590 NOM-PER-PRO NREC
552   SI NREC = 0 EJECUTA 553
      LEER TEMPORAL 906 EJECUTA 590 NUM-REC-PRO USO-REC-PRO
      NREC = NREC - 1
      EJECUTA 552
553   N = N - 1
      EJECUTA 551
555   N = NTEM
556   SI N = 0 EJECUTA 560
      LEER TEMPORAL 906 EJECUTA 590 NOM-TEM-PRO  LON-MEN LON-MAY $
                USO-TEM
      N = N - 1
      EJECUTA 556
560   LEER TEMPORAL 906 EJECUTA 590 SEG-ESC SEG-LEC TOT-NUM-SEG
      N = TOT-NUM-SEG
561   SI N = 0 EJECUTA 565
      LEER TEMPORAL 906 EJECUTA 590 NUM-SEG
      N = N - 1
      EJECUTA 561
565   N = NTAB
566   SI N = 0 EJECUTA 501
      LEER TEMPORAL 906 EJECUTA 590 NOM-TAB-PRO
      N = N - 1
      EJECUTA 566
*
*     ERRORES POR PROBLEMAS EN DOCFT
*
590   ERROR 'ERROR 3 EN PSDCEA' 'EOF EN 906'
      FIN
591   ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR PROGRAMA' $
            'NO EXISTE ARCHIVO'
      FIN
592   ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR PROGRAMA'   $
            'RECURRENTE FUERA DE RANGO'
      FIN
593   ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR PROGRAMA'   $
            'NO EXISTE TABLA'
      FIN
594   ERROR 'ERROR 1 EN PSDCEA' 'NO HAY GRUPO DEL SISTEMA 0'
      FIN
*D
*D    *****  PASO VII
*D
*D    FORMAR LOS REGISTROS DE *D DE LOS PROGRAMAS.
*D
*D    EL CONTENIDO DEL TEMPORAL 907 ES:
*D
*D       X6        NOMBRE DEL PROGRAMA
*D       X40       PRIMEROS 40 CARACTERES
*D       X30       RESTANTES 30
*
600   OPCION TEMPORAL 907 LECTURA ASCII
      IGUAL DOCSIS NOM-PRO NOM-PRO-ANT
      MOVER ' ' A NOM-PRO-ANT
*D
*D    SE LEE UN REGISTRO EN 907 CON EL NOMBRE DEL PROGRAMA
*D    Y SE SE FORMA EL R13 CON LA INFORMACION DE *D
*
601   LEER TEMPORAL 907 EJECUTA 603 NOM-PRO DES-PR1 DES-PR2
      SI NOM-PRO = NOM-PRO-ANT EJECUTA 602
*
*     REVISA SI ESTA EL PROGRAMA  Y DEFINIR NOMBRE ANTERIOR
*
      BUSCAR DISCO DOCSIS EJECUTA 690 PRIN-G2 NOM-PRO
      MOVER NOM-PRO A NOM-PRO-ANT
*
*     INSERTARLO EN R13
*
602   INSERTAR DISCO DOCSIS DES-PR1 DES-PR2
      EJECUTA 601
*D
*D    BORRAR LOS TEMPORALES PARA OTRO PROCESO
*
603   OPCION TEMPORAL 901 BORRAR
      OPCION TEMPORAL 902 BORRAR
      OPCION TEMPORAL 903 BORRAR
      OPCION TEMPORAL 904 BORRAR
      OPCION TEMPORAL 905 BORRAR
      OPCION TEMPORAL 906 BORRAR
      OPCION TEMPORAL 907 BORRAR
      EJECUTA 1
*
*     ERRORES POR PROBLEMAS EN DOCFT O EN ESTE PROGRAMA
*
690   ERROR 'ERROR 3 EN PSDCEA' 'AL INSERTAR *D' $
            'NO EXISTE PROGRAMA'
      FIN
*
*D    TERMINAR EL PROCESO  Y REPORTAR LOS ERRORES
*
700   SI NERR <> 0 EJECUTA 701
      ESCRIBIR TERMINAL 'ACTUALIZACION COMPLETA'
      EJECUTA 702
701   ESCRIBIR TERMINAL 'SE TIENEN PROGRAMAS NO DOCUMENTADOS' $
                        'O CON NOMBRES DUPLICADOS. ES NECESARIO' $
                        'REVISAR EL REPORTE DE ERRORES'
      IGUAL AREA N10 IND-BATCH
702   SACAR PARAMETROS BATCH IND-BATCH
      SI IND-BATCH <> 0 EJECUTA 703
      FIN 'DCME'
703   FIN
