Sie sind auf Seite 1von 24

S18FFMASCO -

ARCHIVO FSICO MAESTRO DE MASCOTAS.


R REGMASCO
IDMAS
NOMMAS
FECNAC
ESPMAS
FECCRE
HORCRE
USUCRE
FECMOD
HORMOD
USUMOD
K IDMAS

10A
20A
8S
3A
8S
6S
10A
8S
6S
10A

0
0
0
0
0

TEXT('REGISTRO DE ARCHIVO')
COLHDG('IDENTIFICADOR' 'MASCOTA')
COLHDG('NOMBRE' 'MASCOTA')
COLHDG('FECHA' 'NACIMIENTO')
COLHDG('ESPECIE' 'MASCOTA')
COLHDG('FECHA' 'CREACION')
COLHDG('HORA' 'CREACION')
COLHDG('USUARIO' 'CREACION')
COLHDG('FECHA' 'MODIFICACION')
COLHDG('HORA' 'MODIFICACION')
COLHDG('USUARIO' 'MODIFICACION')

S18LFMASCO - ARCHIVO LGICO MAESTRO DE MASCOTAS ORDENADO ASCENDENTEMENTE POR NOMBRE


R REGMASCO
K NOMMAS

PFILE(S18FFMASCO)

S18FFESPEC - ARCHIVO MAESTRO DE ESPECIES


R REGESPEC
IDESP
NOMESP
K IDESP

3A
40A

COLHDG('IDENTIFICADOR' 'ESPECIES')
COLHDG('NOMBRE' 'ESPECIE')

S18DSMASCO PANTALLA PARA EL MAESTRO DE ESPECIES


A*%%TS
A*%%EC
A
A
A*%%TS
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A*%%TS
A
A
A
A
A
A
A
A
A
A
A

SD

20110724

123017

JRAMIREZ

REL-V6R1M0

5761-WDS

DSPSIZ(24 80 *DS3)
R REGENC
SD 20110724
ENCPGM
ENC01
ENC02
ENC03

103541 JRAMIREZ
REL-V6R1M0
10A O 2 2
50A O 1 16DSPATR(HI)
50A O 2 16DSPATR(HI)
50A O 3 16DSPATR(HI)
2 4DATE
EDTCDE(Y)
1 2USER
4 2'

5761-WDS

'
DSPATR(UL)
1 71DATE
EDTCDE(Y)
2 71TIME
SD

R REGTCLSFL
20110724 104856

JRAMIREZ
21

22
22
22
22

REL-V6R1M0
OVERLAY
3'

'
DSPATR(UL)
3'F3:'
DSPATR(HI)
7'Salir'
16'F5:'
DSPATR(HI)
20'Renovar'

5761-WDS
-

A
A
A
A
A
A
A
A
A
A
A*%%TS
A
A
A
A*%%TS
A
A
A
A
A
A
A
A*%%TS
A
A
A
A
A
A
A
A
A*%%TS
A
A
A
A
A

22 67'F12:'
DSPATR(HI)
22 72'Cancelar'
22 45'Intro:'
DSPATR(HI)
22 52'Continuar'
22 31'F6:'
DSPATR(HI)
22 35'Crear'
SD

R REGNDAT
20110724

100016

JRAMIREZ
15

R WINMSG
SD 20110724
WIMSJ01
WIMSJ02
WIMSJ03
WIMSJ04
R WINVAL
SD 20110724

110322

JRAMIREZ

50A
50A
50A
50A
105442

O
O
O
O

JRAMIREZ

WIVAL01
WIVAL02

50A
50A

O
O

WIRES
R REGDET
SD 20110724

1A

123017

3
4
5
6

REL-V6R1M0 5761-WDS
OVERLAY
4'No hay registros para la consulta'
REL-V6R1M0 5761-WDS
WINDOW(8 12 8 54)
OVERLAY
3DSPATR(HI)
3DSPATR(HI)
3DSPATR(HI)
3
REL-V6R1M0 5761-WDS
WINDOW(8 13 8 54)
OVERLAY

3 3
4 3
6 26'S/N'
DSPATR(HI)
6 30VALUES('S' 'N' ' ')

JRAMIREZ

REL-V6R1M0 5761-WDS
CA03(03 'Salir')
CA12(12 'Cancelar')
OVERLAY
7'Nombre mascota..:'
DSPATR(HI)

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

10
11
8
15
80
16
80
17
80
18
80
PIUSRCRE

10A

O 16

80
PIFECCRE

