Está en la página 1de 15

C

T24 DIDÁCTICO
Ficha técnica
Creación de Aplicaciones
1.0.0
Bitácora de Revisiones.

Fecha Versión Descripción Autor


25/09/2009 1.0.0 Leo Basabe
Funcionalidad Creación de una tabla en T24
Descripción Este instructivo tiene como finalidad, guiarnos paso a paso en la
creación de una tabla o aplicación en T24.

El presente documento se ha elaborado con la participación del equipo


de desarrollo y equipo funcional de Compartamos, así como la asesoría
del personal técnico de TEMENOS.

Y se basa en un ejemplo realizado en un ambiente de desarrollo. La


aplicación se llama CMPT.REPORTE.

Requerimientos básicos:

1.- Es necesario contar con el programa TEMENOS Globus Desktop versión 1.3 o superior.
2.- Es necesario contar con el programa Reflection 4 for Windows versión 5 o superior.

Comentarios:

A menos que se indique lo contrario, todas las instrucciones se deben ejecutar desde una
sesión Unix en Reflection 4.

Pasos a seguir:

1.- Para la creación de una aplicación se requiere:

a) Un archivo con el código en Infobasic asociado a los eventos de la aplicación, el


nombre de este archivo es igual al nombre de la aplicación, para este ejemplo:
CMPT.REPORTE
b) Un archivo con la definición de los campos de la aplicación, el nombre de este archivo
se conforma de la concatenación del nombre de la aplicación y FLD.DEF, para este
ejemplo: CMPT.REPORTE.FLD.DEF.

Notas
a. Para algunas aplicaciones, todo está en el mismo archivo, no existe el archivo
FLD.DEF.
b. El sufijo FLD.DEF únicamente es por convención, si no tiene este sufijo no afecta el
resultado.

2.- Crear los archivos CMPT.REPORTE y CMPT.REPORTE.FLD.DEF desde reflection en CMPT.BP


que es la carpeta donde debe de estar todos los desarrollos locales.

JED CMPT.BP CMPT.REPORTE

Copiar y pegar el código que viene en el Anexo 1. Este código es el Template básico para la
creación de una aplicación. El código maneja “eventos”, dependiendo de la funcionalidad se
tendrán que programar los eventos necesarios. Para mayor información revisar el documento
T24-DT-TemenosDevelpmentStandars-100.pdf páginas 14 y 15.

JED CMPT.BP CMPT.REPORTE.FLD.DEF


Copiar y pegar el código que viene en el Anexo 2.
Casos comunes en la definición de campos.

a. Campo sencillo

Z += 1 ; F(Z) = "Nomina" ; N(Z) = "50.1.C" ; T(Z) = "A"

Donde: F(Z) Es el nombre del campo.


N(Z) Se define la longitud del campo, el mínimo de caracteres y la C
indica que será validado por una rutina.
T(Z) Indica el tipo de dato.

T(Z) = "A"

T(Z) = "D"

T(Z) = "R"

T(Z) = "AMT"

T(Z)<2> = "AUTOMATIC_MANUAL_SEMI-AUTOMATIC"

T(Z) = "A" ; T(Z)<3> = 'NOINPUT'

b. Campo con liga a otra aplicación

Z += 1 ; F(Z) = "ENQUIRY" ; N(Z) = "50" ; T(Z) = "A"


CHECKFILE(Z) = 'ENQUIRY' : FM : ENQ.FILE.NAME

Se hace la liga a la aplicación ENQUIRY y el texto que aparecerá del lado derecho es el
nombre del enquiry: ENQ.FILE.NAME.

En estos casos se debe de incluir el FILE.LAYOUT de la aplicación con la que se está


haciendo la liga.
En este ejemplo es el FILE.LAYOUT de la aplicación ENQUIRY: $INSERT
I_F.ENQUIRY

c. Campo Multi-Valor

Z += 1 ; F(Z) = "XX.AREA" ; N(Z) = "20" ; T(Z) = "A"

d. Grupo de campos Multi-valor

Z += 1 ; F(Z) = "XX<ENQUIRY" ; N(Z) = "50" ; T(Z) = "A"


