637 lines
18 KiB
Plaintext
637 lines
18 KiB
Plaintext
#######################################################################
|
|
# SISTEMA : DOCUMENTACION DE SISTEMA
|
|
# PROGRAMA : DSPRMT004.4GL
|
|
# OBJETIVO : Creacion y Documentacion de Tablas.
|
|
# AUTOR : Tadeo A. Ferreras F.
|
|
# FECHA : JUNIO 10, 1995
|
|
########################################################################
|
|
DATABASE rayovac
|
|
GLOBALS
|
|
"dsprgb000.4gl"
|
|
|
|
FUNCTION dsprmt004()
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
PROMPT LINE 23
|
|
|
|
CALL pantalla()
|
|
OPEN FORM dsfmmt004 FROM "dsfmmt004"
|
|
DISPLAY FORM dsfmmt004
|
|
DISPLAY "dsprmt004" AT 4,3 ATTRIBUTE(RED)
|
|
DISPLAY "Creacion y Documentacion de Tabla" AT 6,23 ATTRIBUTE(BLACK)
|
|
|
|
MENU "OPCION"
|
|
COMMAND "Adicionar-Documentar"
|
|
"Presione <ESC> para Grabar <Ctrl-C> Para Cancelar"
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
CALL dsprad004()
|
|
COMMAND "Consulta-Modificar"
|
|
"Presione <ESC> para Actualizar <Ctrl-C> Para Cancelar"
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
CALL dsprmd004()
|
|
COMMAND "Salir"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION dsprad004()
|
|
|
|
LET dstb05.tabla = NULL
|
|
LET dstb05.descripcion = NULL
|
|
INPUT BY NAME dstb05.* WITHOUT DEFAULTS
|
|
|
|
AFTER FIELD tabla
|
|
IF dstb05.tabla IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tabla
|
|
END IF
|
|
LET dstb05.tabla = dstb05.tabla CLIPPED
|
|
|
|
SELECT UNIQUE a.created INTO dstb05.fecha_creacion FROM systables a
|
|
WHERE a.tabname = dstb05.tabla
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tabla
|
|
END IF
|
|
|
|
SELECT UNIQUE a.tabla FROM dstb00005 a
|
|
WHERE a.tabla = dstb05.tabla
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tabla
|
|
END IF
|
|
|
|
LET tab_1 = dstb05.tabla[1,2]
|
|
LET tab_1 = UPSHIFT(tab_1)
|
|
SELECT a.desc_sistema INTO dstb03.desc_sistema FROM dstb00003 a
|
|
WHERE a.cod_sistema = tab_1
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 246
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tabla
|
|
END IF
|
|
#DISPLAY BY NAME dstb00003.desc_sistema
|
|
|
|
SELECT MAX(a.numero_act) INTO dstb05.numero_act FROM dstb00005 a
|
|
WHERE a.tabla = dstb05.tabla
|
|
|
|
IF dstb05.numero_act IS NULL THEN
|
|
LET dstb05.numero_act = 0
|
|
END IF
|
|
LET dstb05.numero_act = dstb05.numero_act + 1
|
|
DISPLAY BY NAME dstb05.numero_act
|
|
|
|
AFTER FIELD descripcion
|
|
IF dstb05.descripcion IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD descripcion
|
|
END IF
|
|
|
|
AFTER FIELD num_emp1
|
|
IF dstb05.num_emp1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp1
|
|
END IF
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre1,apellido1 FROM adtb00003 a
|
|
WHERE a.num_emp = dstb05.num_emp1 AND a.departamento >= 7000
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp1
|
|
END IF
|
|
|
|
LET nombre = nombre1 CLIPPED," ",apellido1 CLIPPED
|
|
DISPLAY BY NAME nombre
|
|
|
|
BEFORE FIELD fecha_creacion
|
|
DISPLAY BY NAME dstb05.fecha_creacion
|
|
|
|
AFTER FIELD fecha_creacion
|
|
IF dstb05.fecha_creacion IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_creacion
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
#IF dstb05.numero_act = 1 THEN
|
|
DECLARE busca1 CURSOR FOR
|
|
SELECT a.colname,a.colname,a.colname,a.colname,a.colname,a.colname,
|
|
a.colno
|
|
FROM systables b,syscolumns a
|
|
WHERE a.tabid = b.tabid and b.tabname = dstb05.tabla
|
|
ORDER BY 7
|
|
|
|
LET idx = 1
|
|
FOREACH busca1 INTO arr_tabla1[idx].*
|
|
LET arr_tabla1[idx].campo = UPSHIFT(arr_tabla1[idx].campo)
|
|
SELECT a.descrip_campo[1,50],a.descrip_campo[51,100],
|
|
a.descrip_campo[101,150],a.tipo,a.longitud
|
|
INTO arr_tabla1[idx].descrip_campo1,arr_tabla1[idx].descrip_campo2,
|
|
arr_tabla1[idx].descrip_campo3,arr_tabla1[idx].tipo,
|
|
arr_tabla1[idx].longitud
|
|
FROM dstb00005 a
|
|
WHERE a.numero_act = dstb05.numero_act - 1 AND
|
|
a.tabla = dstb05.tabla AND a.campo = arr_tabla1[idx].campo
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx - 1)
|
|
|
|
INPUT ARRAY arr_tabla1 WITHOUT DEFAULTS FROM scr_tabla.*
|
|
BEFORE ROW
|
|
LET curr = ARR_CURR()
|
|
LET fila = SCR_LINE()
|
|
|
|
AFTER FIELD campo
|
|
|
|
IF arr_tabla1[curr].campo IS NOT NULL THEN
|
|
FOR idx = 1 TO ARR_COUNT()
|
|
IF curr != idx THEN
|
|
IF arr_tabla1[idx].campo = arr_tabla1[curr].campo THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD campo
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
|
|
BEFORE FIELD tipo
|
|
CALL tipo_campo()
|
|
LET arr_tabla1[curr].tipo = tipo_1
|
|
DISPLAY arr_tabla1[curr].tipo TO scr_tabla[fila].tipo
|
|
|
|
AFTER FIELD tipo
|
|
IF arr_tabla1[curr].campo IS NOT NULL THEN
|
|
IF arr_tabla1[curr].tipo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
|
|
IF arr_tabla1[curr].tipo = "DATETIME" THEN
|
|
CALL longitud_campo()
|
|
LET arr_tabla1[curr].longitud = longitud_1
|
|
END IF
|
|
DISPLAY arr_tabla1[curr].longitud TO scr_tabla[fila].longitud
|
|
END IF
|
|
|
|
AFTER FIELD longitud
|
|
IF arr_tabla1[curr].tipo IS NOT NULL THEN
|
|
IF arr_tabla1[curr].longitud IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD longitud
|
|
END IF
|
|
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
LET j = 0
|
|
FOR idx = 1 TO ARR_COUNT()
|
|
IF arr_tabla1[idx].campo IS NOT NULL THEN
|
|
LET descrip_campo6 = " "
|
|
LET descrip_campo6 = arr_tabla1[idx].descrip_campo1,
|
|
arr_tabla1[idx].descrip_campo2,
|
|
arr_tabla1[idx].descrip_campo3
|
|
|
|
LET j = j + 1
|
|
INSERT INTO dstb00005 VALUES (dstb05.tabla,dstb05.descripcion,
|
|
dstb05.num_emp1,dstb05.fecha_creacion,
|
|
dstb05.numero_act,arr_tabla1[idx].campo,
|
|
descrip_campo6,arr_tabla1[idx].tipo,
|
|
arr_tabla1[idx].longitud,j,NULL,USER,CURRENT,
|
|
NULL,NULL)
|
|
END IF
|
|
LET arr_tabla1[idx].campo = " "
|
|
LET arr_tabla1[idx].descrip_campo1 = " "
|
|
LET arr_tabla1[idx].descrip_campo2 = " "
|
|
LET arr_tabla1[idx].descrip_campo3 = " "
|
|
LET arr_tabla1[idx].tipo = " "
|
|
LET arr_tabla1[idx].longitud = " "
|
|
END FOR
|
|
{
|
|
LABEL opp:
|
|
PROMPT "Desea Crear Tabla [S/N]?..." FOR CHAR opcion1
|
|
LET opcion1 = UPSHIFT(opcion1)
|
|
IF opcion1 != "S" AND opcion1 != "N" OR opcion1 IS NULL THEN
|
|
GOTO opp
|
|
END IF
|
|
|
|
IF opcion1 = "S" THEN
|
|
LET crear1 = NULL
|
|
FOR idx = 1 TO ARR_COUNT()
|
|
IF arr_tabla1[idx].campo IS NOT NULL THEN
|
|
LET crear1 = crear1 CLIPPED," ",arr_tabla1[idx].campo CLIPPED," ",
|
|
arr_tabla1[idx].tipo CLIPPED," "
|
|
IF arr_tabla1[idx].tipo = "CHAR" OR
|
|
arr_tabla1[idx].tipo = "DECIMAL" THEN
|
|
LET crear1 = "(",arr_tabla1[idx].longitud CLIPPED,")"
|
|
END IF
|
|
IF arr_tabla1[idx].tipo = "DATETIME" THEN
|
|
LET crear1 = arr_tabla1[idx].longitud CLIPPED
|
|
END IF
|
|
LET crear1 = crear1 CLIPPED,","
|
|
END IF
|
|
END FOR
|
|
|
|
IF crear1 IS NOT NULL THEN
|
|
LET crear1 = crear1 CLIPPED," status_t CHAR(1), us_crea CHAR(9), ",
|
|
" fech_crea DATETIME YEAR TO MINUTE, us_mod CHAR(9), ",
|
|
" fech_mod DATETIME YEAR TO MINUTE"
|
|
END IF
|
|
|
|
LET crear = "CREATE TABLE ",dstb05.tabla CLIPPED," ( ",crear1 CLIPPED," )"
|
|
|
|
PREPARE actt FROM crear
|
|
EXECUTE actt
|
|
END IF
|
|
}
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
END FUNCTION
|
|
|
|
FUNCTION dsprmd004()
|
|
|
|
CONSTRUCT criterio ON a.tabla,a.descripcion,a.num_emp1,a.fecha_creacion,
|
|
a.numero_act
|
|
FROM tabla,descripcion,num_emp1,fecha_creacion,numero_act
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec =
|
|
"SELECT UNIQUE a.tabla,a.descripcion,a.num_emp1,a.fecha_creacion, ",
|
|
" a.numero_act ",
|
|
"FROM dstb00005 a WHERE a.status_t IS NULL AND ",criterio CLIPPED,
|
|
"ORDER BY 1,5"
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE busca SCROLL CURSOR FOR comando
|
|
OPEN busca
|
|
|
|
FETCH FIRST busca INTO dstb05.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre1,apellido1 FROM adtb00003 a
|
|
WHERE a.num_emp = dstb05.num_emp1 AND a.departamento >= 7000
|
|
|
|
LET nombre = nombre1 CLIPPED," ",apellido1 CLIPPED
|
|
DISPLAY BY NAME dstb05.*,nombre
|
|
|
|
MENU "OPCION"
|
|
COMMAND "Siguiente"
|
|
FETCH NEXT busca INTO dstb05.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre1,apellido1 FROM adtb00003 a
|
|
WHERE a.num_emp = dstb05.num_emp1 AND a.departamento >= 7000
|
|
|
|
LET nombre = nombre1 CLIPPED," ",apellido1 CLIPPED
|
|
DISPLAY BY NAME dstb05.*,nombre
|
|
|
|
COMMAND "Anterior"
|
|
FETCH PREVIOUS busca INTO dstb05.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre1,apellido1 FROM adtb00003 a
|
|
WHERE a.num_emp = dstb05.num_emp1 AND a.departamento >= 7000
|
|
|
|
LET nombre = nombre1 CLIPPED," ",apellido1 CLIPPED
|
|
DISPLAY BY NAME dstb05.*,nombre
|
|
COMMAND "Primero"
|
|
FETCH FIRST busca INTO dstb05.*
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre1,apellido1 FROM adtb00003 a
|
|
WHERE a.num_emp = dstb05.num_emp1 AND a.departamento >= 7000
|
|
|
|
LET nombre = nombre1 CLIPPED," ",apellido1 CLIPPED
|
|
DISPLAY BY NAME dstb05.*,nombre
|
|
COMMAND "Ultimo"
|
|
FETCH LAST busca INTO dstb05.*
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre1,apellido1 FROM adtb00003 a
|
|
WHERE a.num_emp = dstb05.num_emp1 AND a.departamento >= 7000
|
|
|
|
LET nombre = nombre1 CLIPPED," ",apellido1 CLIPPED
|
|
DISPLAY BY NAME dstb05.*,nombre
|
|
|
|
COMMAND "Escoger"
|
|
|
|
INPUT BY NAME dstb05.descripcion THRU dstb05.fecha_creacion WITHOUT DEFAULTS
|
|
|
|
AFTER FIELD descripcion
|
|
IF dstb05.descripcion IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD descripcion
|
|
END IF
|
|
|
|
AFTER FIELD num_emp1
|
|
IF dstb05.num_emp1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp1
|
|
END IF
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre1,apellido1 FROM adtb00003 a
|
|
WHERE a.num_emp = dstb05.num_emp1 AND a.departamento >= 7000
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp1
|
|
END IF
|
|
|
|
LET nombre = nombre1 CLIPPED," ",apellido1 CLIPPED
|
|
DISPLAY BY NAME nombre
|
|
|
|
AFTER FIELD fecha_creacion
|
|
IF dstb05.fecha_creacion IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_creacion
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
DECLARE busca4 CURSOR FOR
|
|
SELECT a.colname,a.colname,a.colname,a.colname,a.colname,a.colname,
|
|
a.colno
|
|
FROM systables b,syscolumns a
|
|
WHERE a.tabid = b.tabid and b.tabname = dstb05.tabla
|
|
ORDER BY 7
|
|
|
|
LET idx = 1
|
|
FOREACH busca4 INTO arr_tabla1[idx].*
|
|
LET arr_tabla1[idx].descrip_campo1 = " "
|
|
LET arr_tabla1[idx].descrip_campo2 = " "
|
|
LET arr_tabla1[idx].descrip_campo3 = " "
|
|
LET arr_tabla1[idx].tipo = " "
|
|
LET arr_tabla1[idx].longitud = " "
|
|
LET arr_tabla1[idx].campo = UPSHIFT(arr_tabla1[idx].campo)
|
|
|
|
SELECT a.descrip_campo[1,50],a.descrip_campo[51,100],
|
|
a.descrip_campo[101,150],a.tipo,a.longitud
|
|
INTO arr_tabla1[idx].descrip_campo1,arr_tabla1[idx].descrip_campo2,
|
|
arr_tabla1[idx].descrip_campo3,arr_tabla1[idx].tipo,
|
|
arr_tabla1[idx].longitud
|
|
FROM dstb00005 a
|
|
WHERE a.numero_act = dstb05.numero_act AND
|
|
a.tabla = dstb05.tabla AND a.campo = arr_tabla1[idx].campo
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
{DECLARE busca4 CURSOR FOR
|
|
SELECT a.campo,a.descrip_campo[1,50],a.descrip_campo[51,100],
|
|
a.descrip_campo[101,150],a.tipo,a.longitud,a.secuencia
|
|
FROM dstb00005 a
|
|
WHERE a.tabla = dstb05.tabla AND a.numero_act = dstb05.numero_act AND
|
|
a.status_t IS NULL ORDER BY a.secuencia
|
|
|
|
LET idx = 1
|
|
FOREACH busca4 INTO arr_tabla1[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH}
|
|
CALL SET_COUNT(idx-1)
|
|
|
|
INPUT ARRAY arr_tabla1 WITHOUT DEFAULTS FROM scr_tabla.*
|
|
BEFORE ROW
|
|
LET curr = ARR_CURR()
|
|
LET fila = SCR_LINE()
|
|
|
|
AFTER FIELD campo
|
|
|
|
IF arr_tabla1[curr].campo IS NOT NULL THEN
|
|
FOR idx = 1 TO ARR_COUNT()
|
|
IF curr != idx THEN
|
|
IF arr_tabla1[idx].campo = arr_tabla1[curr].campo THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD campo
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
|
|
BEFORE FIELD tipo
|
|
CALL tipo_campo()
|
|
LET arr_tabla1[curr].tipo = tipo_1
|
|
DISPLAY arr_tabla1[curr].tipo TO scr_tabla[fila].tipo
|
|
|
|
AFTER FIELD tipo
|
|
IF arr_tabla1[curr].campo IS NOT NULL THEN
|
|
IF arr_tabla1[curr].tipo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
|
|
IF arr_tabla1[curr].tipo = "DATETIME" THEN
|
|
CALL longitud_campo()
|
|
LET arr_tabla1[curr].longitud = longitud_1
|
|
END IF
|
|
DISPLAY arr_tabla1[curr].longitud TO scr_tabla[fila].longitud
|
|
END IF
|
|
|
|
AFTER FIELD longitud
|
|
IF arr_tabla1[curr].tipo IS NOT NULL THEN
|
|
IF arr_tabla1[curr].longitud IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD longitud
|
|
END IF
|
|
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
DELETE FROM dstb00005 WHERE @tabla = dstb05.tabla AND
|
|
@numero_act = dstb05.numero_act
|
|
|
|
LET j = 0
|
|
FOR idx = 1 TO ARR_COUNT()
|
|
IF arr_tabla1[idx].campo IS NOT NULL THEN
|
|
LET descrip_campo6 = " "
|
|
LET descrip_campo6 = arr_tabla1[idx].descrip_campo1,
|
|
arr_tabla1[idx].descrip_campo2,
|
|
arr_tabla1[idx].descrip_campo3
|
|
|
|
LET j = j + 1
|
|
INSERT INTO dstb00005 VALUES (dstb05.tabla,dstb05.descripcion,
|
|
dstb05.num_emp1,dstb05.fecha_creacion,
|
|
dstb05.numero_act,arr_tabla1[idx].campo,
|
|
descrip_campo6,arr_tabla1[idx].tipo,
|
|
arr_tabla1[idx].longitud,j,NULL,USER,CURRENT,
|
|
NULL,NULL)
|
|
END IF
|
|
LET arr_tabla1[idx].campo = " "
|
|
LET arr_tabla1[idx].descrip_campo1 = " "
|
|
LET arr_tabla1[idx].descrip_campo2 = " "
|
|
LET arr_tabla1[idx].descrip_campo3 = " "
|
|
LET arr_tabla1[idx].tipo = " "
|
|
LET arr_tabla1[idx].longitud = " "
|
|
END FOR
|
|
{
|
|
LABEL opp:
|
|
PROMPT "Desea Crear Tabla [S/N]?..." FOR CHAR opcion1
|
|
LET opcion1 = UPSHIFT(opcion1)
|
|
IF opcion1 != "S" AND opcion1 != "N" OR opcion1 IS NULL THEN
|
|
GOTO opp
|
|
END IF
|
|
|
|
IF opcion1 = "S" THEN
|
|
LET crear1 = NULL
|
|
FOR idx = 1 TO ARR_COUNT()
|
|
IF arr_tabla1[idx].campo IS NOT NULL THEN
|
|
LET crear1 = crear1 CLIPPED," ",arr_tabla1[idx].campo CLIPPED," ",
|
|
arr_tabla1[idx].tipo CLIPPED," "
|
|
IF arr_tabla1[idx].tipo = "CHAR" OR
|
|
arr_tabla1[idx].tipo = "DECIMAL" THEN
|
|
LET crear1 = "(",arr_tabla1[idx].longitud CLIPPED,")"
|
|
END IF
|
|
IF arr_tabla1[idx].tipo = "DATETIME" THEN
|
|
LET crear1 = arr_tabla1[idx].longitud CLIPPED
|
|
END IF
|
|
LET crear1 = crear1 CLIPPED,","
|
|
END IF
|
|
END FOR
|
|
|
|
IF crear1 IS NOT NULL THEN
|
|
LET crear1 = crear1 CLIPPED," status_t CHAR(1), us_crea CHAR(9), ",
|
|
" fech_crea DATETIME YEAR TO MINUTE, us_mod CHAR(9), ",
|
|
" fech_mod DATETIME YEAR TO MINUTE"
|
|
END IF
|
|
|
|
LET crear = "CREATE TABLE ",dstb05.tabla CLIPPED," ( ",crear1 CLIPPED," )"
|
|
|
|
PREPARE actt FROM crear
|
|
EXECUTE actt
|
|
END IF
|
|
}
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND KEY ("L") "eLiminar"
|
|
|
|
UPDATE dstb00005 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT)
|
|
WHERE @tabla = dstb05.tabla AND @numero_act = dstb05.numero_act
|
|
|
|
COMMAND "Retornar"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION tipo_campo()
|
|
OPEN WINDOW dsprwd004 AT 9,4 WITH FORM "dsfmwd004"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST)
|
|
|
|
LET campo_t[1].tipo_c = "CHAR"
|
|
LET campo_t[2].tipo_c = "DATETIME"
|
|
LET campo_t[3].tipo_c = "DATE"
|
|
LET campo_t[4].tipo_c = "INTEGER"
|
|
LET campo_t[5].tipo_c = "SMALLINT"
|
|
LET campo_t[6].tipo_c = "DECIMAL"
|
|
|
|
LET idx = 6
|
|
CALL SET_COUNT(idx)
|
|
DISPLAY ARRAY campo_t TO campo_s.*
|
|
LET curr1 = ARR_CURR()
|
|
|
|
LET tipo_1 = campo_t[curr1].tipo_c
|
|
CLOSE WINDOW dsprwd004
|
|
END FUNCTION
|
|
|
|
FUNCTION longitud_campo()
|
|
OPEN WINDOW dsprwd005 AT 9,4 WITH FORM "dsfmwd005"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST)
|
|
|
|
LET campo_l[1].tipo_l = "YEAR TO YEAR"
|
|
LET campo_l[2].tipo_l = "YEAR TO MONTH"
|
|
LET campo_l[3].tipo_l = "YEAR TO DAY"
|
|
LET campo_l[4].tipo_l = "YEAR TO HOUR"
|
|
LET campo_l[5].tipo_l = "YEAR TO MINUTE"
|
|
LET campo_l[6].tipo_l = "MONTH TO MONTH"
|
|
LET campo_l[7].tipo_l = "MONTH TO DAY"
|
|
LET campo_l[8].tipo_l = "MONTH TO HOUR"
|
|
LET campo_l[9].tipo_l = "MONTH TO MINUTE"
|
|
LET campo_l[10].tipo_l = "DAY TO DAY"
|
|
LET campo_l[11].tipo_l = "DAY TO HOUR"
|
|
LET campo_l[12].tipo_l = "DAY TO MINUTE"
|
|
LET campo_l[13].tipo_l = "HOUR TO HOUR"
|
|
LET campo_l[14].tipo_l = "HOUR TO MINUTE"
|
|
LET campo_l[15].tipo_l = "MINUTE TO MINUTE"
|
|
|
|
LET idx = 15
|
|
CALL SET_COUNT(idx)
|
|
DISPLAY ARRAY campo_l TO campo_s1.*
|
|
LET curr1 = ARR_CURR()
|
|
|
|
LET longitud_1 = campo_l[curr1].tipo_l
|
|
CLOSE WINDOW dsprwd005
|
|
END FUNCTION
|
|
|