8Y 0O 17

PIHORCRE

6Y 0O 18

80
80
15
80
16
80
PIUSRMOD

10A

O 16

80
17
80
PIFECMOD

8Y 0O 17

80
18
80
PIHORMOD

6Y 0O 18

80
PIIDMAS

10D

7'Fecha Nacimiento:'
DSPATR(HI)
7'Especie Mascota.:'
DSPATR(HI)
7'Id Mascota......:'
DSPATR(HI)
7'Creacin'
DSPATR(HI)
DSPATR(ND)
7'Usuario:'
DSPATR(ND)
7'Fecha..:'
DSPATR(ND)
7'Hora...:'
DSPATR(ND)
16
DSPATR(ND)
16EDTWRD('
- - ')
DSPATR(ND)
16EDTWRD(' : : ')
DSPATR(ND)
29'Modificacin'
DSPATR(HI)
DSPATR(ND)
29'Usuario:'
DSPATR(ND)
38
DSPATR(ND)
29'Fecha..:'
DSPATR(ND)
38EDTWRD('
- - ')
DSPATR(ND)
29'Hora...:'
DSPATR(ND)
38EDTWRD(' : : ')
DSPATR(ND)
25

A 50
A
A 51
A
A 70
A
A 52
A
A 71
A
A 53
A
A 54
A
A 71
A
A 55
A
A 56
A
A 71
A
A
A*%%TS
A
A
A
A
A
A
A
A
A
A
A 75
A
A 75

ERRMSG('Debe ingresar una identificacin de Mascota' 50)


ERRMSG('Ya existe una mascota con esa identificacin' 51)
DSPATR(PR)
PINOMMAS

PIFECNAC

PIESPMAS

20A

9 25

ERRMSG('Debe ingresar un nombre de Mascota' 52)


DSPATR(PR)
8Y 0B 10 25EDTCDE(4)
ERRMSG('Debe ingresar la fecha de nacimiento de la Mascota' 53)
ERRMSG('El formato de la fecha debeser AAAAMMDD' 54)
DSPATR(PR)
3A B 11 25
ERRMSG('Debe ingresar el cdigo de la especie de la mascota' 55)
ERRMSG('El cdigo de especie ingresado no es vlido' 56)
DSPATR(PR)
40A O 11 29

PIDESESP
R REGTCLDET
SD 20110724 120155

JRAMIREZ
21

22
22
22
22

REL-V6R1M0
OVERLAY
3'

'
DSPATR(UL)
67'F12:'
DSPATR(HI)
72'Cancelar'
32'Intro:'
DSPATR(HI)
DSPATR(ND)
39'Continuar'
DSPATR(ND)

5761-WDS
-

A
A
A
A
A*%%TS
A
A
A
A
A
A*%%TS
A
A
A
A
A
A
A
A 90
A 91
A 92
A 93
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

22

3'F3:'
DSPATR(HI)
22 7'Salir'
R REGDAT
SFL
SD 20110724 114329 JRAMIREZ
REL-V6R1M0 5761-WDS
PDOPC
1A B 12 5VALUES('2' '4' '5' ' ')
PDIDMAS
10A O 12 10
PDNOMMAS
20A O 12 26
PDESPMAS
3A O 12 52
R REGCTL
SFLCTL(REGDAT)
SD 20110724 105059 JRAMIREZ
REL-V6R1M0 5761-WDS
SFLSIZ(9999)
SFLPAG(0008)
CA03(03 'Salir')
CA05(05 'Renovar')
CA06(06 'Crear')
CA12(12 'Cancelar')
OVERLAY
SFLDSP
SFLDSPCTL
SFLCLR
SFLEND
6 4'Id ='
PCIDMAS
10A B 6 9DSPATR(HI)
6 21'Nombre ='
PCNOMMAS
20A B 6 30DSPATR(HI)
8 4'Opciones:'
DSPATR(HI)
9 2'
'
DSPATR(UL)
DSPATR(HI)
11 4'Opc'
DSPATR(HI)
11 10'Identificador'
DSPATR(HI)

A
A
A
A
A
A
A
A
A
A
A
A
A

11 26'Nombre Mascota'
DSPATR(HI)
11 50'Especie'
DSPATR(HI)
8 15'2='
DSPATR(HI)
8 18'Modificar'
8 29'4='
DSPATR(HI)
8 32'Eliminar'
8 42'5='
DSPATR(HI)
8 45'Consultar'

S18RMMASCO MANTENIMIENTO AL MAESTRO DE ESPECIES


* -------------------------------------------------------------* PROGRAMA: S18RMMASCO
* AUTOR...: Personalsoft S.A.S. - Juan Camilo Ramirez
* Fecha...: Julio de 2011
* Descrip.: Programa de mantenimiento al archivo maestro de
*
mascotas S18FFMASCO. Crear, Modificar, Consultar y
*
Eliminar, son las opciones habilitadas.
* -------------------------------------------------------------* Indica.: 90 - SFLDSP
92 - SFLCLR
*
91 - SFLDSPCTL
93 - SFLEND
*--------------------------------------------------------------*- DIRECTIVAS DE COMPILACIN
HOption(*NoDebugIo:*SrcStmt)
HDftActGrp(*NO)
HFixnbr(*Zoned)
HDatFmt(*Iso)
HDatEdit(*Ymd)
*- DEFINICIN DE ARCHIVOS
*- Pantalla para el mantenimiento
FS18DSMASCOCF
E
WORKSTN SFILE(REGDAT:Nrr)
*- Archivo maestro de mascotas
FS18FFMASCOUF A E
K DISK
*- Archivo de mascotas ordenado por nomber
FS18LFMASCOIF
E
K DISK
RENAME(REGMASCO:REGLMASCO)
*- Archivo de especies de mascotas
FS18FFESPECIF
E
K DISK
PREFIX(ESP_)

*- DEFINICIN DE PROCEDIMIENTOS
DEncabezado
PR
DCargarSubfile
PR
DCrear
PR
DModificar
PR
DConsultar
PR
DEliminar
PR
DValidar
PR
DCentrar
Pr
50A
DwPMsg
50A
*- Estructura del Sistema
DSys
SDs
D Pgm
*Proc
D Status
11
D Cpf
40
D CpfDescrip
91
D Job
244
D Usuario
254
D Nbr
264
D LastFile
175
D Todo
1

15S 0
46
170
253
263
269S 0
184
500

*- DEFINICIN DE VARIABLES
*- Trabajar con SubFile
D Nrr
S

4S 0

D
D
D
D

*- Variables de Trabajo
wPosIDE
S
wPosNOM
S
IndDatosOK
S
IndMOD
S

Value

Qualified

10A
20A
N
N

*------------------------------------------------------------------*
*- BLOQUE PRINCIPAL DEL PROGRAMA
*------------------------------------------------------------------*
/Free
//Asignar valores a los ttulos
Encabezado();
//Ciclo principal hasta presionar F3 o F12
DoW Not *IN03 And Not *In12;
//Mostrar encabezado y teclas de funcin
Write REGENC;
Write REGTCLSFL;
//Cargar registros del subfile
CargarSubfile();
//Entregar Ejecucin al usuario
*In91 = *On;
ExFmt REGCTL;
*In91 = *Off;
//Validar opcin seleccionada
Select;
When *In03;
When *In12;
//Cargar nuevamente el subfile
When *In05;
Clear wPosNOM;
Clear wPosIDE;
Clear PCIDMAS;
Clear PCNOMMAS;
//Crear un registro en el archivo
When *In06;
Crear();
//Presion Intro
Other;
//Almacenar posicionadores en variables de trabajo
EvalR wPosIDE = '0000000000' + %Trim(PCIDMAS);

wPosNOM = %Trim(PCNOMMAS);
Clear PCIDMAS;
Clear PCNOMMAS;
//Si posicionadores no tienen valor, y subfile tiene
//por lo menos un registro, se evalan las posibles
//opciones seleccionadas
If NRR > *Zeros
And
wPosIDE = '0000000000' And
wPosNOM = *Blanks;
//Leer registros que hayan cambiado en Subfile
ReadC REGDAT;
Dow Not %EoF();
//Evaluar opcin seleccionada
Select;
When PDOPC = '2';
Modificar();
When PDOPC = '4';
Eliminar();
When PDOPC = '5';
Consultar();
EndSl;
ReadC REGDAT;
EndDo;
EndIf;
EndSl;
EndDo;
*InLr = *On;
/End-Free
*------------------------------------------------------------------*
*--------------------------------------------------------------* Centrar texto en cadena alfanumrica de long 50.
*--------------------------------------------------------------PCentrar
B
DCentrar
Pi
50A

DwPMsg
D ConBlancos
D I
D Longitud
D Texto
/Free

S
S
S
S

50A
Value
2 0
2 0
2 0
50A

//Variables de Trabajo
Clear Texto;
Clear ConBlancos;
I = 50;
wPMsg = %Trim(wPMsg);
//Contar espacios en blanco
Dow I > 0 And %SubSt(WPMsg:I:1) = ' ';
ConBlancos = ConBlancos + 1;
I = I - 1;
EndDo;
//Calcular longitud del mensaje
Longitud = 50 - ConBlancos;
//Calcular posicin de Inicio
Eval(H) I = ConBlancos / 2;
If I <= *Zeros;
I = 1;
EndIf;
//Centrar el valor
%SubSt(Texto:I:Longitud) = WpMsg;
//Devolver cadena centrada
Return
Texto;
/End-Free
PCentrar
E
*---------------------------------------------------------------

*--------------------------------------------------------------* Asignar valores a los ttulos


*--------------------------------------------------------------PEncabezado
B
/Free
ENCPGM = Sys.PGM;
ENC01 = Centrar('Personalsoft S.A.S.');
ENC02 = Centrar('Prctica Semillero en AS400');
ENC03 = Centrar('Mantenimiento Maestro de Mascotas');
/End-Free
PEncabezado
E
*--------------------------------------------------------------*--------------------------------------------------------------* Cargar registros al subfile de datos
*--------------------------------------------------------------PCargarSubfile
B
/Free
//Variables de trabajo y Campos
Clear PCIDMAS;
Clear PCNOMMAS;
Clear Nrr;
Clear PDOPC;
//Limpiar registros del subfile
*In92 = *On;
Clear Nrr;
Write REGCTL;
*In92 = *Off;
//Ubicarse en el archivo, dependiendo de posicionadores
Select;
When wPosIDE <> '0000000000' And wPosIDE <> *Blanks;
SetLl wPosIDE S18FFMASCO;
When wPosNOM <> *Blanks;

SetLl wPosNOM S18LFMASCO;


Other;
SetLl *Loval S18FFMASCO;
EndSl;
//Leer archivo, dependiendo de posicionadores
If wPosIDE = '0000000000' And wPosNOM <> *Blanks;
Read S18LFMASCO;
Else;
Read(N) S18FFMASCO; //Leer sin bloquear registros
EndIf;
Dow Not %Eof() And Nrr < 9999;
Nrr += 1;
PDIDMAS = %Trim(IDMAS);
PDNOMMAS = %Trim(NOMMAS);
PDESPMAS = %Trim(ESPMAS);
Write RegDat;
//Leer archivo, dependiendo de posicionadores
If wPosIDE = *Blanks And wPosNOM <> *Blanks;
Read S18LFMASCO;
Else;
Read(N) S18FFMASCO; //Leer sin bloquear registros
EndIf;
EndDo;
//Validar si se han
If Nrr > *Zeros;
*In90 = *On;
*In93 = *On;
Else;
*In90 = *Off;
*In93 = *Off;
Write REGNDAT;
EndIf;

cargado registros
//Mostrar Subfile con registros
//Controlador de Paginacin
//Ocultar Subfile con registros
//No Controlar Paginacin
//Registro "No hay datos"

//Limpiar posicionadores de trabajo


Clear wPosIDE;
Clear wPosNOM;
/End-Free
PCargarSubfile
E
*--------------------------------------------------------------*--------------------------------------------------------------* Crear un registro en el archivo
*--------------------------------------------------------------PCrear
B
/Free
//Limpiar Registro de Creacin
Clear REGDET;
//Ocultar Campos de auditora
*IN80 = *On;
//Mostrar Encabezado y Teclas de Funcin
Write REGENC;
Write REGTCLDET;
//Ciclo Principal de la opcin, hasta presionar F3 o F12
DoW Not *IN03 And Not *In12;
Write REGDET;
ExFmt REGDET;
//Validar tecla de funcin
Select;
When *In03;
When *In12;
Other;
//Validar informacin ingresada
IndMOD = *Off;
Validar();
//Datos Correctos, solicitar confirmacin

If IndDatosOK;
Clear WINVAL;
WIVAL01 = Centrar('Est seguro de crear el registro?');
DoU WIRES = 'S' Or WIRES = 'N';
ExFmt WINVAL;
EndDo;
//Usuario confirma, se crea el registro
If WIRES = 'S';
Clear REGMASCO;
EvalR IDMAS = '0000000000' + %Trim(PIIDMAS);
NOMMAS = %Trim(PINOMMAS);
FECNAC = PIFECNAC;
ESPMAS = PIESPMAS;
//Campos de auditora
FECCRE = %Int(%Char(%Date():*Iso0));
HORCRE = %Int(%Char(%Time():*Iso0));
USUCRE = Sys.Usuario;
//Escritura controlada en el archivo
Write(E) REGMASCO;
//Ventana de Resultado
Clear WINMSG;
WIMSJ04 = Centrar('Presione INTRO para continuar');
If %Error();
WIMSJ01 = Centrar('Ha ocurrido un error al crear');
WIMSJ02 = Centrar('el registro en el archivo');
Else;
WIMSJ01 = Centrar('Se ha creado exitosamente');
WIMSJ02 = Centrar('el registro en el archivo');
EndIf;
ExFmt WINMSG;
//Se interrumpe el ciclo de la opcin
Leave;
EndIf;

EndIf;
EndSl;
EndDo;
//Restaurar Campos de auditora
*IN80 = *Off;
//Garantizar tecla F12 inactiva
*In12 = *Off;
/End-Free
PCrear
E
*--------------------------------------------------------------*--------------------------------------------------------------* Modificar un registro del archivo
*--------------------------------------------------------------PModificar
B
/Free
//Bloquear registro y Cargar a la pantalla los datos
Clear REGDET;
Chain PDIDMAS S18FFMASCO;
If %Found();
PIIDMAS = IDMAS;
PINOMMAS = NOMMAS;
PIFECNAC = FECNAC;
PIESPMAS = ESPMAS;
EndIf;
//Ocultar Campos de auditora
*IN80 = *On;
//Bloquear clave primaria
*IN70 = *On;
//Mostrar Encabezado y Teclas de Funcin
Write REGENC;
Write REGTCLDET;

//Ciclo Principal de la opcin, hasta presionar F3 o F12


DoW Not *IN03 And Not *In12;
Write REGDET;
ExFmt REGDET;
//Validar tecla de funcin
Select;
When *In03;
When *In12;
Other;
//Validar informacin ingresada, pero no validar
//la clave primaria, porque esta bloqueada
IndMOD = *On;
Validar();
IndMOD = *Off;
//Datos Correctos, solicitar confirmacin
If IndDatosOK;
Clear WINVAL;
WIVAL01 = Centrar('Est seguro de modificar el registro?');
DoU WIRES = 'S' Or WIRES = 'N';
ExFmt WINVAL;
EndDo;
//Usuario confirma, se actualiza el registro
If WIRES = 'S';
NOMMAS = %Trim(PINOMMAS);
FECNAC = PIFECNAC;
ESPMAS = PIESPMAS;
//Campos de auditora
FECMOD = %Int(%Char(%Date():*Iso0));
HORMOD = %Int(%Char(%Time():*Iso0));
USUMOD = Sys.Usuario;
//ACtualizacin controlada en el archivo
Update(E) REGMASCO;

//Ventana de Resultado
Clear WINMSG;
WIMSJ04 = Centrar('Presione INTRO para continuar');
If %Error();
WIMSJ01 = Centrar('Ha ocurrido un error '+
'al modificar');
WIMSJ02 = Centrar('el registro en el archivo');
Else;
WIMSJ01 = Centrar('Se ha modificado exitosamente');
WIMSJ02 = Centrar('el registro en el archivo');
EndIf;
ExFmt WINMSG;
//Se interrumpe el ciclo de la opcin
Leave;
EndIf;
EndIf;
EndSl;
EndDo;
//Restaurar Campos de auditora
*IN80 = *Off;
//Desbloquear clave primaria
*IN70 = *Off;
//Garantizar tecla F12 inactiva
*In12 = *Off;
/End-Free
PModificar
E
*--------------------------------------------------------------*--------------------------------------------------------------* Consultar la informacin de un registro determinado
*--------------------------------------------------------------PConsultar
B
/Free
//Cargar a la pantalla los datos del registro, sin bloquearlo

Clear REGDET;
Chain(N) PDIDMAS S18FFMASCO;
If %Found();
PIIDMAS = IDMAS;
PINOMMAS = NOMMAS;
PIFECNAC = FECNAC;
PIESPMAS = ESPMAS;
//Obtener descripcin de la especie. Tener en cuenta que
//el archivo tiene el prefijo ESP_
Chain PIESPMAS S18FFESPEC;
If %Found();
PIDESESP = %Trim(ESP_NOMESP);
EndIf;
//Campos de auditora
PIUSRCRE = USUCRE;
PIFECCRE = FECCRE;
PIHORCRE = HORCRE;
PIUSRMOD = USUMOD;
PIFECMOD = FECMOD;
PIHORMOD = HORMOD;
EndIf;
//Mostrar
*IN80 =
//Ocultar
*IN75 =

Campos de auditora
*Off;
Tecla INTRO en Teclas de funcin
*On;

//Bloquear clave primaria


*IN70 = *On;
//Bloquear los dems campos
*IN71 = *On;
//Ciclo Principal de la opcin, hasta presionar F3 o F12
DoW Not *IN03 And Not *In12;
//Mostrar Encabezado y Teclas de Funcin

Write REGENC;
Write REGTCLDET;
Write REGDET;
ExFmt REGDET;
//Validar tecla de funcin
Select;
When *In03;
When *In12;
Other;
EndSl;
EndDo;
//Ocultar Campos de auditora
*IN80 = *Off;
//Mostrar tecla INTRO en teclas de funcin
*IN75 = *Off;
//Desbloquear clave primaria
*IN70 = *Off;
//Desbloquear los dems campos
*IN71 = *Off;
//Garantizar tecla F12 inactiva
*In12 = *Off;
/End-Free
PConsultar
E
*--------------------------------------------------------------*--------------------------------------------------------------* Eliminar un registro determinado del archivo
*--------------------------------------------------------------PEliminar
B
/Free
//Ventana de confirmacin de Eliminacin
Clear WINVAL;
WIVAL01 = Centrar('Est seguro de eliminar el registro?');
DoU WIRES = 'S' Or WIRES = 'N';

ExFmt WINVAL;
EndDo;
//Usuario confirma, se elimina el registro
If WIRES = 'S';
Chain PDIDMAS S18FFMASCO;
If %Found();
//Eliminacin controlada en el archivo
Delete(E) REGMASCO;
//Ventana de Resultado
Clear WINMSG;
WIMSJ04 = Centrar('Presione INTRO para continuar');
If %Error();
WIMSJ01 = Centrar('Ha ocurrido un error al eliminar');
WIMSJ02 = Centrar('el registro en el archivo');
Else;
WIMSJ01 = Centrar('Se ha eliminado exitosamente');
WIMSJ02 = Centrar('el registro en el archivo');
EndIf;
ExFmt WINMSG;
Else;
//Al momento de eliminar el registro, no existe ya
Clear WINMSG;
WIMSJ01 = Centrar('No se ha encontrado el registro');
WIMSJ02 = Centrar('a eliminar');
WIMSJ04 = Centrar('Presione INTRO para continuar');
ExFmt WINMSG;
EndIf;
EndIf;
/End-Free
PEliminar
E
*--------------------------------------------------------------*---------------------------------------------------------------

* Validar la informacin de un registro


*--------------------------------------------------------------PValidar
B
DwIDTempo
S
10A
/Free
//Desactivar los indicadores de Error
IndDatosOK = *Off;
*In50 = *Off;
*In51 = *Off;
*In52 = *Off;
*In53 = *Off;
*In54 = *Off;
*In55 = *Off;
*In56 = *Off;
//Validar la clave primaria, unicamente en la opcin CREAR
If IndMOD = *Off;
//Identificacin Obligatoria
If PIIDMAS = *Blanks;
*In50 = *On;
Return;
EndIf;
//Identificacin no debe estar repetida
EvalR wIDTempo = '0000000000' + %Trim(PIIDMAS);
Chain(N) wIDTempo S18FFMASCO;
If %Found();
*In51 = *On;
Return;
EndIF;
//Identificacin con ceros a la izquierda
PIIDMAS = wIDTempo;
EndIf;
//Nombre de Mascota requerido
If PINOMMAS = *Blanks;

*In52 = *On;
Return;
EndIf;
//Fecha de Nacimiento requerida
If PIFECNAC = *Zeros;
*In53 = *On;
Return;
EndIf;
//Fecha de Nacimiento en Formato AAAAMMDD
Test(DE) *Iso PIFECNAC;
If %Error();
*In54 = *On;
Return;
EndIf;
//Cdigo de Especie requerido
If PIESPMAS = *Blanks;
*In55 = *On;
Return;
EndIf;
//Cdigo de Especie debe existir en Maestro de Especies
Chain PIESPMAS S18FFESPEC;
If Not %Found();
*In56 = *On;
Return;
EndIf;
//Todas las validaciones son correctas
IndDatosOK = *On;
/End-Free
PValidar
E
*---------------------------------------------------------------

Das könnte Ihnen auch gefallen