CHECKFILE(Z) = 'ENQUIRY' : FM : ENQ.FILE.NAME
Z += 1 ; F(Z) = "XX--REPORTE" ; N(Z) = "20" ; T(Z) = "A"
Z += 1 ; F(Z) = "XX--Clase" ; N(Z) = "20" ; T(Z) = "A"
Z += 1 ; F(Z) = "XX>Subclase" ; N(Z) = "20" ; T(Z) = "A"

e. Grupo de campos Multi-valor con grupo de campos Sub-valor

Z += 1 ; F(Z) = "XX<CONTRACT.TYPE" ; N(Z) = "20" ; T(Z) = "A"


Z += 1 ; F(Z) = "XX--XX<INSTITUCION" ; N(Z) = "20" ; T(Z) = "A"
Z += 1 ; F(Z) = "XX--XX--ACTUAL.AMOUNT" ; N(Z) = "20" ; T(Z) = "A"
Z += 1 ; F(Z) = "XX--XX>OBSERVATION" ; N(Z) = "20" ; T(Z) = "A"
Z += 1 ; F(Z) = "XX>CALIFICATION" ; N(Z) = "20" ; T(Z) = "A"

3.- Compilar ambas rutinas:

EB.COMPILE CMPT.BP CMPT.REPORTE.FLD.DEF


EB.COMPILE CMPT.BP CMPT.REPORTE

Nota: Se debe de compilar primero la rutina de la definición de los campos ya que de


esta depende la rutina asociada a la aplicación.

4.- En Globus Desktop, crear un nuevo registro dentro la tabla PGM.FILE El registro debe ser
el nombre de la aplicación: CMPT.BP CMPT.REPORTE. La información que se debe de capturar
es Type, GB Screen Title y Product.
5Y.- Es necesario crear un registro en el FILE.CONTROL, esto se debe hacer desde
Reflection, haciendo la copia del registro existente CUSTOMER, ejecutar desde la línea de
comandos:

COPY FROM F.FILE.CONTROL CUSTOMER,CMPT.REPORTE

Una vez creado el nuevo registro editarlo con:


JED F.FILE.CONTROL CMPT.REPORTE

Modificar las líneas de la siguiente forma:


 0001 = Descripción sencilla de la aplicación
 0006 = INT
 0007 = Nombre de la aplicación
 0012 = Nombre de la aplicación

6.- En Reflection ingresar a GLOBUS, hacer los siguientes pasos

a. ACTION: CREATE.FILES

b. COMPANY CODE: BNK

c. LIST.NAME: DAR ENTER

d. FILE.NAME: NOMBRE DE LA APLICACION

e. FILE.NAME: DAR ENTER

f. ACTION: Y + ENTER

g. Salir de GLOBUS
7.- Crear un registro en GLOBUS dentro del STANDARD.SELECTION, para la aplicación de
ejemplo: CMPT.REPORTE, en el campo 28 Rebuild Sys Flds: Y con esto se generara
automáticamente la tabla, y dar F5.

8.- Crear el LAYOUT Desde Reflextion: escribir FILE.LAYOUT


9.- El I_F.CMPT.REPORTE se creo en BP entonces, mover el archivo de esa carpeta CMPT.BP.

mv ./BP/I_F.CMPT.REPORTE ./CMPT.BP/

10.- Si se requiere que el ID sea incremental entrar a la versión COMPANY, BNK y agregar
un Multi-valor en el campo Pgm Autom ID con el nombre de la aplicación.

OBSERVACIONES

Cuando se cree el Build Control deberá contener los siguientes archivos, en el mismo orden:

a. CMPT.BP>I_F. CMPT.REPORTE
b. CMPT.BP>CMPT.REPORTE.FLD.DEF
c. CMPT.BP>CMPT.REPORTE
d. PGM.FILE>CMPT.REPORTE
e. FILE.CONTROL>CMPT.REPORTE
f. STANDARD.SELECTION>CMPT.REPORTE
ANEXOS
CODIGO ASOCIDADO A LA APLICACIÓN
*
SUBROUTINE CMPT.REPORTE
*
* First Release :
* Developed for :
* Developed by :
*
$INSERT I_COMMON
$INSERT I_EQUATE
*
*************************************************************************

GOSUB DEFINE.PARAMETERS

IF LEN(V$FUNCTION) GT 1 THEN
GOTO V$EXIT
END

CALL MATRIX.UPDATE

GOSUB INITIALISE ;* Special Initialising

*************************************************************************

* Main Program Loop

LOOP

CALL RECORDID.INPUT

UNTIL MESSAGE = 'RET' DO

V$ERROR = ''

IF MESSAGE = 'NEW FUNCTION' THEN

GOSUB CHECK.FUNCTION ;* Special Editing of Function

IF V$FUNCTION EQ 'E' OR V$FUNCTION EQ 'L' THEN


CALL FUNCTION.DISPLAY
V$FUNCTION = ''
END

END ELSE

GOSUB CHECK.ID ;* Special Editing of ID


IF V$ERROR THEN GOTO MAIN.REPEAT

CALL RECORD.READ
IF MESSAGE = 'REPEAT' THEN
GOTO MAIN.REPEAT
END
GOSUB CHECK.RECORD ;* Special Editing of Record
IF V$ERROR THEN GOTO MAIN.REPEAT

CALL MATRIX.ALTER

GOSUB PROCESS.DISPLAY ;* For Display applications

LOOP
GOSUB PROCESS.FIELDS ;* ) For Input
GOSUB PROCESS.MESSAGE ;* ) Applications
WHILE MESSAGE = 'ERROR' DO REPEAT

END

MAIN.REPEAT:

REPEAT

V$EXIT:
RETURN ;* From main program

*************************************************************************
* S u b r o u t i n e s *
*************************************************************************

PROCESS.FIELDS:

* Input or display the record fields.

LOOP

IF SCREEN.MODE EQ 'MULTI' THEN


IF FILE.TYPE EQ 'I' THEN
CALL FIELD.MULTI.INPUT
END ELSE
CALL FIELD.MULTI.DISPLAY
END
END ELSE
IF FILE.TYPE EQ 'I' THEN
CALL FIELD.INPUT
END ELSE
CALL FIELD.DISPLAY
END
END

UNTIL MESSAGE <> "" DO


GOSUB CHECK.FIELDS ;* Special Field Editing
IF T.SEQU NE '' THEN T.SEQU<-1> = A + 1
REPEAT
RETURN
*************************************************************************
PROCESS.MESSAGE:
* Processing after exiting from field input (PF5)
IF MESSAGE = 'VAL' THEN
MESSAGE = ''
BEGIN CASE
CASE V$FUNCTION EQ 'D'
REM > GOSUB CHECK.DELETE ;* Special Deletion checks
CASE V$FUNCTION EQ 'R'
GOSUB CHECK.REVERSAL ;* Special Reversal checks
CASE OTHERWISE
GOSUB CROSS.VALIDATION ;* Special Cross Validation
END CASE
IF NOT(V$ERROR) THEN
GOSUB BEFORE.UNAU.WRITE ;* Special Processing before write
END
IF NOT(V$ERROR) THEN
CALL UNAUTH.RECORD.WRITE
IF MESSAGE <> "ERROR" THEN
GOSUB AFTER.UNAU.WRITE ;* Special Processing after write
END
END
END

IF MESSAGE = 'AUT' THEN


GOSUB AUTH.CROSS.VALIDATION ;* Special Cross Validation
IF NOT(V$ERROR) THEN
GOSUB BEFORE.AUTH.WRITE ;* Special Processing before write
END

IF NOT(V$ERROR) THEN

CALL AUTH.RECORD.WRITE

IF MESSAGE <> "ERROR" THEN


GOSUB AFTER.AUTH.WRITE ;* Special Processing after write
END
END
END
RETURN

*************************************************************************
DEFINE.PARAMETERS:
* SEE 'I_RULES' FOR DESCRIPTIONS *

CALL CMPT.REPORTE.FIELD.DEFINITIONS
RETURN
*************************************************************************
INITIALISE:
*
RETURN
*************************************************************************
CHECK.FUNCTION:
*
RETURN
CHECK.ID:
*
* Validation and changes of the ID entered. Set ERROR to 1 if in error.

RETURN
*******************************************************************
CHECK.RECORD:
*
RETURN
*******************************************************************
PROCESS.DISPLAY:
*
RETURN
*******************************************************************
CHECK.FIELDS:
*
RETURN
******************************************************************
CHECK.DELETE:
*
RETURN
*******************************************************************
CHECK.REVERSAL:
*
RETURN
********************************************************************
CROSS.VALIDATION:
*
RETURN
********************************************************************
BEFORE.UNAU.WRITE:
*
RETURN
********************************************************************
AFTER.UNAU.WRITE:
*
RETURN
********************************************************************
AUTH.CROSS.VALIDATION:
*
RETURN
********************************************************************
BEFORE.AUTH.WRITE:
*
RETURN
********************************************************************
AFTER.AUTH.WRITE:
*
RETURN
*********************************************************************
END
CODIGO DE LA DEFINICION DE LOS CAMPOS DE
APLICACIÓN
*
SUBROUTINE CMPT.REPORTE.FIELD.DEFINITIONS

$INSERT I_COMMON
$INSERT I_EQUATE

$INSERT I_F.ENQUIRY

*-----------------------------------------------------------------------------
GOSUB INITIALISE

GOSUB DEFINE.FIELDS

RETURN

*-----------------------------------------------------------------------------
INITIALISE:
*-----------------------------------------------------------------------------
RETURN
*-----------------------------------------------------------------------------
DEFINE.FIELDS:
*-----------------------------------------------------------------------------
ID.F = "" ; ID.N = "" ; ID.T = ""
MAT F = "" ; MAT N = "" ; MAT T = ""
MAT CHECKFILE = ""
*========================================================================

ID.F = "REPORTE.ID" ; ID.N = "20" ; ID.T = "A"


*
Z=0
*
Z += 1 ; F(Z) = "NOMBRE.REPORTE" ; N(Z) = "35" ; T(Z) = "A"

* ENQUIRY (Id de ENQUIRY)


Z += 1 ; F(Z) = "XX.ENQUIRY" ; N(Z) = "50" ; T(Z) = "A"
CHECKFILE(Z) = 'ENQUIRY' : FM : ENQ.FILE.NAME

Z += 1 ; F(Z) = "REPORTE" ; N(Z) = "35" ; T(Z) = "A"


Z += 1 ; F(Z) = "CLASE" ; N(Z) = "35" ; T(Z) = "A"
Z += 1 ; F(Z) = "SUBCLASE" ; N(Z) = "35" ; T(Z) = "A"
Z += 1 ; F(Z) = "ESTATUS" ; N(Z) = "2" ; T(Z) = "A"
Z += 1 ; F(Z) = "XX.AREA" ; N(Z) = "20" ; T(Z) = "A"
Z += 1 ; F(Z) = "XX.PUESTO" ; N(Z) = "4" ; T(Z) = "A"
Z += 1 ; F(Z) = "PERMISOS" ; N(Z) = "2" ; T(Z) = "A"

V = Z + 9
RETURN
*
END
 IN2 Esta característica del campo permite tres tipos de edición:
o Números.
o Números dentro de un rango especificado
o Valores relacionados en una tabla especificada

 IN2A Esta característica se utiliza para crear un tipo de dato con las siguientes
características; permite caracteres alfa-numéricos, así como los
siguientes caracteres '!"#$%&'()*+,-./[\]:;<=>?@^'
 IN2AA Este tipo de dato tiene las mismas características que el IN2A, solo que el
primer carácter del string debe ser 'A... Z' o 'a... z'
 IN2AAA Permite ingresar strings que contengan solo 'A... Z' o 'a... z'
 IN2S Permite introducir caracteres SWIFT, solo los siguientes caracteres
pueden ser aceptados 'A... Z', '0... 9', espacio ó '()'+,-.'. ‘–‘ no puede
ser aceptado como primer carácter.
 IN2SS Permite los mismos caracteres del IN2S, pero el primer carácter del
string debe ser 'A... Z'
 IN2SSS Permite introducir un string que contenga los siguientes valores 'A... Z'
 IN2MNE Esta rutina permite introducir un mnemónico valido.
 IN2CCY Permite monedas validas según la norma ISO.
 IN2R Esta rutina permite introducir 12 caracteres numéricos, pero solo permite
un máximo de 8 dígitos antes del punto decimal y un máximo de 6 dígitos
para decimales.

También podría gustarte