c0924494 PDF
c0924494 PDF
c0924494 PDF
IBM
Programacin con
VisualAge para RPG
Versin 4.5.1 para Windows
SC10-3067-04
AS/400e
IBM
Programacin con
VisualAge para RPG
Versin 4.5.1 para Windows
SC10-3067-04
Importante
Antes de utilizar esta informacin y el producto al que hace referencia, asegrese de leer la informacin general en Avisos
en la pgina 451.
Contenido
Acerca de este manual . . . . . . . . ix
A quin va dirigido este manual . . .
Prerrequisitos e informacin relacionada .
Cmo utilizar este manual . . . . .
La biblioteca VisualAge RPG . . . . .
Cmo enviar comentarios . . . . . .
Acceso a la informacin en lnea . . .
Utilizacin de manuales en lnea . .
Publicaciones en formato PDF . . .
Utilizacin de ayuda en lnea . . .
.
.
.
.
.
.
.
.
.
. ix
. ix
. ix
. . . . x
. . . . xi
. . . . xii
. . . . xii
. . . . xii
. . . . xii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
5
5
5
6
6
6
6
6
7
7
8
9
. 11
. 11
. 12
.
.
.
.
.
.
.
12
12
15
15
15
16
17
Captulo 2. Planificacin de la
aplicacin . . . . . . . . . . . . . 19
Habilitacin de aplicaciones seguras de Java
Decidir qu funciones se van a proporcionar
Ayuda a los usuarios . . . . . . . .
Mantener un diseo de ventana sencillo . .
Nmero de ventanas . . . . . . .
Contenido de cada ventana . . . . .
Planificar el cdigo con eficacia. . . . .
Copyright IBM Corp. 1994, 2000
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
19
20
20
20
21
.
.
.
.
.
.
.
.
.
.
.
.
. 21
. 22
. 22
25
25
26
27
27
29
29
30
30
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
34
34
34
34
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
35
35
35
37
37
37
38
38
39
39
39
40
41
41
41
42
iii
iv
46
47
47
48
49
50
51
51
52
53
55
56
56
56
57
58
58
58
59
59
59
59
59
60
61
61
62
62
63
64
64
65
66
67
67
71
72
73
73
73
73
74
74
75
75
77
78
78
78
79
79
79
Cambio de color . . . . . . . . . .
Eleccin de fonts . . . . . . . . . .
Cmo evitar la entrada de datos por parte del
usuario . . . . . . . . . . . . .
Ejemplo de edicin de mltiples lneas . . .
Cuaderno. . . . . . . . . . . . . .
Cambio del nfasis del font. . . . . . .
Pgina de cuaderno . . . . . . . . . .
Mostrar el texto del separador . . . . . .
Establecimiento de un nemotcnico . . . .
Pgina de cuaderno con lienzo . . . . . .
Interfaz ODBC/JDBC . . . . . . . . . .
Conexin a una base de datos ODBC . . .
Creacin de un conjunto de registros . . .
Acceso a los datos de una tabla . . . . .
Tipos de datos . . . . . . . . . . .
Recuperacin de las filas de una tabla . . .
Actualizacin de los datos de una fila . . .
Supresin de una fila . . . . . . . . .
Ejemplo de componente Interfaz ODBC/JDBC
Recuadro de contorno . . . . . . . . .
Valores de altura (Height) y anchura (Width)
especiales. . . . . . . . . . . . .
Men emergente . . . . . . . . . . .
Barra de progreso . . . . . . . . . . .
Ejemplo de barra de progreso . . . . . .
Pulsador . . . . . . . . . . . . . .
Establecimiento de un pulsador por omisin
Establecimiento de un nemotcnico . . . .
Asignacin de teclas de mandato . . . . .
Sealizacin de eventos . . . . . . . .
Botn de seleccin. . . . . . . . . . .
Establecimiento de un nemotcnico . . . .
Agrupacin de botones de seleccin . . . .
Establecimiento del estado de un botn de
seleccin . . . . . . . . . . . . .
Sealizacin de eventos . . . . . . . .
Graduador . . . . . . . . . . . . .
Obtencin y establecimiento del valor del
graduador . . . . . . . . . . . .
Sealizacin de eventos . . . . . . . .
Ejemplo de graduador . . . . . . . .
Selector cclico . . . . . . . . . . . .
Establecimiento de valores del selector cclico
Obtencin del valor del selector cclico . . .
Cmo evitar la entrada de datos por parte del
usuario . . . . . . . . . . . . .
Ejemplo de selector cclico . . . . . . .
Texto esttico . . . . . . . . . . . .
Cambio del texto de un componente texto
esttico . . . . . . . . . . . . .
Obtencin de valores de texto esttico . . .
Obtencin y establecimiento de informacin
para una ventana . . . . . . . . . .
Edicin de la salida . . . . . . . . .
Barra de estado. . . . . . . . . . . .
Ejemplo de Barra de estado . . . . . .
Subarchivo . . . . . . . . . . . . .
Creacin de un componente subarchivo . .
Nmero mximo de campos por subarchivo .
. 111
. 111
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
111
112
115
115
116
116
116
117
118
119
119
120
121
121
122
122
123
. 131
.
.
.
.
.
.
.
.
.
.
.
131
132
133
133
134
134
134
135
135
136
136
136
. 138
. 138
. 139
.
.
.
.
139
140
140
145
145
. 146
. 146
. 146
. 149
. 149
. 149
.
.
.
.
.
.
.
150
150
151
151
152
153
153
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
153
153
153
154
154
154
155
155
155
155
165
166
167
167
167
168
168
.
.
.
.
.
.
.
.
.
.
.
.
.
.
de
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
168
168
174
175
176
176
178
181
181
182
183
183
184
184
. 184
. 185
. 185
189
189
189
190
190
190
191
192
196
196
196
197
197
. 198
. 198
. 201
206
. 207
. 212
. 212
. 213
. 214
. 214
217
218
218
219
219
221
221
222
.
.
.
.
.
.
.
.
.
.
.
.
224
224
225
225
226
227
. 229
. 230
. 231
. 234
234
vi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
236
236
236
237
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
240
240
241
242
242
242
de un archivo HelpSet
de un archivo Map .
del archivo TOC . .
del archivo JAR . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
244
245
245
246
247
.
.
.
.
.
.
.
.
247
248
249
249
249
250
250
251
251
223
235
235
235
236
253
254
254
254
254
255
255
255
255
255
258
259
260
261
262
263
264
264
266
267
271
273
273
276
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
277
277
277
278
280
281
281
.
.
.
.
.
283
285
285
306
322
. 323
325
. 327
. 328
. 329
. 331
. 331
. 332
. 333
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
357
358
361
361
361
de
.
.
.
.
.
datos
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
363
364
365
365
365
.
.
.
.
.
.
. 371
. 371
. 371
373
.
.
.
.
373
373
379
381
395
. 395
. 395
Parte 5. Distribucin de la
aplicacin . . . . . . . . . . . . 397
Captulo 26. Cmo empaquetar el
cdigo de tiempo de ejecucin y las
aplicaciones . . . . . . . . . . . . 399
Antes de empezar . . . . . . . . . . .
Cmo empaquetar el cdigo de tiempo de
ejecucin y las aplicaciones de VisualAge RPG .
Inicio de la herramienta de empaquetado . .
Cmo empaquetar aplicaciones Windows para
Windows NT/95/98 . . . . . . . . .
Cmo empaquetar aplicaciones Java para
Windows NT/95/98 . . . . . . . . .
Cmo empaquetar aplicaciones Java para otras
plataformas . . . . . . . . . . . .
. 399
. 399
. 400
. 401
. 403
. 404
. 407
. 407
. 407
. 407
. 408
. 408
413
. 417
.
.
. 418
. 419
Contenido
vii
El programa servidor . . . . . . . . . .
Aplicaciones de ejemplo que utilizan colas de datos
La aplicacin de cliente . . . . . . . . .
El programa servidor . . . . . . . . . .
Otras implementaciones posibles . . . . . . .
Ejemplo de programa servidor reutilizable . . .
421
422
423
427
429
429
viii
. 434
Glosario
. . . . . . . . . . . . . 437
Bibliografa . . . . . . . . . . . . 449
Avisos . . . . . . . . . . . . . . 451
Informacin de interfaz de programacin .
Marcas registradas y marcas de servicio .
.
.
.
.
. 452
. 452
ndice. . . . . . . . . . . . . . . 453
ix
Esta publicacin proporciona informacin acerca del lenguaje RPG IV tal como se
implementa en el compilador VisualAge RPG. Contiene:
v Conceptos bsicos del lenguaje como el juego de caracteres, nombres simblicos
y palabras reservadas, directivas del compilador e indicadores.
v Tipos y formatos de datos
v Manejo de errores y de excepciones
v Especificaciones
v Funciones incorporadas, expresiones y cdigos de operacin.
Para obtener una lista de publicaciones relacionadas, consulte la bibliografa al
final de esta publicacin.
Gua de aprendizaje de VA RPG y CODE/400
Hay disponible una gua de aprendizaje en formato HTML en el URL siguiente:
http://www.ibm.com/software/ad/varpg/download/#interactive
Esta gua de aprendizaje interactiva registra la evolucin del usuario para poder
volver fcilmente al ltimo ejercicio realizado. Hay unas pruebas al final de cada
leccin que sirven de ayuda para comprobar los conocimientos adquiridos en la
unidad.
Nota: Para poder utilizar esta gua de aprendizaje, necesitar un navegador que
admita marcos, Java y Javascript. Tambin necesitar una herramienta de
extraccin de archivos, como WinZip, que pueda tratar nombres largos de
archivos.
Tambin puede encontrar la informacin ms reciente sobre VA RPG y CODE/400
en la siguiente fuente en lnea:
La pgina de presentacin de VisualAge RPG y CODE/400
http://www.ibm.com/software/ad/varpg/
xi
xii
Utilizacin de hipertexto
Algunas ventanas contienen palabras, frases o grficos que aparecen resaltados.
Son enlaces de hipertexto que llevan de un tema a otro. Para visualizar ayuda
especfica de un tema resaltado, pulse en l. Cuando siga un enlace de hipertexto,
puede aparecer un botn Sincronizar en la esquina superior derecha del tema de
ayuda. (Quizs deba retroceder pginas para verlo). Si pulsa el botn Sincronizar,
la lista de temas del marco izquierdo se renueva a fin de mostrarle el lugar que
ocupa el tema actual en la tabla de contenido general.
xiii
xiv
xv
xvi
Al seleccionar Help Catalog se visualiza la ventana Get Help on using the Catalog. Si
acciona uno de los otros pulsadores, se visualiza otra ventana desde la que podr
realizar otras acciones, tales como ver listas, previsualizar secuencias del vdeo o
generar un pedido de compra.
Action/Adventure
Children
Science Fiction
Comedy
Horror
Western
Romance
Classics
Para seleccionar una categora, el cliente acciona su pulsador asociado. Esto hace
que se visualice la ventana Video Titles, que lista los ttulos de esa categora. Los
clientes pueden visualizar previamente algunos de los ttulos, aadir un ttulo a su
pedido, suprimirlo del pedido si han cambiado de opinin, y someter su pedido al
cajero.
Previsualizacin de ttulos
Los clientes pueden tener informacin previa de un vdeo que est en la lista
leyendo un resumen del mismo o, si tienen el hardware y el software apropiados,
pueden ver una secuencia del vdeo con el audio asociado.
Generacin de pedidos
Cuando los clientes generan sus pedidos, deben proporcionar su nombre, direccin
y nmero telefnico en la ventana Video Catalog Order Reference. Esta
informacin se almacena en una base de datos en el AS/400.
Creacin de la GUI
Seleccione una ventana con componente lienzo desde la paleta de componentes
con el botn derecho del ratn, mueva el icono del puntero sobre la vista de
proyecto del Diseador GUI, y vuelva a pulsar el botn derecho del ratn. Se
convierte en la ventana de diseo, en la que situar los siguientes componentes de
la paleta: recuadro de grupo, pulsador, texto esttico y subarchivo.
Captulo 1. Creacin de una aplicacin Cliente/Servidor
Atributos de ventana
Puede seleccionar los elementos que desea que aparezcan en la ventana (tales
como el men del sistema, la barra de ttulo y los botones de minimizar y
maximizar) y configurar el borde de la ventana. Por omisin, la ventana utiliza el
font del sistema y tiene un fondo blanco. Puede cambiar el font y el color.
Atributos de lienzo
Por omisin, el componente lienzo utiliza el font del sistema, y el fondo es el
mismo que el de la carpeta. Puede cambiar el font y el color de fondo del
componente lienzo. Tambin puede colocar un grfico en el componente lienzo.
Atributos de subarchivo
Por omisin, el componente subarchivo se crea sin columnas. Si conoce los
nombres de campo de base de datos, puede crear campos de entrada de
subarchivo mediante el Diseador GUI. De lo contrario, puede hacer referencia a
los campos existentes en la base de datos de AS/400 siguiendo estos pasos:
1. Seleccione Definir campos de referencia del men Servidor. Aparece la
ventana Definir campos de referencia.
2. Especifique la informacin de AS/400 y biblioteca para ver la informacin de
campos de base de datos.
3. Seleccione los campos adecuados del recuadro de lista Campos con el botn
derecho del ratn, mueva el icono del puntero sobre el componente subarchivo
de la ventana de diseo, y vuelva a pulsar el botn derecho del ratn.
El nuevo campo de entrada de subarchivo hereda los atributos del campo
original: Length se establece en la anchura de columna y Type en el tipo de
datos.
Establezca el estilo y el tipo de datos para un campo de entrada de subarchivo
mediante el cuaderno de propiedades adecuado. Por ejemplo, puede establecer la
longitud o el tipo de datos.
Atributos de pulsador
Etiquete cada uno de los pulsadores para indicar al usuario la finalidad del
pulsador. Para crear un carcter nemotcnico para cada pulsador, coloque el
identificador del nemotcnico antes de dicho carcter en la etiqueta. En Windows
NT, utilice el smbolo &. Observe que se han puesto unos puntos suspensivos ( ... )
en la etiqueta del pulsador Review/submit order con el fin de que los usuarios
sepan que deben proporcionar ms informacin despus de pulsar el botn para
generar el pedido.
*********************************************************************
*
*
* Subrutina de usuario: brComedy
*
* Descripcin
: Mostrar ventana Browse con vdeo Comedy
*
*
*
*********************************************************************
C
C
brComedy
*
*
C
C
C
C
C
C
C
*
*
C
C
C
C
C
BEGSR
clear
browsesf
Obtener registros de vil0004, el archivo lgico en el AS/400
para vdeos de tipo Comedy.
*start
setll
vil0004
read
vil0004
61
*IN61
doweq
'0'
exsr
ckcriteria
read
vil0004
61
end
exsr
dspbrowse
Las siguientes tres lneas definen el texto de la barra de ttulo de
la ventana Browse.
movel
*blanks
vdocatstl
movel
stlcmdy
vdocatstl
eval
%setatr('browsew':'browsew':'Label') =
vdocatttl
ENDSR
.
.
.
*********************************************************************
*
*
* Subrutina de usuario: dspbrowse
*
* Descripcin
: Comprobar si el subarchivo de examinar est *
*
vaco. Si es as, mostrar mensaje MSG00001. *
*
*
*********************************************************************
C
C
C
C
C
C
C
C
C
dspbrowse
items
*MSG0001
BEGSR
eval
ifeq
dsply
else
eval
eval
endif
ENDSR
items=%getatr('BROWSEW':'BROWSESF':'Count')
0
msgrsp
9 0
%setatr('BROWSEW': 'BROWSEW': 'VISIBLE')=1
%setatr('BROWSEW': 'BROWSEW': 'FOCUS')=1
10
*********************************************************************
* Cuando se selecciona el pulsador Preview de la ventana Browse, se inicia
* el componente comn. Este componente muestra la ventana Preview
* de un vdeo.
*
*
C
PREVIEWPB
BEGACT
PRESS
BROWSEW
C
READS
BROWSESF
55
C
*IN55
ifeq
'0'
C
start
'common'
C
parm
brsfpart
C
endif
C
ENDACT
La ventana Preview utiliza las posibilidades multimedia del sistema operativo para
proporcionar a los clientes una visualizacin breve de una secuencia del vdeo.
Esta seccin describe cmo puede crear una ventana que se parezca a sta.
Nota: Para ejecutar el audio en la previsualizacin, debe tener una tarjeta de
sonido en el sistema. Para ejecutar la secuencia de vdeo, debe tener
instalado Media Player. Las aplicaciones Java deben tener instalada la API
JMF (Java Media Framework).
Creacin de la GUI
Seale y pulse los siguientes componentes a un componente ventana con lienzo
para crear una ventana que se parezca a la ventana Preview:
v Componente medios
v Componente edicin de mltiples lneas
v Componentes pulsador
v Componentes texto esttico
Captulo 1. Creacin de una aplicacin Cliente/Servidor
11
Pausa
Reproducir
Grabar
Parar
12
*********************************************************************
*
Fvideo
if
e
k disk
remote BLOCK(*YES)
*
DFlg
s
1
inz(*OFF)
DFldx
s
12
*
*********************************************************************
*
C
*entry
PLIST
C
parm
partno
5 0
*
*********************************************************************
* Subrutinas de enlace de accin para PREVIEWW
*
*********************************************************************
*
C
PREVIEWW
BEGACT
CREATE
PREVIEWW
C
partno
setll
video
50
C N50*msg0001
DSPLY
msgrsp
9 0
C
read
video
51
C
*IN51
IFEQ
'0'
C
'TITLEST'
SETATR
vititle
'label'
C
'DIRST'
SETATR
vidirect
'label'
*
C
viactr1
CAT
viactr2:1
actors
41
C
'ACTST'
SETATR
actors
'label'
*
C
'ABSTMLE'
SETATR
vireview
'text'
*
* Si es para Java, utilizar el archivo .mov
/If defined(COMPILE_JAVA)
*
C
vibitmap
CAT
'.mov':0
videofil
13
* Si no es para Java, utilizar el archivo .avi
/else
C
vibitmap
CAT
'.avi':0
videofil
13
/EndIf
C
endif
*significa que videofil no se ha cargado todava en Audio
C
move
'N'
loaded
*
C
ENDACT
*
*
13
*********************************************************************
*
C
PBPLAY
BEGACT
PRESS
PREVIEWW
*
C
if
loaded='N'
C
eval
%setatr('previeww':'audo':'FileName')
C
=videofil
C
move
'Y'
loaded
1
C
endif
*
C
eval
%setatr('previeww':'audo':'audioMode')=2
*
C
ENDACT
*
*
*********************************************************************
*
C
PBPAUSE
BEGACT
PRESS
PREVIEWW
*
C
eval
%setatr('previeww':'audo':'audioMode')=1
C
ENDACT
*
*
*********************************************************************
*
C
PBRECORD
BEGACT
PRESS
PREVIEWW
*
C
eval
%setatr('previeww':'audo':'audioMode')=3
C
ENDACT
*
*
*********************************************************************
*
C
PBSTOP
BEGACT
PRESS
PREVIEWW
*
C
eval
%setatr('previeww':'audo':'audioMode')=4
C
ENDACT
*
*
*********************************************************************
*
C
CANCELPB
BEGACT
PRESS
PREVIEWW
*
C
move
*on
Flg
C
STOP
C
ENDACT
*
*
*********************************************************************
*
C
PREVIEWW
BEGACT
CLOSE
PREVIEWW
*
C
if
Flg=*ON
C
eval
Fldx='*DEFAULT'
C
else
C
eval
Fldx='*NODEFAULT'
C
endif
C
ENDACT
Fldx
*
14
Creacin de mensajes
Para aadir mensajes, seleccione ProyectoDefinir mensajes en el Diseador GUI.
Aparecer la ventana Definir mensajes. Seleccione Create, y luego seleccione el tipo
de mensaje que desea crear (por ejemplo, informacin o aviso). Escriba el texto del
mensaje y cualquier informacin adicional o ayuda de segundo nivel en los
espacios que se proporcionan.
VisualAge RPG genera automticamente un ID de mensaje para el mensaje que
crea. Haga referencia a ese ID de mensaje en el cdigo. Por ejemplo, en la Figura 3
en la pgina 10, el cdigo de operacin DSPLY utiliza MSG0001.
15
16
Figura 11. Ejemplo de ayuda para una ventana que contiene un enlace de hipertexto
17
18
19
Nmero de ventanas
Es aconsejable tener una ventana principal desde la que el usuario pueda iniciar
todas las tareas principales. Proporcione ventanas secundarias para obtener
informacin adicional que los usuarios deben especificar para completar una tarea.
Evite que haya muchas ventanas anidadas, porque demasiadas capas hacen que
una tarea sencilla parezca compleja. Recuerde tambin que demasiadas ventanas
llenarn toda la pantalla del usuario, especialmente si ste est ejecutando ms de
una aplicacin. Los usuarios tambin pueden desorientarse si tienen muchas
ventanas en la pantalla.
Intente minimizar el nmero de componentes de cada ventana. Esto aumentar el
rendimiento cuando se visualicen ventanas. Una aplicacin con muchas ventanas y
pocos componentes por ventana funcionar mejor que la misma aplicacin con
pocas ventanas y muchos componentes por ventana.
20
Utilice imgenes grficas e iconos para identificar tareas o para complementar las
palabras de la ventana. Asegrese de que todo el texto est escrito correctamente.
Site los componentes en las ventanas de una manera ordenada y lgica. No es
preciso que planifique la posicin de algunos componentes, porque su posicin
est predeterminada. Por ejemplo, un componente barra de mens siempre se
ubica justo debajo de la barra de ttulo de una ventana.
Si las ventanas tienen componentes comunes, debe visualizar esos componentes en
una ubicacin coherente. Esto facilita a los usuarios encontrar informacin comn.
21
22
23
24
25
Respuesta a eventos
Cada componente responde a un conjunto de eventos predefinidos. Puede utilizar
uno de los siguientes mtodos para obtener una lista de eventos predefinidos:
1. Consulte el manual VisualAge RPG Manual de consulta de componentes si desea
ver una lista completa.
2. Pulse F1 cuando el foco est en el componente de la paleta o del catlogo para
obtener una descripcin general del componente y una lista de los atributos y
eventos asociados con ese componente.
3. En el Diseador GUI, invoque el men emergente para el componente y
seleccione el elemento Eventos.
Habitualmente, los eventos se generan como resultado de alguna interaccin con la
interfaz de usuario. Por ejemplo, al accionar un pulsador se seala un evento
Press. El programa tambin puede generar eventos. Por ejemplo, el componente
cliente DDE genera un evento Timeout si no puede iniciar una conversacin con
un programa servidor dentro de un perodo de tiempo predeterminado. Si el
programa cambia el valor del texto de un componente campo de entrada, el campo
de entrada seala un evento Change.
Responda a eventos en el programa codificando los cdigos de operacin BEGACT
(iniciar accin) y ENDACT (finalizar accin). El cdigo entre estos cdigos de
operacin, denominado subrutina de accin, se ejecuta para un evento en
particular. Cuando se crea una subrutina de accin para un evento especfico, se
define un enlace de accin. Si no codifica una subrutina de accin para un evento
en particular, no se emprende ninguna accin cuando se produce el evento. El
cdigo en una subrutina de accin se ejecuta hasta que se alcanza el cdigo de
operacin ENDACT. Por consiguiente, si ha codificado cdigos de operacin EXSR
dentro de una subrutina de accin, estas subrutinas (denominadas subrutinas de
usuario) tambin se ejecutan.
No puede invocar una subrutina de accin utilizando el cdigo de operacin
EXSR. Sin embargo, puede invocar una subrutina de accin en particular mediante
ms de una accin. Por ejemplo, puede tener un cdigo que se ejecuta cuando se
acciona un pulsador o cuando se selecciona un elemento de men. Puede revisar
los eventos que tienen subrutinas de accin y modificar eventos de enlace a
subrutinas de accin en la ventana Subrutinas de accin. Para visualizar la ventana
Subrutinas de accin:
1. Seleccione Editar cdigo fuente del men Proyecto en el Diseador GUI. Esto
inicia una sesin de edicin.
2. Desde la sesin de edicin, seleccione EditarSubrutinas de accin. Aparece la
ventana Subrutinas de accin.
Los atributos de evento contienen datos que son relevantes para un evento. Por
ejemplo, el evento MouseMove almacena las coordenadas X e Y para indicar
dnde estaba ubicado el ratn cuando se produjo el evento. Antes de que pueda
utilizar atributos de evento en el programa, deben definirse en especificaciones de
definicin. El nombre del atributo de evento es el nombre de la entidad en la
especificacin de definicin. Dado que el compilador no verifica la longitud de la
variable y algunos atributos tienen longitudes variables, asegrese de especificar
una longitud lo bastante grande para contener el valor esperado.
26
Atributos de sistema
Los atributos de sistema pertenecen a la aplicacin y no a un componente
especfico.
Como sucede con los atributos de evento, los atributos de sistema deben definirse
en una especificacin de definicin. El programa no puede modificar los atributos
de sistema.
VisualAge RPG soporta los siguientes atributos de sistema:
Tabla 1. Atributos de sistema
Atributo
Descripcin
Tipo
Longitud
%DspHeight
%DspWidth
Devuelve la anchura
de la pantalla, en
tiempo de ejecucin,
en pixels.
Numrico
27
28
29
Label
30
entrada. Esto puede variar de una construccin a otra, de manera que cuando
varios componentes comparten el mismo campo, no debe dependerse del campo
que tenga un valor inicial especfico, a menos que se establezcan todos los valores
iniciales como iguales.
Ejecutar una operacin en una de las ventanas que contiene uno de estos
componentes, o en uno de los componentes, da como resultado que el campo de
entrada contenga un valor que coincida con el valor de pantalla del componente
implicado en la operacin. No obstante, el campo contiene un valor que
probablemente no coincide con los valores de pantalla de los otros componentes en
otras ventanas que comparten este campo. Aunque varios componentes comparten
el mismo campo, una operacin en cualquiera de estos componentes slo afecta al
componente especificado en la operacin o contenido en la ventana especificada en
la operacin. Los otros componentes que comparten el campo no se ven afectados.
Ejemplo
El siguiente ejemplo muestra lo que puede suceder cuando se establece el valor de
uno de los componentes en un valor de otro componente cuando stos comparten
un campo.
1 Definicin de los campos: El campo de entrada A01 en la ventana W1 se
define como de 10 caracteres, al igual que en la ventana W2. El valor en la pantalla
para W1 es 78893, y el valor en la pantalla para W2 es 885364. El campo A01
contiene el valor 0000000000. Estos son los valores iniciales.
W1
A01
78893
W2
A01
885364
Program Field
A01
0000000000
2 Ejecucin de una operacin READ en W1: El campo A01 contiene ahora 78893.
Coincide con el campo de entrada A01 en W1.
W1
A01
78893
W2
A01
885364
Program Field
A01
78893
W1
A01
78893
W2
A01
78893
Program Field
A01
78893
31
W1
A01
78893
W2
A01
Program Field
A01
W1
A01
78893
W2
A01
Program Field
A01
78893
Si desea que todos los componentes que comparten un campo visualicen el mismo
valor, tiene que ejecutar operaciones SETATR en todos los componentes utilizando
el campo como valor fuente, o ejecutar operaciones WRITE en todas las ventanas
que contengan uno de estos componentes.
Es recomendable dar nombres exclusivos a todos los componentes campo de
entrada en el componente lgico, para impedir que se establezca accidentalmente
el valor de uno de los componentes como el valor de otro.
32
Descripcin
Animation
Bean
Calendar
Container
Customer Maintenance*
DDE Client
DDE Hotlink
Graph
Image*
Listbox
Message Subfile
Multiline Edit
Notebook
Odbcceld
Popup Menu
Progress
Resize
Scroll
Slider**
Spin Button
Subfile*
Timer
VARPG Plug-in
Welcome
Ejemplo de bienvenida
33
Notas:
1. * Este ejemplo requiere datos en un sistema AS/400.
2. ** Tambin muestra cmo utilizar los atributos BackMix y ForeMix.
Antes de empezar
Antes de ejecutar e instalar las aplicaciones de ejemplo, debe instalar VisualAge
RPG. Consulte el manual Instalacin de VisualAge RPG y CODE/400 para AS/400,
para obtener informacin y ejemplos de instalacin.
Antes de utilizar los ejemplos, lea los comentarios del programa de ejemplo. Estos
comentarios contienen consejos y requisitos, as como posibles restricciones.
Para construir y ejecutar aplicaciones Java, debe tener instalado el Java 2 Software
Development Kit (J2SDK) Versin 1.2, o superior, de Sun, en la estacin de trabajo.
Si no tiene el J2SDK, puede bajarlo de Sun Microsystems en el URL siguiente:
http://www.javasoft.com/products/
34
Atributo PartName
Todos los componentes tienen un nombre. VisualAge RPG genera automticamente
este nombre cuando se crea el componente. Puede cambiar el nombre del
componente en su cuaderno de propiedades o editndolo directamente en la vista
de rbol de la ventana de proyecto del Diseador GUI. El nombre de componente
*componente lgico no puede editarse.
Nota: No puede cambiar el nombre de componente en tiempo de ejecucin.
Cada ventana debe tener un nombre exclusivo y todos los componentes en una
ventana dada deben tener un nombre exclusivo. Los componentes de ventanas
diferentes pueden tener el mismo nombre, salvo los nombres de componente
subarchivo, que deben ser exclusivos en todo el componente lgico.
Implcitamente, el compilador define un nombre de campo para el campo de
entrada y los componentes texto esttico mediante el atributo PartName. Puede
utilizar ese nombre en el programa si desea referirse al valor de estos
componentes. Para obtener ms informacin, vea el Captulo 3. Programacin con
componentes en la pgina 25.
Si cambia el nombre de un componente, debe cambiar todas las referencias a ese
componente en el fuente del programa. Si intenta hacer referencia al nombre
antiguo de un componente que se ha redenominado, obtendr errores de
compilacin o un error de tiempo de ejecucin indicando que no ha podido
encontrarse el componente.
Atributo ParentName
El atributo ParentName devuelve el nombre del componente padre. El padre es la
ventana donde se coloca un componente. Para un componente ventana, el padre es
la misma ventana.
Atributo PartType
Puede utilizar el atributo PartType para determinar el tipo de componente en el
programa. PartType devuelve el tipo del componente tal como lo define VisualAge
RPG. El valor devuelto para los componentes VisualAge RPG consiste en la serie
FVDES seguida del tipo de componente. Por ejemplo, para un componente campo
de entrada el tipo de componente sera FVDESEntryField. Una excepcin es el
componente referencia a componente lgico, que tiene el prefijo FVDESV.
La Tabla 3 en la pgina 36 resume el valor del atributo PartType para cada
componente VisualAge RPG.
35
36
Atributo PartType
FVDESOCX
ActiveX
FVDESAnimationControl
Control de animacin
FVDESCalendar
Calendario
FVDESCanvas
Lienzo
FVDESCheckBox
Recuadro de seleccin
FVDESComboBox
Recuadro de combinacin
FVDESContainerControl
Contenedor
FVDESVComponentReference
FVDESDDEClient
Cliente DDE
FVDESEntryField
Campo de entrada
FVDESGraph
Grfica
FVDESGraphicPushButton
Pulsador grfico
FVDESGroupBox
Recuadro de grupo
FVDESHScrollBar
FVDESImage
Imagen
FVDESJavaBean
Bean Java
FVDESListBox
Recuadro de lista
FVDESAudio
Medios
FVDESMediaPanel
Panel de medios
FVDESMenuItem
Elemento de men
FVDESMessageSubfile
Subarchivo de mensajes
FVDESMultiLineEdit
FVDESNotebook
Cuaderno
FVDESNotebookPage
Pgina de cuaderno
FVDESODBCInterface
Interfaz ODBC/JDBC
FVDESOutlineBox
Recuadro de contorno
FVDESPopUpMenu
Men emergente
FVDESProgressBar
Barra de progreso
FVDESPushButton
Pulsador
FVDESRadioButton
Botn de seleccin
FVDESSlider
Graduador
FVDESSpinButton
Selector cclico
FVDESStaticText
Texto esttico
FVDESStatusBar
Barra de estado
FVDESSubfile
Subarchivo
FVDESSubmenu
Submen
FVDESTimer
Temporizador
FVDESVScrollBar
FVDESFrameWindow
Ventana
Atributos de color
Puede cambiar el color de la mayora de componentes mediante los atributos
BackColor y ForeColor. Los valores de atributo son nmeros que representan
colores especficos. El compilador proporciona un conjunto de constantes
representativas, tales como *RED y *GREEN, que pueden utilizarse para establecer
los colores. Puede dirigirse a la publicacin VisualAge RPG Manual de consulta del
lenguaje si desea consultar estos nombres.
Puede especificar una mezcla de colores para el componente mediante los atributos
ForeMix y BackMix. El valor de estos atributos representa una mezcla de los
colores primarios rojo, verde y azul. Suele hacerse referencia a esto como el valor
de color RGB. Este valor RGB es una serie que se compone de tres valores
separados por signos de dos puntos (:). Cada valor representa la intensidad de
rojo, verde y azul, por este orden. El valor de cada color est entre 0 y 255.
En el siguiente ejemplo de cdigo, la mezcla de colores de fondo de un
componente texto esttico se establece en un tono medio de azul:
CSRN01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
*
C
'ST1'
setatr
'000:000:128' 'BackMix'
Para ver un ejemplo ms detallado sobre cmo especificar los atributos ForeMix y
BackMix, vea Graduador en la pgina 139.
Atributo Enabled
Cuando se habilita un componente, puede responder a la interaccin del usuario y
generar eventos. Por ejemplo, cuando se acciona un pulsador habilitado, genera un
evento Press que, a continuacin, el programa puede manejar.
Puede que no desee que se habilite un componente hasta que exista una cierta
condicin. En caso del pulsador, puede que desee que el usuario pueda pulsarlo
slo cuando se ha seleccionado un elemento en un recuadro de lista.
Cuando un componente no est habilitado, no responde a la interaccin de usuario
y su etiqueta se atena.
Para habilitar un componente, establezca su valor de atributo Enabled en 1. Si no
desea que un componente est habilitado, establezca este valor en 0.
37
Atributo Visible
Puede utilizar el atributo Visible para especificar cundo desea que se visualice un
componente o una ventana. Por ejemplo, puede que desee que aparezca un
pulsador en la pantalla solamente en tiempo de ejecucin. Para ello, al crear el
pulsador en el Diseador GUI, vaya al cuaderno de propiedades del componente y
desactive el distintivo de visible. Luego, en tiempo de ejecucin, establezca el valor
de atributo Visible en 1 cuando desee que aparezca el pulsador.
Atributo Focus
El rea de una ventana donde un usuario puede interactuar con la interfaz tiene el
foco de entrada. El componente que tiene el foco de entrada debe habilitarse para
responder a las acciones del usuario, tales como pulsar una tecla o un botn.
38
Hay ocasiones en que desear que el foco est en un componente del programa
para que el usuario pueda utilizarlo de inmediato. Por ejemplo, si marca varios
campos de entrada y requiere que el usuario vuelva a entrar informacin en un
campo de entrada en particular, establecer el valor de atributo de Focus en 1 para
ese campo de entrada. Cuando establezca el atributo, el cursor aparecer en el
lugar donde el usuario pueda empezar a escribir datos en el campo de entrada.
Adems de proporcionar un foco a un componente concreto, puede determinar si
un componente ha obtenido el foco. Un componente obtiene el foco cuando el
usuario lo selecciona, avanzado hasta el mismo con el tabulador o seleccionndolo
con el ratn. Cuando esto ocurre, se genera un evento GotFocus para el
componente. Y viceversa, se genera un evento LostFocus cuando un componente
pierde el foco.
Atributo UserData
Todos los componentes soportan el atributo UserData. Utilice este atributo para
asignar cualquier serie de texto a un componente. Esta serie no tiene efecto en el
valor de cualquier otro atributo del componente y no se visualiza. El atributo
UserData puede contener un mximo de 65.535 caracteres.
Atributo Label
Varios componentes tienen un atributo Label. Es texto descriptivo que explica el
propsito del componente. El texto que aparece en un pulsador es un ejemplo de
este atributo.
Los siguientes componentes tienen un atributo Label:
v Recuadro de seleccin
v Contenedor
v Recuadro de grupo
v Elemento de men
v Pulsador
v Botn de seleccin
v Texto esttico
v Ventana
v Ventana con lienzo
Sustitucin de etiqueta
Puede sustituir el texto de una etiqueta utilizando un smbolo cuando establezca
los atributos Label, TabLabel o InfoLabel. Esto es particularmente til si est
desarrollando aplicaciones para utilizarlas con otros idiomas, porque le permite
traducir las etiquetas y los mensajes que ha definido en el Diseador GUI.
Cuando especifique la sustitucin de etiquetas para un componente, se realizar
una entrada en el archivo de mensajes del componente. Varios componentes
pueden utilizar la misma sustitucin de etiqueta (por ejemplo, |OK). Se utiliza la
misma entrada de archivo de mensajes para todas las referencias.
Defina una etiqueta de sustitucin para un componente en su cuaderno de
propiedades, especificando una serie, sin blancos intercalados, precedida del
smbolo (|). Esto aade un mensaje al archivo de mensajes. Seleccione
ProyectoDefinir mensajes... para invocar el editor de mensajes y aada el texto
de mensaje con que desea sustituir el atributo Label cuando se ejecute la
aplicacin.
Captulo 5. Atributos comunes
39
40
Datos transferidos
Recuadro de combinacin
Campo de entrada
Recuadro de lista
El elemento seleccionado
Subarchivo de mensajes
El mensaje seleccionado
Texto esttico
41
42
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : EF2
*
*
*
* Evento . . : DROP
*
*
*
* Descripcin: Esta subrutina de accin obtendr el control cuando *
*
se ha transferido un valor al campo de entrada EF2
*
*
Al comprobar el atributo de evento %Data,
*
*
determinar si se permite el valor transferido para *
*
el campo de entrada y aadir el mensaje
*
*
correspondiente al componente subarchivo de
*
*
mensajes.
*
*
*
*********************************************************************
*
C
EF2
BEGACT
DROP
MAIN
*
* Borrar el subarchivo de mensajes
C
'Msg1'
setatr
0
'RemoveMsg'
*
* Comprobar que el valor transferido est permitido
*
C
if
%Data <> 'Yes ' and
C
%Data <> 'No
' and
C
%Data <> 'Maybe'
*
C
'Msg1'
setatr
1
'AddMsgID'
C
endif
*
C
ENDACT
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : EF2
*
*
*
* Evento . . : CHANGE
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
EF2
BEGACT
CHANGE
MAIN
*
C
ENDACT
43
44
45
ActiveX
46
Atributos de componente
Activate
HasPrpPage
OCXProp
PartType
Top
AddEvent
Height
OCXValue
Refresh
UserData
Bottom
Left
ParentName
RmvEvent
Visible
DeActivate
Method
PartName
ShowProp
Width
Destroy
OCXEvent
Establecimiento de propiedades
Puede establecer las propiedades de un control ActiveX en tiempo de construccin
o ejecucin. Para establecer propiedades durante el tiempo de construccin, abra el
cuaderno de propiedades del componente ActiveX en la ventana de diseo. Pulse
con el botn derecho del ratn en el icono de ActiveX en la ventana de diseo y
seleccione Propiedades. Si est disponible un editor de propiedades para el control
ActiveX, tambin se visualizar. A continuacin, puede editar directamente los
valores de las propiedades.
Las propiedades, mtodos y eventos del control ActiveX aparecen en la pgina
Informacin del cuaderno de propiedades del componente ActiveX. Seleccione el
botn de seleccin apropiado para ver las opciones disponibles.
El establecimiento u obtencin de una propiedad durante el tiempo de ejecucin
requiere dos pasos. En primer lugar, establezca el atributo OCXProp del
componente ActiveX en la propiedad Name del control ActiveX que est
utilizando. Utilice el atributo OCXValue para establecer u obtener la propiedad.
El siguiente ejemplo establece la propiedad Depth de un control de diagrama
circular ActiveX:
C
C
'PieChart'
'PieChart'
Setatr
Setatr
'Depth'
DepthValue
'OCXProp'
'OCXValue'
47
Llamada a mtodos
El IDE de VisualAge para RPG intenta compilar una lista de mtodos disponibles
para el control ActiveX. Esta lista est disponible en la pgina Informacin del
cuaderno de propiedades del componente ActiveX. Para cada mtodo, los
parmetros se muestran entre corchetes que contienen IN para un parmetro de
entrada, OUT para un parmetro de salida o nada si no se dispone de informacin.
Nota: Quizs no sea posible para el constructor descubrir todos los mtodos
disponibles del control ActiveX. Consulte la documentacin del control para
obtener una lista completa.
La llamada a los mtodos de un control ActiveX se realiza en tiempo de ejecucin
estableciendo el atributo Method del componente ActiveX. El atributo Method
toma un valor de tipo serie que contiene el nombre del mtodo, seguido de cero o
ms valores de parmetro separados mediante una coma. La sintaxis es:
nombre_mtodo, valor1, valor2, ...
'PieChart'
Setatr
'AboutBox'
'Method'
48
'PieChart'
datax
'Method'
Respuesta a eventos
VisualAge RPG puede responder a todos los eventos generados por el control
ActiveX que se est utilizando. VisualAge para RPG acepta los eventos del control
ActiveX como un OCXEvent. Puede utilizar el evento %RealName para recuperar
el nombre real del evento.
Para recibir un evento desde un control ActiveX, primero debe registrar el evento
en el tiempo de ejecucin de VisualAge RPG. Establezca el atributo AddEvent del
componente ActiveX en el nombre de tipo serie del evento que debe recibirse.
Tambin puede establecer el atributo AddEvent en *ALL para recibir todos los
eventos que genere el control ActiveX. Para eliminar el registro de un evento,
establezca el atributo RmvEvent en el nombre de tipo serie del evento.
* Declarar el atributo del evento
D %RealName
s
20a
* Registrar el evento en el tiempo de ejecucin de VisualAge para RPG
'DataQ'
Setatr
'Click'
'AddEvent'
* Responder a OCXEvent
DATAQ
BEGACT
OCXEVENT
FRA000000B
if
%RealName = 'Click'
* Realizar las acciones oportunas
C
endif
C
C
49
Control de animacin
FileName
Mode
PartType
FrameRate
NbrOfImage
Top
Handle*
ParentName
UserData
Left
PartName
Visible
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
50
Destroy
Calendario
Bottom
ClearYear
Date
Day
DayNumRect
FontBold
FontStrike*
Height
MonthArrow
ParentName
ShowRects
UserData
WeekDayIdx
YearLen
ClearAll
Color
DateIdx
DayIdx
DayStart
FontItalic
FontUnder*
HRule
MonthIdx
PartName
ShowText
Visible
Width
ClearDate
ColorArea
DateText
DayLen
Enabled
FontName
FrmtString
Left
MonthLen
PartType
TipText
VRule
Year
* Nota:: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Click
MouseDown
MouseUp
Create
MouseEnter
MthChange
Destroy
MouseExit
YearChange
DblClick
MouseMove
51
C
*
'Cal1'
Getatr
'DateUnder'
AAAAMMDDA
8 0
52
Lienzo
Utilice el componente lienzo con una ventana o una pgina de cuaderno si desea
incluir ms de un componente en la ventana o en la pgina. Puede colocar
diversos componentes en el lienzo sealndolos y pulsando el botn del ratn y
cambiarlos de posicin para crear una interfaz grfica de usuario.
El componente lienzo ocupa el rea de cliente de una ventana o de una pgina de
cuaderno. Si en la ventana o en la pgina de cuaderno no hay lienzo, slo puede
colocar un componente en el rea de cliente, a menos que sean extensiones de la
ventana, como barras de mens y subarchivos de mensajes.
A menudo crear ventanas y pginas de cuaderno que contendrn ms de un
componente. En este caso, deber utilizar la pgina de cuaderno y la ventana con
el componente lienzo. De este modo se ahorrar un paso, ya que estos
componentes ya contienen el lienzo.
A la hora de construir, tambin puede incluir una imagen de bitmap a modo de
fondo del lienzo; para ello, especifique el atributo FileName. Esta imagen puede
ponerse en mosaico estableciendo el atributo Tile. En las aplicaciones Java, puede
incluir imgenes GIF o JPG como fondo.
Notas:
1. Los componentes lienzo, ventana (sin lienzo) y pgina de cuaderno (sin lienzo)
se encuentran en el catlogo de componentes, no en la paleta de componentes.
Si va a utilizarlos con frecuencia, puede trasladarlos del catlogo a la paleta de
componentes.
2. Si los componentes situados en un componente lienzo tienen especificado el
valor de font por omisin (Font del sistema por omisin), heredarn la definicin
de font especificada en el componente lienzo. Para aplicar un font determinado
a la mayor parte de componentes de un lienzo, especifique ese font en el
componente lienzo en lugar de hacerlo en cada componente individual.
Para obtener informacin relacionada, consulte el apartado:
v Ventana en la pgina 175
v Ventana con lienzo en la pgina 176
v Pgina de cuaderno en la pgina 116
v Pgina de cuaderno con lienzo en la pgina 117.
53
Atributos de componente
BackColor
FileName
FontSize
Height
PartType
Top*
BackMix
FontBold
FontStrike*
Left
ReadOnly
UserData
Bottom*
FontItalic
FontUnder*
ParentName
Refresh
Width
Enabled
FontName
Handle*
PartName
Tile
* Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Click
MouseDown
54
Create
MouseMove
DblClick
MouseUp
Destroy
Popup
Recuadro de seleccin
Utilice el componente recuadro de seleccin si desea que el usuario elija entre dos
estados claramente diferenciados; por ejemplo, activado y desactivado.
Una etiqueta asociada con el recuadro de seleccin describe el valor del mismo
cuando se selecciona.
Normalmente, se utiliza un grupo de recuadros de seleccin para proporcionar una
lista de opciones. El usuario puede seleccionar uno, varios o ningn recuadro. Las
opciones no se excluyen mutuamente; por lo tanto, al marcar un recuadro de
seleccin, el resto de recuadros de seleccin de la ventana no resulta afectado. Si
desea que el usuario pueda seleccionar slo una opcin de un grupo de dos o ms,
es necesario utilizar botones de seleccin. Consulte el apartado Botn de
seleccin en la pgina 136 para obtener ms informacin.
Para definir el estado de un recuadro de seleccin, el usuario puede pulsar el
botn del ratn en el mismo, pulsar la barra espaciadora cuando el recuadro tenga
el foco o pulsar la tecla correspondiente al nemotcnico (si le ha asignado una).
Atributos de componente
AddLink*
Bottom
FontBold
FontStrike*
Handle*
Left
Refresh
Top
AllowLink*
Checked
FontItalic
FontUnder*
Height
ParentName
RemoveLink*
UserData
BackColor
Enabled
FontName
ForeColor
Highlight*
PartName
ShowTips
Visible
BackMix
Focus
FontSize
ForeMix
Label
PartType
TipText
Width
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
MouseMove
Destroy
Popup
MouseEnter
Select
MouseExit
55
Establecimiento de un nemotcnico
Nota: Los nemotcnicos no estn soportados en las aplicaciones Java.
Para especificar una clave nemotcnica para el recuadro de seleccin, coloque el
identificador nemotcnico delante de un carcter en la etiqueta del recuadro de
comprobacin. En Windows NT/95/98, se utiliza el smbolo &. Este carcter es la
clave nemotcnica y se visualizar en la interfaz con un subrayado (por ejemplo,
Visible). El subrayado informa a los usuarios que pueden seleccionar el recuadro
de seleccin pulsando la tecla subrayada en el teclado.
Sealizacin de eventos
Cuando el usuario selecciona un recuadro de seleccin para activar o desactivar el
estado, se seala un evento Select.
56
Recuadro de combinacin
AutoScroll*
Case*
DragEnable*
FirstSel
FontName
ForeColor
Height
Left
ReadOnly
SearchType*
SetItem
Text
UserData
BackColor
Count
DropEnable*
Focus
FontSize
ForeMix
Index
ParentName
Refresh
Selected
SetTop*
TipText
Visible
BackMix
DelimChar
Enabled
FontBold
FontStrike*
GetItem
InsertItem*
PartName
RemoveItem
SelectItem
Showtips
Top
Width
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
57
Create
Enter
MouseEnter
Select
Destroy
GotFocus
MouseExit
VKeyPress
Drop*
KeyPress
MouseMove
*Nota: Consulte la descripcin del evento si desea saber cules son las
restricciones.
58
Eliminacin de elementos
Utilice el atributo RemoveItem y el valor Index del elemento que desea eliminar.
Los valores de Index comienzan en el 1. Cuando se elimina un elemento de la
lista, todos los elementos que siguen al elemento eliminado ascienden una posicin
en la lista.
Si desea eliminar todos los elementos de la lista, especifique el valor 0 en Index.
59
Utilizacin de claves
Tanto el recuadro de lista como el recuadro de combinacin le permiten aadir
elementos a la lista que constan de una parte clave y de una parte de datos.
Cuando se aaden elementos a la lista, slo se visualiza la parte de datos del
elemento. Si el usuario selecciona un elemento, podr recuperar mediante el
programa la parte clave del elemento.
Para habilitar las claves de una lista, deber seleccionar el recuadro de seleccin
Utilizar separador en la pgina Separador del cuaderno de valores de los
componentes y especificar un carcter separador. El carcter separador por omisin
es el punto y coma (;). Los elementos de la lista constan de la parte clave, seguida
de un separador, seguida de la parte de datos. Por ejemplo:
01;Envo
Como ejemplo, supongamos que desea mostrar una lista de departamentos en una
lista que permita al usuario hacer una seleccin. En la base de datos, almacenar
los departamentos como un campo de 2 caracteres, sin embargo quiere que el
usuario pueda ver la descripcin. Deber aadir los siguientes datos a la lista:
v 01;Envo
v 02;Fabricacin
v 03;Nminas
v 04;Distribucin
Nota: Con el recuadro de combinacin podr aadir la lista por omisin en la
pgina Datos de su cuaderno de valores.
Cuando el usuario hace una seleccin de la lista, podr utilizar el siguiente cdigo
para obtener la parte clave del elemento.
C
C
C
60
'Combo1'
'Combo1'
'Combo1'
Getatr
Setatr
Getatr
'FirstSel'
X
'ItemKey'
X
'Index'
Key
2 0
Sealizacin de eventos
El evento Select se seala cuando:
v Un usuario selecciona un elemento que est en un recuadro de combinacin.
v Se selecciona un elemento de la lista en el programa.
v El usuario selecciona un elemento que ya ha sido seleccionado.
El evento Enter se seala cuando:
v El usuario efecta una doble pulsacin sobre un elemento que est en el
recuadro de combinacin.
v Se pulsa la tecla Intro cuando el recuadro de lista tiene el foco y se ha
seleccionado un elemento.
En la subrutina de accin de estos eventos, puede utilizar el atributo Selected para
determinar qu elemento se ha seleccionado.
61
AddSrcEvt
Left
ParentName
RefParent
Visible
AttrValue
NotSrcEvt
PartName
RefPart
Bottom
NotSrcPart
PartType
RmvSrcEvt
CompName
NotSrcWin
RefAttr
UserData
Destroy
Notify
62
*
* Cambiar el bitmap para el componente imagen IMG1 en
* la ventana WIN01 del componente lgico COMPB
C
'CR1'
Setatr
'COMPB'
'CompName'
C
'CR1'
Setatr
'WIN01'
'RefParent'
C
'CR1'
Setatr
'IMG1'
'RefPart'
C
'CR1'
Setatr
'FILENAME'
'RefAttr'
C
'CR1'
Setatr
'D:\PIC.BMP' 'AttrValue'
*
63
Contenedor
Arrange
Bottom
ColNumber
Enabled
FontBold
FontStrike*
GetNewID
Handle*
Left
ParentName
RecordID
SelectRcd
SetTop*
TipText
Visible
BackColor
ChildCount
Count
ExtSelect*
FontItalic
FontUnder*
GetRcdFld
Height
MiniIcon
PartName
Refresh
SetRcdFld
ShowTips
Top
VisTitle
BackMix
ChildList
DeSelect
FirstSel
FontName
ForeColor
GetRcdIcon
InUse*
ParentId
PartType
RemoveRcd
SetRcdIcon
SortAsc
UserData
VisTitlSep
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Click
DblClick
GotFocus
MouseEnter
Popup
Collapsed
Destroy
KeyPress
MouseExit
Select
ColSelect
Enter
LostFocus
MouseMove
VKeyPress
Create
Expanded
MouseDown
MouseUp
64
Icono
Texto
FileName
El nombre de un archivo que contiene la imagen de icono para una
columna de icono de objeto. Este icono se visualiza en las vistas de iconos
y de rbol del contenedor. Puede cambiar el nombre de archivo de icono
en tiempo de ejecucin mediante el atributo SetRcdIcon.
ParentID
El ID exclusivo del registro bajo el que aparecer este registro. Si este
registro no tiene un registro padre, coloque un 0 en este campo.
Datos_campo
Informacin adicional para un registro que se visualiza en una columna de
texto o de icono. Cada valor de datos_campo actualiza la columna
Captulo 7. Utilizacin de componentes
65
66
'SetRcdFld'
Vista de iconos
En una vista de iconos, cada registro se representa mediante un icono con texto
por debajo. Los registros hijos no se visualizan en la vista de iconos. Debe
especificar el nombre de archivo de icono y el texto descriptivo en la estructura de
registro cuando aada el registro al contenedor.
Puede cambiar el icono y el texto de icono en tiempo de ejecucin utilizando los
atributos SetRcdIcon y SetRcdText.
Para visualizar los iconos en filas en el contenedor, establezca el valor 1 en el
atributo Arrange.
Para utilizar mini iconos, establezca el atributo MiniIcon en 1 o seleccione el
recuadro Mini icono de la pgina Estilo del cuaderno de propiedades.
67
Vista de rbol
En una vista de rbol, los registros se presentan en forma jerrquica. La vista rbol
de iconos muestra cada registro con su icono y el texto de icono a su lado. Si un
registro tiene registros hijos, se visualiza un signo ms junto al icono. Al
seleccionar el signo ms se muestran todos los registros relativos a este registro. El
rbol de texto muestra registros de la misma forma que la vista de rbol de iconos,
pero slo en modalidad de texto, sin iconos.
Se dibujan lneas de conexin entre registros relacionados para mostrar su relacin.
68
Vista de detalles
En una vista de detalles, los registros se muestran de uno en uno visualizndose
cada columna (de manera similar a un subarchivo). Los registros hijos no se
visualizan en este tipo de vista.
69
Miniiconos
Esta opcin permite al programador especificar si los iconos que hay dentro del
componente contenedor se visualizarn como iconos normales o mini. Slo afecta a
la vista de iconos; las vistas de rbol y de detalles no sufrirn cambio alguno.
70
Cliente DDE
Bottom
Execute
ParentName
Request
UserData
DDEAddLink
Format
PartName
TimeOut
Visible
DDEMode
Item
PartType
Top
Destroy
TimeOut
ExecuteAck
Data
Terminate
71
Campo de entrada
Alignment
BackColor
Copy
Delete
FieldExit
FontName
ForeColor
InsertMode*
PartName
Refresh
TextEnd
TipText
Width
AllowLink*
BackMix
CsrAtEnd
DragEnable*
Focus
FontSize
ForeMix
Left
PartType
RemoveLink*
TextLength
Top
AutoScroll*
Bottom
Cut
DropEnable*
FontBold
FontStrike*
Handle*
Masked
Paste
ShowTips
TextSelect
UserData
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
72
Click
Drop
LostFocus
MouseMove
Create
GotFocus
MouseDown
MouseUp
DblClick
KeyPress
MouseEnter
Popup
*Nota: Consulte la descripcin del evento si desea saber cules son las
restricciones.
Comprobacin de validez
Puede utilizar el cuaderno de propiedades para especificar que un campo de
entrada slo debe aceptar los datos que satisfagan los criterios que especifique.
Para asegurar que los datos coinciden con ciertos valores, establezca los valores de
Compare. Para asegurar que los datos estn comprendidos en un intervalo de
valores predefinidos, establezca los valores de Range.
Nota: VisualAge RPG utiliza el orden de clasificacin ASCII para la comprobacin
de validez. En esto difiere del sistema AS/400, que utiliza el orden de
clasificacin EBCDIC. Por consiguiente, los resultados pueden variar entre
los sistemas.
Para que se realice la comprobacin de validez, debe tener por lo menos un
pulsador o un pulsador grfico en la ventana que tenga establecido el atributo
Validate. Cuando se acciona el pulsador, se realiza la comprobacin de validez
para cada campo de entrada que tenga definida la comprobacin de validez. Si la
comprobacin de validez es anmala en algn campo de entrada, se visualiza una
ventana de mensaje y no se seala ningn evento de pulsar en el programa.
Captulo 7. Utilizacin de componentes
73
Tambin puede utilizar el campo que hay en la parte superior del cuaderno de
propiedades para establecer el mensaje que se visualizar si falla la comprobacin
de validez. Entre el texto del mensaje que ha de visualizarse o bien el nombre del
archivo de mensajes (como, por ejemplo, *MSG0001) que contiene el mensaje
correspondiente. Si se deja en blanco este texto, cuando falle la comprobacin de
validez se visualizar el mensaje por omisin del sistema.
Nota: Este campo tiene un lmite mximo de 15 caracteres.
74
Grfica
AutoInc
ColorArea
DataValue
FontBold
FontStrike*
GraphType
Height
Left
PartType
Title
UseData
XAxisLabel
BarLabel
ColorMix
Enabled
FontItalic
FontUnder*
GroupLabel
HitItem*
LegendType
Refresh
TitlePlace
UserData
YAxisLabel
Bottom
DataGroup
FillStyle*
FontName
GnEqGrpCol
GrphHiLite
HlitPoints*
ParentName
StartNew
Top
Visible
YInc
Color
DataPoint
FontArea
FontSize
GnEqPntCol
Handle*
LabelPlace
PartName
TipText
UnderPoint*
Width
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Click
MouseDown
MouseUp
Create
MouseEnter
Destroy
MouseExit
DblClick
MouseMove
75
C
C
'Graph1'
Do
Setatr
2
Group
Group
'DataGroup'
2 0
C
C
'Graph1'
Do
Setatr
12
Point
Point
'DataPoint'
2 0
C
C
'Graph1'
If
Setatr
Group = 1
Low(Point)
'DataValue'
Else
Setatr
Endif
High(Point)
'DataValue'
'UseData'
*
*
*
C
C
C
'Graph1'
*
EndDo
EndDo
*
*
'Graph1'
Setatr
76
Pulsador grfico
77
Atributos de componente
Bottom
Handle*
Left
Refresh
UserData
Enabled
Height
ParentName
ShowTips
Validate
FileName
HelpEnable
PartName
TipText
Visible
Focus
HighLight
PartType
Top
Width
* Nota:: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
MouseEnter
Press
Destroy
MouseExit
GotFocus
MouseMove
LostFocus
Popup
Definicin de la imagen
Para definir la imagen que se visualiza en un pulsador grfico, utilice el atributo
FileName y especifique un nombre de archivo de bitmap (.BMP) o de icono (.ICO)
vlido. Debe almacenar los archivos de icono y de bitmap especficos del sistema
en el directorio de tiempo de ejecucin adecuado. Si desea ms informacin,
consulte Captulo 12. Utilizacin de archivos de imgenes, de sonido y de vdeo
en la pgina 233.
Sealizacin de eventos
Cuando se acciona el pulsador, se seala un evento Press en el programa.
78
Recuadro de grupo
Enabled
FontSize
ForeMix
Left
Refresh
Width
FontBold
FontStrike*
Handle*
ParentName
Top
FontItalic
FontUnder*
Height
PartName
UserData
Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
Destroy
79
Enabled
Left
ParentName
PrevLine
UserData
Focus
NextLine
PartName
PrevPage
Visible
Handle*
NextPage
PartType
Range
Width
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
80
Destroy
Scroll
Imagen
81
Atributos de componente
AddLink*
Border
Handle*
Panel
Print
TipText
Width
AllowLink*
Bottom
Height
ParentName
Refresh
Top
BackColor
Enabled
Left
PartName
RemoveLink*
UserData
BackMix
FileName
Magnify
PartType
ShowTips
Visible
* Nota:: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Click
Link*
Create
MouseEnter
DblClick
MouseExit
Destroy
MouseMove
* Nota:: Consulte la descripcin del evento si desea saber cules son las
restricciones.
82
Ejemplo de imagen
En este ejemplo, se lee un archivo del sistema AS/400. Cada registro del archivo
contiene un campo de nmero de componente, que se inserta en el recuadro de
lista a medida que se lee cada registro. Cuando el usuario selecciona un nmero de
componente en el recuadro de lista y acciona el pulsador Ver, el nmero de
componente se concatena con la serie .BMP para formar un nombre de archivo.
Entonces se utiliza el nombre de archivo para establecer el atributo FileName del
componente imagen para visualizar la imagen. El atributo Label del componente
texto esttico PINFO se actualiza para indicar el resultado de establecer el atributo
de nombre de archivo. Accione el pulsador Close para terminar el programa.
83
*********************************************************************
*
*
* ID de program. : IMAGE
*
*
*
* Descripcin . : Ejemplo del componente imagen
*
*
*
*
Este programa de ejemplo muestra cmo puede
*
*
implementarse el componente imagen en VARPG
*
*
Client.
*
*
*
*
El ejemplo da por supuesto que hay un archivo
*
*
en el sistema principal AS/400 denominado PARTS. *
*
Ese formato de archivo se compone de un campo
*
*
denominado PARTNO.
*
*
*
*
Cuando se inicie la aplicacin, se invoca el
*
*
evento Create para la ventana WIN1, que lee
*
*
todos los registros del archivo e inserta el
*
*
valor de campo PARTNO en el recuadro de lista LB1*
*
*
*
Cuando el usuario accione el pulsador View,
*
*
el nombre de archivo de imagen se construir
*
*
y se utilizar para establecer el atributo
*
*
FILENAME del componente imagen IMG1.
*
*
*
*********************************************************************
*
DISK
REMOTE
''
'Picture not available'
84
*********************************************************************
*
*
* Ventana . : WIN1
*
*
*
* Componente : Close
*
*
*
* Evento . . : Press
*
*
*
* Descripcin: Terminar el programa
*
*
*
*********************************************************************
*
C
CLOSE
BEGACT
PRESS
WIN1
*
C
move
*on
*inlr
*
C
ENDACT
*********************************************************************
*
*
* Ventana . : WIN1
*
*
*
* Componente : WIN1
*
*
*
* Evento . . : Create
*
*
*
* Descripcin: Esta subrutina de accin se ejecuta cuando se crea
*
*
la ventana WIN1.
*
*
Rellenar el recuadro de lista con los valores de
*
*
nmero de componente del archivo PARTS.
*
*
*
*********************************************************************
*
C
WIN1
BEGACT
CREATE
WIN1
*
* Rellenar el componente recuadro de lista con elementos de la base
* de datos
C
read
produc1
9999
*
C
*in99
doweq
*off
C
'LB1'
setatr
partno
'InsertItem'
C
read
produc1
9999
C
enddo
*
C
ENDACT
*
85
*********************************************************************
*
*
* Ventana . : WIN1
*
*
*
* Componente : VIEW
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Visualizar la imagen para el componente seleccionado *
*
*
*********************************************************************
*
C
VIEW
BEGACT
PRESS
WIN1
*
* Obtener ndice del elemento seleccionado
C
'LB1'
getatr
'FirstSel'
x
4 0
*
* Si se ha seleccionado un elemento, construya el nombre de archivo
* de bitmap
C
x
ifgt
*zero
C
'LB1'
setatr
x
'Index'
C
'LB1'
getatr
'GETITEM'
tmp20
20
C
movel
tmp20
part
5
C
endif
*
C
move
*blanks
fullpath
64
C
move
*blanks
tmp64
64
C
path
cat
part:0
tmp64
C
tmp64
cat
'.gif':0
fullpath
*
* Establecer el nombre de archivo en el atributo FILENAME
* de imagen para visualizar la imagen
C
'IMG1'
setatr
fullpath
'FILENAME'
80
*
* Si el indicador 80 es "on", la operacin de establecer el nombre
* del archivo de imagen es fallida, es decir, no se ha encontrado el
* archivo.
* Establecer el atributo Label del componente de texto esttico PINFO
* para indicar el estado
C
*in80
ifeq
*on
C
'PINFO'
setatr
nopic
'Label'
*
C
else
C
'PINFO'
setatr
*BLANKS
'Label'
C
endif
*
C
ENDACT
*
86
Bean Java
Atributos de componente
AddEvent
Left
RmvEvent
Visible
Bottom
ParentName
ShowProp
Width
Enabled
PartName
Top
Height
PartType
UserData
Destroy
BeanEvent
87
88
89
Recuadro de lista
AddLink*
Bottom
DeSelect
ExtSelect*
FontItalic
FontUnder*
Handle*
ItemKey
ParentName
RemoveItem
Selected
SetItem
TipText
Visible
AllowLink*
Case*
DragEnable*
FirstSel
FontName
ForeColor
Height
Left
PartName
RemoveLink*
SelectItem
SetTop
Top
Width
BackColor
Count
DropEnable*
Focus
FontSize
ForeMix
Index
MultSelect
PartType
Search*
SelectList
ShowTips
UseDelim
* Nota:: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
GotFocus
MouseExit
VKeyPress
Destroy
KeyPress
MouseMove
Drop*
LostFocus
Popup
Enter*
MouseEnter
Select
* Nota:: Consulte la descripcin del evento si desea saber cules son las
restricciones.
90
Eliminacin de elementos
Utilice el atributo RemoveItem para eliminar elementos de la lista. Utilice el valor
de ndice para especificar el elemento que va a eliminarse. Los valores de Index
comienzan en el 1. Cuando se elimina un elemento de la lista, todos los elementos
que siguen al elemento eliminado ascienden una posicin en la lista.
Para eliminar todos los elementos de la lista, especifique un valor de Index de 0.
Tipos de seleccin
Puede utilizar atributos para especificar cmo se seleccionan los elementos en un
recuadro de lista. Estn disponibles la seleccin nica, mltiple y ampliada.
Seleccin nica
La seleccin nica (el valor por omisin) slo permite que se seleccione un
Captulo 7. Utilizacin de componentes
91
Sealizacin de eventos
El evento Select se seala cuando:
v Un usuario selecciona un elemento que est en un recuadro de lista.
v Se selecciona un elemento de la lista en el programa.
v El usuario selecciona un elemento que ya ha sido seleccionado.
El evento Enter se seala cuando:
v Un usuario efecta una doble pulsacin sobre un elemento que est en el
recuadro de lista.
v Un usuario pulsa la tecla Intro cuando el recuadro de lista tiene el foco y se ha
seleccionado un elemento.
En la subrutina de accin para estos eventos, puede utilizar el atributo Selected o
FirstSel para determinar qu elemento se ha seleccionado.
92
93
*********************************************************************
*
*
* ID de programa : LISTBOX
*
*
*
* Descripcin . : Programa de ejemplo que muestra el componente
*
*
cuadro de lista.
*
*
*
*********************************************************************
*
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : CLEAR
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Borrar el recuadro de lista y el campo de entrada.
*
*
Poner el foco en el componente campo de entrada.
*
*
*
*********************************************************************
*
C
CLEAR
BEGACT
PRESS
MAIN
*
C
'LB1'
setatr
0
'RemoveItem'
C
'EF1'
setatr
*blanks
'Text'
C
'EF1'
setatr
1
'Focus'
*
C
ENDACT
*********************************************************************
*
*
* Ventana . : FRA0000B
*
*
*
* Componente : CLOSE
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Terminar el programa
*
*
*
*********************************************************************
*
C
CLOSE
BEGACT
PRESS
MAIN
*
C
move
*on
*INLR
*
C
ENDACT
94
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : REMOVE
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Eliminar el elemento seleccionado del recuadro de
*
*
lista. Se utiliza el atributo 'FirstSel' para
*
*
determinar el ndice del primer elemento
*
*
seleccionado.
*
*
*
*********************************************************************
*
C
REMOVE
BEGACT
PRESS
MAIN
*
C
'LB1'
getatr
'FirstSel'
Index
3 0
*
C
Index
ifgt
*zero
C
'LB1'
setatr
Index
'RemoveItem'
C
endif
*
C
ENDACT
*********************************************************************
*
*
* Ventana . : FRA0000B
*
*
*
* Componente : ADD
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Aade el valor del componente campo de entrada como *
*
nuevo elemento al componente recuadro de lista.
*
*
*
*********************************************************************
*
C
ADD
BEGACT
PRESS
MAIN
*
C
'EF1'
getatr
'TEXT'
tmp
30
*
C
tmp
ifne
*blanks
C
'LB1'
setatr
tmp
'InsertItem'
C
'EF1'
setatr
*blanks
'Text'
C
'EF1'
setatr
1
'Focus'
C
endif
*
C
ENDACT
95
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : SELECT
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Recupera el elemento seleccionado del recuadro de
*
*
lista y lo copia en el campo de entrada.
*
*
*
*********************************************************************
*
C
SELECT
BEGACT
PRESS
MAIN
*
C
'LB1'
getatr
'FirstSel'
x
3 0
*
C
x
ifgt
*zero
C
'LB1'
setatr
x
'Index'
C
'LB1'
getatr
'GetItem'
temp
20
C
'EF1'
setatr
temp
'Text'
C
endif
*
C
ENDACT
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : EF1
*
*
*
* Evento . . : CHANGE
*
*
*
* Descripcin: Para sucesos notify en ejemplos CRP
*
*
*
*********************************************************************
*
C
EF1
BEGACT
CHANGE
MAIN
*
C
ENDACT
*
Ejemplo de bsqueda
Puede utilizar los atributos Search, SearchType y Case para buscar un elemento
concreto de la lista. Es ms rpido utilizar estos atributos que leer cada elemento
en el programa y comparar para encontrar valores especficos.
El ejemplo siguiente muestra cmo localizar un nombre de cliente en un recuadro
de lista escribiendo un nombre en el campo de entrada. La ventana se denomina
MAIN, el recuadro de lista es LB1 y el campo de entrada es EF1. La interfaz de
usuario es la siguiente:
96
MAIN
BEGACT
CREATE
MAIN
C
C
'LB1'
'LB1'
Setatr
Setatr
0
1
'Case'
'SearchType'
Read
Custom01
DoW
Setatr
Read
EndDo
NOT *in99
CustNa
Custom01
'AddItemEnd'
Setatr
'SelectItem'
*
*
C
C
C
C
'LB1'
*
'LB1'
99
99
ENDACT
EF1
BEGACT
CHANGE
MAIN
'EF1'
Getatr
'Text'
Search
C
C
'LB1'
If
Setatr
*
*
*
40
97
C
C
C
C
C
C
If
Eval
Eval
EndIf
C
C
C
C
'LB1'
'LB1'
'LB1'
Else
Setatr
Setatr
Setatr
EndIf
ENDACT
%Getatr('Main':'LB1':'Index')<>0
%Setatr('Main':'LB1':'SelectItem')=
%Getatr('Main':'LB1':'Index')
%Setatr('Main':'LB1':'SetTop')=
%Getatr('Main':'LB1':'Index')
1
1
1
'SetTop'
'SelectItem'
'Index'
98
Medios
AllowLink*
FileName
Length
PartType
Treble*
AudioMode
Handle*
Panel
Position
UserData
Bass*
InPlace
ParentName
RemoveLink*
Visible
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Complete
Create
Destroy
Link*
*Nota: Consulte la descripcin del evento si desea saber cules son las
restricciones.
99
Establecimiento de AudioMode
Para procesar un archivo, establezca el atributo AudioMode en uno de los valores
siguientes:
Valor
Descripcin
Establecimiento de Volume
Utilice el atributo Volume para establecer el volumen del componente medios y la
salida de ondas y el sintetizador del sistema.
Establecimiento de Position
Utilice el atributo Position para determinar la posicin inicial del archivo que va a
procesarse. Exprese el valor del atributo en milisegundos.
Sealizacin de eventos
Cuando un componente medios ha procesado un archivo por completo, se seala
un evento Complete.
100
Panel de medios
AllowLink
Enabled
PanelItem
PartType
UserData
BackColor
Handle
PanelMode
Position
Visible
BackMix
Height
ParentName
RemoveLink
Volume
Destroy
MouseMove
Link
Popup
Create
MouseExit
101
Sealizacin de eventos
Cuando se mueve el graduador de volumen o el graduador de posicin, se seala
un evento Change. Utilice el atributo PanelItem para determinar el graduador que
se cambi. Utilice el atributo Volume para determinar el valor del graduador de
volumen y el atributo Position para determinar el valor del graduador de posicin.
Cuando se acciona un pulsador en el panel de medios, se seala un evento Press.
Utilice el valor numrico devuelto por el atributo PanelItem para determinar qu
botn caus el evento Press. Consulte la publicacin VisualAge RPG Manual de
consulta de componentes, SC10-3065-02 (SC09-2450-02) para ver la lista de los valores
posibles.
102
Barra de mens
PartName
ParentName
UserData
Destroy
103
Elemento de men
Enabled
PartName
FileName
PartType
Label
UserData
Destroy
MenuSelect
Establecimiento de un nemotcnico
Nota: Las aplicaciones Java no soportan nemotcnicos.
104
Sealizacin de eventos
Cuando el usuario selecciona un elemento de men, se seala un evento
MenuSelect.
Nota: Slo los elementos de men sealan un evento MenuSelect. Los submens
(como los mens en cascada), que estn asociados a otros mens no lo
sealan.
105
Subarchivo de mensajes
AddMsgText
Enabled
FontName
ForeColor
Height
ParentName
Selected
Visible
Count
FirstSel
FontSize
ForeMix
Index
PartName
ShowTips
DragEnable*
FontBold
FontStrike*
GetItem
MsgSubText
PartType
TipText
* Nota:: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
MouseEnter
Select
Destroy
MouseExit
Drop
MouseMove
Enter
Popup
106
Eliminacin de mensajes
Utilice el atributo RemoveMsg para eliminar un mensaje del componente
subarchivo de mensajes. Especifique el nmero de ndice del mensaje que se va a
eliminar. Para eliminar todos los mensajes, utilice un valor de ndice 0.
107
*********************************************************************
*
*
* ID de programa : MESSAGE
*
*
*
* Descripcin . : Programa de ejemplo que muestra el componente
*
*
subarchivo de mensajes.
*
*
*
*********************************************************************
*
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : PB_CLOSE
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Terminar el programa
*
*
*
*********************************************************************
*
C
PB_CLOSE
BEGACT
PRESS
MAIN
*
C
move
*on
*inlr
*
C
ENDACT
108
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : PB_OK
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Comprobar que el valor entrado est permitido. De lo *
*
contrario, aada un mensaje al componente subarchivo *
*
de mensajes.
*
*
*
*
Se utiliza el valor entrado como texto de
*
*
sustitucin en el mensaje.
*
*
*
*********************************************************************
*
C
PB_OK
BEGACT
PRESS
MAIN
*
* Borrar el subarchivo de mensajes
*
C
'Msg1'
setatr
0
'RemoveMsg'
*
* Obtener el nmero de componente
*
C
'PartNum'
getatr
'Text'
tmp4
4 0
*
* Si el nmero de componente no es vlido, aada un mensaje
* al componente mensaje. El nmero de componente entrado por
* el usuario se utiliza como texto de sustitucin.
* Dado que el texto de sustitucin debe ser una serie, mueva
* el valor numrico de nmero de componente a un campo de
* caracteres y utilcelo como texto de sustitucin.
C
tmp4
ifle
*zero
C
tmp4
orgt
1999
C
move
tmp4
char4
4
C
'Msg1'
setatr
char4
'MsgSubText'
C
'Msg1'
setatr
1
'AddMsgID'
*
* Dar FOCO al campo de entrada PartNum para que el cursor
* regrese al mismo.
C
'PartNum'
setatr
1
'Focus'
*
* El nmero de componente est bien, seguir procesando
C
else
*
...
*
...
*
...
109
AddOffset
CanUndo
CsrPos
DropEnable*
FontItalic
FontUnder*
Height
LineNumber
PartName
Refresh
TextLength
TipText
UserData
BackColor
CharOffset
Cut
Enabled
FontName
ForeColor
InsertLine
LineText
PartType
ShowTips
TextSelect
Top
Visible
BackMix
Copy
Delete
Focus
FontSize
ForeMix
InsertText
NbrOfLines
Paste
Text
TextStart
TopLine
Width
Click
Drop
MouseDown
MouseUp
Create
GotFocus
MouseEnter
Popup
DblClick
KeyPress
MouseExit
VKeyPress
110
Cambio de color
Si existe un componente edicin de mltiples lneas en un componente lienzo con
el color de fondo establecido en el valor por omisin del sistema, cambia al color
de fondo del lienzo que el componente edicin de mltiples lneas heredar. Los
componentes edicin de mltiples lneas adicionales aadidos al lienzo no
heredarn el color de fondo del lienzo. Para corregirlo, difiera el establecimiento
del color de fondo del lienzo hasta que haya colocado todos los componentes
edicin de mltiples lneas en el lienzo. Como alternativa, puede hacer que los
componentes edicin de mltiples lneas hereden el color estableciendo el color del
lienzo en el valor por omisin del sistema, y luego otra vez en el valor del color
RGB predefinido.
Si arrastra y suelta un color en la barra de desplazamiento de un componente
edicin de mltiples lneas, ese color no se guardar. El componente edicin de
mltiples lneas cambiar al nuevo color, pero cuando se cierre la ventana y vuelva
a abrirse, el color volver a ser el original.
Eleccin de fonts
No todos los fonts estn soportados por el componente edicin de mltiples lneas.
Despus de seleccionar un font para este componente, se ajustar para visualizar la
coincidencia ms prxima para el font seleccionado.
111
112
*********************************************************************
*
*
* ID de programa : MLE
*
*
*
* Descripcin . : Programa de ejemplo que muestra el componente
*
*
edicin de mltiples lneas.
*
*
*
*********************************************************************
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : PB_CLOSE
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Terminar el programa
*
*
*
*********************************************************************
*
C
PB_CLOSE
BEGACT
PRESS
MAIN
*
C
move
*on
*inlr
*
C
ENDACT
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : PB_COPY
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Copiar el texto seleccionado en el MLE al componente *
*
edicin de mltiples lneas.
*
*
*
*********************************************************************
*
C
PB_COPY
BEGACT
PRESS
MAIN
*
C
'EF1'
setatr
*blanks
'Text'
C
'MLE1'
getatr
'TextStart'
start
5 0
C
'MLE1'
getatr
'TextSelect' selected
128
*
C
start
ifgt
*zero
C
'ef1'
setatr
selected
'Text'
C
endif
*
C
ENDACT
Figura 22. Ejemplo de cdigo en el que se utiliza el componente edicin de mltiples lneas
(Pieza 1 de 2)
113
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : Top
*
*
*
* Evento . . : Press
*
*
*
* Descripcin: Establecer la 5 lnea del componente edicin de
*
*
mltiples lneas como lnea superior
*
*
*
* Cambios . :
*
*
*
*********************************************************************
*
C
TOP
BEGACT
PRESS
MAIN
*
C
eval
%setatr('MAIN':'MLE1':'TOPLINE') = 5
C
ENDACT
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : Bottom
*
*
*
* Evento . . : Press
*
*
*
* Descripcin: Establecer la parte inferior
*
*
*
*********************************************************************
*
C
BOTTOM
BEGACT
PRESS
MAIN
*
C
eval
%setatr('MAIN':'MLE1':'TOPLINE') = 0
C
ENDACT
Figura 22. Ejemplo de cdigo en el que se utiliza el componente edicin de mltiples lneas
(Pieza 2 de 2)
114
Cuaderno
BackMix
Focus
FontSize
ForeMix
PageNumber
Refresh
Visible
Bottom
FontBold
FontStrike*
Handle*
ParentName
ShowTabs*
Width
Count
FontItalic
FontUnder*
Height
PartName
Top
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
Destroy
115
Pgina de cuaderno
ParentName
TabImage
PartName
TabLabel
PartType
UserData
Destroy
PageSelect
Establecimiento de un nemotcnico
Para especificar una clave nemotcnica para el elemento de men, coloque el
identificador nemotcnico delante de un carcter en el texto del atributo Label. El
carcter al que se ha asignado la clave nemotcnica se visualiza en la interfaz con
un subrayado (por ejemplo, Visualizar). Tenga en cuenta que para Windows
NT/95/98, las claves nemotcnicas se visualizan, pero no funcionan en pginas del
cuaderno.
Nota: Las aplicaciones Java no soportan nemotcnicos
116
ParentName
TabLabel
PartName
UserData
PartType
Visible
Destroy
PageSelect
117
Interfaz ODBC/JDBC
El soporte de JDBC forma parte del Java 2 Software Development Kit (J2SDK)
Versin 1.2 para Windows. Si no tiene el J2SDK, puede bajarlo de Sun
Microsystems en el URL siguiente:
http://www.javasoft.com/products/
Las aplicaciones que acceden y manipulan datos de una base de datos JDBC
necesitan el controlador de conformidad con JDBC 2.0 adecuado. Puede encontrar
el controlador JDBC y ms informacin en el URL siguiente:
http://java.sun.com/products/jdbc/
118
Atributos de componente
AllowChg*
BufferLen*
Column
Columnas
ConnectStr
Fetch
Handle*
Left
Refresh
SQLQuery
UserData
BindPart
BufferPtr*
ColumnDec
ColumnType
CurrentRow
FetchNext
Height
ParentName
Rows*
Top
Visible
Bottom
BufferType*
ColumnLen
Connect
DeleteRow
FetchPrior
InsertRow
PartName
SQLError
UnBind
Width
BufferDec*
CharData
ColumnName
Connected
ExecuteSQL
GetTables
IsData
PartType
SQLMsgBox
UpdateRow
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
Destroy
'ODBC'
'ODBC'
Setatr
Setatr
If
...
Else
...
EndIf
*Blanks
'ConnectStr'
1
'Connect'
%Getatr('Main':'ODBC':'Connected')=1
119
SelAll
1
'SQLQuery'
'ExecuteSQL'
S
S
20
30
S
S
*
*
INZ(%Addr(first))
INZ(%Addr(last))
Setatr
Setatr
Setatr
Setatr
1
20
fptr
1
'Column'
'BufferLen'
'BufferPtr'
'BufferType'
Setatr
Setatr
Setatr
Setatr
2
30
lptr
1
'Column'
'BufferLen'
'BufferPtr'
'BufferType'
120
Eval
%Setatr(Main':'ODBC1':'BufferPtr')=%Addr(first)
Tipos de datos
Utilice el atributo BufferType para indicar el tipo de datos del campo de programa
al que hace referencia el atributo BufferPtr. El componente Interfaz ODBC/JDBC
utiliza el atributo BufferType para realizar la conversin de datos correcta al
traspasar datos entre el campo del programa y la columna de la tabla. Es
importante establecer correctamente este atributo, ya que no se comprueba si los
tipos de campo son adecuados.
Establezca el atributo Column antes de utilizar el atributo BufferType. Si el campo
de programa est asociado a un componente de la interfaz, el atributo DataType se
puede utilizar para obtener el tipo de almacenamiento intermedio.
Utilice el siguiente diagrama para establecer el tipo de datos VARPG en el
correspondiente tipo de datos SQL soportado. Especifique los atributos BufferLen y
BufferDec slo como se listan en el diagrama.
Para los tipos de datos carcter, entero o entero pequeo, especifique slo el
atributo BufferLen.
Tenga en cuenta que los tipos de datos doble, flotante y real pueden definirse en
VARPG, como flotante (F) o decimal con zona. Si los define como decimal con
zona, el tiempo de ejecucin de VARPG slo utilizar el nmero de posiciones
decimales que especifica el atributo BufferDec cuando traslade datos de la
columna. Esto puede provocar una prdida de precisin si el origen de datos tiene
ms posiciones decimales que las especificadas por el atributo BufferDec. Si define
estos campos como flotantes (F), NO especifique los atributos BufferLen ni
BufferDec.
Tipo de datos SQL
Carcter
Decimal
Entero
Entero pequeo
Doble
Doble
Coma flotante
Coma flotante
Real
Real
Tipo de datos
VARPG
CHAR
Decimal con
Decimal con
Decimal con
8F
Decimal con
4F
Decimal con
4F
Decimal con
Especifica la longitud
del campo de
programa (utilice
BufferLen)
zona
zona
zona
X
X
X
X
zona
zona
zona
121
SelAll
1
'SQLQuery'
'ExecuteSQL'
'ODBC1'
'ODBC1'
Setatr
Getatr
1
'IsData'
'FetchNext'
Temp
C
C
C
C
'LB1'
'ODBC1'
DoW
Setatr
Getatr
EndDo
Temp = 1
first
'IsData'
'AddItemEnd'
Temp
1 0
PB_Update
BEGACT
PRESS
C
C
C
'ODBC1'
'ODBC1'
Read
Getatr
Setatr
'Main'
'CurrentRow' Row
Row
'UpdateRow'
Main
1 0
ENDACT
122
PB_Delete
BEGACT
PRESS
C
C
'ODBC1'
'ODBC1'
Getatr
Setatr
'CurrentRow' Row
Row
'DeleteRow'
*
*
Main
1 0
ENDACT
123
*
D ConnectStr
C
D
D
D
* Variables de trabajo
DRow
S
6 0
*
* Definir punteros a almacenamientos
*
DP_001
S
*
DP_002
S
*
DP_003
S
*
DP_004
S
*
DP_005
S
*
DP_006
DP_007
DP_008
DP_009
DP_010
DP_011
S
S
S
S
S
S
*
*
*
*
*
*
*
* Seleccionar todos los registros
*
DSelAll
C
*
intermedios de campos
Nmero
Nombre
Nmero rep.
Contacto
Telfono
Fax
Direccin
Ciudad
Pas
Cdigo postal
Localidad postal
124
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : Main
*
*
*
* Evento . . : Create
*
*
*
* Descripcin: Enlazar campos de programa a columnas y conectar con *
*
tabla de base de datos CUSTOMERS
*
*
*
*********************************************************************
*
C
Main
BEGACT
CREATE
Main
*
* Enlazar campos a columnas
* Enlazar columna: Nmero
*
C
'ODBC'
SetAtr
1
'Column'
C
'ODBC'
SetAtr
7
'BufferLen'
C
'ODBC'
SetAtr
1
'BufferType'
C
Eval
P_001=%Addr(Number)
C
'ODBC'
SetAtr
P_001
'BufferPtr'
*
* Enlazar columna: Nombre
*
C
'ODBC'
SetAtr
2
'Column'
C
'ODBC'
SetAtr
40
'BufferLen'
C
'ODBC'
SetAtr
1
'BufferType'
C
Eval
P_002=%Addr(Name)
C
'ODBC'
SetAtr
P_002
'BufferPtr'
*
* Enlazar columna: Nmero rep.
*
C
'ODBC'
SetAtr
3
'Column'
C
'ODBC'
SetAtr
5
'BufferLen'
C
'ODBC'
SetAtr
1
'BufferType'
C
Eval
P_003=%Addr(Rep_number)
C
'ODBC'
SetAtr
P_003
'BufferPtr'
*
* Enlazar columna: Contacto
*
C
'ODBC'
SetAtr
4
'Column'
C
'ODBC'
SetAtr
30
'BufferLen'
C
'ODBC'
SetAtr
1
'BufferType'
C
Eval
P_004=%Addr(Contact)
C
'ODBC'
SetAtr
P_004
'BufferPtr'
*
125
*
* Enlazar columna:
*
C
'ODBC'
C
'ODBC'
C
'ODBC'
C
C
'ODBC'
*
* Enlazar columna:
*
C
'ODBC'
C
'ODBC'
C
'ODBC'
C
C
'ODBC'
*
* Enlazar columna:
*
C
'ODBC'
C
'ODBC'
C
'ODBC'
C
C
'ODBC'
*
* Enlazar columna:
*
C
'ODBC'
C
'ODBC'
C
'ODBC'
C
C
'ODBC'
*
* Enlazar columna:
*
C
'ODBC'
C
'ODBC'
C
'ODBC'
C
C
'ODBC'
*
* Enlazar columna:
*
C
'ODBC'
C
'ODBC'
C
'ODBC'
C
C
'ODBC'
*
Telfono
SetAtr
SetAtr
SetAtr
Eval
SetAtr
5
'Column'
17
'BufferLen'
1
'BufferType'
P_005=%Addr(Phone)
P_005
'BufferPtr'
Fax
SetAtr
SetAtr
SetAtr
Eval
SetAtr
6
'Column'
17
'BufferLen'
1
'BufferType'
P_006=%Addr(Fax)
P_006
'BufferPtr'
Direccin
SetAtr
SetAtr
SetAtr
Eval
SetAtr
7
'Column'
40
'BufferLen'
1
'BufferType'
P_007=%Addr(Address)
P_007
'BufferPtr'
Ciudad
SetAtr
SetAtr
SetAtr
Eval
SetAtr
8
'Column'
30
'BufferLen'
1
'BufferType'
P_008=%Addr(City)
P_008
'BufferPtr'
Pas
SetAtr
SetAtr
SetAtr
Eval
SetAtr
9
'Column'
20
'BufferLen'
1
'BufferType'
P_009=%Addr(Country)
P_009
'BufferPtr'
Cdigo postal
SetAtr
SetAtr
SetAtr
Eval
SetAtr
10
'Column'
10
'BufferLen'
1
'BufferType'
P_010=%Addr(Zip_Postal)
P_010
'BufferPtr'
126
*
* Enlazar columna: Localidad postal
*
C
'ODBC'
SetAtr
11
'Column'
C
'ODBC'
SetAtr
5
'BufferLen'
C
'ODBC'
SetAtr
1
'BufferType'
C
Eval
P_011=%Addr(Zip_loc)
C
'ODBC'
SetAtr
P_011
'BufferPtr'
C
'ODBC'
SetAtr
ConnectStr
'ConnectStr'
*
* Conectar a la base de datos y seleccionar todos los registros
*
C
'ODBC'
SetAtr
1
'Connect'
C
'ODBC'
SetAtr
SelAll
'SQLQuery'
C
'ODBC'
SetAtr
1
'ExecuteSQL'
*
* Buscar la primera fila de datos y visualizarla en la ventana
*
C
'ODBC'
SetAtr
1
'FetchNext'
C
Write
'Main'
*
C
ENDACT
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : PB_Prev
*
*
*
* Evento . . : Press
*
*
*
* Descripcin: Buscar la fila anterior y visualizarla
*
*
*
*********************************************************************
*
C
PB_PREV
BEGACT
PRESS
Main
*
C
'ODBC'
SetAtr
1
'FetchPrior'
C
Write
'Main'
*
C
ENDACT
*
127
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : PB_Next
*
*
*
* Evento . . : Press
*
*
*
* Descripcin: Buscar la fila siguiente y visualizarla
*
*
*
*********************************************************************
*
C
PB_NEXT
BEGACT
PRESS
Main
*
C
'PB_Next'
Setatr
0
'Enabled'
C
'ODBC'
SetAtr
1
'FetchNext'
C
Write
'Main'
C
'PB_Next'
Setatr
1
'Enabled'
*
C
ENDACT
*
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : PB_Insert
*
*
*
* Evento . . : Press
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
PB_INSERT
BEGACT
PRESS
Main
*
C
Read
'Main'
C
'ODBC'
SetAtr
1
'InsertRow'
*
C
ENDACT
*
128
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : PB_Delete
*
*
*
* Evento . . : Press
*
*
*
* Descripcin: Suprimir la fila actual
*
*
*
*********************************************************************
*
C
PB_DELETE
BEGACT
PRESS
Main
*
* Confirmar supresin de fila
C
*MSG0001
Dsply
mRC
9 0
*
C
If
mRC=*YesButton
C
'ODBC'
GetAtr
'CurrentRow' Row
C
'ODBC'
SetAtr
Row
'DeleteRow'
C
EndIf
*
C
ENDACT
*
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : PB_Update
*
*
*
* Evento . . : Press
*
*
*
* Descripcin: Actualizar la fila actual
*
*
*
*********************************************************************
*
C
PB_UPDATE
BEGACT
PRESS
Main
*
C
Read
'Main'
C
'ODBC'
GetAtr
'CurrentRow' Row
C
'ODBC'
SetAtr
Row
'UpdateRow'
*
C
ENDACT
*
129
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : PB_Close
*
*
*
* Evento . . : Press
*
*
*
* Descripcin: Finalizar el programa
*
*
*
*********************************************************************
*
C
PB_CLOSE
BEGACT
PRESS
Main
*
C
Move
*ON
*INLR
*
C
ENDAC
*
130
Recuadro de contorno
Handle*
PartName
UserData
Height
PartType
Visible
Left
Refresh
Width
Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
Destroy
131
Men emergente
Utilice el componente men emergente para visualizar las opciones que pertenecen
a un componente determinado de la interfaz. Puede aadir opciones de men y
submens a los mens emergentes.
Este men se llama emergente porque aparece cuando el usuario pulsa la tecla o
el botn del ratn adecuados.
Nota: Las propiedades, los eventos y otros elementos de este componente slo se
pueden manipular desde su men emergente de la vista de rbol de
proyectos.
Para obtener informacin relacionada, consulte el apartado:
v Barra de mens en la pgina 103
v Elemento de men en la pgina 104
v Submen en la pgina 166
Atributos de componente
Handle*
PartName
X
InvName
PartType
Y
InvPName
UserData
ParentName
Visible*
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
No hay eventos para este componente.
132
Barra de progreso
Handle*
PartName
PBStep
Visible
Height
PartType
PBStepSize
Width
Left
PBRange
Top
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
Destroy
133
Pulsador
BackMix
Focus
FontSize
ForeMix
HighLight
PartName
TipText
Visible
Border*
FontBold
FontStrike*
Handle*
Label
PartType
Top
Width
Bottom
FontItalic
FontUnder*
Height
Left
Refresh
UserData
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
MouseEnter
Press
Destroy
MouseExit
GotFocus
MouseMove
LostFocus
Popup
Establecimiento de un nemotcnico
Nota: Las aplicaciones Java no soportan nemotcnicos.
Para cada pulsador, utilice el atributo Label para asociar el texto a un pulsador
especfico. Ese texto aparece en el botn.
Para especificar una clave nemotcnica para el elemento de men, coloque el
identificador nemotcnico delante de un carcter en el texto del atributo Label. En
Windows NT/95/98, se utiliza el smbolo &. El carcter al que se ha asignado la
134
Sealizacin de eventos
Un evento Press se seala en el programa cuando:
v el usuario selecciona un pulsador.
v el usuario pulsa la tecla Intro si se ha definido un pulsador por omisin.
v el usuario pulsa una tecla de mandato que se ha asignado a un pulsador.
135
Botn de seleccin
Utilice botones de seleccin si desea que el usuario seleccione slo una opcin de
un grupo de opciones relacionadas pero que se excluyen mutuamente. Cuando el
usuario efecta una seleccin, la opcin seleccionada anteriormente en el grupo se
deselecciona.
Un botn de seleccin tiene forma circular y a su lado hay texto. Cuando est
seleccionado, contiene un punto.
No utilice botones de seleccin si desea que el usuario pueda seleccionar ms de
una opcin al mismo tiempo. En este caso, consulte el apartado Recuadro de
seleccin en la pgina 55.
Atributos de componente
BackColor
Enabled
FontName
ForeColor
HighLight*
PartName
ShowTips
Visible
BackMix
Focus
FontSize
ForeMix
Label
PartType
TipText
Width
Bottom
FontBold
FontStrike*
Handle*
Left
Refresh
Top
Checked
FontItalic
FontUnder*
Height
ParentName
SelectIdx
UserData
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
MouseExit
Destroy
MouseMove
Enter
Popup
MouseEnter
Select
Establecimiento de un nemotcnico
Para especificar una clave nemotcnica para el pulsador, coloque el identificador
nemotcnico delante de un carcter en el texto del atributo Label. En Windows
NT/95/98, se utiliza el smbolo &. El carcter al que se ha asignado la clave
nemotcnica se visualiza en la interfaz con un subrayado (por ejemplo, Azul). El
subrayado informa a los usuarios que pueden seleccionar el botn de seleccin
pulsando la tecla del carcter subrayado en el teclado.
Nota: Las aplicaciones Java no soportan nemotcnicos.
136
137
Ahora se considera que RB1 y RB2 forman parte de un grupo, de forma que
seleccionar uno de ellos slo afectar al otro. Repita el mismo proceso para RB3 y
RB4. La siguiente figura muestra la ventana Personalizar tabuladores y grupos
despus de haber agrupado los componentes:
Nota: Los topes de tabulador y las marcas de grupo tambin pueden establecerse
para componentes concretos desde el cuaderno de propiedades de un
componente.
Sealizacin de eventos
Cuando el usuario selecciona un elemento de men, se seala un evento Select.
138
Graduador
AllowLink*
Enabled
FontName
ForeColor
Left
PartName
ShowTips
Top
Width
BackColor
Focus
FontSize
ForeMix
Maximum
PartType
TickLabel
UserData
BackMix
FontBold
FontStrike*
Handle*
Minimum
Refresh
TickNumber
Value
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Change
Link*
MouseMove
Create
LostFocus
Popup
Destroy
MouseEnter
GotFocus
MouseExit
*Nota: Consulte la descripcin del evento si desea saber cules son las
restricciones.
139
Sealizacin de eventos
El evento Change se seala cuando cambia la posicin del nivel del graduador.
Si utiliza botones de incremento para desplazar el nivel del graduador, el evento
Change se seala continuamente mientras permanezcan pulsados los botones.
Si utiliza el ratn para desplazar el nivel del graduador, se produce el evento
Change despus de haber soltado el botn del ratn.
Ejemplo de graduador
Este ejemplo muestra cmo el componente graduador puede utilizarse para
controlar el color de otros componentes utilizando el atributo BackMix. A medida
que se desplaza cada graduador, se utiliza su valor para determinar la mezcla de
color de fondo y su componente texto esttico correspondiente, para mostrar la
intensidad de dicho color. El color de fondo del texto esttico con la etiqueta
Ejemplo se actualiza para mostrar la mezcla de color combinado de los tres
colores.
140
*********************************************************************
*
*
* ID de programa : SLIDER
*
*
*
* Descripcin . : Programa de ejemplo que muestra el componente
*
*
graduador.
*
*
*
*
Al mover cada nivel del graduador, se seala un *
*
evento CHANGE para ese graduador.
*
*
La subrutina de accin CHANGE recupera el valor *
*
del graduador y actualiza la mezcla de color de *
*
fondo de su componente texto esttico
*
*
correspondiente para mostrar la intensidad de
*
*
ese color.
*
*
*
*
La mezcla de color de fondo del componente
*
*
texto esttico 'SAMPLE' tambin se actualiza
*
*
para mostrar el resultado de mezclar todos los
*
*
valores de colores.
*
*
*
*********************************************************************
*
*
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : PB_EXIT
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Terminar el programa
*
*
*
*********************************************************************
*
C
PB_EXIT
BEGACT
PRESS
MAIN
*
C
move
*on
*inlr
*
C
ENDACT
141
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : GREEN
*
*
*
* Evento . . : CHANGE
*
*
*
* Descripcin: Actualizar el valor de color verde.
*
*
*
*********************************************************************
*
C
GREEN
BEGACT
CHANGE
MAIN
*
C
'green'
getatr
'Value'
val
3 0
C
move
val
grnmix
3
C
move
*blanks
mix
11
C
movel
'000:'
mix
C
mix
cat
grnmix:0
mix
C
mix
cat
':000':0
mix
C
'STGreen'
setatr
mix
'BackMix'
C
exsr
update
*
C
ENDACT
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : BLUE
*
*
*
* Evento . . : CHANGE
*
*
*
* Descripcin: Actualizar el valor de color azul.
*
*
*
*********************************************************************
*
C
BLUE
BEGACT
CHANGE
MAIN
*
C
'blue'
getatr
'Value'
val
C
move
val
blumix
3
C
move
*blanks
mix
C
movel
'000:000:'
mix
C
mix
cat
blumix:0
mix
C
'STBlue'
setatr
mix
'BackMix'
C
exsr
update
*
C
ENDACT
142
*********************************************************************
*
*
* Subrutina . . : UPDATE
*
*
*
* Descripcin . : Actualiza la mezcla de color de fondo del
*
*
componente de texto esttico 'Sample' para
*
*
mostrar el resultado de combinar los valores
*
*
de colores de los tres graduadores.
*
*
*
*********************************************************************
*
C
UPDATE
BEGSR
*
C
move
*blanks
smpmix
11
C
movel
redmix
smpmix
C
smpmix
cat
':':0
smpmix
C
smpmix
cat
grnmix:0
smpmix
C
smpmix
cat
':':0
smpmix
C
smpmix
cat
blumix:0
smpmix
C
'Sample'
setatr
smpmix
'BackMix'
*
C
ENDSR
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : RED
*
*
*
* Evento . . : CHANGE
*
*
*
* Descripcin: Actualizar el valor de color rojo.
*
*
*
*********************************************************************
*
C
RED
BEGACT
CHANGE
FRA0000B
*
C
'red'
getatr
'Value'
val
C
move
val
redmix
3
C
move
*blanks
mix
C
movel
redmix
mix
C
mix
cat
':000:000':0 mix
C
'STRed'
setatr
mix
'BackMix'
C
exsr
update
*
C
ENDACT
143
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : MAIN
*
*
*
* Evento . . : CREATE
*
*
*
* Descripcin: Inicializar la mezcla de color
*
*
*
*********************************************************************
*
C
MAIN
BEGACT
CREATE
MAIN
*
C
move
'000'
grnmix
C
move
'000'
blumix
C
move
'000'
redmix
*
C
ENDACT
144
Selector cclico
Alignment*
Enabled
FontName
ForeColor
Left
PartName
RemoveItem
Top
Width
BackColor
Focus
FontSize
ForeMix
Maximum
PartType
ShowTips
UserData
BackMix
FontBold
FontStrike*
Handle*
Minimum
ReadOnly
Text
Value
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Change
Link*
MouseMove
SpinUp
Create
LostFocus
Popup
Destroy
MouseEnter
SpinDown
GotFocus
MouseExit
SpinEnd
*Nota: Consulte la descripcin del evento si desea saber cules son las
restricciones.
145
146
*********************************************************************
*
*
* ID de programa : SPIN
*
*
*
* Descripcin . : Programa de ejemplo que muestra el componente
*
*
selector cclico.
*
*
*
*
Se utiliza un selector cclico de caracteres y
*
*
otro numrico para mostrar cmo se inicializan
*
*
y cmo se recuperan sus valores.
*
*
*
*********************************************************************
*
*
DDAY
S
10A
DIM(7) PERRCD(1) CTDATA
*
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : PB_COPY
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Copiar el valor de cada botn selector cclico a
*
*
su componente campo de entrada correspondiente.
*
*
*
*********************************************************************
*
C
PB_COPY
BEGACT
PRESS
MAIN
*
C
'SPB1'
Getatr
'Value'
tmp2N
2 0
C
'EF1'
Setatr
tmp2N
'Text'
*
C
'SPB2'
Getatr
'Text'
tmp
10
C
'EF2'
Setatr
tmp
'Text'
*
C
ENDACT
Figura 25. Ejemplo de cdigo en el que se utiliza el componente selector cclico (Pieza 1 de
2)
147
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : MAIN
*
*
*
* Evento . . : CREATE
*
*
*
* Descripcin: Centrar la ventana en la pantalla e
*
*
inicializar los selectores cclicos.
*
*
*
*********************************************************************
*
C
MAIN
BEGACT
CREATE
MAIN
*
* Inicializar el selector cclico de caracteres con los das
* de la semana a partir de la matriz DAY
C
Do
7
I
2 0
C
'SPB2'
Setatr
day(i)
'AddItemEnd'
C
EndDo
*
* Inicializar el selector cclico numrico
C
'SPB1'
Setatr
1
'Minimum'
C
'SPB1'
Setatr
10
'Maximum'
*
C
ENDACT
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : PB_EXIT
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Terminar el programa
*
*
*
*********************************************************************
*
C
PB_EXIT
BEGACT
PRESS
MAIN
*
C
Move
*On
*INLR
*
C
ENDACT
**CTDATA DAY
Domingo
Lunes
Martes
Mircoles
Jueves
Viernes
Sbado
Figura 25. Ejemplo de cdigo en el que se utiliza el componente selector cclico (Pieza 2 de
2)
148
Texto esttico
BackColor
DragEnable*
FontItalic
FontUnder*
Height
PartName
TipText
Width
BackMix
DropEnable*
FontName
ForeColor
Label
PartType
Top
Bottom
Enabled
FontSize
ForeMix
Left
Refresh
UserData
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Click
Drop
MouseExit
Create
Link*
MouseMove
DblClick
MouseDown
MouseUp
Destroy
MouseEnter
Popup
*Nota: Consulte la descripcin del evento si desea saber cules son las
restricciones.
149
Edicin de la salida
Puede editar el contenido de un componente texto esttico si el tipo de datos es
numrico. Consulte el Captulo 11. Edicin de la salida en la pgina 229 para
obtener una descripcin de la edicin.
150
Barra de estado
ParentName
SBLabel
PartName
SBPanes
PartType
UserData
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
Destroy
151
Subarchivo
Utilice el componente subarchivo para visualizar una lista de registros, cada uno
de los cuales consta de uno o ms campos.
La funcin del componente subarchivo es similar a la de un subarchivo de
AllowEdit
Bottom
CapsLock
CellFGMix
ColFGMix
DeSelect
FirstSel
FontItalic
FontUnder*
HdgBGClr
HdgIdx
HRule
MultSelect
ParentName
RowBGClr
Scale
SetTop
StartAt
UserData
AutoSelect
ButtonIdx
CellBGClr
ColBGClr
ColNumber
EnableBtn
Focus
FontName
ForeColor
HdgBGMix
HdgText
Index
NbrOfSel
PartName
RowBGMix
Selected
SflNxtChg
TipText
Visible
BackColor
Buttons
CellBGMix
ColBGMix
ColWidth
Enabled
FontArea
FontSize
ForeMix
HdgFGClr
Height
ItemCount
OpenEdit
PartType
RowFGClr
SelectItem
ShowTips
Top
VRule
* Nota:: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Change
Enter
LastRec
MouseMove
PageTop
Select
152
ColSelect
FirstRec
LostFocus
NextRec
PageUp
VKeyPress
Create
GotFocus
MouseEnter
PageDown
Popup
Destroy
KeyPress
MouseExit
PageEnd
PrevRec
Carga de un subarchivo
Para visualizar informacin en un componente subarchivo, la informacin se graba
de registro en registro en el componente subarchivo. Los campos de subarchivo
que se definieron en el Diseador GUI para el componente subarchivo se
establecen en los valores deseados, y la operacin WRITE se realiza en el formato
de registro de subarchivo.
153
REPORT
*
*
*
*
*
*IN99
BEGACT
PRESS
READS
SUBF1
DOWEQ
*OFF
MOVEL
'(Reported)'
UPDATE
SUBF1
C
C
READS
END
SUBF1
ENDACT
*
*
99
WIN1
SF1NAME
99
154
1. El usuario selecciona el campo con el puntero del ratn y pulsa el botn 1 del
ratn mientras mantiene pulsada la tecla Alt. A continuacin, el usuario puede
utilizar las teclas de tabulador y retroceso de tabulador para desplazarse por
diferentes campos en el mismo registro, y utilizar las teclas de flecha arriba y
flecha abajo para desplazarse a registros distintos.
2. Para abrir un campo para editarlo en el programa:
a. Utilice el atributo Index para indicar qu registro contiene el campo que va
a editarse.
b. Establezca el atributo ColNumber para indicar el nmero de columna del
campo que va a editarse.
c. Establezca el valor del atributo OpenEdit en 1 para abrir el campo con el
propsito de editarlo. (Puede establecer este valor del atributo en 0 para
cerrar cualquier campo que est abierto actualmente para editarse.)
Utilice la operacin READC para determinar si el usuario ha cambiado algn
campo en el subarchivo.
Campos ocultos
En el cuaderno de propiedades del componente subarchivo, puede establecer que
campos de subarchivo estn Ocultos para que no se visualicen. Por ejemplo, un
registro de subarchivo puede contener informacin de clave de registro en un
campo oculto. El campo oculto no puede verse, pero se devuelve al programa con
el registro de subarchivo.
Habilitacin de la tabulacin
Utilice el dilogo Personalizar tabuladores y grupos para habilitar la tabulacin en
un componente subarchivo. Pulse con el botn derecho del ratn en el componente
lienzo de la ventana que contiene el componente subarchivo. Seleccione
Tabuladores y grupos en el men emergente. Aparecer el dilogo Personalizar
tabuladores y grupos. Para establecer o borrar el valor de tabulacin, pulse con el
botn derecho del ratn en el nombre del componente y seleccione la opcin de
men Tabulador.
Ejemplo de subarchivo
En el siguiente ejemplo, se utiliza un componente subarchivo para visualizar
registros de un archivo de base de datos en un sistema AS/400. En lugar de
rellenar el subarchivo con todos los registros de la base de datos, se proporcionan
pulsadores de navegacin (FirstRec, LastRec, PageTop, PageUp, PageDown,
PrevPage, NextPage) con el fin de controlar el desplazamiento por los registros
dentro del subarchivo.
Cuando accione el pulsador Select, se utiliza el cdigo de operacin READS para
determinar qu registro se ha seleccionado, y el valor del campo CUSTNO se
visualiza en el componente texto esttico. Adems se abre el primer campo del
registro para editarlo.
Captulo 7. Utilizacin de componentes
155
*********************************************************************
*
*
* ID de programa : SUBFILE
*
*
*
* Descripcin . : Programa de ejemplo que muestra el componente
*
*
subarchivo.
*
*
*
*
Este programa de ejemplo requiere un archivo
*
*
fsico de base de datos en el AS/400
*
*
denominado CUSTOMER.
*
*
*
*********************************************************************
*
H
FCUSTOMER IF E
DISK
REMOTE INFDS(INFDS) BLOCK(*Yes)
*
* INFDS para el archivo de base de datos. FileSize contendr
* el nmero de registros en el archivo cuando ste se abri.
DINFDS
DS
DFileSize
156
159B 0
*
*********************************************************************
*
*
* Subrutina . . : *INZSR
*
*
*
* Descripcin . : Inicializar las variables de trabajo.
*
*
*
*********************************************************************
*
C
*INZSR
BEGSR
*
C
Z-Add
10
PageSize
2 0
C
Z-Add
1
CurRec
6 0
C
FileSize
Sub
PageSize
LastPage
6 0
C
Add
1
LastPage
*
C
ENDSR
*
*
156
*********************************************************************
*
*
* Subrutina . . : NEXTPAGE
*
*
*
* Descripcin . : Obtener la pgina siguiente de los registros
*
*
de la base de datos.
*
*
*
*********************************************************************
*
C
NEXTPAGE
BEGSR
*
C
add
PageSize
CurRec
*
C
CurRec
IfGt
FileSize
C
Sub
PageSize
CurRec
*
C
Else
C
Exsr
FillPage
C
'SFl1'
setatr
2
'BUTTONIDX'
C
'SFL1'
setatr
1
'ENABLEBTN'
C
EndIf
*
C
ENDSR
157
*********************************************************************
*
*
* Subrutina . . : PREVPAGE
*
*
*
* Descripcin . : Devolver la pgina anterior de registros de la
*
*
base de datos.
*
*
*
*********************************************************************
*
C
PREVPAGE
BEGSR
*
C
Sub
PageSize
CurRec
*
C
CurRec
IfLe
*zero
C
Add
PageSize
CurRec
*
C
Else
C
Exsr
FillPage
C
'SFl1'
setatr
5
'BUTTONIDX'
C
'SFL1'
setatr
1
'ENABLEBTN'
C
EndIf
*
C
ENDSR
*********************************************************************
*
*
* Subrutina . . : FILLPAGE
*
*
*
* Descripcin . : Rellenar el componente subarchivo con una pgina *
*
de registros de la base de datos.
*
*
*
*********************************************************************
*
C
FILLPAGE
BEGSR
*
C
Clear
Sfl1
C
CurRec
Setll
customer
C
Z-Add
1
count
2 0
C
Read
customer
9999
*
C
*in99
DoWeq
*off
C
count
AndLE
PageSize
C
Write
Sfl1
*
C
If
%Getatr('Main':'HILITE':'Checked')=1
C
'SFL1'
Setatr
Count
'Index'
C
'SFL1'
Setatr
1
'ColNumber'
C
'SFL1'
Setatr
*DarkGreen
'CellFGClr'
C
'SFL1'
Setatr
2
'ColNumber'
C
'SFL1'
Setatr
*DarkPink
'CellFGClr'
C
'SFL1'
Setatr
3
'ColNumber'
C
'SFL1'
Setatr
*DarkBlue
'CellFGClr'
C
EndIf
158
C
C
C
Add
Read
EndDo
1
customer
Read
customer
*
*
count
9999
C
C
C
C
C
C
C
C
C
C
CurRec
'SFl1'
'SFL1'
'SFl1'
'SFL1'
'SFl1'
'SFL1'
'SFl1'
'SFL1'
ifeq
setatr
setatr
setatr
setatr
setatr
setatr
setatr
setatr
endif
1
1
0
2
0
5
1
6
1
'BUTTONIDX'
'ENABLEBTN'
'BUTTONIDX'
'ENABLEBTN'
'BUTTONIDX'
'ENABLEBTN'
'BUTTONIDX'
'ENABLEBTN'
C
C
C
C
C
C
C
C
C
C
C
C
*in99
CurRec
'SFl1'
'SFL1'
'SFl1'
'SFL1'
'SFl1'
'SFL1'
'SFl1'
'SFL1'
ifeq
oreq
setatr
setatr
setatr
setatr
setatr
setatr
setatr
setatr
endif
ENDSR
*on
LastPage
1
1
2
1
5
0
6
0
'BUTTONIDX'
'ENABLEBTN'
'BUTTONIDX'
'ENABLEBTN'
'BUTTONIDX'
'ENABLEBTN'
'BUTTONIDX'
'ENABLEBTN'
9999
*
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : MAIN
*
*
*
* Evento . . : CREATE
*
*
*
* Descripcin: Obtener la primera pgina de los registros.
*
*
*
*********************************************************************
*
C
MAIN
BEGACT
CREATE
MAIN
*
C
Exsr
FillPage
*
C
'SFL1'
Setatr
*Green
'HdgBGClr'
C
'SFL1'
Setatr
*Black
'HdgFGClr'
C
'SFL1'
Setatr
1
'ColNumber'
159
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
'MAIN'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
'SFL1'
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
Setatr
1
1
'*MSG0001'
0
2
'*MSG0002'
0
3
0
4
0
5
'*MSG0004'
6
'*MSG0005'
'Visible'
'BUTTONIDX'
'BUTTONTIP'
'ENABLEBTN'
'BUTTONIDX'
'BUTTONTIP'
'ENABLEBTN'
'BUTTONIDX'
'ENABLEBTN'
'BUTTONIDX'
'ENABLEBTN'
'BUTTONIDX'
'BUTTONTIP'
'BUTTONIDX'
'BUTTONTIP'
ENDACT
*
*
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : PB_SELECT
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Leer el registro de subarchivo seleccionado.
*
*
Se actualiza el componente de texto esttico
*
*
'Selected' para mostrar el nmero de cliente
*
*
seleccionado.
*
*
Se abre el primer campo del subarchivo para su
*
*
edicin.
*
*
*
*********************************************************************
*
C
PB_SELECT
BEGACT
PRESS
MAIN
*
C
Reads
sfl1
27
*
C
*in27
IfEq
*off
C
'Selected'
Setatr
custno
'Label'
C
'SFL1'
Setatr
1
'ColNumber'
C
'SFL1'
Setatr
1
'OpenEdit'
C
EndIf
*
C
ENDACT
160
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : HRULE
*
*
*
* Evento . . : MENUSELECT
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
HRULE
BEGACT
MENUSELECT
MAIN
*
C
If
%Getatr('Main':'HRULE':'Checked')=1
C
'SFL1'
Setatr
0
'HRule'
C
'HRULE'
Setatr
0
'Checked'
*
C
Else
C
'SFL1'
Setatr
1
'HRule'
C
'HRULE'
Setatr
1
'Checked'
C
EndIf
*
C
ENDACT
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : VRULE
*
*
*
* Evento . . : MENUSELECT
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
VRULE
BEGACT
MENUSELECT
MAIN
*
C
If
%Getatr('Main':'VRULE':'Checked')=1
C
'SFL1'
Setatr
0
'VRule'
C
'VRULE'
Setatr
0
'Checked'
*
C
Else
C
'SFL1'
Setatr
1
'VRule'
C
'VRULE'
Setatr
1
'Checked'
C
EndIf
*
C
Exsr
FillPage
*
C
ENDACT
161
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : HILITE
*
*
*
* Evento . . : MENUSELECT
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
HILITE
BEGACT
MENUSELECT
MAIN
*
C
If
%Getatr('Main':'HILITE':'Checked')=1
C
Eval
%Setatr('Main':'HILITE':'Checked')=0
*
C
Else
C
Eval
%Setatr('Main':'HILITE':'Checked')=1
C
EndIf
*
C
Exsr
FillPage
*
C
ENDACT
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : SFL1
*
*
*
* Evento . . : PAGETOP
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
SFL1
BEGACT
PAGETOP
MAIN
*
C
Z-Add
1
CurRec
C
Exsr
FillPage
*
C
ENDACT
162
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : SFL1
*
*
*
* Evento . . : PAGEUP
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
SFL1
BEGACT
PAGEUP
MAIN
*
C
exsr
PrevPage
*
C
ENDACT
*
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : SFL1
*
*
*
* Evento . . : LASTREC
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
SFL1
BEGACT
LASTREC
MAIN
*
C
FileSize
Sub
PageSize
CurRec
C
Add
1
CurRec
*
C
CurRec
IfLt
1
C
Z-Add
1
CurRec
C
EndIf
*
C
Exsr
FillPage
*
C
'SFL1'
setatr
1
'BUTTONIDX'
C
'SFL1'
setatr
1
'ENABLEBTN'
C
'SFL1'
setatr
2
'BUTTONIDX'
C
'SFL1'
setatr
1
'ENABLEBTN'
C
'SFL1'
setatr
5
'BUTTONIDX'
C
'SFL1'
setatr
0
'ENABLEBTN'
C
'SFL1'
setatr
6
'BUTTONIDX'
C
'SFL1'
setatr
0
'ENABLEBTN'
C
ENDACT
163
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : SFL1
*
*
*
* Evento . . : PAGEDOWN
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
SFL1
BEGACT
PAGEDOWN
MAIN
*
C
Exsr
NextPage
*
C
ENDACT
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : SFL1
*
*
*
* Evento . . : FIRSTREC
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
SFL1
BEGACT
FIRSTREC
MAIN
*
C
Z-Add
1
CurRec
C
Exsr
FillPage
*
C
'SFL1'
setatr
1
'BUTTONIDX'
C
'SFL1'
setatr
0
'ENABLEBTN'
C
'SFL1'
setatr
2
'BUTTONIDX'
C
'SFL1'
setatr
0
'ENABLEBTN'
C
'SFL1'
setatr
5
'BUTTONIDX'
C
'SFL1'
setatr
1
'ENABLEBTN'
C
'SFL1'
setatr
6
'BUTTONIDX'
C
'SFL1'
setatr
1
'ENABLEBTN'
C
ENDACT
164
*********************************************************************
*
*
* Ventana. . : MAIN
*
*
*
* Componente : EXIT
*
*
*
* Evento . . : MENUSELECT
*
*
*
* Descripcin:
*
*
*
*********************************************************************
*
C
EXIT
BEGACT
MENUSELECT
MAIN
*
C
Move
*on
*inlr
*
C
ENDACT
Sealizacin de eventos
El evento Select se seala cuando:
v Un usuario selecciona un elemento que ya est en un subarchivo.
v Selecciona un elemento de la lista en el programa.
v Un usuario selecciona un elemento que ya ha sido seleccionado.
El evento Enter se seala cuando:
v Un usuario efecta una doble pulsacin sobre un elemento que est en el
subarchivo.
v Un usuario pulsa la tecla Intro cuando el subarchivo tiene el foco y se ha
seleccionado un elemento.
En la subrutina de accin para estos eventos, puede utilizar el cdigo de operacin
READS para determinar qu elemento se ha seleccionado.
165
Submen
PartName
166
Destroy
PartType
UserData
Temporizador
AllowLink*
Multiplier
RemoveLink*
UserData
Bottom
ParentName
TimerMode
Visible
Interval
PartName
TimerTicks
* Nota:: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
Destroy
Link*
Tick
* Nota:: Consulte la descripcin del evento si desea saber cules son las
restricciones.
167
Ejemplo de temporizador
En este ejemplo, un componente texto esttico se desplaza en la ventana para cada
evento Tick de temporizador.
Al accionar el pulsador Start, la modalidad de temporizador se establece en 1. Esto
inicia el temporizador y genera eventos Tick. Durante el proceso del evento Tick,
se calculan nuevas coordenadas para el componente texto esttico y el componente
se establece en la nueva ubicacin.
Cuando accione el pulsador Detener, TimerMode se establecer en 2. Esto detiene
el temporizador.
Accione el pulsador Close para terminar el programa.
168
*********************************************************************
*
*
* ID de programa : TIMER
*
*
*
* Descripcin . : Programa de ejemplo que muestra el componente
*
*
temporizador moviendo un componente texto
*
*
esttico en una ventana cada vez que se produce *
*
un 'Tick' en el temporizador.
*
*
*
*********************************************************************
*
*
* Declarar atributos de sistema de tamao de pantalla
D%DspHeight
S
4 0
D%DspWidth
S
4 0
*
* Declarar nuevos atributos de evento de tamao
D%NewHeight
S
4 0
D%NewWidth
S
4 0
*
* Definir variables de trabajo
DminX
S
4 0 INZ(0)
DmaxX
S
4 0
DminY
S
4 0
DmaxY
S
4 0
DxChange
S
4 0 INZ(5)
DyChange
S
4 0 INZ(5)
*
169
*********************************************************************
*
*
* Ventana . : FRA0000B
*
*
*
* Componente : FRA0000B
*
*
*
* Evento . . : CREATE
*
*
*
* Descripcin: Centrar la ventana en la pantalla.
*
*
*
*
Calcular los valores iniciales.
*
*
Dado que el atributo de altura del componente
*
*
ventana incluye la barra de ttulo, restamos la
*
*
altura de la barra de ttulo para que el componente *
*
texto esttico permanezca dentro del marco de la
*
*
ventana.
*
*
*
*
Para SVGA, este valor es de unos 20 pixels.
*
*
Puede ajustarse para otras resoluciones.
*
*
*
*********************************************************************
*
C
FRA0000B
BEGACT
CREATE
FRA0000B
*
* Obtener altura y anchura de ventana inicial
C
'FRA0000B'
getatr
'Height'
winHeight
4 0
C
'FRA0000B'
getatr
'Width'
winWidth
4 0
*
* Centrar la ventana en la pantalla
C
eval
%setatr('FRA0000B':
C
'FRA0000B':
C
'Left')=(%DspWidth-winWidth)/2
*
C
eval
%setatr('FRA0000B':
C
'FRA0000B':
C
'Bottom')=(%DspHeight-winHeight)/2
*
* Obtener coordenadas iniciales del componente texto esttico
C
'ST1'
getatr
'Left'
picX
4 0
C
'ST1'
getatr
'Bottom'
picY
4 0
*
* Obtener las dimensiones del componente texto esttico
C
'ST1'
getatr
'Height'
picHeight
4 0
C
'ST1'
getatr
'Width'
picWidth
4 0
*
* Calcular las coordenadas Y mnimas y mximas
C
'Start'
getatr
'Height'
startH
4 0
C
'Start'
getatr
'Bottom'
startB
4 0
C
eval
minY = startB + startH
C
eval
maxY = winHeight - picHeight - 20
*
170
171
*********************************************************************
*
*
* Ventana . : FRA0000B
*
*
*
* Componente : CLOSE
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Terminar el programa
*
*
*
*********************************************************************
*
C
CLOSE
BEGACT
PRESS
FRA0000B
*
C
eval
*inlr = *on
*
C
ENDACT
*********************************************************************
*
*
* Ventana . : FRA0000B
*
*
*
* Componente : TIMER1
*
*
*
* Evento . . : TICK
*
*
*
* Descripcin: Responder a los eventos tick del temporizador
*
*
moviendo el componente texto esttico de la ventana. *
*
*
*
Si el componente texto esttico se mueve fuera del
*
*
marco de la ventana, sus valores xChange e yChange
*
*
se multiplican por -1 para invertir la direccin.
*
*
*
*********************************************************************
172
TIMER1
BEGACT
TICK
FRA0000B
*
* Calcular nuevas coordenadas de texto esttico
C
eval
picX = picX + xChange
C
eval
picY = picY + yChange
*
* Comprobar que el texto esttico permanece dentro de la ventana
C
select
*
C
picX
whenlt
0
C
eval
xChange = xChange * -1
C
eval
picX = minX + xChange
*
C
picX
whengt
maxX
C
eval
xChange = xChange * -1
C
eval
picX = maxX + xChange
*
C
picY
whenlt
minY
C
eval
yChange = yChange * -1
C
eval
picY = minY + yChange
*
C
picY
whengt
maxY
C
eval
yChange = yChange * -1
C
eval
picY = maxY + yChange
*
C
endsl
*
* Mover el texto esttico a nuevas coordenadas
C
'ST1'
setatr
picX
'Left'
C
'ST1'
setatr
picY
'Bottom'
*
*
C
ENDACT
173
Enabled
Left
ParentName
PrevLine
UserData
Focus
NextLine
PartName
PrevPage
Visible
Handle*
NextPage
PartType
Range
Width
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Create
174
Destroy
Scroll
Ventana
Las ventanas son el medio primordial que tiene el usuario de interactuar con el
programa. Las aplicaciones deben contener al menos una ventana.
Slo puede aadir un componente al rea de cliente de una ventana, con la
excepcin de los componentes que son extensiones del marco de la ventana, como
las barras de mens, los mens emergentes y los subarchivos de mensajes. El
tamao del componente que aada se ajusta automticamente al rea de cliente.
Si desea que una ventana contenga ms de un componente, deber aadirle un
componente lienzo. El componente ventana con lienzo sirve tambin para
ahorrarse un paso.
Nota: El componente ventana se encuentra en la seccin Marcos del catlogo de
componentes, no en la paleta de componentes.
Para obtener informacin relacionada, consulte el apartado:
v Lienzo en la pgina 53
v Ventana con lienzo en la pgina 176
Atributos de componente
|
Bottom
Focus*
FontSize*
Height
MouseIcon*
PartType
PBStepSize
SBLabel
StatusBar
Width
Center
FontBold*
FontStrike*
IconHandle*
MouseShape*
PBRange
Print
SBPosition
Top
WindowMode*
Enabled
FontItalic*
FontUnder*
Label
ParentName
PBSetPos
ProgresBar
SBStyle
UserData
FileName*
FontName*
Handle*
Left
PartName
PBStep
Refresh
ShowTips
Visible
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Activate
Destroy
ReSize
Close
LClickTray
ShutDown
Create
Moved
DeActivate
RClickTray
175
Las ventanas son el medio primordial que tiene el usuario final de interactuar con
el programa. El lienzo, en un componente ventana con lienzo, le permite aadir
varios componentes a la ventana.
Puede colocar diversos componentes en el lienzo sealndolos y pulsando el botn
del ratn y cambiarlos de posicin para crear una interfaz grfica de usuario.
Tambin puede aadir componentes que sean extensiones del marco de la ventana,
como barras de mens, mens emergentes y subarchivos de mensajes.
Si slo precisa colocar un componente en el rea de cliente de la ventana, no
necesita el componente ventana con lienzo: en lugar de ste, debe usar el
componente ventana (que se encuentra en la seccin Marcos del catlogo de
componentes). Sin lienzo, el tamao del componente aadido se ajusta
automticamente al rea de cliente.
Para obtener informacin relacionada, consulte los apartados:
v Lienzo en la pgina 53
v Ventana en la pgina 175
Atributos de componente
|
Bottom
Focus*
FontSize*
Height
MouseIcon*
PartType
PBStepSize
SBLabel
StatusBar
Width
Center
FontBold*
FontStrike*
IconHandle*
MouseShape*
PBRange
Print
SBPosition
Top
WindowMode*
Enabled
FontItalic*
FontUnder*
Label
ParentName
PBSetPos
ProgresBar
SBStyle
UserData
FileName*
FontName*
Handle*
Left
PartName
PBStep
Refresh
ShowTips
Visible
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Activate
Destroy
ReSize
Close
LClickTray
ShutDown
Create
Moved
DeActivate
RClickTray
176
Referencia
Los componentes de una ventana se crean cuando se crea la ventana. Por
consiguiente, si intenta hacer referencia a algn componente de una ventana que
no se ha cargado o a un atributo de ventana antes de que se cree la ventana,
obtendr el mensaje Componente no encontrado.
177
Sugerencia
Si se visualiza una ventana y no puede pulsar el botn en la barra de ttulo
de dicha ventana, utilice este mtodo para moverla:
1. Site el cursor del ratn en un lugar de la parte visible de la ventana.
2. Pulse y suelte el botn 1 del ratn.
3. Pulse la combinacin de teclas Alt-espacio. A continuacin pulse M.
4. Utilice las teclas con flecha para volver a situar la ventana.
5. Cuando la ventana est en la posicin deseada, pulse Intro.
178
*********************************************************************
*
*
* ID de programa : ReSize
*
*
*
* Descripcin . : Programa de ejemplo que muestra cmo asegurar
*
*
que los componentes permanecen en una ventana
*
*
despus de haber ajustado su tamao.
*
*
*
*
Se pone un pulsador en la esquina superior
*
*
derecha de la ventana. Si se reduce el tamao
*
*
de la ventana, el pulsador dejar de ser
*
*
visible, ya que todos los componentes mantienen *
*
su relacin con la esquina inferior izquierda
*
*
de la ventana.
*
*
El evento RESIZE se utiliza para asegurar que
*
*
el pulsador tambin mantiene su posicin en
*
*
relacin con la esquina superior derecha de
*
*
la ventana.
*
*
*
*********************************************************************
*
*
* Declarar atributos de sistema de tamao de pantalla
D%DspHeight
S
4 0
D%DspWidth
S
4 0
*
Figura 29. Comprobacin de que los componentes se visualizan correctamente tras ajustar el
tamao de una ventana (Pieza 1 de 3)
179
Figura 29. Comprobacin de que los componentes se visualizan correctamente tras ajustar el
tamao de una ventana (Pieza 2 de 3)
180
*********************************************************************
*
*
* Ventana . : FRA0000B
*
*
*
* Componente : FRA0000B
*
*
*
* Evento . . : CREATE
*
*
*
* Descripcin: Centrar la ventana en la pantalla.
*
*
Obtener la coordenada actual del pulsador PB1 y su
*
*
desplazamiento desde la esquina superior derecha
*
*
de la ventana.
*
*
*
*********************************************************************
*
C
FRA0000B
BEGACT
CREATE
FRA0000B
*
C
'FRA0000B'
getatr
'Height'
winHeight
4 0
C
'FRA0000B'
getatr
'Width'
winWidth
4 0
C
%DspWidth
sub
winWidth
diffWidth
4 0
C
%DspHeight
sub
winHeight
diffHeight
4 0
*
C
eval
%setatr('FRA0000B':
C
'FRA0000B':
C
'Left') = diffWidth / 2
*
C
eval
%setatr('FRA0000B':
C
'FRA0000B':
C
'Bottom') = diffHeight / 2
*
* Calcular los desplazamientos del componente pulsador 'PB1'
* desde la esquina superior derecha de la ventana. Estos valores
* se utilizan para mantener este desplazamiento si se ajusta el
* tamao de la ventana.
C
'PB1'
getatr
'Left'
PBLeft
4 0
C
'PB1'
getatr
'Bottom'
PBBottom
4 0
C
'FRA0000B'
getatr
'Width'
WinWidth
4 0
C
'FRA0000B'
getatr
'Height'
WinHeight
4 0
C
WinWidth
sub
PBLeft
HOffset
4 0
C
WinHeight
sub
PBBottom
VOffset
4 0
*
C
ENDACT
Figura 29. Comprobacin de que los componentes se visualizan correctamente tras ajustar el
tamao de una ventana (Pieza 3 de 3)
Lista de ventanas
En el cuaderno de propiedades para un componente ventana, puede indicar si la
ventana debe aparecer en la lista de ventanas. Esta lista aparece cuando pulsa
Control+Alt+Delete en Windows NT/95/98. Por omisin, los componentes de
ventana no aparecen en la lista de ventanas. Debe establecer como mnimo la
ventana principal para que aparezca en la lista de ventanas. Puede utilizar la lista
de tareas para volver a visualizar la ventana.
Captulo 7. Utilizacin de componentes
181
Terminacin de un programa
Si el usuario selecciona la opcin Cerrar del men del sistema en una ventana, el
sistema operativo cierra la ventana pero no termina necesariamente el programa.
Para evitar que esto suceda, puede realizar una de las acciones siguientes:
v Seleccione el recuadro de seleccin Terminar al cerrar en la segunda pgina de
Estilo del cuaderno de propiedades de la ventana. Esto terminar el programa
cuando el usuario cierre la ventana.
v En la primera pgina de Estilo del cuaderno propiedades de la ventana,
deseleccione el recuadro de seleccin Men del sistema para que las ventanas se
creen sin un Men del sistema. (Por omisin, todas las ventanas se crean con un
men del sistema.)
v Utilice el evento Close. Este evento se seala cuando el usuario selecciona
Cerrar en el men del sistema. En la subrutina de accin del evento Close,
puede activar el indicador LR o solicitar al usuario que confirme que debe
cerrarse esta ventana y establecer el punto de retorno ENDACT de acuerdo a
ello. Por ejemplo, al establecer el valor de retorno en *NODEFAULT, la peticin
de cerrar se pasa por alto y la ventana no se cierra.
*
* Definir variables del recuadro de mensajes
Dstyle
M
button(*yesbutton: *nobutton)
D
style(*WARN)
Dmsg
M
msgtext('Are sure you want to exit?')
*
*********************************************************************
*
*
* Ventana . : FRA0000B
*
*
*
* Componente : FRA0000B
*
*
*
* Evento . . : CLOSE
*
*
*
* Descripcin: Manejar el evento Close desde el men del sistema
*
*
para ver si el usuario desea cerrar esta ventana.
*
*
*
*********************************************************************
*
C
FRA0000B
BEGACT
CLOSE
FRA0000B
*
* Solicitud para cerrar
C
msg
dsply
style
rc
9 0
*
* Si Yes, terminate program, se puede cerrar
C
rc
ifeq
*YESBUTTON
C
move
*on
*inlr
C
movel
'*DEFAULT
'return
12
*
* Else no cierra esta ventana
C
else
C
movel
'*NODEFAULT 'return
C
endif
*
C
ENDACT
return
182
183
*Component
Este componente permite a los programadores acceder y utilizar atributos de
componente lgico y del sistema.
Un componente *component es la representacin del componente del
componente lgico. Para cada componente lgico se crea un componente
*component; no se ve y no est en la paleta.
Atributos de componente
Active*
ClipBoard
DlgOwner
FileName
MsgFile*
OS
Platform
PlugRC*
ShData
ShowMsgID
Alarm
CurrentDir
DoEvents*
HelpWindow
MsgID
Parent
PlugCmd*
PlugResult*
ShDataLen
SwitchTo*
AppData
Dialog
DspHeight
LookNFeel*
MsgText
PartCount
PlugDLL*
Printer*
ShDataName
WrkStnName*
Button
DIRName*
DspWidth
MsgData
Name
PartList
PlugID*
SelPrinter*
ShDataPos
*Nota: Consulte la descripcin del atributo si desea saber cules son las
restricciones.
Eventos a los que puede aplicarse
Este componente no tiene eventos asociados.
184
*
* Visualizar el dilogo Abrir de Archivo
C
'*Component' Setatr
1
*
* Esta ventana es el propietario
C
'*Component' Setatr
'Main Main'
*
* Mostrar slo los archivos .DAT
C
'*Component' Setatr
'*.DAT'
*
* Pulsar el botn
C
'*Component' Getatr
'Button'
*
* Utilizar el pulsador Aceptar
C
If
Button = 1
*
* Usuario cancelado
C
Else
*
C
EndIf
'Dialog'
'DlgOwner'
'Filename'
Button
1 0
Utilizacin de conectores
Los atributos PlugDLL, PlugID, PlugCmd, PlugRC y PlugResult le darn la
posibilidad de ampliar la funcionalidad del Diseador GUI. Proporcione la
funcionalidad complementaria a un programa que haya desarrollado. Una vez la
aplicacin est registrada en el Preparador GUI mediante el men Proveedor, la
aplicacin puede interactuar con el Diseador GUI. Consulte el captulo 20 para
conocer ms detalles sobre cmo crear conectores.
185
186
187
188
189
Configuracin de un servidor
Debe configurar un servidor cuando est desarrollando la aplicacin, de manera
que pueda acceder al servidor mientras se edita, compila y depura la aplicacin.
Cuando empaquete y distribuya la aplicacin a otras estaciones de trabajo, tambin
tendr que configurar un servidor si la aplicacin en ejecucin accede a un
servidor distinto del utilizado durante el tiempo de diseo.
Siempre que configure un servidor, asegrese de que la lista de bibliotecas del
trabajo de servicio contiene el recurso remoto con el que desea trabajar.
190
REMDTAARA
SERVER01
191
*********************************************************************
*
*
* Id. de programa: dtaaraex.vpg
*
*
*
* Descripcin . : Segmento de cdigo para obtener el contenido de *
*
un rea de datos de AS/400.
*
*********************************************************************
*
D dtaara
S
6P 0 DTAARA
*********************************************************************
*
*
* Ventana. . : WIN1
*
*
*
* Componente : PSB0000C
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Obtener el contenido del rea de datos de AS/400.
*
*********************************************************************
*
C
PSB0000C
BEGACT
PRESS
WIN1
C
IN
dtaara
C
ENDACT
192
193
*********************************************************************
*
*
* Id. de programa: ioex.vpg
*
*
*
* Descripcin . : Crear registros con datos de la ventana.
*
*
*
* Archivos . . . : FILE1
*
*
*
*********************************************************************
*
FFILE1
UF A E
DISK
REMOTE USROPN
*********************************************************************
*
*
* Ventana. . : WIN1
*
*
*
* Componente : *INZSR
*
*
*
* Evento . . : Rutina de inicializacin
*
*
*
* Descripcin: Abrir archivo de base de datos (FILE1).
*
*
*
*********************************************************************
*
C
*INZSR
BEGSR
C
OPEN
FILE1
C
ENDSR
*********************************************************************
*
*
* Ventana. . : WIN1
*
*
*
* Componente : PSB0000D
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Fin de creacin de registros. Fin de aplicacin.
*
*
*
*********************************************************************
*
C
PSB0000D
BEGACT
PRESS
WIN1
C
SETON
LR
C
ENDACT
194
*********************************************************************
*
*
* Ventana. . : WIN1
*
*
*
* Componente : PSB0000C
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Leer informacin de campo de la pantalla y aadir
*
*
registro a archivo de base de datos de AS/400.
*
*
*
*
*
*********************************************************************
*
C
PSB0000C
BEGACT
PRESS
WIN1
C
READ
'WIN1'
C
WRITE
FORMAT1
C
ENDACT
R RECORD100
NAME
ADDRESS
20A
20A
Cuando coinciden los nombres de campo con sus atributos, slo se crea un campo.
En este ejemplo se leen los datos de la ventana.
C* N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
C
READ
'WIN1'
WRITE
FORMAT1
195
En este ejemplo, los datos de los dos campos NAME y ADDRESS se mueven al
almacenamiento intermedio de salida antes de emitir el mandato de escribir a la
base de datos de AS/400.
Comprobacin de nivel
VisualAge RPG soporta la comprobacin de nivel entre un programa VisualAge
RPG y los archivos de base de datos de AS/400 que estn utilizndose.
El compilador siempre proporciona la informacin que la comprobacin de nivel
necesita. La comprobacin de nivel se produce sobre la base de formato de registro
cuando el archivo se abre, a menos que se especifique LVLCHK(*NO) al crear o
cambiar el archivo de base de datos de AS/400.
Nota: Si se produce una comprobacin de nivel, se trata como un error de E/S. Si
desea ms informacin, consulte la publicacin VisualAge RPG Manual de
consulta del lenguaje.
'
'
'
'
BEGSR
C
Eval
C
TOFILE(SYSLIBT/MENUFL)' +
C
MBR(' + MemberName + ')' +
C
OVRSCOPE(*JOB)' +
C
OPNSCOPE(*JOB)'
C
Exsr
C
196
ENDSR
'QCMDDDM' Linkage(*Server)
QCMDDDM_Parm1 = 'OVRDBF FILE(MENUFL)' +
CallExecDDM
CallExecDDM
BEGSR
C
C
C
C
EVAL
Call
Parm
Parm
ENDSR
QCMDDDM_Parm2 = %LEN(QCMDDDM_Parm1)
QCMDDDM
QCMDDDM_Parm1
QCMDDDM_Parm2
197
FFILE1
F
.
.
.
.
.
.
FLD2
IF
K DISK
SETLL
REC1
READ
REC1
BLOCK(*YES)
REMOTE
10
198
donde xxxx es el URL y el directorio que contiene el applet que debe recibir
permisos para el archivo de seguridad.
c. Pulse el botn Add Permission. Complete el dilogo Permissions tal como
se indica a continuacin:
v En el recuadro combinado Permissions, elija RuntimePermission.
v En el recuadro combinado Target, elija loadLibrary.<nombre biblioteca>.
v En el campo de entrada situado inmediatamente a la derecha del
recuadro combinado Target, cambie loadLibrary.<nombre biblioteca>
por loadLibrary.fvdcjava.
v Pulse OK para regresar al dilogo Policy Entry.
d. En el dilogo Policy Entry, vuelva a pulsar el botn Add Permission.
Complete el dilogo Permissions tal como se indica a continuacin:
v En el recuadro combinado Permissions, elija FilePermission.
v En el campo de entrada situado inmediatamente a la derecha del
recuadro combinado Target, escriba el nombre del archivo de seguridad.
Este archivo se encuentra ubicado en el subdirectorio ibmcom del
directorio de Windows. Por ejemplo:
c:\windows\ibmcom\fvdcsec.txt
199
200
Situacin de reutilizacin
Puede utilizar VisualAge RPG para modificar aplicaciones que se ejecutan en el
AS/400 de manera que se ejecuten en una PWS, acceder a datos en el sistema
principal y tener una interfaz grfica de usuario. Esta seccin proporciona una
visin general de los pasos relacionados en el proceso.
Importacin de archivos de pantalla: El programa de utilidad de Importacin
convierte los archivos de pantalla AS/400 existentes en una interfaz grfica de
usuario en una PWS. Despus de importar un archivo de pantalla, los formatos de
registro se convierten en componentes definidos por usuario y se almacenan en la
pgina Importado del catlogo de componentes. Puede mover los componentes a
la paleta de componentes mientras trabaja en la aplicacin, y luego almacenarlos
en el catlogo de componentes cuando termine de trabajar en la aplicacin, hasta
que vuelva a necesitarlos.
Por ejemplo, si importa la pantalla 5250 que se muestra en la Figura 34 en la
pgina 202 obtendr como resultado la GUI que se muestra en la Figura 35 en la
pgina 203. Los registros se convierten en un grupo de componentes, los campos se
convierten en componentes campo de entrada y las constantes se convierten en
componentes texto esttico. Todas las teclas de mandato se convierten en
componentes pulsador y las etiquetas de pulsador reflejan la palabra clave de tecla
de mandato original.
201
OOO OO OOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
Status: OOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
Print : B (Y,N)
Ship Via: BBBBBBBBBB
Date Entered: OOO OO OOOO
F.O.B.: BBBBBBBBBBBBBBB
Date Revised: OOO OO OOOO
Terms Code : BBBB OOOOOOOOOOOOOOO
OOO OO OOOO
Password :
Originator : OOOOOOOOOOOOOOO
Prep./Collect/Chg : B (P,C,X)
Confirm./Orig. : B (C,O)
Warehouse: BB OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
Requested by: BBBBBBBBBBBBBBB
Work Order #: 9999999
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
Cmd1 Exit Cmd3 PO Notes Cmd4 Lookup Cmd5 Material Status Cmd9 Vendor Maint.
Cmd11 Delete
Cmd15 Vendor Notes Cmd16 Vendor Quotes
202
Nota: Los nuevos componentes conservan los nombres de campo originales, pero
el usuario puede redenominarlos si lo desea. Conservar el mismo nombre de
campo mejora la productividad al manipular la lgica de programa para una
nueva utilizacin.
Tal vez desee personalizar los componentes importados para aprovechar los temas
de diseo bsico analizados en el Captulo 2. Planificacin de la aplicacin en la
pgina 19.
Personalizacin de la GUI:
203
204
Reutilizar ayuda UIM en la pgina 212 y Captulo 13. Consejos para crear ayuda
en lnea con IPF en la pgina 235 para obtener ms informacin.
Cmo escribir lgica de programa: Puede reutilizar la lgica escrita en RPG IV
porque el compilador est basado en ese lenguaje. Basta con que corte y pegue el
cdigo existente para reutilizarlo.
Tambin tiene que escribir lgica de programa adicional utilizando la
programacin dirigida por eventos. Para cada evento asociado a un componente,
hay una subrutina de accin que describe cmo el programa responde a un evento.
Los cdigos de operacin de procedimiento para el control de programa no son
necesarios; el control del programa est implcito. Algunos cdigos de operacin de
VisualAge RPG exclusivos de las aplicaciones VisualAge RPG son:
BEGACT
Empieza una subrutina de accin
ENDACT
Finaliza una subrutina de accin
SETATR
Establece el valor de un atributo de componente
GETATR
Recupera el valor de un atributo de componente
SHOWWIN
Visualiza una ventana
CLSWIN
Cierra una ventana
La Figura 37 en la pgina 206 contiene una subrutina de accin de una aplicacin
de ejemplo de pedidos de compra. Cuando se llama a SHOWWIN desde una
ventana determinada para visualizar la ventana PUR570R2, se codifica una
subrutina de accin para el evento Create con el fin de preparar la ventana para la
siguiente accin de un usuario.
Si es un pedido de compra nuevo (#PONUM = 0), los elementos de men change,
delete, print y fax se establecen para no responder al evento MENUSELECT. Para
cada uno de los elementos de men, se utiliza la funcin %setatr para establecer el
atributo enabled en 0. El cdigo de operacin BEGACT indica el inicio de la
subrutina de accin y ENDACT indica su final.
205
*********************************************************************
*********************************************************************
*
* Ventana . : PUR570R2 PO Header Maintenance
*
*
*
*********************************************************************
**********************************************************************
C
PUR570R2
BEGACT
CREATE
PUR570R2
c*
c*
C
if
#PONUM = 0
C
eval
%setatr('pur570r2':'m2_change':'enabled')=0
C
eval
%setatr('pur570r2':'m2_delete':'enabled')=0
C
eval
%setatr('pur570r2':'m2_print':'enabled')=0
C
eval
%setatr('pur570r2':'m2_fax':'enabled')=0
C
end
C
exsr
POCHECK
C
write
'PUR570R2'
C
ENDACT
*********************************************************************-
206
Formatos de registro
La siguiente lista describe cmo los formatos de registro de pantalla se convierten
en componentes.
MNUBAR
El formato de registro MNUBAR se convierte en un componente de barra
de mens que puede soltarse en una ventana con lienzo.
PULLDOWN
El formato de registro PULLDOWN se utiliza con el formato de registro
MNUBAR para crear un componente submen. El formato de registro
PULLDOWN se convierte en componentes opcin de men para el
formato de registro MNUBAR al que hace referencia.
RECORD
El formato de registro RECORD se convierte en un grupo de componentes
que pueden soltarse en una ventana con lienzo.
SFL, SFLCTL
Estos formatos de registro se convierten en un componente subarchivo que
puede soltar en una ventana con lienzo.
Las constantes de los registros SFL no se convierten.
WINDOW
El formato de registro de definicin WINDOW se convierte en un
207
Entradas de posicin
La siguiente tabla describe de qu manera las entradas de posicin de DDS
utilizadas para crear un archivo de pantalla determinan cmo se convierten los
formatos y los campos.
Tabla 6. Entradas de posicin y conversin
Columnas
Significado
8-16
Indicadores
17
Tipo de registro
19-28
Nombre
29
Referencia
30-34
Longitud
35
Modalidad de teclado
No se convierten
No se convierten
Se convierte a carcter
DFMNSWXY
No se convierten
36-37
208
Decimales
Determina el nmero de
posiciones decimales del
componente convertido. Si se
especifica, establece el tipo de
datos como Numrico.
Significado
38
Uso
39-41
Ubicacin
45-80
Palabras clave
Habilitado
MP
No se convierten
Se convierte si el campo es de
subarchivo
Constante
Crea un componente texto
esttico
DFTVAL
El valor de la palabra clave DFTVAL se convierte al valor por omisin del
componente.
DSPATR
Si el atributo de pantalla DSPATR es:
v HI, el color de fondo se vuelve ms brillante.
Captulo 9. Reutilizar aplicaciones AS/400
209
210
SYSNAME
La palabra clave SYSNAME se convierte en un componente texto esttico.
TIME La palabra clave TIME se convierte en un componente texto esttico.
USER La palabra clave USER se convierte en un componente texto esttico.
VALUES
La palabra clave VALUES hace que el campo se convierta en un
componente recuadro de combinacin desplegable. Los valores asociados
con la palabra clave VALUES se utilizan en la lista desplegable.
WDWTITLE
La palabra clave WDWTITLE se utiliza para determinar la etiqueta y los
atributos de un componente ventana con lienzo.
v Si el texto del ttulo se asigna a un campo de programa a sistema, no se
convierte.
v Si el texto del ttulo se asigna a un campo literal, este texto se asigna a la
etiqueta del componente ventana con lienzo.
WINDOW
El formato de registro de definicin WINDOW se convierte en un
componente ventana con lienzo. El formato de registro de referencia
WINDOW se convierte en un grupo de componentes que pueden soltarse
en una ventana con lienzo.
No se convierten ms palabras clave.
Atributos de campo
Atributos GUI
E/S*
ReadOnly: Desactivado
Enabled: Activado
Color:
Amarillo claro
Salida
ReadOnly: Activado
Enabled: Activado
Color:
Verde claro
Entrada
ReadOnly: Desactivado
Enabled: Activado
Color:
Azul claro
Entrada o E/S
Protegido
ReadOnly: Desactivado
Enabled: Desactivado
Color:
Rojo claro
Entrada o E/S
Teclado inhibido
ReadOnly: Activado
Enabled: Activado
Color:
Rojo intermedio
211
ReadOnly: Activado
Enabled: Desactivado
Color:
Rosa oscuro
212
Cdigo UIM
Funcin cdigo
Cdigo IPF
:DL.
Lista de definiciones
:dl.
:FIG.
Figura
:fig.
:HP1.
Frase resaltada
:hp1.
:HP2.
Frase resaltada
:hp2.
:HP3.
Frase resaltada
:hp3.
:HP4.
Frase resaltada
:hp4.
:HP5.
Frase resaltada
:hp5.
:HP6.
Frase resaltada
:hp6.
:HP7.
Frase resaltada
:hp7.
:HP8.
Frase resaltada
:hp8.
Funcin cdigo
Cdigo IPF
:HP9.
Frase resaltada
:hp9.
:LINES.
Lneas
:lines.
:LI.
Elemento de lista
:li.
:LP.
Componente de lista
:lp.
:NT.
Nota
:nt.
:OL.
Lista ordenada
:ol.
:P.
Prrafo
:p.
:PARML.
Lista de parmetros
:parml.
:P
Descripcin de parmetro
:pd.
:PT.
Trmino de parmetro
:pt.
:SL.
Lista sencilla
:sl.
:UL.
Lista no ordenada
:ul.
:XMP.
Ejemplo
:xmp.
&.
Ampersand (&)
&.
&COLON.
&colon.
&period.
Punto (.)
&period.
&SLR.
&slr.
Funcin
Cdigo IPF
:CIT.
Cita
:hp5.
:H1.
Cabecera
:h2.
:H2.
Cabecera
:h3.
:H3.
Cabecera
:h4.
:H4.
Cabecera
:h5.
:HELP.
Cabecera
:help.
:ISCH.
Elemento ndice
:i1.
:ISCHSYN.
Sinnimo de ndice
:isyn.
:PK.
Palabra clave de
programacin
:hp2.
:hp7.
:PV.
Variable de programacin
:hp5.
213
Funcin
:HP0.
Sin resaltado
:PC.
Continuacin de prrafo
:RT.
Texto inverso
:XH1.
:XH2.
:XH3.
:XH4.
214
215
216
Figura 38. Las ventanas Fuente VisualAge RPG y Control de sesin de depuracin
217
Para corregir este problema, asegrese de que el cdigo fuente VisualAge RPG
(archivo .VPG) reside en la estacin de trabajo.
218
219
220
221
Icono
Funcin
Recorrer principal
Ejecuta la lnea actual (resaltada) en el programa, pero no entra en ninguna
funcin llamada.
Recorrer todo
Ejecuta la lnea actual (resaltada) en el programa y entra en cualquier
programa o funcin llamados.
Recorrer depuracin
Ejecuta la lnea actual (resaltada) en el programa. El depurador efecta una
ejecucin de pasos externos en cualquier funcin para la que no hay
informacin de depuracin disponible, y efecta una ejecucin de pasos
internos en cualquier funcin para la que hay informacin de depuracin
disponible.
222
Retorno de recorrido
Ejecuta de forma automtica las lneas de cdigo hasta la sentencia de
retorno inclusive de la funcin actual.
Ejecutar
Empieza la ejecucin del programa en la lnea actual (resaltada).
Detener
Para la ejecucin del programa.
Vistas Conmuta a la vista siguiente.
Supervisar expresin
Visualiza una variable o una expresin en una ventana de supervisin.
Pila de llamadas
Visualiza las funciones activas de la pila de llamadas de una lnea de
ejecucin.
Registros
Visualiza los registros de las lneas de ejecucin en la ventana de registros.
Almacenamiento
Visualiza el contenido del almacenamiento en la ventana de
almacenamiento.
Puntos de interrupcin
Lista todos los puntos de interrupcin que se han establecido.
Control de sesin de depuracin
Visualiza la ventana de control de sesin de la depuracin.
223
Modificacin de la representacin
El depurador le permite modificar la representacin de cualquier variable
visualizada en el supervisor del programa. Los tipos de representacin de una
variable o de una estructura pueden ser decimal, hexadecimal, binaria o de serie.
Para modificar la representacin, seleccione una variable en la ventana Supervisor
de programa. A continuacin, seleccione una representacin en el men
EditarRepresentacin. El contenido de la variable se visualiza ahora en la
representacin que ha seleccionado.
224
225
226
Establecimiento de fonts
Existen muchas opciones disponibles en el depurador que le permiten personalizar
la sesin de depuracin. Por ejemplo, puede establecer los fonts que desee. La
Figura 51 visualiza la ventana de fonts. Para visualizar la ventana de fonts,
seleccione OpcionesValores de ventanaFonts. En la ventana de fonts, seleccione
el font, el estilo y el tamao que desee, y a continuacin seleccione Bien. El font
modifica la visualizacin en la sesin de depuracin.
227
228
Cdigos de edicin
Estn soportados varios cdigos de edicin para formatear los datos en formatos
predefinidos. Estos formatos insertan los separadores de millares y decimales
adecuados y determinan cmo se visualiza un nmero negativo, proporcionando
un signo menos fijo o flotante, o el smbolo CR (Crdito).
Opcionalmente, puede especificar proteccin por asteriscos o un smbolo de
moneda flotante con los cdigos de edicin. Cuando se especifica la proteccin por
asteriscos, se visualiza un asterisco por cada cero que se suprime. Cuando se
especifica el smbolo de moneda flotante, dicho smbolo aparece a la izquierda del
primer dgito significativo. El smbolo no visualiza un saldo cero cuando se utiliza
un cdigo de edicin que suprime el saldo cero.
El sistema operativo determina los caracteres reales que se van a utilizar para los
separadores de millares y decimales y para el smbolo de moneda cuando se
ejecuta la aplicacin.
229
Ejemplo de
Saldo
nmero negativo cero
ning. No
0123456789
0123456789-
Sin signo
124,567.89
124,567.89
Sin signo
124,567.89
124,567.89
No
Sin signo
124567.89
124567.89
No
Sin signo
124567.89
124567.89
CR
124,567.89
124.567,89CR
CR
124,567.89
124.567,89CR
No
CR
124567.89
124567,89CR
No
CR
124567.89
124567,89CR
-(menos)
124,567.89
124.567,89-
-(menos)
124,567.89
124.567,89-
No
-(menos)
124567.89
124567,89-
No
-(menos)
124567.89
124567,89-
-(menos flotante)
124,567.89
-124.567,89
-(menos flotante)
124,567.89
-124.567,89
EC
T
No
-(menos flotante)
124567.89
-124567,89
No
-(menos flotante)
124567.89
-124567,89
Y (2.)
Z (3.) No
.00
.00
.00
.00
.00
.00
.00
.00
1984-12-25
No
Sin signo
1234567
1234567
Notas:
1. Todos los cdigos de edicin suprimen los ceros iniciales
2. El cdigo de edicin Y se utiliza para editar campos de fecha. El campo de
fecha debe definirse como campo numrico. La salida de este cdigo de edicin
tiene el formato nnnn-nn-nn. Este formato no puede modificarse. El sistema
operativo determina el carcter de separador de fecha cuando se ejecuta la
aplicacin.
3. El cdigo de edicin Z elimina los signos + o .
Palabras de edicin
Puede utilizar palabras de edicin si ninguno de los cdigos de edicin
suministrados satisface sus requisitos de edicin. Una palabra de edicin es un
modelo que se aplica a los datos antes de colocarlos en el componente. Con las
palabras de edicin, puede especificar:
v Supresin de ceros iniciales
v Asteriscos iniciales
230
=
=
=
=
x
$
.
,
Asterisco
Puede utilizarse un asterisco en lugar de un cero como carcter de detener
supresin de ceros. Esto se denomina proteccin por asteriscos y cada cero
que se suprime se sustituye por un asterisco. Cualquier asterisco o cero
situado a la derecha del carcter de detener supresin de ceros es una
constante y se visualizar tal cual.
Smbolo de modeda
Si codifica un smbolo de moneda inmediatamente a la izquierda del
carcter de detener supresin de ceros, se insertar un smbolo de moneda
en la posicin situada a la izquierda del primer dgito significativo. Se
denomina smbolo de moneda flotante cuando se utiliza de esta manera. Si
codifica un smbolo de moneda en la posicin situada ms a la izquierda
de la palabra de edicin, es fijo y se visualiza siempre en la misma
ubicacin. Se denomina smbolo de moneda fijo.
231
232
233
234
Utilizacin de IPF
El fuente de los mdulos de ayuda de aplicaciones VisualAge RPG est en formato
IPF. IPF le permite crear informacin en lnea, especificar cmo aparecer en la
pantalla, conectar varias partes de la informacin y proporcionar informacin de
ayuda que el usuario puede solicitar. Las caractersticas del IPF incluyen:
v Un lenguaje de codificacin que formatea texto, proporciona maneras de
conectar unidades de informacin y personaliza ventanas.
v Un compilador que crea documentos en lnea y ventanas de ayuda.
v Un programa que visualiza documentos en lnea formateados.
235
236
ventana de diseo y vuelva a pulsar el botn derecho del ratn. Seleccione Texto
de ayuda en el men emergente del pulsador para editar la informacin de ayuda.
Establezca el atributo Help Enable para ese pulsador y el atributo Label para la
palabra Ayuda.
237
238
239
240
En un archivo de temas puede tener varios temas. Cada tema debe empezar en
una pgina nueva. Una vez haya escrito el texto de ayuda, guarde el archivo de
temas en formato RTF.
241
10. Cuando aparezca el dilogo Add Map Entry, escriba HelpForEF en el campo
Topic ID y 12 en el campo de valor numrico Mapped. Pulse OK.
11. Pulse OK para cerrar el dilogo Map.
12. Guarde y compile el archivo de proyecto. De este modo se crear el archivo
de ayuda (HLP).
Copie el nuevo archivo HLP en el directorio RT_WIN32 del proyecto VARPG.
Prueba de la ayuda
Inicie la aplicacin VARPG. Cuando aparezca la ventana, vaya al campo de entrada
y pulse F1. La ayuda debe visualizarse en una ventana de ayuda Windows.
Tambin puede visualizar la ayuda como ayuda Qu es esto?. Para ello, abra el
cuaderno de propiedades de la ventana. En la pgina Estilo, marque el recuadro
de seleccin Contexto. Deben quitarse las marcas de los recuadros de seleccin
Minimizar y Maximizar.
Para hacer que la ayuda se visualice en una ventana emergente en lugar de una
ventana de ayuda, marque la opcin Emergente.
242
243
Donde:
<title> Es el nombre del HelpSet. Corresponde al ttulo de la ventana de ayuda.
<homeID>
Especifica el nombre del ID (por omisin) que se visualiza cuando se llama
a la ayuda sin especificar explcitamente un ID.
<data>
Especifica la va de acceso de los datos que utiliza el navegador. En
nuestro ejemplo, la vista TOC. El nombre del archivo TOC est en
maysculas y la extensin xml en minsculas. El archivo TOC debe existir
en el directorio de la ayuda.
244
url="help/welcome.htm" />
url="help/catalog.htm" />
url="help/browse.htm" />
url="help/new.htm" />
url="help/top10.htm" />
url="help/search.htm" />
url
text="Welcome" target="11"/>
text="Help" target="22"/>
text="Browse" target="14"/>
text="New" target="19"/>
text="Top 10" target="20"/>
text="Search" target="21"/>
</tocitem>
</toc>
Donde:
tocitem
La primera entrada TOC especifica el ttulo de la tabla de contenido.
(Puede anidar entradas TOC dentro de una entrada de nivel superior).
text
245
target Especifica el ID del tema HTML que debe visualizarse cuando el usuario
elija esta entrada en el TOC. El ID corresponde al ID de componente que
se identifica en el archivo Map.
246
247
Aviso
4.
5.
6.
7.
Opcin
Pulsadores que aparecern
abortRetryIgnoreButton
Interrumpir, Reintentar e Ignorar
okButton
Aceptar
okCancelButton
Aceptar y Cancelar
retryCancelButton
Reintentar y Cancelar
yesNoButton
S y No
yesNoCancelButton
S, No y Cancelar
248
Edicin de un mensaje
Para editar un mensaje:
1. Seleccione ProyectoDefinir mensajes en el Diseador GUI. Aparecer la
ventana Definir mensajes.
2. Seleccione un mensaje de la lista que se visualiza. Si no encuentra el que desea,
siga las instrucciones del apartado Bsqueda de un mensaje.
3. Elija Editar en la ventana Editar mensajes. Se abre la ventana Editar mensaje,
mostrando el mensaje que se ha seleccionado.
4. Cambie la informacin sobre el tipo, el texto, la ayuda o la ventana de mensaje.
5. Seleccione Guardar para conservar los cambios o Cancelar para desecharlos.
Supresin de un mensaje
Para suprimir un mensaje:
1. Seleccione ProyectoDefinir mensajes en el Diseador GUI. Se abrir la
ventana Definir mensajes.
2. Seleccione un mensaje de la lista que se visualiza. Si no encuentra el que desea,
siga las instrucciones del apartado Bsqueda de un mensaje.
3. Elija el pulsador Suprimir.
Bsqueda de un mensaje
A continuacin se facilitan algunas sugerencias para localizar un mensaje:
v Si sabe cul es el ID de mensaje, utilice la caracterstica Clasificar por ID de
mensaje de la ventana Definir mensajes. Los mensajes se clasifican por ID de
mensaje en orden ascendente.
v Si sabe el tipo de mensaje que est buscando, utilice la funcin Clasificar por
tipo de la ventana Definir mensajes. Los mensajes se clasifican por grupos y por
ID de mensaje en orden ascendente:
1. Mensajes que se pueden establecer en la ejecucin:
a. Informacin
b. Aviso
c. Accin
d. Grave
2. Mensajes que no puede establecer durante la ejecucin (etiquetas de
sustitucin).
249
Puede desplazarse por la lista de mensajes utilizando las teclas de flecha o las
barras de desplazamiento. Si la lista de mensajes es extensa, la barra de
desplazamiento es la forma ms rpida de encontrar lo que se busca.
Los campos CUSNO y FILE se definen en otro lugar del programa. Suponga que el
texto del mensaje *MSG0001 es:
No se ha encontrado el nmero de cliente %1 en el archivo %2.
250
'PB1'
SETATR
'*MSG0001'
'Label'
251
252
Enlace de componentes
Los siguientes componentes pueden enlazarse mediante VisualAge RPG:
v Recuadro de seleccin
v Campo de entrada
v Imagen
v Recuadro de lista
v Medios
v Panel de medios
v Graduador
v Temporizador
Un componente que notifica a otro componente cuando se modifica se denomina
componente origen y el componente que recibe la notificacin del cambio se
denomina componente destino.
Una manera de establecer comunicacin entre un componente fuente y un
componente destino es utilizar la pgina Enlace del cuaderno de propiedades del
componente origen. En los campos que se proporcionan debe escribir el nombre
del componente destino y el nombre de la ventana en el que reside. Si desea que el
destino emita un evento Link cuando recibe la notificacin del componente fuente,
seleccione el recuadro de seleccin Habilitar destino de notificacin.
Tambin puede configurar el enlace de comunicaciones en el programa
estableciendo el atributo AddLink y el destino con el formato
NombreVentana|NombreComponente. Si desea que el destino emita un evento Link,
Copyright IBM Corp. 1994, 2000
253
C
C
'MMP1'
'MMP1'
SETATR
SETATR
'WIN2|AUDIO1' 'AddLink'
1
'AllowLink'
Figura 56. Cdigo de ejemplo que muestra un componente enlazado con otro
AppName
Es el nombre de la aplicacin servidor: SERVER.EXE.
Topic
Es el nombre del componente lgico servidor, seguido de una barra vertical,
seguido del nombre de instancia de componente lgico. Para VisualAge RPG, en la
mayora de los casos el nombre de componente lgico es el mismo que el nombre
de instancia de componente lgico y que el nombre ejecutable. En este ejemplo, el
nombre del componente lgico es SERVER|SERVER.
Item
Es el nombre del componente servidor. Para los programas VisualAge RPG es el
nombre de la ventana, seguido de una barra vertical, seguido del nombre de
componente. En este ejemplo, el valor del atributo del elemento es
WINDOW_S|ENTRY_S.
254
DDEAddLink
Es el nombre del componente cliente. Se compone del nombre de la ventana,
seguido de una barra vertical, seguido del nombre de componente. En este
ejemplo, el atributo DDEAddLink es WINDOW_C|STTEXT_C.
DDEMode
Establezca DDEMode en 1 para empezar la conversacin e iniciar el enlace
dinmico entre el servidor y el cliente. Para terminar la conversacin, establezca
DDEMode en 2. Esto seala el evento Terminate en la aplicacin cliente.
255
#include <stdio.h>
*
/*Las dos lneas siguientes slo son necesarias si se compila */
/*el OBJ con el compilador IBM C/C++. Estas lneas
*/
/*no son necesarias si la funcin se exporta desde una DLL.
*/
int _CRT_init(void);
void _CRT_term(void);
*
/* imprimir los parmetros str y age en un archivo */
void MYFUNC(char *str, int *age) {
FILE *fp;
int j;
*
/*La lnea siguiente slo es necesaria si se compila
*/
/*el OBJ con el compilador IBM C/C++. Esta lnea
*/
/*no es necesaria si la funcin se exporta desde una DLL. */
_CRT_init();
*
fp=fopen("myfunc.log", "a");
*
/* imprimir los datos de caracteres en un archivo */
for (j=0; j<10; ++j) {
fprintf(fp, "%c", str[j]);
}
*
/* si se da el parmetro age, imprimir el valor */
if ( age == NULL ) {
fprintf(fp, "no hay valor para age\n");
} else {
fprintf(fp, "num = %d\n", *age);
}
*
fclose(fp);
*
/*La lnea siguiente slo es necesaria si se compila
*/
/*el OBJ con el compilador IBM C/C++. Esta lnea
*/
/*no es necesaria si la funcin se exporta desde una DLL. */
_CRT_term();
}
256
DConst1
C
CONST('MYFUNC')
Dwilma
s
80a
inz('misdatos')
Dage
s
9b 0 inz(32)
*
*
C
*inzsr
begsr
c***********************************************************************
c*********** ***
CALLB en VRPG con una PLIST *** *****************
c***********************************************************************
C
myplist
plist
C
parm
wilma
C
parm
age
C
CALLB
Const1
myplist
C
seton
lr
C
endsr
s
s
begsr
callb
parm
parm
seton
endsr
80a
inz('misdatos')
9b 0 inz(32)
'MYFUNC'
wilma
age
lr
s
s
s
begsr
callb
parm
parm
seton
endsr
*
procptr inz(%paddr('MYFUNC'))
80a
inz('misdatos')
9b 0 inz(32)
p2
wilma
age
lr
257
*
Dp2
Dwilma
Dage
C
*inzsr
C
C
C
C
C
s
s
s
begsr
callb
parm
parm
seton
endsr
*
procptr inz(%paddr('MYFUNC'))
80a
inz('misdatos')
9b 0 inz(32)
p2
wilma
*OMIT
lr
7-21
24-25
PR
44-80
palabra clave
Utilice la palabra clave CLTPGM con el nombre de sistema del programa como
parmetro.
Si el programa espera parmetros, utilice una especificacin de definicin para
cada parmetro inmediatamente despus de la especificacin de definicin de PR.
Estas especificaciones deben consistir en el nombre, la longitud y el tipo de
parmetro. Especifique la precisin de los parmetros numricos. Especifique
siempre la palabra clave VALUE. Tambin puede especificar las palabras clave
ASC, DATFMT, DESC, DIM, LIKE, NOOPT, OPTIONS y TIMFMT en las
definiciones de parmetros.
La Figura 62 define pgm1 para VisualAge RPG. Pueden pasarse dos parmetros al
programa; el segundo es optativo.
D pgm1
D parm1
D parm2
PR
CLTPGM('testprog')
20A
VALUE
6B 3 OPTIONS(*NOPASS) VALUE
258
En la Figura 63, el cdigo de operacin CALLP llama a pgm1 con los parmetros
f1d1 y 22,4.
C
CALLP
pgml(f1d1:224)
'component'
'testprog'
LINKAGE(*CLIENT)
'xxx'
test1
test2
S
S
START
START
20A
20A
LINKAGE(*CLIENT)
name1
name2
259
RESTRICCIONES
PARA
CALLP
START
Inicio de un componente
El cdigo de operacin START inicia un componente nuevo en la aplicacin.
Cuando se realiza la operacin, tanto los componentes lgicos que se estn
iniciando como los ya iniciados, junto con cualquier otro componente lgico activo
de la aplicacin, estn listos para recibir acciones de usuario en todos los
componentes actualmente habilitados por todos los componentes lgicos.
El cdigo de operacin START es similar al cdigo de operacin CALL en lo
siguiente:
v Pueden pasarse parmetros a un componente lgico.
v Los parmetros se correlacionan con los parmetros *ENTRY PLIST del
componente lgico destino.
260
Finalizacin de un componente
El cdigo de operacin STOP termina la ejecucin de un componente lgico. Si no
especifica el nombre del componente lgico en el factor 2, se termina el
componente lgico que se ejecuta actualmente. Cuando se termina un componente
lgico, los componentes hijos que puedan iniciarse son los primeros en terminar.
Cuando se realiza una operacin STOP que afecta al componente lgico de
ejecucin actual, no se ejecutan las operaciones que siguen a STOP. En otras
palabras, el resultado de STOP es inmediato. Por ejemplo, si COMPA inicia
COMPB, y COMPB es el componente lgico que se est ejecutando actualmente y
emite un STOP para COMPA, en primer lugar finaliza COMPB y despus COMPA.
No se realizan ms operaciones a continuacin de STOP.
La finalizacin de un componente lgico con STOP se considera una terminacin
normal y se invoca *TERMSR para cualquier proceso de usuario final.
261
262
REMPGM
MYLIB/LOOKUP
SERVER01
*********************************************************************
*
*
* ID de programa : rcallex.vpg
*
*
*
* Descripcin . : Segmento de cdigo para llamar a un programa
*
*
remoto en el AS/400.
*
*
*
*********************************************************************
*
* REMPGM es el nombre de alias del programa remoto
D as400pgm
S
6A
INZ('REMPGM') LINKAGE(*SERVER)
* Las variables siguientes son parmetros que se pasan al programa
* remoto
*
student_id
- input
*
name
- output
D student_id
S
6S 0 INZ(32533)
D name
S
20A
*********************************************************************
*
*
* Ventana. . : WIN1
*
*
*
* Componente : PSB0000C
*
*
*
* Evento . . : PRESS
*
*
*
* Descripcin: Llame a un programa remoto en el AS/400 para obtener *
*
el nombre de la persona asociada al id. de estudiante*
*
*
*********************************************************************
*
C
PSB0000C
BEGACT
PRESS
WIN1
C
CALL
as400pgm
C
PARM
student_id
C
PARM
name
C
ENDACT
263
Llamadas de prototipo
Para llamar a un subprocedimiento, debe utilizar una llamada de prototipo.
Tambin puede llamar a cualquier programa o procedimiento que se haya escrito
en cualquier lenguaje mediante una llamada de prototipo. Una llamada de
prototipo es aquella en la que la interfaz de llamadas se comprueba en el tiempo
de compilacin utilizando un prototipo. Un prototipo es una definicin de la
interfaz de llamadas. Incluye la informacin siguiente:
v Si la llamada es enlazada (procedimiento) o dinmica (programa).
v La manera de buscar el programa o el procedimiento (el nombre externo).
v El nmero y la naturaleza de los parmetros.
v Los parmetros que deben pasarse y los que se pasan de manera opcional.
v El tipo de datos del valor de devolucin, si hay alguno (para un procedimiento).
El compilador utiliza el prototipo para llamar al programa o al procedimiento
correctamente y para asegurarse de que el emisor pasa los parmetros correctos. La
Figura 67 en la pgina 265 muestra un prototipo para el procedimiento FmtCust,
que formatea varios campos de un registro de manera legible. Tiene dos
parmetros de salida.
264
CALLP
FmtCust(RPTNAME : RPTADDR)
265
266
267
v
v
v
v
268
Todas las subrutinas (BEGSR) deben ser locales para un procedimiento. El EXE
debe contener un procedimiento cuyo nombre coincida con el nombre del
archivo fuente. ste ser el punto de entrada principal para el EXE (por ejemplo,
el procedimiento principal).
No se permiten cdigos de operacin GUI en el fuente.
Esto incluye START, STOP, SETATR, GETATR, %SETATR, %GETATR,
SHOWWIN, CLSWIN y READS. Se puede utilizar DSPLY.
*inzsr y *termsr no estn permitidos.
*ENTRY parms no est permitido.
Si hay parmetros de entrada, estn especificados en la definicin de parmetros
del procedimiento principal y deben pasarse por VALUE (la palabra clave
VALUE debe especificarse para cada parmetro).
La palabra clave EXPORT no est permitida en la especificacin P Begin.
El tratamiento de excepciones se diferencia de la DLL de VRPG. El manejador de
excepciones por omisin no se invoca nunca desde un EXE. Si se produce una
excepcin en el EXE y no hay ningn indicador de errores ni *PSSR, tiene lugar
un exit() y la informacin sobre la excepcin se graba en el archivo
FVDCERRS.LOG.
*JAVA identifica el objeto como objeto Java. El nombre de clase especifica la clase
del objeto. Debe ser literal en los caracteres y el nombre de clase debe ser
totalmente calificado. El nombre de clase es sensible a las maysculas y
minsculas.
Por ejemplo, para declarar un campo que contendr un tipo de objeto BigDecimal:
D bdnum
CLASS(*JAVA:'java.math.BigDecimal')
CLASS(*JAVA:'java.lang.String')
Observe que ambos nombres de clase estn totalmente calificados y que el uso de
maysculas y minsculas coincide exactamente con el de la clase Java.
Los campos de tipo O no pueden definirse como subcampos de estructuras de
datos. Es posible disponer de matrices de campos de tipo O, pero no estn
permitidas las tablas de tipo O porque deben cargarse en tiempo de ejecucin.
Las palabras clave siguientes no pueden utilizarse con la palabra clave CLASS:
269
270
char[]
grfico o Unicode
boolean
indicador (N)
byte[]
byte
entero (3I)
int
entero (10I)
short
entero (5I)
long
entero (20I)
float
double
cualquier objeto
objeto (O)
Los tipos de datos con zona, empaquetados, binarios y sin signo no estn
disponibles en Java. Si pasa un campo con zona, empaquetado, binario o sin signo
como parmetro, el compilador realizar la conversin apropiada, pero es muy
posible que provoque truncamiento y/o prdida de precisin.
Si el mtodo que est invocando ha sido generado por VARPG, es decir, que ha
sido especificado como primer parmetro de una palabra clave EXTPROC,
entonces los tipos de datos con zona, empaquetados, binarios y sin signo pueden
especificarse como tipo de datos de los parmetros y los valores de retorno. Los
mtodos generados por cdigo escrito inicialmente en Java no pueden utilizar tipos
de datos con zona, empaquetados, binarios y sin signo en el prototipo para
parmetros o valores de retorno.
Al invocar un mtodo, el compilador acepta matrices como parmetros si ste es
un prototipo que utiliza la palabra clave DIM. En caso contrario, slo se aceptarn
los campos escalares, las estructuras de datos y las tablas.
Actualmente, no puede invocar mtodos que esperen estos tipos de datos de Java o
que devuelvan estos tipos de valores: byte, char y long.
Si el valor de retorno de un mtodo es un objeto, entonces usted debe proporcionar
la clase del objeto codificando la palabra clave CLASS en el prototipo. El nombre
de clase especificado ser el del objeto que se devuelve. Utilice la palabra clave
EXTPROC para especificar la clase del mtodo que se invoca.
Si el mtodo invocado es esttico, entonces debe especificar la palabra clave
STATIC en el prototipo.
En Java, los tipos de datos siguientes slo pueden pasarse por valor:
byte
int
short
long
float
double
271
Ejemplo 1
La clase Integer de Java contiene un mtodo esttico llamado toString, que acepta
un parmetro int y devuelve un objeto String. Se declara en Java de la siguiente
forma:
String
Integer.toString(int)
PR
EXTPROC(*JAVA:
'java.lang.Integer':
'toString')
CLASS(*JAVA:'java.lang.String')
STATIC
10I 0 VALUE
Ejemplo 2
La clase Integer de Java contiene un mtodo esttico llamado getInteger, que acepta
objetos String e Integer como parmetros y devuelve un objeto Integer. En Java se
declara de la siguiente forma:
Integer Integer.getInteger(String, Integer)
PR
O
O
EXTPROC(*JAVA:
'java.lang.Integer':
'getInteger')
CLASS(*JAVA:'java.lang.Integer')
STATIC
CLASS(*JAVA:'java.lang.String')
CLASS(*JAVA:'java.lang.Integer')
Este mtodo acepta dos objetos como parmetros. O est codificado en la columna
40 de la especificacin D y la palabra clave CLASS especifica la clase de cada
parmetro de objeto.
Ejemplo 3
La clase Integer de Java contiene un mtodo llamado shortValue, que devuelve la
representacin corta del objeto Integer utilizado para invocar el mtodo. Se declara
en Java de la siguiente forma:
short shortValue()
272
PR
5I 0 EXTPROC(*JAVA:
'java.lang.Integer':
'shortValue')
Ejemplo 4
La clase Integer de Java contiene un mtodo llamado equals, que acepta un objeto
como parmetro y devuelve un valor booleano. Se declara en Java de la siguiente
forma:
boolean equals(Object)
PR
N
O
EXTPROC(*JAVA:
'java.lang.Integer':
'equals')
CLASS(*JAVA:'java.lang.Object')
PR
4F
EXTPROC(*JAVA:
'java.math.BigDecimal':
*CONSTRUCTOR)
CLASS(*JAVA:'java.math.BigDecimal')
VALUE
Observe que el parmetro debe pasarse por valor porque correlaciona al tipo de
datos float de Java.
273
Ejemplo 1
En este ejemplo, el objetivo es aadir dos valores BigDecimal. Para llevarlo a cabo,
deben crearse instancias para dos objetos BigDecimal invocando el constructor para
la clase BigDecimal, deben declararse los campos para el almacenamiento de los
objetos BigDecimal y debe invocarse el mtodo add() en la clase BigDecimal.
*
*
*
*
*
*
*
*
*
*
Ya que uno de los constructores que estamos utilizando requiere un objeto String,
tambin necesitamos construir uno. Realice un prototipo del constructor
String que acepta una matriz de bytes como parmetro. Devuelve
un objeto String.
D bdcreate1
PR
O
EXTPROC(*JAVA:
D
'java.math.BigDecimal':
D
*CONSTRUCTOR)
D
CLASS(*JAVA:'java.math.BigDecimal')
D
str
O
CLASS(*JAVA:'java.lang.String')
*
* Prototipo del constructor BigDecimal que acepta un parmetro
* doble. 8F correlaciona al tipo de datos double de Java y, por ello,
* debe pasarse por VALUE. Devuelve un objeto BigDecimal.
*
D bdcreate2
PR
O
EXTPROC(*JAVA:
D
'java.math.BigDecimal':
D
*CONSTRUCTOR)
D
CLASS(*JAVA:'java.math.BigDecimal')
D double
8F
VALUE
*
* Define los campos en los que almacenar los objetos BigDecimal.
*
D bdnum1
S
O
CLASS(*JAVA:'java.math.BigDecimal')
D bdnum2
S
O
CLASS(*JAVA:'java.math.BigDecimal')
*
D makestring
PR
O
EXTPROC(*JAVA:
D
'java.lang.String':
D
*CONSTRUCTOR)
D
CLASS(*JAVA:'java.lang.String')
D
bytes
10A
*
* Define un campo en el que almacenar el objeto String.
*
D string
S
O
CLASS(*JAVA:'java.lang.String')
*
* Prototipo del mtodo add BigDecimal. Acepta un objeto BigDecimal
* como parmetro y devuelve un objeto BigDecimal (la suma del parmetro
* y del objeto BigDecimal utilizado para invocar).
*
D add
PR
O
EXTPROC(*JAVA:
D
'java.lang.BigDecimal':
D
'add')
D
CLASS(*JAVA:'java.math.BigDecimal')
D bd1
O
CLASS(*JAVA:'java.math.BigDecimal')
*
* Define un campo en el que almacenar el resultado de la suma.
*
D sum
S
O
CLASS(*JAVA:'java.math.BigDecimal')
D
D double
S
8F
INZ(1.1)
D fld1
S
10A
274
C
C*
C*
C*
C*
C*
C
C*
C*
C*
C*
C
C*
C*
C*
C*
C
C*
C*
C*
C*
C*
C*
C*
C*
C*
C
C*
C*
MOVEL
'mystring'
fld1
10
string = makestring(fld1)
bdnum1 = bdcreate1(string)
bdnum2 = bdcreate2(double)
Ejemplo 2
Este ejemplo muestra cmo realizar un TRIM en Java utilizando el mtodo trim()
como alternativa a la funcin %TRIM incorporada en VARPG. El mtodo trim() en
la clase String no es un mtodo esttico, por lo que se necesita un objeto String
para invocarlo.
*
*
*
D str
S
O
CLASS(*JAVA:'java.lang.String')
*
* Prototipo de constructor para la clase String. El
* constructor espera una matriz de bytes.
*
D makestring
PR
O
EXTPROC(*JAVA:
D
'java.lang.String':
D
*CONSTRUCTOR)
D
CLASS(*JAVA:'java.lang.String')
D parm
10A
D
*
* Prototipo de mtodo String getBytes que convierte un String en una matriz
* de bytes. A partir de ah, podremos almacenar esta matriz de bytes en un
* campo alpha.
*
D makealpha
PR
10A
EXTPROC(*JAVA:
D
'java.lang.String':
D
'getBytes')
*
* Prototipo de mtodo String trim. No necesita parmetros, pero
* al no ser un mtodo esttico, debe invocarse utilizando un objeto
* String.
*
D trimstring
PR
O
EXTPROC(*JAVA:
D
'java.lang.String':
Captulo 18. Cmo invocar mtodos Java desde programas VisualAge RPG
275
'trim')
D fld
10A
INZ('
hello
')
str = makestring(fld)
str = trimstring(str)
fld = makealpha(str)
EVAL
fld = makealpha()
Otras consideraciones
El compilador no intentar resolver las clases durante la compilacin. Si una clase
no puede localizarse durante el tiempo de ejecucin, aparecer un error de
ejecucin. ste indicar que se ha recibido un objeto UnresolvedLinkException del
entorno Java.
El compilador no escribe las comprobaciones de parmetros durante la
compilacin. Si se produce un conflicto entre el prototipo y el mtodo que se
invoca, se recibir un error durante la ejecucin.
Es muy importante que se especifique *JAVARPG como primer parmetro de
EXTPROC si el mtodo invocado no ha sido generado por VARPG. En caso
contrario, es posible que se produzca una de las dos situaciones de error descritas
ms arriba.
276
277
Tipos de archivo:
v SPECIAL
Operaciones con archivos:
v Grabar registros por nmero de registro relativo
IF
...
RETURN
ELSE
...
RETURN
ENDIF
x = 1
1
0
IF
...
RETURN
ELSE
...
ENDIF
RETURN
x = 1
1
278
10.
11.
12.
13.
14.
15.
%mousex
%mousey
IFEQ
ANDEQ
...
ENDIF
x
y
IF
...
ENDIF
%mousex = x AND
%mousey = y
16. Una operacin RETURN incondicional no puede codificarse a menos que sea
la ltima instancia de una subrutina de usuario, una subrutina de accin o un
subprocedimiento. En caso contrario, el compilador Java puede informar de
errores.
17. Una operacin LEAVESR incondicional no puede codificarse a menos que sea
la ltima sentencia de una subrutina de usuario o una subrutina de accin. En
caso contrario, el compilador Java puede informar de errores.
18. Las instancias SELECT pueden provocar errores del compilador Java cuando
aparecen en subprocedimientos, cuando contienen operaciones RETURN y no
se ha codificado ningn RETURN en el cuerpo principal del
subprocedimiento.
Ejemplo de cdigo que podra provocar errores de compilacin en Java:
C
C
C
C
C
C
C
C
x
x
SELECT
WHENEQ
RETURN
WHENEQ
RETURN
OTHER
RETURN
ENDSL
y
1
z
2
0
279
x
x
SELECT
WHENEQ
RETURN
WHENEQ
RETURN
ENDSL
RETURN
y
1
z
2
0
En general, una operacin RETURN debera codificarse para todas las posibles
vas de acceso de cdigo de un subprocedimiento, en caso contrario, el
compilador Java emitir errores.
19. Las matrices no pueden pasarse por valor a subprocedimientos.
280
Restricciones de applet
Los siguientes elementos del lenguaje no estn soportados cuando se ejecuta una
applet VARPG y dar como resultado errores de Java en tiempo de ejecucin:
v Archivos de impresora
v Archivos locales
v Llamadas a funciones C, subprocedimientos externo, archivos EXE.
v Las aplicaciones NOMAIN y EXE no pueden ejecutarse como applets.
Sin embargo, el texto impreso puede no ser exactamente como se esperaba. Este
problema se resolver cuando se arregle el problema con J2SDK 1.2, sin necesidad
de actualizar VARPG.
281
282
283
**********************************************************************
* Archivo fuente: VCOMP1.VPG
*
* Demostracin de la llamada a un procedimiento externo mediante JNI.
*
**********************************************************************
* Declarar un procedimiento llamado 'sub1' que hace referencia a
* una funcin llamada 'proc1' de la DLL 'VSUB.DLL'
d sub1
pr
dll('VSUB') extproc('proc1')
*INZSR
dll('VSUB')
BEGSR
C
C
callp
callp
seton
ENDSR
sub1
sub2
lr
CREATE1
BEGACT
seton
ENDACT
LR
284
// Archivo fuente:
VSUB.C
{
printf(" llamada a proc1 satisfactoria.\n");
}
//--------------------------------------------------------------void _Export __stdcall
{
}
Tipos de parmetro
Carcter
VisualAge RPG implementa los campos de tipo carcter como matrices de bytes en
Java, incluyendo un campo de tipo carcter de longitud uno. La funcin
GetByteArrayElements de la interfaz JNI devuelve el valor del parmetro de matriz
de bytes. Puede modificarse el valor y devolverlo a la funcin que efecta la
llamada mediante la funcin ReleaseByteArrayElements de la interfaz.
Nota: Tras llamar a la funcin de liberacin no debe utilizarse el valor en la
funcin nativa.
El primer parmetro de la funcin nativa del fuente de lenguaje C se ha cambiado
de un puntero void a un puntero JNIEnv. Apunta a una tabla de punteros de
funcin para las funciones de la interfaz JNI. Los prototipos de los parmetros del
Captulo 20. Llamada a funciones del sistema al compilar para Java
285
286
**********************************************************************
* Archivo fuente: VCOMP1.VPG
*
* Demostracin de la llamada a un procedimiento externo mediante JNI.
*
**********************************************************************
* Declarar un procedimiento llamado 'sub1c' que hace referencia a
* una funcin llamada 'proc1c' de la DLL 'VSUBC.DLL'
* Con 1 parmetro de tipo carcter
d sub1c
pr
d
dll('VSUBC') extproc('proc1c')
s
s
s
d mb1
d rc
*INZSR
C
C
1
4
10
inz('J')
inz('blue')
inz('abcdefghij')
style(*info) button(*OK)
BEGSR
callp
callp
sub1c(c1)
sub2c(c4:c10)
c
c
c
C
seton
ENDSR
lr
CREATE1
BEGACT
seton
ENDACT
LR
287
char
Java_VCOMPC_proc1c(
*c1;
char
char
*c4;
*c10;
288
4S 0
dll('VSUBN')
dll('VSUBN')
9P 2
z4
p92
b4
b9
s
s
s
s
4S
9P
4B
9B
0
2
0
0
d mb1
d rc
m
s
*INZSR
inz(1234)
inz(1234567.89)
inz(1234)
inz(123456789)
style(*info) button(*OK)
BEGSR
C
C
C
callp
subz(z4)
callp
subp(p92)
callp
subb(b4:b9)
* Visualizar los valores cambiados por las llamadas
c
z4
dsply
mb1
rc
c
p92
dsply
mb1
rc
c
c
b4
b9
c
C
dsply
dsply
mb1
mb1
rc
rc
seton
ENDSR
lr
CREATE1
BEGACT
seton
LR
ENDACT
289
// Archivo fuente:
//
VSUBN.C
Java_VCOMPN_SUBZ(
jclass
cls;
jmethodID mid;
jobject
aryobj;
char
*zd;
printf(" llamada a SUBZ satisfactoria.\n");
// p1: con zona
// Llamar al mtodo para obtener el valor con zona
cls = (*je)->GetObjectClass(je, p1);
mid = (*je)->GetMethodID( je, cls, "zonedValue", "()[B");
if ( mid == NULL)
{
printf(" ERROR: GetMethod.\n");
return;
}
aryobj = (*je)->CallObjectMethod( je, p1, mid);
zd = (char *) (*je)->GetByteArrayElements( je, aryobj, NULL);
printf(" zd = %.4s.\n", zd);
290
291
Numrico empaquetado
void _Export __stdcall
{
jclass
cls;
jmethodID mid;
jobject
aryobj;
char
*packednum;
printf(" llamada a SUBP satisfactoria.\n");
// p1: empaquetado 9,2
// Llamar al mtodo para obtener el valor con zona
cls = (*je)->GetObjectClass(je, p1);
mid = (*je)->GetMethodID( je, cls, "packedValue", "()[B");
if ( mid == NULL)
{
printf(" ERROR: GetMethod.\n");
return;
}
aryobj = (*je)->CallObjectMethod( je, p1, mid);
packednum = (char *) (*je)->GetByteArrayElements( je, aryobj, NULL);
// Ahora cambiamos los valores
memcpy( packednum, "\x98\x76\x54\x32\x1C", 5);
292
293
Binario
void _Export __stdcall
{
jclass
jmethodID
jobject
jobject
cls;
mid;
aryobj;
aryobj2;
char
char
*binarynum;
*b9;
short
int
binary2;
binary4;
binario 4,0
294
295
296
tmp = p[1];
p[1] = p[2];
p[2] = tmp;
Este caso es similar al del decimal con zona. Slo se utilizan los mtodos
apropiados para los objetos RpgBinary. La nica complicacin aadida es que la
plataforma de la arquitectura Intel nativa almacena los enteros binarios en un
formato bytes de menor orden a la izquierda, mientras que el lado Java trabaja
con un formato bytes de menor orden a la derecha. Se emplean las funciones
SwapBin2 y SwapBin4 para invertir el orden de los bytes al convertir los enteros
binarios de dos y cuatro bytes de un lado al otro.
Se utiliza el mtodo RpgBinary::binaryValue para obtener una matriz de bytes que
contiene el valor numrico del objeto del parmetro RpgBinary en formato binario
nativo. A continuacin, se invocan las funciones de la interfaz JNI para que la
matriz de bytes Java sea accesible desde el lado nativo de la interfaz. Tras alterar la
matriz de bytes en el lado nativo e invocar la funcin ReleaseByteArrayElements
de la interfaz para devolver la matriz de bytes al lado Java, se vuelve a invocar el
mtodo assignFromNative para establecer el valor del objeto RpgBinary en la
matriz de bytes Java.
297
298
if ( mid == NULL)
{
printf(" ERROR: GetMethod.\n");
return;
}
i4 = (*je)->CallIntMethod( je, p2, mid);
printf(" i4 = %d\n", (short) i4);
// p3: 2 bytes sin signo.
// Llamar al mtodo para obtener el valor doble
cls = (*je)->GetObjectClass(je, p3);
mid = (*je)->GetMethodID( je, cls, "unsignedValue", "()[B");
if ( mid == NULL)
{
printf(" ERROR: GetMethod.\n");
}
return;
299
300
//
//
//
//
301
//
//
Obtener el ID de mtodo para poder invocarlo.
cls = (*je)->GetObjectClass(je, p3);
mid = (*je)->GetMethodID( je, cls, "assignFromNative", "([BII)V");
if ( mid == NULL)
{
printf(" ERROR 7: GetMethod.\n");
return;
}
// Pasar (aryobj3) como primer parmetro del mtodo, ya que ste
// espera un objeto de matriz de bytes Java
(*je)->CallVoidMethod( je, p3, mid,
aryobj3,
(int) 5,
(int) 0);
// = Component.UNSIGNED_TYPE
// 0 posiciones decimales
//
302
p[1] = tmp;
tmp = p[1];
p[1] = p[2];
p[2] = tmp;
Flotante (4/8)
303
jclass
jmethodID
jfloat
jdouble
Java_VJNIO_SUBF(
cls, cls2;
mid;
f4;
f8;
// p1: Flotante
// Llamar al mtodo para obtener el valor flotante
cls = (*je)->GetObjectClass(je, p1);
mid = (*je)->GetMethodID( je, cls, "getValue", "()F");
if ( mid == NULL)
{
printf(" ERROR: GetMethod.\n");
}
return;
304
//
return;
//
Los casos de parmetros flotante y doble son similares a los de los anteriores tipos
de datos. Slo los mtodos para acceder a los valores del parmetro funcionan con
los tipos de datos primitivos de Java, que se correlacionan con las correspondientes
primitivas nativas, en lugar de las matrices de bytes habituales. Se utilizan las
funciones de la interfaz JNI que trabajan con estas primitivas especficas para
invocar los mtodos que sirven para acceder a los valores de los parmetros.
Se utilizan los mtodos RpgFloatRef::getValue, setValue, RpgDoubleRef::getValue y
setValue.
305
s
s
s
10d
8t
26z
callp
inz(D'1999-12-31')
inz(T'09.00.00')
inz(Z'2001-01-01-08.01.01')
subdtz(fd:ft:fts)
Los parmetros de fecha, hora e indicacin de la hora funcionan del mismo modo
que los parmetros de tipo carcter, ya que en el lado Java se implementan como
matrices de bytes.
Paso de matrices
El manejo de matrices de parmetros se realiza de dos modos, en funcin del tipo
de datos. Debe invocarse la funcin GetObjectArrayElement de la interfaz para
obtener la direccin de un elemento de objeto individual de la matriz y, a
continuacin, procesarlo del mismo modo que los mtodos de parmetros
escalares. En el caso de una matriz de primitivas Java, existen funciones especficas
de la interfaz para acceder a ellas como matrices de primitivas nativas y, a
306
pr
d c1
d c4
d c10
s
s
s
d subz
d
pr
dll('VSUBA')
4S 0 dim(4)
d subp
pr
dll('VSUBA')
dll('VSUBA')
4
10
dim(4)
1
4
10
inz('J')
inz('blue')
inz('abcdefghij') dim(4)
9P 2 dim(4)
d subb
d
d
pr
dll('VSUBA')
4B 0 dim(4)
9B 0 dim(4)
d
d
d
d
z4
p92
b4
b9
s
s
s
s
4S
9P
4B
9B
d subf
pr
d
d
0
2
0
0
dim(4)
dim(4)
dim(4)
dim(4)
dll('VSUBA')
4f
8f
dim(4)
dim(4)
307
d subdtz
d
d
d
pr
d subiu
d
d
pr
10d
8t
26z
dll('VSUBA')
5i 0 dim(4)
10i 0 dim(4)
d
d
d
d
d
d
d
5u 0 dim(4)
10u 0 dim(4)
f4
f8
fd
ft
fts
s
s
s
s
s
d fi2
5i 0 dim(4) inz(1)
d fi4
d fu2
d fu4
s
s
s
*INZSR
4f
8f
10d
8t
26z
dim(4)
dim(4)
dim(4)
dim(4)
dim(4)
inz(1234.56)
inz(1111.2222)
inz(D'1999-12-31')
inz(T'09.00.00')
inz(Z'2001-01-01-08.01.01')
BEGSR
C
C
C
C
C
C
callp
callp
callp
callp
callp
callp
subca(c4:c10)
subz(z4)
subp(p92)
subb(b4:b9)
subf(f4:f8)
subdtz(fd:ft:fts)
C
c
C
callp
seton
ENDSR
subiu(fi2:fi4:fu2:fu4)
308
dll('VSUBA')
dim(4)
dim(4)
dim(4)
lr
char *c4;
char *c10;
jobject p2e;
// Resolver el segundo elemento del parmetro de matriz
p2e = (*je)->GetObjectArrayElement( je, p2,
1);
/* nd. matriz 1er elem. = 0.
*/
= %.4s.\n",
c4);
Java_VJNIA_SUBZ(
309
jclass
cls;
jmethodID mid;
jobject
aryobj;
char
*zd;
jobject
pe;
// Resolver el elemento del parmetro de matriz
pe = (*je)->GetObjectArrayElement( je, p1,
0);
/* nd. matriz 1er elem. = 0.
// p1: con zona
// Llamar al mtodo para obtener el valor con zona
cls = (*je)->GetObjectClass(je, pe);
mid = (*je)->GetMethodID( je, cls, "zonedValue", "()[B");
aryobj = (*je)->CallObjectMethod( je, pe, mid);
zd = (char *) (*je)->GetByteArrayElements( je, aryobj, NULL);
printf(" zd = %.4s.\n", zd);
// Ahora cambiamos los valores
memcpy( zd, "9876", 4);
// Devolver el parmetro con zona
// 1. Actualizar el objeto matriz de bytes con el valor cambiado.
(*je)->ReleaseByteArrayElements( je, aryobj, (signed char *) zd, 0);
310
*/
}
void _Export __stdcall
{
jclass
cls;
jmethodID mid;
jobject
aryobj;
char
*packednum;
char
tmp[80];
jobject
pe;
// Para rastreo
*/
311
312
jclass
cls;
jmethodID mid;
jobject
aryobj;
jobject
aryobj2;
char
*binarynum;
char
*b9;
short
int
jobject
binary2;
binary4;
pe,p2e;
*/
*/
binario 4,0
313
314
315
);
//---------------------------------------------------------------
316
jclass
jmethodID
jfloat
jdouble
jobject
Java_VJNIA_SUBF(
cls, cls2;
mid;
*f4;
*f8;
p1e,p2e;
f8
317
318
*/
*/
*/
=
=
319
320
//
Obtener el ID de mtodo para poder invocarlo.
cls = (*je)->GetObjectClass(je, p3e);
mid = (*je)->GetMethodID( je, cls, "assignFromNative", "([BII)V");
// Pasar (aryobj3) como primer parmetro del mtodo, ya que ste
// espera un objeto de matriz de bytes Java
(*je)->CallVoidMethod( je, p3e, mid,
aryobj3,
(int) 5,
(int) 0);
// = Component.UNSIGNED_TYPE
// 0 posiciones decimales
321
//
tmp = p[0];
p[0] = p[1];
p[1] = tmp;
char
tmp;
tmp = p[0];
p[0] = p[3];
p[3] = tmp;
tmp = p[1];
p[1] = p[2];
p[2] = tmp;
pr
10
dll('VSUBR')
d fc
10
eval
322
fc = subrc
Java_VJNIR_SUBRC(
",10);
return ba;
pr
s
eval
5s 0 dll('VSUBR')
5s 0
fc = subrc
323
jbyteArray ba;
char
*p;
printf(" llamada a SUBRS satisfactoria.\n");
// Crear un nuevo objeto RpgZoned.
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgZoned");
mid = (*je)->GetMethodID( je, cls, "<init>", "(II)V");
rzo = (*je)->NewObject( je, cls, mid,
(int) 5, /* nm. de dgitos */
(int) 0
);
//
//
//
//
//
324
return rzo;
);
pr
s
eval
5p 0 dll('VSUBR')
5p 0
fp = subrp
325
jbyteArray ba;
char
*p;
printf(" llamada a SUBRP satisfactoria.\n");
// Crear un nuevo objeto RpgPacked.
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgPacked");
mid = (*je)->GetMethodID( je, cls, "<init>", "(II)V");
ro = (*je)->NewObject( je, cls, mid,
(int) 5, /* nm. de dgitos */
(int) 0
);
//
//
//
//
//
326
d subrb
d fb
C
pr
s
5b 0 dll('VSUBR')
5b 0
eval
fb = subrb
jbyteArray ba;
char
*p;
printf(" llamada a SUBRB satisfactoria.\n");
// Crear un nuevo objeto RpgPacked.
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgBinary");
mid = (*je)->GetMethodID( je, cls, "<init>", "(II)V");
ro = (*je)->NewObject( je, cls, mid,
(int) 5, /* nm. de dgitos */
(int) 0
);
327
// 55555 = 0xD903
pr
pr
5i 0 dll('VSUBR')
10i 0 dll('VSUBR')
d fi2
d fi4
s
s
5i 0
10i 0
C
C
eval
eval
328
fi2= subri2
fi4= subri4
jint
_Export __stdcall
{
return -55555;
}
d subru
d fu
C
pr
s
eval
10u 0 dll('VSUBR')
10u 0
fu = subru
329
jbyteArray ba;
char
*p;
printf(" llamada a SUBRU satisfactoria.\n");
// Crear un nuevo objeto RpgUnsigned.
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgUnsigned");
mid = (*je)->GetMethodID( je, cls, "<init>", "(II)V");
ro = (*je)->NewObject( je, cls, mid,
(int) 5, /* nm. de dgitos */
(int) 0
);
// 55555 = 0xD903
330
pr
s
eval
10d
dll('VSUBR')
10d
fd = subrd
Java_VJNIR_SUBRD(
memcpy( p, "2000-01-01",10);
// Actualizar los valores y devolverlos al llamador Java
(*je)->ReleaseByteArrayElements( je, ba, (signed char *) p, 0);
}
return ba;
subrf
subrf8
ff
ff8
pr
pr
s
s
eval
eval
4f
8f
4f
8f
dll('VSUBR')
dll('VSUBR')
ff = subrf
ff8= subrf8
331
rc = -4444.4444;
return rc;
pr
s
eval
10
dll('VSUBR')
10
varying
fcv= subrcv
varying
memcpy( p, "abcd",4);
// Actualizar los valores y devolverlos al llamador Java
(*je)->ReleaseByteArrayElements( je, ba, (signed char *) p, 0);
}
return ba;
332
d
d
d
d
d
d
d
subrca
subrsa
subrpa
subrba
subri2a
subri4a
subrua
pr
pr
pr
pr
pr
pr
pr
10
5s
5p
5b
5i
10i
10u
d
d
d
d
subrda
subrfa
subrf8a
subrcva
pr
pr
pr
pr
10d
4f
8f
10
d
d
d
d
fc
fs
fp
fb
s
s
s
s
10
dim(4)
5s 0 dim(4)
5p 0 dim(4)
5b 0 dim(4)
d
d
d
d
d
d
d
fi2
fi4
fu
fd
ff
ff8
fcv
s
s
s
s
s
s
s
5i 0 dim(4)
10i 0 dim(4)
10u 0 dim(4)
10d
dim(4)
4f
dim(4)
8f
dim(4)
10
varying dim(4)
d mb1
d rc
m
s
0
0
0
0
0
0
dll('VSUBRA')
dll('VSUBRA')
dll('VSUBRA')
dll('VSUBRA')
dll('VSUBRA')
dll('VSUBRA')
dll('VSUBRA')
dim(4)
dim(4)
dim(4)
dim(4)
dim(4)
dim(4)
dim(4)
dll('VSUBRA')
dll('VSUBRA')
dll('VSUBRA')
dll('VSUBRA')
dim(4)
dim(4)
dim(4)
varying dim(4)
style(*info) button(*OK)
333
C
C
c
C
c
*INZSR
BEGSR
fs(2)
eval
dsply
eval
dsply
fc = subrca
mb1
fs = subrsa
mb1
C
c
fp(2)
eval
dsply
fp = subrpa
mb1
rc
C
c
fb(2)
eval
dsply
fb = subrba
mb1
rc
C
c
fi2(2)
eval
dsply
fi2= subri2a
mb1
rc
C
c
fi4(2)
eval
dsply
fi4= subri4a
mb1
rc
C
c
fu(2)
eval
dsply
fu = subrua
mb1
rc
C
c
fd(2)
eval
dsply
fd = subrda
mb1
rc
eval
ff = subrfa
fc(2)
rc
rc
ff(2)
dsply
mb1
C
c
ff8(2)
eval
dsply
ff8= subrf8a
mb1
rc
eval
dsply
eval
dsply
seton
ENDSR
fcv= subrcva
mb1
rc
rc = %len(fcv(2))
mb1
rc
C
c
C
c
c
C
fcv(2)
rc
rc
334
lr
// Archivo fuente:
//
VSUBRA.C
Java_VJNIRA_SUBRCA(
335
memcpy( p, "Satisfactorio
",10);
336
jbyteArray ba;
char
*p;
printf(" llamada a SUBRSA satisfactoria.\n");
// Crear el objeto matriz
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgZoned");
if ( cls == NULL)
{
printf(" ERROR 1: FindClass.\n");
return NULL;
}
oa = (*je)->NewObjectArray( je, 4 /* longitud matriz */, cls, NULL );
if ( oa == NULL)
{
printf(" ERROR 2: Newobj\n");
return NULL;
}
// Poblar la matriz
for (i=0; i<4; i++)
{
// Crear un nuevo objeto RpgZoned.
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgZoned");
if ( cls == NULL)
{
printf(" ERROR 1: FindClass.\n");
return NULL;
}
337
if ( rzo == NULL)
{
printf(" ERROR3: \n");
return NULL;
}
// Establecer el valor del segundo elemento
if ( 1 == i)
{
//
//
//
//
338
339
jbyteArray ba;
char
*p;
printf(" llamada a SUBRPA satisfactoria.\n");
// Crear el objeto matriz
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgPacked");
if ( cls == NULL)
{
printf(" ERROR 1: FindClass.\n");
return NULL;
}
oa = (*je)->NewObjectArray( je, 4 /* longitud matriz */, cls, NULL );
if ( oa == NULL)
{
printf(" ERROR 2: Newobj\n");
return NULL;
}
// Poblar la matriz
for (i=0; i<4; i++)
{
340
);
if ( ro == NULL)
{
printf(" ERROR3: \n");
return NULL;
}
// Establecer el valor del segundo elemento
if ( 1 == i)
{
//
//
//
//
341
342
// posiciones decimales
}
(*je)->SetObjectArrayElement( je, oa, i /* elemento matriz, empieza en 0 */
, ro);
} // for i
return oa;
}
//--------------------------------------------------------------jobjectArray _Export __stdcall
{
jobjectArray oa;
int
i;
jclass
cls;
jmethodID
jobject
mid;
ro;
jbyteArray ba;
char
*p;
printf(" llamada a SUBRBA satisfactoria.\n");
// Crear el objeto matriz
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgBinary");
if ( cls == NULL)
{
printf(" ERROR 1: FindClass.\n");
return NULL;
}
343
return NULL;
// Poblar la matriz
for (i=0; i<4; i++)
{
// Crear un nuevo objeto RpgPacked.
#if 0
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgBinary");
if ( cls == NULL)
{
printf(" ERROR 1: FindClass.\n");
return NULL;
}
#endif
mid = (*je)->GetMethodID( je, cls, "<init>", "(II)V");
if ( mid == NULL)
{
printf(" ERROR: GetMethod.\n");
return NULL;
}
ro = (*je)->NewObject( je, cls, mid,
(int) 5, /* nm. de dgitos */
(int) 0 /* nm. de posiciones decimales */
);
344
if ( ro == NULL)
{
printf(" ERROR3: \n");
return NULL;
}
// Establecer el valor del segundo elemento
if ( 1 == i)
{
// Para establecer el valor del objeto decimal empaquetado, necesitamos
// una matriz de bytes Java para utilizarla como parmetro de entrada
// del mtodo para establecer el objeto decimal empaquetado.
// Puede construirse un objeto de matriz de bytes nuevo u obtener uno
// recuperando el valor decimal empaquetado del objeto.
// Construir una matriz de bytes.
// Crear un objeto de matriz de bytes nuevo
ba = (*je)->NewByteArray( je, 4 /* = longitud matriz bytes */ );
if ( ba == NULL)
{
printf(" ERROR4: \n");
return NULL;
}
// Pinchar la memoria del elemento de la matriz de bytes para que
// el lado nativo pueda acceder a ella.
p
// 55555 = 0xD903
345
// posiciones decimales
}
(*je)->SetObjectArrayElement( je, oa, i /* elemento matriz, empieza en 0 */
, ro);
} // for i
}
return oa;
346
n[1] = -5555;
// Actualizar los valores y devolverlos al llamador Java
(*je)->ReleaseShortArrayElements( je, rc, n, 0);
return rc;
}
//--------------------------------------------------------------jintArray _Export __stdcall Java_VJNIRA_SUBRI4A( JNIEnv *je , void *jc)
{
jintArray rc;
jint
*n;
printf(" llamada a SUBRI4A satisfactoria.\n");
rc = (*je)->NewIntArray( je, 4 /* = longitud matriz */ );
// Pinchar la memoria del elemento de la matriz para que
// el lado nativo pueda acceder a ella.
n
n[1] = -5555;
// Actualizar los valores y devolverlos al llamador Java
(*je)->ReleaseIntArrayElements( je, rc, n, 0);
return rc;
347
jbyteArray ba;
char
*p;
printf(" llamada a SUBRUA satisfactoria.\n");
// Crear el objeto matriz
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgUnsigned");
if ( cls == NULL)
{
printf(" ERROR 1: FindClass.\n");
return NULL;
}
oa = (*je)->NewObjectArray( je, 4 /* longitud matriz */, cls, NULL );
if ( oa == NULL)
{
printf(" ERROR 2: Newobj\n");
return NULL;
}
// Poblar la matriz
for (i=0; i<4; i++)
{
// Crear un nuevo objeto RpgPacked.
#if 0
cls = (*je)->FindClass( je, "com/ibm/varpg/rpgruntime/RpgUnsigned");
if ( cls == NULL)
{
}
#endif
348
349
// 55555 = 0xD903
350
// for i
, ro);
return oa;
}
//---------------------------------------------------------------
351
Java_VJNIRA_SUBRDA(
352
memcpy( p, "2000-01-01",10);
// Actualizar los valores y devolverlos al llamador Java
// Cuarto parm. = 0 tambin hace que se libere el alm. de la variable,
// por lo que no puede accederse a ellas tras llamar a esta funcin.
(*je)->ReleaseByteArrayElements( je, ba, (signed char *) p, 0);
(*je)->SetObjectArrayElement( je, oa, i /* elemento matriz, empieza en 0 */
, ba);
} // for i
return oa;
}
//--------------------------------------------------------------jfloatArray _Export __stdcall
{
jfloatArray rc;
jfloat
*n;
n[1] = -4444.4444;
// Actualizar los valores y devolverlos al llamador Java
(*je)->ReleaseFloatArrayElements( je, rc, n, 0);
}
return rc;
353
//--------------------------------------------------------------jdoubleArray
{
_Export __stdcall
jdoubleArray rc;
jdouble
*n;
printf(" llamada a SUBRF8 satisfactoria.\n");
rc = (*je)->NewDoubleArray( je, 4 /* = longitud matriz */ );
// Pinchar la memoria del elemento de la matriz para que
// el lado nativo pueda acceder a ella.
n
n[1] = -7777777.55555;
// Actualizar los valores y devolverlos al llamador Java
(*je)->ReleaseDoubleArrayElements( je, rc, n, 0);
return rc;
}
//--------------------------------------------------------------jobjectArray _Export __stdcall Java_VJNIRA_SUBRCVA( JNIEnv *je , void *jc)
{
// Similar al caso de caracteres de longitud fija, slo que los elementos
// individuales de la matriz pueden crearse como matrices de bytes de
// distintas longitudes para reflejar la longitud actual de los valores
// de longitud variable.
354
jobjectArray oa;
jclass
cls;
jbyteArray ba;
char
*p;
int
i;
printf(" llamada a SUBRCVA satisfactoria.\n");
// Crear el objeto matriz
cls = (*je)->FindClass( je, "java/lang/Object");
if ( cls == NULL)
{
printf(" ERROR 1: FindClass.\n");
return NULL;
}
oa = (*je)->NewObjectArray( je, 4 /* longitud matriz */, cls, NULL );
if ( oa == NULL)
{
printf(" ERROR 2: Newobj\n");
return NULL;
}
355
// Poblar la matriz
for (i=0; i<4; i++)
{
memcpy( p, "abcd",4);
// Actualizar los valores y devolverlos al llamador Java
// Cuarto parm. = 0 tambin hace que se libere el alm. de la variable,
// por lo que no puede accederse a ellas tras llamar a esta funcin.
(*je)->ReleaseByteArrayElements( je, ba, (signed char *) p, 0);
return oa;
356
El fuente del programa debe contener un procedimiento cuyo nombre coincida con
el nombre del archivo fuente. Este ser el principal punto de entrada del programa.
Si deben pasarse parmetros al programa, deben especificarse en la definicin de
parmetros para el procedimiento principal y deben pasarse por valor. Es decir, la
palabra clave VALUE debe especificarse para cada parmetro. Al ejecutar una
aplicacin desde la lnea de mandatos debe separar los parmetros mediante
espacios. Si se pasan ms o menos parmetros de los especificados, no aparecer
ningn mensaje de error.
Para crear un programa autnomo en el Diseador GUI, seleccione Proyecto >
Nuevo > Proyecto no GUI De la ventana de proyectos. El editor abre un nuevo
archivo fuente que contiene una especificacin de control H. Elimine el comentario
para la especificacin H * EXE y escriba el cdigo de su programa. Cuando haya
Copyright IBM Corp. 1994, 2000
357
Para crear un archivo DLL en el Diseador GUI, seleccione Proyecto > Nuevo >
Proyecto no GUI de la ventana de proyectos. El editor abre un nuevo archivo
fuente que contiene una especificacin de control H. Elimine el comentario para la
especificacin H * NOMAIN y escriba el cdigo de su programa. Cuando haya
terminado, guarde su proyecto y construya el archivo DLL. Asimismo, puede
seleccionar las opciones que desee desde la ventana de proyectos.
Al construir un archivo DLL, el compilador produce el archivo DLL y un archivo
LIB. El archivo LIB se utiliza para enlazar el archivo DLL a otras aplicaciones. El
archivo LIB debe encontrarse en el mismo directorio que el fuente y debe tener el
mismo nombre que el archivo DLL. El archivo LIB contiene todos los
procedimientos que tienen la palabra clave EXPORT en su especificacin P Begin.
El siguiente ejemplo le muestra cmo codificar la parte del programa MyPGM que
convierte la serie de minsculas a maysculas como un procedimiento en un
archivo DLL. El fuente para el archivo DLL contiene un procedimiento llamado
ToUpper. Agregue la palabra clave Export a la definicin del procedimiento para
que ste pueda invocarse desde otros programas.
* Ejemplo de archivo DLL VARPG
H NOMAIN
*
358
Al crear y construir un archivo DLL, puede nombrarlo como guste. Para este
ejemplo, hemos utilizado el nombre MyFunc. Una construccin satisfactoria crear
los siguientes archivos en el directorio fuente:
v MyFunc.VPG - fuente del programa
v MyFunc.DLL - el archivo DLL
v MyFunc.LST - el listado del compilador
v MyFunc.LIB - el archivo de biblioteca
v MyFunc.EVT - el archivo de sucesos (utilizado por el Diseador GUI para
visualizar la ventana de errores, aunque no es necesario para ejecutar el
programa)
Abra y modifique el fuente MyPGM para que llame al procedimiento ToUpper en
el archivo MyFunc.DLL que acaba de crearse. El fuente modificado ser:
0000 * Llamada a un procedimiento en un archivo DLL VARPG
0001 H EXE
0002 *
0003 D ToUpper
0004 D
0006 D
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
*
D MyMain
D
*
PMyMain
*
D MyMain
D InString
*
D Upper
*
PR
64A
PR
64A
DLL('MyFunc')
ExtProc('TOUPPER')
Value
64A
Value
64A
Value
B
PI
S
64A
0018 C
Eval
0019 C
Upper
0010 *
0011 PMyMain
Dsply
Upper=ToUpper(Instring)
I
ln.
Descripcin de cambio
0003
359
0006
0018
360
CALLP
SomeFunc(parm1:parm2)
Excepciones
El tratamiento de las excepciones difiere del de las aplicaciones GUI VARPG por
varias razones:
v No se devuelve ninguna informacin sobre la excepcin al emisor si ste no
reside en la DLL de utilidad.
v El manejador de excepciones por omisin no se invoca nunca desde un archivo
DLL ya que no se invoca cuando se produce una excepcin en un
procedimiento. Si se produce una excepcin en el archivo DLL y no hay ningn
indicador de errores ni *PSSR, el archivo DLL finaliza. La informacin sobre la
excepcin se escribe en el archivo FVDCERRS.LOG.
v La manera ms adecuada de tratar excepciones en un archivo DLL de utilidad es
tener un indicador de errores, o un *PSSR local para cada rutina que devuelva
un cdigo de devolucin apropiado al emisor.
Procedimientos de depuracin
Si desea depurar cdigo en su archivo DLL, debe seguir algunos pasos ms:
1. Inicie el depurador para su aplicacin principal; en nuestro ejemplo, MyMain.
2. En el dilogo Depurador - Control de sesin, seleccione Puntos de
interrupcin-Establecer aparicin de carga....
3. Cuando aparezca el dilogo Punto de interrupcin de aparicin de carga,
escriba el nombre del archivo DLL, MyFunc, en la entrada Nombre del archivo
DLL y pulse Aceptar.
4. Ejecute su programa.
Cuando se invoca el proceso en el archivo DLL, se visualiza un dilogo de mensaje
del depurador que indica que se est cargando el archivo DLL. Pulse Aceptar y
haga lo siguiente:
1. Localice el dilogo Depurador - Control de sesin y observe que hay una nueva
entrada en el panel de la derecha con el nombre del archivo DLL.
361
2. Pulse el botn con el signo + junto al nombre del archivo DLL. Se expandir
para mostrar el nombre del mdulo de objeto, MyFunc.obj.
3. Efecte una doble pulsacin en el nombre del mdulo de objeto.
4. La vista del fuente del depurador mostrar ahora el fuente para el
procedimiento ToUpper en el archivo DLL MYFUNC.
Ahora puede aadir puntos de interrupcin y visualizar variables de programa en
el archivo DLL. Asimismo, si est iniciando (START) otros componentes VARPG, o
bien, si est invocando sus propias funciones C, tambin puede utilizar los
procedimientos descritos ms arriba para depurarlos.
362
363
Antes de transferir el campo al servidor, se convierte de tal manera que los datos
DBCS quedan encerrados entre los caracteres SO y SI. Los blancos de byte nico se
consideran insignificantes y se sustituyen por los caracteres SO y SI adecuados. Por
consiguiente, el campo aparecer de la manera siguiente antes de transferirse al
servidor:
SODBDBDBDBSI
Nota: Los campos de tipo carcter que representan los tipos de datos Slo DBCS,
DBCS mixto o DBCS cualquiera deben rellenarse con el nmero adecuado
de blancos de byte nico con el fin de que el campo se transfiera al servidor
y los datos del campo se visualicen correctamente en la ventana.
VisualAge RPG asegura que haya suficientes blancos de byte nico. Al establecer
campos DBCS o recuperar informacin de campos DBCS mediante los cdigos de
operacin SETATR y GETATR respectivamente, debe asegurarse de que la longitud
del campo en las operaciones SETATR y GETATR sea igual que la del campo en la
ventana. Si el campo no tiene la misma longitud, no podr transferirse entre el
servidor y la estacin de trabajo.
364
365
366
367
368
Nombre de destino
SEARCHW:CAN00023
SEARCHW:SEARCHW
SEARCHW:SEARCHGB
SEARCHW:STX00071
SEARCHW:TITLECB
SEARCHW:STX00073
SEARCHW:STX00074
SEARCHW:STX00075
SEARCHW:CATCB
SEARCHW:DIRCB
SEARCHW:ACTORCB
SEARCHW:SEARCHPB
SEARCHW:CANCELSEPB
SEARCHW:HELPPB
SEARCHW:STX00082
SEARCHW:CAN00023
SEARCHW:SEARCHW
SEARCHW:SEARCHGB
SEARCHW:STX00071
SEARCHW:TITLECB
SEARCHW:STX00073
SEARCHW:STX00074
SEARCHW:STX00075
SEARCHW:CATCB
SEARCHW:DIRCB
SEARCHW:ACTORCB
SEARCHW:SEARCHPB
SEARCHW:CANCELSEPB
SEARCHW:HELPPB
SEARCHW:STX00082
Nombre de destino
24.SEARCHW
79.SEARCHPB
80.CANCELSEPB
81.HELPPB
88.SEARCHW
99.SEARCHPB
100.CANCELSEPB
101.HELPPB
CATW+CLOSE+CATW
SEARCHW+CLOSE+SEARCHW
TITLECB+CREATE+SEARCHW
DIRCB+CREATE+SEARCHW
ACTORCB+CREATE+SEARCHW
CATCB+CREATE+SEARCHW
TITLECB+ENTER+SEARCHW
CATCB+SELECT+SEARCHW
DIRCB+SELECT+SEARCHW
ACTORCB+SELECT+SEARCHW
CANCELSEPB+PRESS+SEARCHW
SEARCHPB+PRESS+SEARCHW
*MSG0001 -> *MSG0003
*MSG0001 -> *MSG0003
*MSG0001 -> *MSG0003
*MSG0001 -> *MSG0003
WRTBRSFSR
CASECAT
CKCRITERIA
DSPBROWSE
*MSG0001 -> *MSG0003
BRACTION
BRCHILDREN
BRSCIFI
BRCOMEDY
BRHORROR
BRWESTERN
BRROMANCE
BRCLASSIC
369
Mensaje de destino
Nombre de destino
SEARCHW:SEARCHPB
SEARCHW:CANCELSEPB
SEARCHW:HELPPB
SEARCHW:SEARCHPB
SEARCHW:CANCELSEPB
SEARCHW:HELPPB
370
371
372
Alternate_Paths
Es una serie que indica las vas de acceso relativas que deben utilizarse al cargar la
DLL del conector descrita ms abajo. Este campo es opcional.
Esta serie adopta la forma:
"&1\vaRelativa1;&1vaRelativa2;...;&1\vaRelativaN;"
donde &1\ se convertir en la va de acceso completa del archivo .plg. Esto implica
que si se dispone de un conjunto de conectores que se instalan en un directorio
como c:\myplugins y todos ellos estn enlazados con una DLL comn:
c:\myplugins\plugutil\plugutil.dll, en caso de que todos los conectores se
encuentren en c:\myplugins\plugN\plugN.plg, se podra especificar la va de
acceso alternativa: &1\..\util;, que se convertira en:
Copyright IBM Corp. 1994, 2000
373
DLL_Names
El valor de este campo es una serie que define el nombre de los archivos DLL
necesarios para este conector. Es un campo opcional; si se utiliza, debe haber el
nombre de una DLL utilizada por el conector. Adems, puede darse el nombre
mri.dll. Este nombre es opcional, pero no puede incluirse sin la DLL
correspondiente. Si se incluyen los dos, se delimitan con un espacio. El nombre de
los archivos DLL puede comprender la va de acceso relativa a la ubicacin de los
archivos del conector.
conector.dll
Es el nombre de la DLL que contiene el cdigo del conector. Puede
omitirse si el conector no es una llamada de funcin dentro de una DLL.
mri.dll
Si el MRI (series traducibles) se encuentran en una DLL diferente, indique
su nombre. Primero se especifican las DLL para que las series que deban
seguirse puedan incluirse en las DLL.
Cuando una serie es necesaria ms adelante en el archivo .plg, si no se especifica
una serie entre comillas, se presupone que el valor dado es un ID de recurso de
serie en mri.dll o conector.dll
Vendor_Name
Es el nombre del proveedor especificado entre comillas dobles o del ID de recurso
de una serie. Este campo es opcional, pero recomendado. Un ejemplo de esta serie
sera:
Vendor_Name:
"Plug-Me-In Inc."
Plugin_Name
Es el nombre del conector especificado entre comillas o del ID de recurso de una
serie. Este campo es opcional, pero recomendado. Un ejemplo de este campo con
una serie es:
Plugin_Name:
"Who Am I?"
Help_File
Este campo es opcional e identifica el archivo .hlp de Windows utilizado para
visualizar ayuda para los elementos de men. Es una serie que no lleva comillas y
que incluye la va de acceso relativa del archivo de ayuda.
Unloading_Function
Este campo es opcional. El campo Unloading_Function no puede utilizarse junto
con el campo Unloading_Command_Line. Este campo slo se utiliza si hay
informacin o un elemento de visualizacin que tiene que modificarse o eliminarse
cuando se ha finalizado o eliminado el conector. Esta serie, que lleva comillas,
designa la funcin que se utilizar. La funcin debe estar incluida en la DLL que
acompaa al conector.
El campo Unloading_Function es el nombre de la funcin que debe llamarse
cuando se vaya a descargar el conector. Tiene la siguiente signatura:
374
unsigned long
unloadFunctionName(
const char*
const char*
const char*
const char*
int
ppluginPath_,
ppluginStub_,
pdllPath_,
builderId_,
remove_)
Valor de retorno
0
xito
fallo o rechazo
Unloading_Command_Line
Como se ha mencionado ms arriba, este campo no puede utilizarse al mismo
tiempo que el campo Unloading_Function.
Cuando se utiliza esta opcin, se proporciona una serie para ejecutarla como si se
tratara de la lnea de mandatos. Por ejemplo, se podra iniciar Netscape
especificando la serie: netscape.exe
Este mtodo permite obtener el mismo conjunto de parmetros que estaran
disponibles para una funcin en una DLL. Esto se consigue mediante la definicin
de variables de sustitucin. Cuando se encuentra &0, &1, &2, &3, &4 o &5
en la serie especificada, se sustituyen de la siguiente manera:
&0
ppluginPath_
&1
ppluginStub_
&2
pdllPath_
&3
builderId_
Captulo 25. Creacin de conectores
375
&4
remove_
&5
IBM_PluginInterface | PluginInterface
Es una funcin avanzada que no es necesaria. Este campo permite exponer el
conector como componente programable. No se pueden utilizar estas dos opciones
en el mismo archivo .plg. Si no hay necesidad de especificar uno de estos
parmetros, no lo haga.
Cuando se utiliza una de estas opciones, se emplear el nombre de la funcin
especificado cuando haya otros conectores que interacten con este conector
mediante una interfaz de destino/mandato/parmetros.
La signatura de la funcin debe ser:
para la funcin de tipo IBM_, donde arguments_ se utiliza para entradas y salidas.
unsigned long __stdcall IBMtargetCommandFunction(
const IString& pluginPath_,
const IString& dllPath_,
const IString& builderId_,
const IString& target_,
const IString& command_,
IString&
arguments_);
376
Function_Name
Es el nombre de la funcin que debe llamarse en conector.dll al activar el elemento
de men. Se puede utilizar este campo o el campo Command_Line. No se pueden
utilizar los dos. La signatura debera ser la siguiente:
donde los parmetros son:
unsigned long
pluginFunctionName(
const char*
const char*
const char*
unsigned long
const char*
ppluginPath_,
pdllPath_,
builderId_,
menuContextId_,
partsIds_);
ppluginPath_
Mismo significado que para unloadFunctionName().
pdllPath_
Mismo significado que para unloadFunctionName().
builderId_
Mismo significado que para unloadFunctionName().
menuContextId_
Un valor entero largo sin signatura que representa el tipo de men desde
el que se invoca este conector. Este valor determina el significado de
partsIds_. Los valores posibles son:
1
partsIds_
Es una serie que representa el componente o componentes a los que la
llamada de funcin debera hacer referencia, segn lo indicado en
menuContextId_. En partsIds_, cada identificador de componente es una
secuencia de valores enteros largos sin signatura separados por un punto
(por ejemplo, 432.5632.612) que representan la jerarqua hijo-padre del
componente en cuestin. En el ejemplo indicado, 612 es el ID del
componente, 5632 es el ID de su padre y 432 es el ID del padre del padre.
Command_Line
Cuando se utiliza esta opcin, se proporciona una serie para ejecutarla como si se
tratara de la lnea de mandatos. Por ejemplo, se podra iniciar Netscape
especificando la serie: netscape.exe.
Este mtodo permite obtener el mismo conjunto de parmetros que estaran
disponibles para una funcin en una DLL. Esto se consigue mediante la definicin
de variables de sustitucin. Cuando se encuentra &0, &1, &2, &3, &4 o &5
en la serie especificada, se sustituyen de la siguiente manera:
Captulo 25. Creacin de conectores
377
&0
ppluginPath_
&1
pdllPath_
&2
builderId_
&3
menuContextId_
&4
partsIds_
&5
Menu_Name
Es una serie o un ID de recurso de serie que indica lo que el elemento de men
debera ser. Estas series tienen el formato:
submen1/submen2/.../submenN/elementomen
Menu_Info_Strings
Es una lista de series o de ID de serie que estn asociados con los submens o
elementos de men correspondientes, como se especifica en Menu_Name. La
asociacin funciona a la inversa.
Por ejemplo, si se especifica un submen y un elemento de men en Menu_Name,
pero slo se especifica una serie en Menu_Info_Strings, la serie especificada en
Menu_Info_Strings se asociar con el elemento de men y se har caso omiso del
submen. (Es posible que la adicin de un elemento de men anterior definiera
una serie de rea de informacin para el elemento de men en cuestin.)
Supported_Menus
Como se ha mencionado en Function_Name, menuContextId_ indica el tipo de
men. Supported_Menus indica los mens a los que debe aadirse esta entrada en
particular.
Help_Id
Si se ha especificado un archivo de ayuda y hay ayuda asociada con este mandato,
indique el ID de ayuda en el parmetro panel_largosin de Help_Id. Si se
proporciona el parmetro_opcional_ventana_completa con un valor diferente a
378
Help_Id:
panel_largosin parmetro_opcional_ventana_completa
1000 1
Accelerator
Este campo opcional especifica el acelerador que se asociar con el elemento.
Consta de una de las teclas F1 a F12, seguida de uno o varios modificadores
(SHIFT [DESPL], ALT, CONTROL)
Nota: <F1/10>, <Alt-F5/7/8/9/10> y <Despl-F9/10> ya estn reservadas por el
diseador y, si se especifican, no se tendrn en cuenta.
Para utilizar esta funcin, proporcione la siguiente informacin:
Cuando se utilice este campo tendr el siguiente aspecto:
Accelerator:
Accelerator:
F8 Shift
End_of_Definition
Este campo indica al analizador que ha finalizado una definicin de funcin y que
puede empezar otra.
379
// Las lneas que empiezan por dos barras inclinadas no se tienen en cuenta
// (es decir, se tratan como comentarios)
Alternate_Paths:
dll_Names:
Vendor_Name:
Plugin_Name:
Help_File:
Unloading_Function:
(o bien)
Unloading_Command_Line:
IBM_PluginInterface:
(o bien)
PluginInterface:
serie_o_IDrec
conector.dll mri.dll
serie_o_IDrec
serie_o_IDrec
archivo_ayuda.hlp
"unloadingFunction"
"invocacin lnea mandatos con smb. de sust. &0, &1, &2,
&3, &4, &5"
"IBMtargetCommandFunction"
"targetCommandFunction"
Begin_Details:
.
.
Texto opcional que especifique la funcin del conector.
.
.
End_Details:
Function_Name:
(o bien)
Command_Line:
Menu_Name:
Menu_Info_Strings:
Supported_Menus:
Help_Id:
Accelerator:
End_of_definition:
"nombreFuncin1"
"invocacin1 lnea mandatos con smb. de sust. &0, &1, &2,
&3, &4"
serie_o_IDrec
serie_o_IDrec serie_o_IDrec ...
IDcontextoMen1 IDcontextoMen2 ...
panel_largosin parmetro_opcional_ventana_completa
[F1 | F2 | F3 | ... | F12] [SHIFT] [CONTROL] [ALT]
Nota:
v Todos los nombres de archivo son relativos a la ubicacin del archivo .plg.
v Los descargadores son opcionales, pero si se elige alguno, slo se puede
haber uno de los dos.
v Puede especificarse Function_Name o Command_Line.
A continuacin se muestra un ejemplo especfico de archivo .plg sencillo. Con
VisualAge RPG se proporcionan algunos ejemplos de conectores. Estos archivos se
pueden encontrar en el directorio X:\adtswin\samples\vndplugs\ de la estacin de
trabajo donde se ha instalado VisualAge RPG (X corresponde a la letra de la
unidad).
380
"Plug-Me-In Inc."
"Who Am I?"
Who Am I?
Este conector muestra informacin acerca del proyecto
en uso, incluido el nombre del directorio y del archivo.
End_Details:
Command_Line:
Menu_Name:
Supported_Menus:
Accelerator:
End_of_Definition
381
Cdigo de retorno
Significado
0
No se ha reconocido el destino.
382
Mandato
Parmetro(s)
Significado/Valor de retorno
Build
[win32|java]
Valor por omisin: win32
BuildOptions
[win32|java]
Valor por omisin: win32
CursoredPart
ninguno
ExpandAll
[1]
Si el parmetro es igual a 1, se
expandir toda la vista de rbol;
en caso contrario, estar
contrada.
ForceOpen
[Nombreproyecto]
ProjectDir
ProjectFileName
ProjectTargetName
ProjectTitle
ProjectFileStub
IsSaveRequired
ninguno
IsTemporary
ninguno
Devuelve 1 si se trata de un
proyecto sin nombre y 0 en caso
contrario.
MostRecentlyUsed
Open
nombreProyecto
383
nombreComponente
[nombreVentana
|[0|1|2]]
Devuelve un ID de componente
cuando se da un nombre de
componente. Si se especifica un
nombre de ventana, se devolver
el ID del componente o, si no
hay dicho componente, se
devolver una serie vaca. Si se
especifica un tipo de bsqueda,
se utilizarn las siguientes reglas
cuando se busque un
componente con el nombre dado:
0 (valor por omisin)
- Devolver el primer
componente con el
nombre dado.
1 - Devolver todos los
componentes con
el nombre dado.
2 - Si slo hay un
componente con este
nombre, debe devolverse;
en caso contrario, no debe
devolverse nada.
PromptedSave
ninguno
PromptExisting
ninguno
Run
ninguno
Save
ninguno
SaveAs
nombreProyecto
SelectedParts
ninguno
384
Mandato
Parmetro(s)
Significado/Valor de retorno
AllAttributes
ClassName
AllClasses
ninguno
ClassName
IBMClasses
ninguno
IconDll
ClassName
Devuelve la va de acceso de la
dll que contiene el icono que
representa la clase de
componente especificada.
IconId
ClassName
IsType
NombreTipo
VendorClasses
ninguno
Parmetro(s)
Significado/Valor de retorno
ActionSubroutine
IDComponente nombreEvento
ActionSubroutines
IDComponente
AllEvents
IDComponente
Children
[IDComponente]
ClassName
IDComponente
385
IDComponente nombreClase
CreateFrame
ClassName
DataInfo
dataType dataLength
decimalPlaces
386
ExtraColorAreas
IDComponente
Ver Nota ms abajo
FileName
IDComponente
GetColor
IDComponente [x]
donde x corresponde al rea de
color del componente indicado.
IDComponente [x]
donde x corresponde al rea de
font del componente indicado.
GetRect
IDComponente
HasFile
IDComponente
IsColorArea
IDComponente [x]
Ver Nota ms abajo donde x corresponde al rea de
color del componente indicado.
IsFontArea
IDComponente [x]
donde x corresponde al rea de
font del componente indicado.
Label
IDComponente
LinkedEvents
IDComponente
Name
IDComponente
OpenPart
IDComponente
Abre el cuaderno de
configuracin del componente o,
si el componente es un marco,
abre la ventana de diseo
correspondiente al componente.
OpenSettings
IDComponente
Abre el cuaderno de
configuracin del componente.
387
388
SetColor
IDComponente
Ver Nota ms abajo colorArea
useDefault
redMix
greenMix
blueMix
SetCursored
IDComponente
SetDataInfo
SetFileName
IDComponente
nombreArchivoNuevo
SetFont
SetLabel
IDComponente etiquetaNueva
SetName
IdComponente nombreNuevo
SetRect
Selecciona/deselecciona el
componente especificado. El
primer parmetro de la serie es
activar y el segundo es exclusivo.
Si no se especifica activar o
exclusivo, se entiende que tienen
el valor de 1. Exclusivo indica
si la seleccin del componente
debe deseleccionar el resto de
componentes y activar indica si
debe modificarse el estado de
seleccin del componente.
SetStyles
IDComponente estilos
estilosAmpliados [0|1]
Styles
IDComponente [0|1]
Zoom
IDComponente [0|1]
Nota: Los componentes pueden tener un rea de color de primer plano (1), de
fondo (0), no tener rea de color o tener reas de color adicionales. Las
ventanas, por ejemplo, no tienen reas de color. Los recuadros de seleccin
tienen reas de color de primer plano y de fondo. Los grficos tienen reas
de color adicionales. Por tanto, 0 y 1 slo indican necesariamente el color de
primer plano y de fondo si el componente no tiene colores adicionales.
389
Los siguientes mandatos requieren que el archivo fuente est abierto en LPEX.
Tabla 16. Destino: Subrutina
Mandato
Parmetro(s)
Significado/Valor de retorno
DeleteActionSub
nombreRutina
DeleteUserSub
nombreRutina
UserSubroutine
nombreRutina
UserSubroutines
ninguno
Parmetro(s)
Significado/Valor de retorno
IsOn
ninguno
Devuelve un 1 si la cuadrcula
est activada y un 0 si est
desactivada.
TurnOn
[0|1]
Parmetro(s)
Significado/Valor de retorno
DoIt
Cualquier_mandato_LPEX
IsSourceFileOpen
ninguno
OpenSourceFile
ninguno
Query
Cualquier_consulta_LPEX
390
Mandato
Parmetro(s)
Significado/Valor de retorno
AddPlugin
nombreArchivo
InvokePlugin
nmeroConectores
Devuelve el nmero de
conectores instalados.
conector ndiceBasadoUno
Devuelve la va de acceso
completa del conector que ocupa
el lugar ndiceBasadoUno. Si n es
menor que 1 o mayor que el
nmero de conectores, se
devuelve una serie nula.
conectores
ndiceBasadoUno destino
mandato parmetros
Parmetro(s)
Significado/Valor de retorno
DeleteKey
clave
Get
clave [valorOmisin]
GetRect
Set
clave valor
SetRect
391
Para evitar que se solapen, los conectores pueden utilizar una variacin del
nombre de la va de acceso del archivo .PLG como subclave inicial, de la siguiente
manera:
Si el nombre de la va de acceso del conector es:
"c:\plugins\My_Plugins\myplug.plg",
y la entrada del registro debe utilizarse para almacenar la posicin de una ventana,
una clave adecuada para este valor sera:
"c__plugins_my plugins_myplug.plg\Posicin ventana"
Hay otros mandatos que son aplicables a algunas de las propias ventanas
constituyentes del Diseador GUI. (Por ejemplo, el catlogo de componentes.)
Destinos aplicables:
MainWindow
Es la ventana principal del Diseador GUI.
Catalog
El catlogo de componentes.
DBRefDlg
La ventana Definir campos de referencia.
ImportDlg
La ventana Importar archivo de pantalla.
LPEX La ventana del editor.
Observe que estos mandatos slo son aplicables cuando la ventana especificada
est abierta.
Tabla 21. Destino: Ventanas constituyentes del Diseador GUI
392
Mandato
Parmetro(s)
Significado/Valor de retorno
GetHandle
ninguno
Devuelve el HANDLE de
Windows de la ventana
especificada.
GetIWindowPointer
ninguno
MoveSizeTo
X Y ancho alto
MoveTo
XY
Position
ninguno
Devuelve la posicin de la
ventana en la forma X, Y.
ninguno
Devuelve el rectngulo de la
ventana en la forma X, Y, ancho,
alto
SetFocus
ninguno
SetSize
ancho alto
ShowSetFocus
ninguno
Size
ninguno
Devuelve el tamao de la
ventana en la forma X, Y.
NotifyOnClose
Handle de ventana
393
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : PB_Cancel
*
*
*
* Evento . . : Press
*
*
*
* Descripcin: Terminar el programa
*
*
*
*********************************************************************
*
C
PB_CANCEL
BEGACT
PRESS
MAIN
*
C
Move
*on
*inlr
*
C
ENDACT
*
*********************************************************************
*
*
* Ventana . : Main
*
*
*
* Componente : Main
*
*
*
* Evento . . : Create
*
*
*
* Description: Set up the PLUGDLL and PLUGID values of the
*
*
*COMPONENT part to establish communication with the *
*
GUI builder.
*
*
*
*
Execute PLUGCMD attributes to collect information
*
*
about the current project
*
*
*
*********************************************************************
*
C
MAIN
BEGACT
CREATE
MAIN
*
C
'*Component' Setatr
PlugDll
'PlugDLL'
C
'*Component' Setatr
PlugID
'PlugID'
*
C
Eval
Cmd='Project Get ProjectDir'
C
'*Component' Setatr
Cmd
'PlugCmd'
C
'*Component' Getatr
'PlugResult' DirName
*
C
Eval
Cmd='Project Get ProjectFileStub'
C
'*Component' Setatr
Cmd
'PlugCmd'
C
'*Component' Getatr
'PlugResult' File
*
C
Eval
Cmd='Project Get ProjectTargetName'
C
'*Component' Setatr
Cmd
'PlugCmd'
C
'*Component' Getatr
'PlugResult' TAR
C
C
C
'*Component'
'*Component'
Eval
Setatr
Getatr
C
C
C
'*Component'
'*Component'
Eval
Setatr
Getatr
Write
'Main'
ENDACT
*
*
394
Empaquetado de la aplicacin
El paso final de la creacin del conector es la compilacin del archivo .EXE.
Seleccione Construir en el men desplegable Archivo y, a continuacin, la
plataforma en la que desea utilizar el conector. Una vez que el archivo est
compilado, ya estar listo para utilizarlo. Consulte las instrucciones de Adicin de
conectores de proveedor para aadir el conector. A partir de este punto, ya puede
utilizar el conector o realizar las pruebas que sean necesarias.
395
396
397
398
Antes de empezar
Asegrese de que los archivos que la aplicacin necesita se almacenan en el
directorio de tiempo de ejecucin adecuado (RT_WIN32 para Windows NT/95/98
o RT_JAVA para Java;). Algunos archivos se colocan automticamente en el
directorio de tiempo de ejecucin despus de construir la aplicacin (por ejemplo,
los archivos MSG, HLP, DLL, BND, RST y EXE); otros deber colocarlos usted
mismo (por ejemplo, BMP, GIF,ICO, JPG,MID, y WAV).
Si coloca archivos adicionales en los directorios de tiempo de ejecucin antes de
empaquetar la aplicacin, asegrese de que los nombres de archivo no sean los
mismos que los de los archivos de aplicacin existentes.
Despus de colocar todos los archivos en el directorio de tiempo de ejecucin,
asegrese tambin de que no haya dos archivos que tengan el mismo nombre y de
que no se d ninguna coincidencia en los dos primeros caracteres de su extensin
de archivo. Por ejemplo, si tiene dos archivos FILEAABC y FILEAABB en el
directorio RT_WIN32, uno se sobregrabar durante el proceso de empaquetado.
Si desea empaquetar en disquetes, conviene tener disquetes preformateados
disponibles antes de empezar el proceso de empaquetado.
399
400
Especifique lo siguiente:
v Lo que se desea empaquetar
v La informacin de empaquetado de la aplicacin
v La informacin de empaquetado del tiempo de ejecucin
401
402
Aqu puede utilizar el botn Cambiar servidor para visualizar una lista de
servidores (ubicaciones remotas) utilizados por su aplicacin. Puede modificar la
lista para que el paquete utilice los nuevos nombres.
Seleccione Empaquetar para iniciar el empaquetado. Aparece una ventana de
indicador de progreso. Se visualizan mensajes para indicar al usuario las etiquetas
que debe poner en los diversos disquetes a medida que los crea. Cuando se ha
completado el empaquetado, se visualiza un mensaje de realizacin.
403
Especifique lo siguiente:
v Especifique lo que desea empaquetar: la aplicacin, el tiempo de ejecucin o
ambos.
v El formato de su paquete: los archivos de aplicacin (slo vlidos si elige
Aplicacin) o bien el archivo Jar.
404
v Archivos de aplicacin
Incluye todos los archivos en el directorio de tiempo de ejecucin y los
coloca en el directorio destino.
v Archivo Jar
Incluye todos los archivos para un componente en su propio archivo Jar.
(Cualquier archivo de imagen GIF se copiar y no se incluir en el
archivo Jar.)
v Incluir JDBC
Incluir el archivo de funciones de la clase JDBC en el jar.
405
406
407
408
setup -s
Captulo 27. Instalacin del cdigo de tiempo de ejecucin y las aplicaciones para Windows NT/95/98
409
410
Parte 6. Apndices
411
412
Formato
Descripcin
nombrearchivo.CLASS
Binario
nombrearchivo.DLL
Binario
nombrearchivo.EVT
ASCII
nombrearchivo.EXE
Binario
nombrearchivo.HLP
Binario
nombrearchivo.HTM
ASCII
nombrearchivo_applet.HTM
ASCII
nombrearchivo.IPF
ASCII
413
Formato
Descripcin
nombrearchivo.IPM
ASCII
nombrearchivo.JAVA
ASCII
nombrearchivo.LIB
Binario
nombrearchivo.LST
ASCII
nombrearchivo.ODF
Binario o
ASCII
nombrearchivo.ODX
ASCII
nombarchRecursos.propiedades ASCII
414
Formato
Descripcin
nombrearchivo.RST
ASCII
nombrearchivo.TXC
ASCII
nombrearchivo.TXM
ASCII
nombrearchivo.VCX
Binario
nombrearchivo.VPF
ASCII
415
416
Nombre de archivo
Formato
Descripcin
nombrearchivo.VPG
ASCII
417
418
Programa
cliente
Cliente
AS/400
Rellenar subarchivo
Subarchivo
Estructura
de datos El cliente llama al
programa servidor
- accede a la base de datos
- finaliza con RETURN
- pasa los datos de la DS
como parmetro
Programa
servidor
Archivo de
base de datos
El programa cliente
El principal componente del componente cliente del programa es la interfaz de
usuario. Se crea de la misma forma que cualquier aplicacin VARPG y puede
utilizar las descripciones externas de base de datos del AS/400 mediante el uso de
campos de referencia a base de datos. Cualquier comprobacin de la validacin
especificada en la base de datos la realiza el tiempo de ejecucin de VARPG
automticamente en el cliente. El programa cliente solicita datos del servidor
invocando un programa de acceso a datos del servidor; los datos en s se pasan a
travs de parmetros. El programa cliente no utiliza especificaciones de archivo; en
su lugar, la definicin de los datos se realiza mediante estructuras de datos
descritas externamente. De esta forma el programador sigue disponiendo de las
ventajas de las descripciones externas de campo en los programas VARPG.
419
v getrec, una constante, que define el programa al que llama el servidor. Define el
enlace con el servidor y el nombre del programa servidor. El nombre del
programa debe especificarse en maysculas.
H
D
D
D
D
D
D
D
D
D
D
cust
e ds
eof
nrecords
fileend
getrec
s
s
s
c
counter
custelem
s
s
extname(customer)
occurs(10)
inz
inz
n
2 0
n
inz
linkage(*server)
const('GETREC')
2 0
2 0 inz(%elem(cust))
Las especificaciones C contienen una subrutina de accin que tiene un enlace con 3
eventos:
v El evento Press del pulsador PSBMore
v El evento Create de la ventana Win1 (Con un enlace con la subrutina de accin
PSBmore/press)
v El evento Pageend del subarchivo Subf1
La primera sentencia es una llamada al programa servidor para que proporcione
ms registros. El resto de la lgica se limita a procesar los datos pasados mediante
parmetros y los traslada al subarchivo desde la estructura de datos de aparicin
mltiple. Una vez que el subarchivo se ha llenado con un conjunto de registros el
nmero ms alto de registros del subarchivo se aplica al atributo SETTOP para
trasladar este conjunto de registros al rea visible del subarchivo.
Al final, si se alcanza el fin de archivo, el pulsador Ms se inhabilita. Observe que
las teclas Av Pg todava funcionan. Es todava posible provocar un evento que
desencadene esta subrutina de accin incluso con un pulsador inhabilitado.
*
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
PSBmore
counter
begact
call
parm
parm
parm
parm
eval
dow
occur
write
eval
enddo
eval
C
C
C
C
C
if
eval
endact
eval
endif
PRESS
GETREC
win1
cust
custelem
eof
nrecords
counter=1
counter<=nrecords and not fileend
cust
sub1
counter=counter+1
%setatr('win1':
'sub1':'settop')=%getatr('win1'
'sub1':'count')
eof
%setatr('win1':
'psbmore':'enabled')=0
fileend=*on
420
El programa servidor
Debido a que el programa cliente VARPG no incluye la lgica de acceso a la base
de datos, el programa servidor ser quien proporcione ahora esta funcin. El
programa servidor contiene todas las definiciones y operaciones FILE con las que
trata el proceso de la base de datos. Los datos se intercambian trasladando una
estructura de datos como parmetro entre los programas cliente y servidor. La
estructura de datos contiene las definiciones de campo del formato de registro del
archivo de datos. En este ejemplo, una estructura de datos de aparicin mltiple se
utiliza para acceder a una coleccin de registros. El nmero de apariciones es el
mismo que el nmero de registros que deben pasarse; en este ejemplo, 10.
Cualquier informacin de tipo operativo, como por ejemplo la informacin de
errores, puede tambin pasarse como parmetro. La llamada del programa cliente
VARPG invoca al programa servidor, que finaliza tras cada llamada. El cdigo de
la operacin Return se utiliza para finalizar el programa y mantener el entorno de
llamada. Esto supondr ventajas en el rendimiento para las llamadas posteriores, al
no precisar de inicializacin. Asimismo, precisa que se haya creado el programa
para ejecutarse en un grupo de activacin nombrado, ya que *NEW destruira
inmediatamente el entorno de llamada y el espacio disponible.
*entry
count
count
plist
parm
parm
parm
parm
eval
occur
read
dow
eval
occur
read
enddo
if
cust
custelem
eof
count
count=1
cust
customer
count<custelem and not *in99
count=count+1
cust
customer
9999
9999
*IN99
421
C
C
C
C
eval
eval
endif
return
count=count-1
eof=*on
Programa
cliente
Subarchivo
Cliente
AS/400
Cola de datos O
Cola de datos I
En espera
de peticiones
Programa
servidor
422
Programa
cliente
En espera de datos
Cola de datos I
Recibiendo
peticiones
Recibiendo
datos
Programa
servidor
Programa
cliente
rellenando
subarchivo
con datos
Subarchivo
Recibiendo datos
Cliente
AS/400
Cola de datos O Cola de datos I
Recibiendo
datos
Programa
servidor
Enviando datos
La aplicacin de cliente
La interfaz de usuario es la misma que la de la anterior aplicacin, esencialmente
un subarchivo que se llena con datos de una base de datos del servidor AS/400. El
subarchivo empieza a llenarse con el evento Create de la ventana, y contina
cuando se presiona el pulsador Ms... o se produce un evento Pageend utilizando
las teclas de avance de pgina. Esencialmente, se trata de lo mismo que en el
anterior ejemplo.
La configuracin de las colas de datos se realiza en la subrutina de inicializacin
*INZSR, que invoca un programa en el servidor para crear dos colas de datos en
una biblioteca del sistema AS/400. Para crear colas de datos exclusivas para cada
cliente, los cinco ltimos caracteres de la direccin IP se codifican en el nombre de
la cola de datos. Los caracteres I u O al final del nombre de una cola de datos
proporcionan los nombres exclusivos para las colas de datos de entrada o de
salida.
El trabajo del servidor recibe mandatos de la cola de datos O; los mandatos se
envan a la cola de datos O desde el programa cliente.
Apndice B. Cmo escribir aplicaciones de cliente ligero
423
Una vez creadas las colas de datos, el programa cliente invoca el programa
servidor y le pasa los dos nombres de colas de datos. El programa servidor espera
que la cola de datos O le enve mandatos del programa cliente.
El programa cliente se activa mediante eventos GUI y entonces enva peticiones a
la cola de datos O. Entonces espera a que la cola de datos I se llene de datos
procedentes del trabajo del servidor.
Cuando el programa cliente recibe una peticin de finalizacin, se invoca la
subrutina *TERMSR para indicar al programa servidor que debe terminar y se
eliminarn las dos colas de datos.
424
D nrecords
2 0
D filler
20
D* lmite del bucle
D custelem
s
2 0 inz(%elem(CustDS))
D* indicador de que se ha alcanzado el fin de archivo
D fileend
s
n
D* parmetros para las API de cola de datos
D msg_sz
s
5 0
D Name_of_Q
s
10
D Name_of_Lb
s
10
D count
s
2 0
D maxlen
s
10 0 inz(%size(custds:*all))
D wait_time
s
5 0
La subrutina de inicializacin
Una vez se han creado las colas de datos RPG y la DATAQ del programa RPG
servidor se ha iniciado, se invoca el programa mediante la palabra clave NOWAIT,
con lo que el programa cliente no esperar a que acabe. Ambos programas estn
funcionando de forma enteramente asncrona.
C*
C*
C*
C*
C
C*
C*
C*
C
C*
C*
C
C
C
C
C
C
C
C
C
C
C
C*
C
C
C
C
C
C
C
C
C
C
C
C*
C
C
C
C*
C
La subrutina de accin
425
Interrumpir la subrutina
Se enva una peticin de interrupcin a la DATAQ del programa servidor y las dos
colas de datos se eliminan.
C* Cuando la app del cliente finaliza, limpiar el entorno de servidor
C*
C
*termsr
begsr
C* Indicar fin de programa al programa servidor y enviar datos a la DATAQ 'O'
426
C
eval
nrecords=0
C
call
QSNDDTAQ
C
parm
qnameo
C
parm
'CWDATAQ'
NAME_OF_LB
C
parm
23
MSG_SZ
C
parm
rinfo
C* Eliminar ambas colas de datos
C
eval
cmd=*blank
C
eval
cmd=%trim(%trimr(cmde) +
C
qnamei + ')')
C
call
QCMDEXC
C
parm
cmd
C
parm
cmdlen
C
eval
cmd=*blank
C
eval
cmd=%trim(%trimr(cmde) +
C
qnameo + ')')
C
call
QCMDEXC
C
parm
cmd
C
parm
cmdlen
C* La aplicacin concluye
C
endsr
98
10
5 0
98
98
El programa servidor
Una vez se ha iniciado, entra en un bucle y espera a la cola de datos O hasta que
recibe una peticin del programa cliente. En este ejemplo, son posibles dos
peticiones diferentes. El programa determina qu peticin se ha enviado: la de
enviar ms datos o la de finalizar.
Para una peticin de ms datos leer 10 registros ms de la base de datos y
enviar dos tems a la cola de datos I.
El primer tem contiene informacin de proceso; cuntos registros se leyeron y si se
ha producido una situacin de fin de archivo.
El segundo tem contiene la estructura de datos de aparicin mltiple con los datos
del archivo de la base de datos.
El programa cliente recibir estos registros de la cola de datos I y llenar el
subarchivo de acuerdo con ellos.
Cuando el programa servidor recibe la seal de que se solicita una interrupcin, se
activar el indicador LR y finalizar el bucle DO. Esto finalizar el programa.
Cualquier otra operacin de limpieza ser gestionada por el programa cliente.
427
D msg_sz
S
5 0
D wait_time
s
5 0
D* nombre de las DATAQ pasadas desde el cliente
D qnamei
s
10
D qnameo
s
10
428
C*
C
C
C
C*
C*
C
C*
C
C
C
C
C
C
C
C
C*
C*
C*
C
C
C
C
C
C
C
C
C
C*
C
C
C
C
C*
C*
C*
C*
C
C
C
C
C
C*
C
C
C
C
C
C
C*
C*
C
C
C*
call
'QSNDDTAQ'
98
parm
QnameI
parm
NAME_OF_LB
parm
23
MSG_SZ
parm
rinfo
Enviar los datos en DS desde el archivo de la base de datos a DATAQ
eval
msg_sz=%SIZE(custds:*all)
call
'QSNDDTAQ'
98
parm
qnamei
parm
NAME_OF_LB
parm
MSG_SZ
parm
CUSTds
Cuando finaliza el programa cliente, enva nrecords 0, entonces este
programa acaba tambin
else
eval
*inlr=*on
C
end
C
enddo
C*
C* Fin de la lnea principal
429
Este subarchivo slo tiene capacidad para 8 registros en pantalla debido a que cada
registro ocupa dos filas del subarchivo. A continuacin puede ver el fuente del
programa para esta aplicacin:
H* Programa para listar los registros del cliente
F* Archivo Workstn que contiene DSPF
Fgetrecs cf e
workstn sfile(sub1:recnum)
D* estructura de datos para pasar datos del programa servidor al subarchivo
Dcust
e ds
extname(customer) occurs(8)
D
inz
Deof
s
1
inz(*off)
Dnrecords
s
2 0
Dfileend
s
1
inz(*off)
Dcount
s
2 0
Dcustelem
s
2 0 inz(%elem(cust))
Drecnum
s
5 0 inz(1)
* Programa principal para invocar la subrutina del subarchivo y
* finalizar el programa
* In91 indica que el archivo de la base de datos no ha alcanzado el final
C
EVAL
*IN91=*ON
C
exsr
more
C
eval
*inlr=*on
c
C
more
BEGsr
* Bucle para obtener ms datos y visualizarlos en un subarchivo
C
dow
not *in03
* Invocar el programa servidor para que obtenga datos la primera vez
* y cundo se utiliza el avance de pgina
C
if
*in91
C
call
'GETREC'
C
parm
cust
C
parm
custelem
C
parm
eof
C
parm
nrecords
C
eval
count=1
* recnum1 es sbfrcdnbr en el registro de control del subarchivo,
* para posicionar el primer registro que se visualizar en la pantalla
C
EVAL
RECNUM1=RECNUM
* Bucle para llenar un subarchivo con nuevos registros
C
dow
count<=nrecords
430
C
C
C
C
C
count
*
*
C
C
C
C
C
C
C
*
*
C
C
C
C
occur
cust
write
sub1
eval
count=count+1
eval
recnum=recnum+1
enddo
Una vez se ha aadido el conjunto de registros al subarchivo, visualizarlo,
adems del formato del encabezamiento y del pie de pgina
write
record1
write
footer
exfmt
sub1ctl
Ignorar las teclas de Av Pg
else
read
sub1ctl
99
endif
if
eof=*on
IN90 habilita la tecla Av Pg para que puedan leerse ms registros.
Al final del archivo se inhabilita.
eval
*in90=*on
eval
recnum=recnum1
endif
enddo
Abandonar el bucle cuando se solicite Salir
ENDSR
431
432
Asegrese de incluir la extensin .VPG en el nombre del archivo para que pueda
beneficiarse de las funciones de interpretacin y comprobacin de sintaxis que
incorpora el editor.
Para ejecutar el compilador FVDFNFE, emita el mandato de compilador desde una
lnea de mandatos de MS-DOS. La sintaxis del mandato es:
fvdfnfe nombrearchivo.VPG [/compilador_opcin1 ... /compilador_opcinn]
/GL 1-99
Nivel de gravedad de generacin
/L
/LI
Sangrado
/LX
/LV
/LD
/LC
/LE
/LM2
/LS
/LP 10-99
Lneas por pgina (listado)
/HCU Habilita la antememoria en el sistema principal
Copyright IBM Corp. 1994, 2000
433
/HCR
/RF
/RN
/TI
/SB Nombre
Nombre de archivo de enlace SQL
/SF XX
Formato SQL para columnas de fecha y hora
/SI XX (RR RS CS UR) nivel de aislamiento de SQL
/SN Nombre
Nombre de base de datos SQL
/SP Nombre
Nombre de archivo de paquete SQL
/SR
/SU
/SUP
/SVC
/SVG
DEFINE_FILE
SERVER_ALIAS_NAME(MYAS400)
REMOTE_LOCATION_NAME(TORAS40Z)
NETWORK_PROTOCOL(*TCP)
TEXT(Development - RST)
FILE_ALIAS_NAME(CUSTOMER)
REMOTE_FILE_NAME(PRODUCT/CUSTMAST)
SERVER_ALIAS_NAME(MYAS400)
TEXT()
434
435
436
Glosario
Este glosario incluye trminos y definiciones de:
v El American National Dictionary for Information Systems ANSI X3.172-1990,
copyright 1990 del American National Standards Institute (ANSI). Si desea
adquirir una copia de esta publicacin debe dirigirse al American National
Standards Institute, 1430 Broadway, New York, New York, 10018. Las
definiciones se especifican mediante el smbolo (A) despus de las mismas.
v El Information Technology Vocabulary desarrollado por el Subcomit 1, Comit
Tcnico Conjunto 1, de International Organization for Standardization y el
International Electrotechnical Committee (ISO/IEC JTC1/SC1). Las definiciones
de las partes publicadas de este vocabulario se identifican mediante el smbolo
(|) despus de las mismas; las definiciones tomadas de borradores de estndares
internacionales, borradores del comit y trabajos no concluyentes desarrollados
por ISO/IEC JTC1/SC1 se identifican mediante el smbolo (T) despus de las
mismas, lo cual indica que an no se ha alcanzado un acuerdo definitivo entre
los Organismos Nacionales integrantes del SC1.
v IBM Dictionary of Computing, New York: McGraw-Hill, 1994.
v Object-Oriented Interface Design IBM Common User Interface Guidelines,
SC34-4399-00, Carmel, IN: Que Corporation, 1992.
A
accin. (1) Sinnimo de subrutina de accin. (2) Programa ejecutable o archivo de mandatos utilizado para manipular
los componentes de un proyecto o participar en una construccin.
accin por omisin. Accin que se efecta cuando se realiza otra como, por ejemplo, pulsar la tecla Intro.
alias de servidor. Nombre al que da una definicin y que puede utilizarse en lugar del nombre del servidor.
ancla. Cualquier componente que se utiliza como punto de referencia para alinear, dimensionar y espaciar otros
componentes.
anotaciones de error. Realiza un seguimiento de los errores en las anotaciones de error. El editor le lleva al lugar
del cdigo fuente en el que se ha producido el error.
API. Interfaz de programacin de aplicaciones.
aplicacin. Un grupo de componentes de software utilizados para efectuar tareas de usuario especficas en un
sistema.
applet. Programa escrito en Java que se ejecuta dentro de un navegador compatible con Java o AppletViewer.
archivo. Grupo de datos relacionados que se almacena y se recupera mediante un nombre asignado. Un archivo
puede incluir informacin que inicia un programa (objeto de archivo de programa), contiene texto o grficos (objeto
de archivo de datos) o procesa una serie de mandatos (archivo por lotes).
archivo de mensajes. Archivo que contiene mensajes de aplicacin. Este archivo se crea a partir del archivo fuente
de mensajes durante el proceso de construccin. Vase tambin construir.
archivo de ondas. Archivo utilizado para sonidos audio en un dispositivo de forma de onda.
archivo de Recurso de Presentacin de Informacin (IPF). Archivo en el que se almacena el fuente de la ayuda de
la aplicacin.
archivo MIDI. Archivo de la Interfaz Digital de Instrumentos Musicales.
437
archivos JAR (.jar). En Java, abreviatura de Java ARchive. Es un formato de archivo que se utiliza para agregar
varios archivos en uno.
rea comn. rea de almacenamiento proporcionada por el sistema para retener datos temporalmente. Los datos del
rea comn estn disponibles para otras aplicaciones.
rea de cliente. La parte de la ventana que es el espacio de trabajo del usuario donde ste teclea informacin y
selecciona opciones de campos de seleccin. En ventanas primarias, el rea en la que un programador de aplicaciones
presenta los objetos con los que trabaja el usuario.
rea de informacin. Componente de una ventana en el que se visualiza informacin sobre el objeto o la opcin en
los que se encuentra el cursor. El rea de informacin tambin puede incluir un mensaje sobre la conclusin normal
de un proceso. Vase tambin barra de estado.
rea de trabajo. rea utilizada para organizar objetos de acuerdo a las tareas del usuario. Cuando un usuario cierra
un rea de trabajo, todas las ventanas abiertas a partir de objetos contenidos en el rea de trabajo se eliminan del
lugar de trabajo.
Arquitectura Common User Access (arquitectura CUA). Directrices para el dilogo entre una persona y una
estacin de trabajo o un terminal.
arquitectura CUA. Arquitectura de Acceso Comn de Usuario.
arrastrar. Mover o copiar un objeto utilizando el ratn. Por ejemplo, un usuario puede arrastrar el borde de una
ventana para hacerla ms grande pulsando un botn del ratn y mantenindolo pulsado mientras mueve el ratn.
Vase tambin arrastrar y soltar.
arrastrar y soltar. Manipular directamente un objeto movindolo y colocndolo en cualquier lugar utilizando el
ratn.
ASCII (American National Standard Code for Information Interchange). Cdigo estndar, que se compone de un
juego de caracteres codificados de 7 bits (8 bits incluyendo comprobacin de paridad), que se utiliza para el
intercambio de informacin entre sistemas de proceso de datos, sistemas de comunicacin de datos y equipo
asociado. El juego de caracteres ASCII se compone de caracteres de control y caracteres grficos. (A)
atenuado. Atenuacin del contraste visual de un componente que indica que el usuario no puede seleccionar ni
manipular directamente ese componente.
B
barra de desplazamiento. Componente que muestra a un usuario que hay ms informacin disponible en una
direccin determinada y que puede moverse para visualizar dicha informacin utilizando el ratn o las teclas de
pgina.
barra de estado. Componente de una ventana que visualiza informacin que indica el estado de la vista o del objeto
actuales. Vase tambin rea de informacin.
barra de herramientas. Men que contiene una o ms opciones grficas que representa las acciones que un usuario
puede efectuar utilizando el ratn.
barra de ttulos. rea en la parte superior de cada ventana que contiene el smbolo del men del sistema.
base de datos. (1) Grupo de datos con una estructura determinada para aceptar, almacenar y proporcionar, previa
peticin, datos para varios usuarios. (T) (2) Todos los archivos de datos almacenados en el sistema.
Biblioteca de enlace dinmico (DLL). Archivo que contiene cdigo ejecutable y datos enlazados de manera lgica a
un programa durante el tiempo de carga o el de ejecucin, en lugar de durante el enlace. Varias aplicaciones pueden
compartir a la vez el cdigo y los datos de una biblioteca de enlace dinmico.
BMP. Extensin de archivo de un archivo bitmap.
borde de dimensionamiento. Borde de un marco alrededor de un componente (o conjunto de componentes) que
selecciona para cambiar el tamao del componente (o del conjunto de componentes) utilizando el ratn o el teclado.
438
borde de seleccin. Borde visual que aparece alrededor de un componente de VARPG o de un componente creado
por el usuario, que permite moverlo con el ratn o el teclado.
botn. (1) Mecanismo en un dispositivo de puntero, como un ratn, utilizado para solicitar o iniciar una accin. (2)
Mecanismo grfico en una ventana que, cuando se selecciona, produce una accin. Por ejemplo, el pulsador Aceptar
que, al seleccionarse, inicia una accin.
botn 1 del ratn. Por omisin, el botn izquierdo del ratn se utiliza para seleccionar.
botn 2 del ratn. Por omisin, el botn derecho del ratn se utiliza para manipular.
botn de manipulacin. Vase botn 2 del ratn.
botn de maximizar. Botn en la parte ms a la derecha de una barra de ttulo sobre el que un usuario pulsa el
botn del ratn para aumentar el tamao de la ventana lo mximo posible. Comprese con botn de minimizar y botn
de ocultar.
botn de minimizar. Botn ubicado junto al botn ms a la derecha en una barra de ttulo que reduce el tamao de
la ventana lo mximo posible. Comprese con botn de maximizar y botn de ocultar.
botn de ocultar. Botn en una barra de ttulo sobre el que un usuario pulsa el botn del ratn para suprimir una
ventana del lugar de trabajo sin cerrarla. Cuando la ventana est oculta, el estado de la misma, indicado en la lista de
ventanas, cambia. Comprese con botn de maximizar y botn de minimizar.
botn de ratn. Mecanismo en un ratn para seleccionar opciones, iniciar acciones o manipular objetos con el
puntero. Vase tambin botn 1 del ratn y botn 2 del ratn.
botn de restaurar. Botn que aparece en la esquina ms a la derecha de la barra de ttulo despus de haber
maximizado una ventana. Cuando se selecciona el botn de restaurar, la ventana vuelve a tener el tamao y la
posicin que tena antes de que se maximizara. Vase tambin botn de maximizar.
botn de seleccin. Vase botn 1 del ratn.
C
campo. (1) rea identificable en una ventana, como un campo de entrada, en la que un usuario escribe texto. (2)
Grupo de bytes relacionados, como un nombre o una cantidad, que se trata como una unidad en un registro.
campo de referencia. Campo de la base de datos de AS/400 cuyas caractersticas un componente campo de entrada
puede heredar.
campo de subarchivo. Campo utilizado para definir campos en un componente subarchivo. Vase tambin campo
subarchivo.
Capa de Sockets Segura (SSL). Esquema de seguridad de gran aceptacin desarrollado por Netscape
Communications Corp. y RSA Data Security, Inc. SSL permite al cliente autenticarse en el servidor y cifrar todos los
datos y peticiones. El URL de un servidor seguro protegido mediante SSL empieza por https en lugar de http.
carpeta destino. Objeto en el que se coloca el icono que representa una aplicacin VARPG.
catlogo de componentes. Espacio de almacenamiento para todos los componentes utilizados para crear interfaces
grficas de usuario para aplicaciones VARPG.
cliente. (1) Sistema que depende de un servidor para obtener datos. (2) La PWS donde se ejecutan las aplicaciones
VARPG. Vase tambin cliente DDE.
cliente DDE. Aplicacin que inicia una conversacin DDE. Comprese con servidor DDE. Vase tambin componente
cliente DDE y conversacin DDE.
cliente/servidor. Modelo de interaccin en el proceso de datos distribuidos en el que un programa en una ubicacin
enva una peticin a un programa en otra ubicacin y espera una respuesta. El programa que efecta la peticin
recibe el nombre de cliente; y el programa que responde, servidor. Vase tambin cliente, servidor, cliente DDE, servidor
DDE.
Glosario
439
440
componente de subarchivo. Componente utilizado para visualizar una lista de registros que constan de varios
campos. Este componente es similar a un subarchivo de AS/400. Vase tambin campo de subarchivo.
componente edicin de mltiples lneas (MLE). Componente que representa un campo de entrada que permite al
usuario entrar varias lneas de texto.
componente elemento de men. Componente que es un elemento grfico o de texto en un men. Cuando el
usuario desea trabajar con un objeto, selecciona un elemento de men.
componente fuente. Componente que, siempre que cambia su estado, puede notificarlo a los componentes de
destino. Un componente fuente puede tener varios destinos.
componente graduador. Componente visual de una interfaz de usuario que representa una cantidad y su relacin
con el rango de posibles valores para esa cantidad. El usuario tambin puede modificar el valor de la cantidad.
Puede sealar y pulsar un componente graduador de la paleta de componentes o del catlogo de componentes y
soltarlo en una ventana de diseo.
componente grfica. Componente que permite al usuario aadir un grfico a la GUI. Los estilos de grfico
disponibles son el diagrama de lneas, de barras, de lneas y barras y circular.
componente imagen. Componente utilizado para visualizar una imagen, de un archivo BMP o ICO, en una ventana.
componente lienzo. Componente en el que puede sealar y pulsar otros componentes, colocarlos y organizarlos
para producir una interfaz grfica de usuario. El componente lienzo ocupa el rea de cliente de un componente
ventana o de un componente pgina de cuaderno. Vase tambin componente pgina de cuaderno con lienzo y
componente ventana con lienzo.
componente lgico. Agrupacin funcional de archivos relacionados dentro de un proyecto. Se crea un componente
lgica cuando las palabras clave NOMAIN y EXE no se encuentran en las especificaciones de control.
componente lgico compartido. Componente lgico al que puede accederse a travs de ms de un proyecto.
componente medios. Componente que proporciona a un programa la posibilidad de procesar archivos de sonido
(.WAV) y archivos de vdeo (.MID).
componente men emergente. Componente que, cuando se aade a un objeto en la interfaz, aparece junto al objeto
con el que est asociado cuando se solicita. Puede sealar y pulsar un componente men emergente de la paleta de
componentes o del catlogo de componentes y soltarlo en una ventana de diseo.
componente odbc/jdbc. Componente que permite a las aplicaciones VAPRG acceder y procesar archivos de base de
datos que den soporte a la API ODBC de Windows o la API JDBC de Sun Microsystem.
componente pgina de cuaderno. A part used to add pages to a notebook part. Vase tambin cuaderno.
componente pgina de cuaderno con lienzo. Combinacin del componente cuaderno y del componente pgina con
lienzo. Vase tambin cuaderno y componente lienzo.
componente panel de medios. Componente utilizado para proporcionar al usuario control sobre otros componentes.
Por ejemplo, un componente panel de medios puede utilizarse para controlar el volumen de un componente medios.
componente pulsador. Botn etiquetado con texto que representa una accin que se inicia cuando un usuario
selecciona el pulsador. Puede sealar y pulsar un componente pulsador de la paleta de componentes o del catlogo
de componentes y soltarlo en una ventana de diseo. Vase tambin componente pulsador grfico.
componente pulsador grfico. Pulsador, etiquetado con un grfico, que representa una accin que se inicia cuando
un usuario la selecciona. Comprese con componente pulsador.
componente recuadro de contorno. Componente que es un recuadro rectangular colocado alrededor de un grupo de
componentes para indicar que todos los componentes estn relacionados.
componente recuadro de grupo. Marco rectangular alrededor de un grupo de controles que indica que estn
relacionados y que proporciona una etiqueta optativa para el grupo. En VisualAge RPG, se seala y pulsa un
componente recuadro de grupo de la paleta de componentes o del catlogo de componentes y se suelta en una
ventana de diseo.
Glosario
441
componente recuadro de lista. Control que contiene opciones desplazables que un usuario puede seleccionar. En
VisualAge RPG, se seala y pulsa un componente recuadro de lista de la paleta de componentes o del catlogo de
componentes y se suelta en una ventana de diseo.
componente recuadro de seleccin. Recuadro de seleccin con texto asociado que representa una opcin. Cuando
un usuario selecciona una opcin, aparece un indicador en el recuadro de seleccin que indica que la opcin est
seleccionada. El usuario puede eliminar la marca del recuadro de seleccin volviendo a seleccionar la opcin. En
VisualAge RPG, se seala y pulsa un componente recuadro de seleccin de la paleta de componentes o del catlogo
de componentes y se suelta en una ventana de diseo.
componente referencia a componente lgico. Componente que permite que un componente lgico se comunique
con otro en una aplicacin VARPG.
componentes. Objetos que componen la GUI de una aplicacin VARPG.
componente selector cclico. Tipo de campo de entrada que muestra un anillo de opciones relacionadas, pero que se
excluyen mutuamente, por el que un usuario puede desplazarse y seleccionar una opcin. El usuario tambin puede
teclear una opcin vlida en el campo de entrada. Puede sealar y pulsar un componente selector cclico de la paleta
de componentes o del catlogo de componentes y soltarlo en una ventana de diseo.
componente subarchivo de mensajes. Componente que puede visualizar mensajes predefinidos o texto
suministrado en la lgica del programa.
componente submen. Componente utilizado para iniciar un submen a partir de un elemento de men o de un
men existente, o para iniciar un men desplegable a partir de un elemento de men en una barra de men. Vase
tambin submen y componente elemento de men.
componente temporizador. Componente utilizado para hacer un seguimiento del intervalo de tiempo entre dos
eventos y activar el segundo evento cuando ha transcurrido el intervalo.
componente texto esttico. Componente utilizado como etiqueta para otros componentes, como solicitud para un
componente campo de entrada.
componente ventana. rea con lmites visibles que representa una vista de un objeto o con la que un usuario
mantiene un dilogo con un sistema. Puede sealar y pulsar un componente ventana de la paleta de componentes o
del catlogo de componentes y soltarlo en la ventana de proyectos.
componente ventana con lienzo. Combinacin del componente ventana y del componente lienzo. Vase tambin
componente ventana y componente lienzo.
comprobacin de sintaxis. Verifica que la sintaxis de cada lnea sea correcta mientras se edita el cdigo fuente. Con
ello pueden evitarse errores de compilacin. Esta opcin puede activarse o desactivarse. Puede visualizarse slo
determinados tipos de especificacin, como especificaciones C, o una lnea con una serie especfica.
Conectividad de Baes de Datos Java (JDBC). Estndar del sector para la conectividad independiente de la base de
datos entre Java y una amplia gama de bases de datos. JDBC proporciona una interfaz de programacin de
aplicaciones (API) a nivel de llamada para el acceso a bases de datos basado en SQL.
conector. Funcin creada por el usuario o un proveedor externo que se puede utilizar en los programas VARPG.
CONFIG.SYS. Archivo de configuracin, ubicado en el directorio raz de la unidad de arranque, para los sistemas
operativos DOS, OS/2 o Windows. Contiene informacin necesaria para instalar y ejecutar hardware y software.
configuracin. Manera en que el hardware y el software de un sistema de proceso de informacin estn
organizados y se conectan entre s (T).
construir. Proceso por el que las diversas partes de un cdigo fuente que forman los componentes lgicos de una
aplicacin VARPG se compilan y enlazan para producir una versin ejecutable de la aplicacin.
conversacin DDE. El intercambio de datos entre un cliente DDE y un servidor DDE. Vase tambin conversacin de
enlace esttico y conversacin de enlace dinmico.
conversacin de enlace dinmico. En DDE, actualizacin automtica de un programa cliente por un programa
servidor cuando los datos cambian en el servidor. Comprese con conversacin de enlace esttico
442
conversacin de enlace esttico. En DDE, peticin explcita efectuada por un programa cliente a un programa
servidor. El programa servidor responde a la peticin. Comprese con conversacin de enlace dinmico.
cuaderno de propiedades. Representacin grfica que se asemeja a un cuaderno enlazado que contiene pginas
separadas en secciones por pginas separadoras. Seleccione los separadores de un cuaderno para ir de una seccin a
otra.
cursor. Indicacin visible de la posicin en la que aparecer la interaccin de usuario con el teclado.
D
DBCS. Juego de caracteres de doble byte.
DDE. Intercambio de datos dinmico.
definicin de interfaz de procedimiento. Repeticin de la informacin prototipo dentro de la definicin de un
procedimiento. Se utiliza para declarar los parmetros de entrada para el procedimiento y para garantizar que la
definicin interna del procedimiento es coherente con la definicin externa (el prototipo)
directorio destino. Directorio en el que se almacena la aplicacin VARPG compilada despus de una creacin.
Comprese con carpeta destino.
directorio fuente. Directorio en el que se almacenan todos los archivos fuente para una aplicacin VARPG.
Diseador GUI. Conjunto de herramientas utilizadas para crear interfaces arrastrando y soltando componentes de
la paleta de componentes a la ventana de diseo.
DLL. Biblioteca de enlace dinmico.
doble pulsacin. Pulsar un botn dos veces rpidamente.
E
EBCDIC. Cdigo de intercambio decimal binario ampliado. Juego de caracteres de 256 caracteres de 8 bits.
edicin directa. Utilizacin de procedimientos que permiten a un usuario trabajar con un objeto arrastrndolo con
un ratn o interactuando con su men emergente.
elemento. En intercambio de datos dinmico, una unidad de datos. Por ejemplo, la posicin de la casilla superior
izquierda en una hoja de clculo es fila 1, columna 1. Se puede hacer referencia a la posicin de la casilla como el
elemento R1C1.
eliminar referencia. Accin de suprimir la asociacin entre un componente y un campo de base de datos de
AS/400.
nfasis. Resaltado del cambio de color u otra indicacin visible de condiciones relativas a un objeto o una opcin
que afecta a la capacidad del usuario de interactuar con ese objeto u opcin. El nfasis tambin puede proporcionar a
un usuario informacin adicional sobre el estado de una opcin o un objeto.
entrada/salida (E/S). Datos proporcionados al sistema o datos que resultan del proceso del sistema.
estacin de trabajo. Dispositivo que permite a un usuario efectuar trabajos. Vase tambin estacin de trabajo
programable.
estacin de trabajo programable (PWS). Estacin de trabajo que tiene posibilidades de proceso y que permite a un
usuario modificar sus funciones.
evento. Seal generada como resultado de una modificacin en el estado de un componente. Por ejemplo, al
accionar un pulsador se genera el evento Press.
evento de enlace. Evento que un componente destino recibe siempre que cambia el estado de un componente
fuente.
Glosario
443
excepcin. (1) En lenguajes de programacin, una situacin anormal que se da durante la ejecucin, que puede
ocasionar una desviacin de la secuencia normal de ejecucin, para la que existen recursos en los lenguajes de
programacin a fin de definirla, activarla, reconocerla, ignorarla y manejarla. (I) (2) En VisualAge RPG, un evento o
situacin que impide, o puede impedir, que una accin solicitada por un usuario concluya tal como ste espera. Las
excepciones tienen lugar cuando un producto no puede interpretar la entrada de un usuario.
EXE. Extensin de un archivo ejecutable.
exportar. Funcin que convierte un archivo interno en un formato de archivo estndar para utilizarlo fuera de la
aplicacin. Comprese con importar.
F
foco. Sinnimo de foco de entrada.
foco de entrada. rea de una ventana en la que la interaccin del usuario puede tener lugar desde el teclado o
desde el ratn.
I
ICO. Extensin de archivo de un archivo de icono.
icono. Representacin grfica de un objeto, que se compone de una imagen, un fondo de imagen y una etiqueta.
importar. Funcin que convierte objetos de archivo de pantalla de AS/400 al componente VARPG adecuado.
Comprese con exportar.
indicador de progreso. Uno o ms controles utilizados para informar a un usuario sobre el curso de un proceso.
ndice. Identificador de una entrada en componentes de VARPG como, por ejemplo, recuadros de lista o recuadros
de combinacin.
INI. Extensin de archivo para un archivo del sistema operativo OS/2 o Windows que contiene informacin
especfica de la aplicacin que necesita conservarse de una llamada de una aplicacin a otra.
intercambio de datos dinmicos (DDE). Intercambio de datos entre programas o entre un programa y un objeto de
archivo de datos. Cualquier cambio efectuado en la informacin de un programa o una sesin se aplica a los datos
idnticos creados por el otro programa. Vase tambin conversacin DDE, cliente DDE y servidor DDE.
Interfaz de programacin de aplicaciones (API). Interfaz funcional suministrada por el sistema operativo o un
programa bajo licencia que se solicita por separado, que permite que un programa de aplicacin escrito en un
lenguaje de alto nivel pueda utilizar datos o funciones especficas del sistema operativo o del programa bajo licencia.
interfaz de usuario grfica (GUI). Tipo de interfaz de usuario que proporciona las ventajas de los grficos de alta
resolucin. Una interfaz grfica de usuario incluye una combinacin de grficos, el paradigma de accin de objeto, el
uso de dispositivos de puntero, barras de men y otros mens, solapamiento de ventanas e iconos.
Interfaz Nativa de Java (JNI). Interfaz de programacin que permite al cdigo Java que se ejecuta dentro de una
Mquina Virtual Java (JVM) interoperar con las funciones escritas en otros lenguajes de programacin.
IPF. Recurso de Presentacin de Informacin.
J
Java. Lenguaje de programacin orientado a objeto para cdigo interpretado porttil que soporta la interaccin entre
objetos remotos. Java y sus especificaciones han sido desarrolladas por Sun Microsystems, Incorporated.
JavaBean. En Java, un modelo de componente reutilizable, porttil e independiente de la plataforma.
Java Runtime Environment (JRE). Subconjunto del Kit de desarrollo Java para los usuarios finales y desarrolladores
que deseen redistribuir el JRE. El JRE consiste en la Mquina Virtual Java, las Clases de Ncleo de Java y los archivos
de soporte.
444
Java 2 Software Development Kit (J2SDK). Software que distribuye Sun Microsystems a los desarrolladores de
Java. Este software incluye el interpretador Java, clases Java y herramientas de desarrollo Java. Las herramientas de
desarrollo incluyen un compilador, un depurador, un desensamblador, un AppletViewer, un generador de archivos de
apndice y un generador de documentacin.
juego de caracteres de doble byte (DBCS). Juego de caracteres en el que cada carcter se representa mediante 2
bytes. Algunos idiomas como el japons, el chino o el coreano, que contienen ms smbolos de los que pueden
representarse mediante los 256 puntos de cdigo, necesitan el juego de caracteres de doble byte. Puesto que cada
carcter necesita 2 bytes, la escritura, la visualizacin y la impresin de caracteres DBCS necesita hardware y
programas que soporten DBCS. El sistema soporta cuatro juegos de caracteres de doble byte: japons, coreano, chino
simplificado y chino tradicional. Comprese con juego de caracteres de un solo byte (SBCS).
juego de caracteres de un solo byte (SBCS). Juego de caracteres en el que cada carcter se representa mediante un
byte. Comprese con juego de caracteres de doble byte (DBCS).
L
lnea de ejecucin. La unidad ms pequea de operacin que puede efectuarse dentro de un proceso.
lista desplegable. Campo de una sola seleccin en el que slo puede verse la opcin actual. Las dems opciones
permanecen ocultas hasta que el usuario realiza una accin especfica para visualiza el recuadro de lista que las
contiene.
lugar de trabajo. rea que ocupa toda la pantalla y contiene todos los objetos que componen la interfaz del usuario.
M
Mquina Virtual Java (JVM). La parte del Java Runtime Environment (JRE) responsable de interpretar bytecodes de
Java.
marcador de grupo. Marcador que identifica un componente como el primero de un grupo. Cuando el usuario
desplaza el cursor por un grupo de componentes y llega al ltimo, el cursor vuelve a la primera parte del grupo.
mensaje. (1) Informacin no solicitada por un usuario pero visualizada por un producto como respuesta a un
evento no esperado o cuando se produce algo no deseado. (2) Comunicacin enviada por una persona o un
programa a otra persona u otro programa.
men. Lista de opciones que pueden aplicarse a un objeto. Un men puede contener opciones que no estn
disponibles para ser seleccionadas en determinados contextos. Estas opciones estn atenuadas.
men desplegable. Men que aparece al seleccionar una opcin en una barra de men o a partir del smbolo del
men del sistema. Las opciones de un men desplegable estn relacionadas entre s.
men emergente. Men que, cuando se solicita, aparece junto al objeto con el que est asociado. Contiene opciones
adecuadas para el objeto en su contexto actual.
MID. Extensin de archivo de un archivo MIDI.
migrar. (1) Mover a un sistema operativo modificado, generalmente a un nuevo release o versin de un sistema. (2)
Mover datos desde una jerarqua de almacenamiento a otra.
mdulo EXE. Un mdulo EXE consta de un procedimiento principal y subprocedimientos. Se crea cuando la palabra
clave EXE est presente en la especificacin de control. Todas las subrutinas (BEGSR) deben ser locales a un
procedimiento. El EXE debe contener un procedimiento cuyo nombre coincida con el nombre del archivo fuente. Este
ser el punto de entrada principal para el EXE; es decir, el procedimiento principal.
mdulo NOMAIN. Mdulo que contiene solamente subprocedimientos. No contiene ninguna accin o subrutina de
usuario autnoma. Un mdulo NOMAIN se crea cuando la palabra clave NOMAIN se encuentra en la especificacin
de control.
Glosario
445
N
nemotcnico. Un solo carcter, dentro del texto de una opcin, identificado por un subrayado debajo de l. Vase
tambin seleccin nemotcnica.
nivel del graduador. Indicador visual en el graduador que un usuario puede mover para modificar el valor
numrico.
O
objeto. (1) Espacio de almacenamiento con nombre que consiste en un conjunto de caractersticas que describen el
espacio de almacenamiento en s y, en algunos casos, datos. Un objeto es algo que existe en el almacenamiento y
ocupa parte de su espacio, y en el que se pueden efectuar operaciones. Algunos ejemplos de objetos son: programas,
archivos, bibliotecas y carpetas. (2) Componente visual de una interfaz de usuario con el que un usuario puede
efectuar una tarea. Un objeto puede aparecer como texto o como un icono.
objeto de datos. Objeto que transporta informacin, como texto, grficos, audio o vdeo.
P
paleta de colores. Conjunto de colores que puede utilizarse para cambiar el color de cualquier componente en la
GUI de la aplicacin.
paleta de componentes. El grupo de componentes ms adecuado para construir la interfaz grfica de usuario actual
para una aplicacin. Cuando finaliza la GUI, puede vaciar la paleta y aadir los componentes del catlogo de
componentes que necesite para la siguiente aplicacin.
paleta de fonts. Conjunto de fonts que puede utilizarse para cambiar el font de un componente en la GUI de la
aplicacin.
panel de navegacin. Grupo de botones que se pueden utilizar para controlar la seleccin visible de registros en un
subarchivo.
paquete. Funcin utilizada para reunir todos los componentes de una aplicacin VARPG para su distribucin.
paradigma accin-objeto. Patrn de interaccin en el que un usuario selecciona un objeto y a continuacin
selecciona una accin para aplicarla a ese objeto.
procedimiento. Un procedimiento es cualquier parte del cdigo a la que pueda llamarse mediante la operacin
CALLP.
procedimiento principal. Un procedimiento principal es un subprocedimiento que puede especificarse como
procedimiento de entrada del programa y que recibe el control cuando se le llama por primera vez. El procedimiento
principal slo se genera cuando se crea un EXE. Consulte mdulo EXE
programacin orientada a objetos. Mtodo para estructurar programas como clases organizadas jerrquicamente
que describen los datos y las operaciones de objetos que pueden interactuar con otros objetos. (T)
programa destino. Objeto que el proyecto ha de crear, como una biblioteca de enlace dinmico (DLL).
programa de utilidad DLL. Vase mdulo NOMAIN
programa objeto. Programa destino adecuado para ser ejecutado. Un programa objeto puede o no necesitar enlace.
(T)
prototipo. Un prototipo es una definicin de la interfaz de llamadas. Incluye informacin como, por ejemplo, si la
llamada est enlazada (procedimiento) o es dinmica (programa), el nombre externo, el nmero y la naturaleza de los
parmetros, qu parmetros deben ser pasados y el tipo de datos de cualquier valor de retorno (para un
procedimiento)
proyecto. Conjunto de datos y acciones completo necesarios para construir un destino nico, como una biblioteca de
enlace dinmico (DLL) o un archivo ejecutable (EXE).
446
pulsar. Pulsar y liberar un botn del ratn sin mover el puntero fuera de la opcin o del objeto. Vase tambin doble
pulsacin.
puntero del ratn. Sinnimo de cursor.
PWS. Estacin de trabajo programable.
R
ratn. Dispositivo con uno o ms pulsadores que se utilizan para colocar un puntero en la pantalla sin usar el
teclado. Se utiliza para seleccionar una opcin o una funcin que se ha de efectuar o para llevar a cabo operaciones
en la pantalla, como dibujar lneas y arrastrarlas de una posicin a otra.
recuadro de combinacin. Control que combina las funciones de un campo de entrada y de un recuadro de lista.
Un recuadro de combinacin contiene una lista de objetos por los que el usuario puede desplazarse y seleccionar
para completar el campo de entrada. Si lo desea, el usuario tambin puede escribir texto directamente en el campo de
entrada. En VisualAge RPG, se seala y pulsa un componente recuadro de combinacin de la paleta de componentes
o del catlogo de componentes y se suelta en una ventana de diseo.
recuadro de combinacin desplegable. Tipo de recuadro de combinacin en la que un recuadro de lista est oculto
hasta que un usuario realiza una accin especfica para visualizarlo.
Recurso de Presentacin de Informacin (IPF). Herramienta utilizada para crear ayuda en lnea en una estacin de
trabajo programable.
resaltado de smbolos. Mejora la legibilidad del cdigo. Puede configurar el resaltado de diferentes elementos del
lenguaje con diferentes colores o fonts para identificar las estructuras del programa. Puede activar o desactivar el
resaltado de smbolos.
S
SBCS. Juego de caracteres de un solo byte.
seccin fuente principal. En un programa VARPG, la seccin que contiene todas las definiciones globales para un
mdulo. Para un componente lgico, esta seccin tambin incluye la accin y las subrutinas de usuario.
seleccin nemotcnica. Mtodo de seleccin en el que un usuario selecciona una opcin tecleando el nemotcnico
de esa opcin.
sealar y pulsar. (1) Mtodo de seleccin que se utiliza para copiar un componente de la paleta o el catlogo de
componentes en la ventana de diseo, la vista de iconos o la vista de rbol de la GUI. (2) Para colocar un
componente en cualquiera de las vistas, seale y pulse el componente; despus, mueva el cursor a la ventana elegida
y seale y suelte el componente donde desea que aparezca. En las vistas de iconos y de rbol, el componente se
colocar en el componente padre, y tendr que moverlo al lugar donde le interese que aparezca en la ventana de
diseo.
servidor. Sistema de una red que maneja las peticiones de otro sistema, llamado cliente.
servidor DDE. Aplicacin que proporciona datos a otra aplicacin habilitada por DDE. Comprese con cliente DDE.
Vase tambin conversacin DDE.
sistema operativo. Grupo de programas del sistema que controlan la operacin general de un sistema.
solicitud. (1) Mensaje visual o audible enviado por un programa para solicitar la respuesta de un usuario. (T) (2)
Smbolo o mensaje que se visualiza para solicitar una entrada del usuario o proporcionar informacin operativa. El
usuario debe responder a la solicitud para poder proseguir.
SSL. Capa de Sockets Segura.
submen. Men que aparece al seleccionar una opcin en cascada en otro men y que contiene opciones
relacionadas con dicho men. Los submens se utilizan para reducir la longitud de un men desplegable o de un
men emergente. Vase tambin componente submen.
Glosario
447
subprocedimiento. Procedimiento especificado despus de la seccin fuente principal. Debe tener un prototipo
correspondiente en las especificaciones de definicin de la seccin fuente principal.
subrutina de accin. Lgica que se escribe para responder a un evento especfico.
T
tema. En intercambio de datos dinmico (DDE), el juego de datos que es el sujeto de una conversacin DDE.
tope de tabulador. Atributo utilizado para establecer un tope de tabulador para un componente de manera que los
usuarios pueden proporcionarle foco cuando utilizan el tabulador para moverse por la interfaz.
V
valor por omisin. Valor que el sistema o un programa proporciona o presupone automticamente cuando el
usuario no especifica ninguno. El valor por omisin puede asignarse a un pulsador o a un pulsador grfico.
ventana activa. Ventana con la que un usuario interacta actualmente. Esta es la ventana que recibe la entrada del
teclado.
ventana de diseo. Ventana en el diseador GUI en la que se colocan componentes para crear una interfaz de
usuario.
ventana emergente. Ventana movible, de tamao fijo, en la que un usuario proporciona informacin necesaria para
una aplicacin de manera que puede continuar procesando una peticin de usuario. Sinnimo de ventana secundaria.
ventana inactiva. Ventana que no puede recibir entrada de teclado en un momento dado.
ventana primaria. Ventana en la que tiene lugar la interaccin principal entre el usuario y la aplicacin. Sinnimo de
ventana principal.
ventana principal. Vase ventana primaria.
ventana secundaria. Ventana que contiene informacin que depende de la informacin de una ventana primaria y
se utiliza para complementar la interaccin en dicha ventana. Vase tambin ventana primaria. Sinnimo de ventana
emergente.
vista de rbol. Visualizacin del contenido de un objeto de manera jerrquica.
vista de detalles. Vista de contenido estndar en la que un icono pequeo se combina con texto para proporcionar
informacin descriptiva sobre un objeto.
vista de iconos. Vista de contenido estndar en la que cada objeto contenido en un contenedor se visualiza como un
icono.
W
WAV. Extensin de archivo de un archivo de ondas.
448
Bibliografa
Para obtener informacin adicional sobre temas relacionados con VisualAge RPG y
CODE (Cooperative Development Environment) para AS/400, consulte las
siguientes publicaciones de IBM:
Manuales de WebSphere Development Tools para AS/400:
*Nota: Se han actualizado todas las versiones en lnea de las publicaciones de
WebSphere Development Tools para AS/400. Las publicaciones cuyo
nmero de pedido est marcado con un asterisco (*) no se han vuelto a
imprimir en este release.
v Iniciacin a VisualAge RPG y CODE/400, SC10-3287-01 (SC09-2625-01),
proporciona informacin sobre WebSphere Development Tools para AS/400,
dando una visin general de las caractersticas de CODE/400 y VARPG, de
cmo funcionan juntas y de las ventajas empresariales que se obtienen al
utilizarlas.
Manuales de VisualAge RPG:
v Iniciacin a VisualAge RPG y CODE/400, SC10-3287-01 (SC09-2625-01)*, describe
los conceptos y las tareas de VARPG que se realizan mientras se utiliza
VisualAge RPG.
v VisualAge RPG Manual de consulta del lenguaje, SC10-3066-01 (SC09-2451-01)*,
proporciona informacin de consulta sobre el lenguaje y el compilador de
VARPG.
v VisualAge RPG Manual de consulta de componentes, SC10-3065-02 (SC09-2450-02)*,
proporciona una descripcin de cada componente, atributo de componente,
evento de componente, atributo de componente y atributo de evento de VARPG.
Es un manual de consulta para todos aquellos que desarrollan aplicaciones con
VisualAge RPG.
v Programacin con VisualAge para RPG, SC10-3067-02 (SC09-2449-02)*, contiene
informacin especfica sobre cmo crear aplicaciones con VisualAge RPG.
Describe los pasos que debe seguir en cada fase del ciclo de desarrollo de la
aplicacin, desde el diseo hasta el empaquetado y la distribucin. Se incluyen
ejemplos de programacin para clarificar los conceptos y el proceso de
desarrollo de aplicaciones VARPG.
v Java for RPG Programmers es una introduccin al lenguaje Java (y RPG IV)
mediante la comparacin con el lenguaje RPG. Se trata de un comienzo muy
apropiado en el mundo de Java. Tambin incluye una gua de aprendizaje
interactiva en formato CD sobre Java y VisualAge para Java, mediante MINDQ.
v Experience RPG IV Tutorial es una gua de aprendizaje interactiva en formato CD
que ensea RPG IV e ILE, paso a paso y de un modo divertido. Se trata de un
manual con preguntas y ejercicios que ayudan a adquirir experiencia prctica
con esta nueva y apasionante versin de RPG.
v Otra publicacin que no es de IBM interesante para los usuarios de VisualAge
RPG es VisualAge for RPG by Example.
Informacin y publicaciones del AS/400:
v Si tiene acceso a Internet, puede obtener otra informacin y publicaciones del
AS/400 en uno de los siguientes sitios Web:
http://www.as400.ibm.com/infocenter
http://publib.boulder.ibm.com/pubs/html/as400/infocenter.htm
449
450
Avisos
Esta informacin se ha elaborado para productos y servicios que se ofrecen en
Estados Unidos. Es posible que IBM no ofrezca todos los productos, servicios o
caractersticas que se tratan en este documento en otros pases. Consulte con el
representante local de IBM para obtener informacin sobre los productos y
servicios que estn disponibles en su rea en la actualidad. Ninguna referencia
hecha en esta publicacin a un producto, programa o servicio de IBM pretende
afirmar ni implicar que slo pueda utilizarse dicho producto, programa o servicio
de IBM. Puede utilizarse cualquier producto, programa o servicio funcionalmente
equivalente y que no infrinja ninguno de los derechos de propiedad intelectual de
IBM. Sin embargo, es responsabilidad del usuario evaluar y verificar el
funcionamiento de los productos, programas o servicios que no sean de IBM.
IBM puede tener patentes o solicitudes de patente pendientes acerca del tema de
este documento. La entrega de este documento no le otorga ninguna licencia sobre
dichas patentes. Puede enviar consultas sobre licencias, por escrito, a:
Director of Licensing
Intellectual Property & Licensing
International Business Machines Corporation
North Castle Drive, MD - NC119
Armonk, New York 10504-1785
EE.UU.
El siguiente prrafo no es aplicable en el Reino Unido ni en ningn otro pas
donde tales estipulaciones sean contradictorias con la legislacin local:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONA
ESTA PUBLICACIN TAL CUAL, SIN NINGN TIPO DE GARANTA,
EXPLCITA O IMPLCITA, INCLUYENDO, PERO SIN LIMITARSE A, LAS
GARANTAS IMPLCITAS DE NO VULNERACIN, COMERCIALIZACIN E
IDONEIDAD PARA UNA FINALIDAD DETERMINADA. En determinados pases
no se permite la declaracin de limitacin de responsabilidad de las garantas
expresas ni implcitas en determinadas transacciones, por lo tanto, esta declaracin
puede no ser procedente en su caso.
Esta informacin puede contener inexactitudes tcnicas o errores tipogrficos. Se
efectan cambios peridicos en la informacin contenida en este documento; tales
cambios se incorporarn en nuevas ediciones de la publicacin. IBM puede hacer
mejoras y/o modificaciones en los productos y/o programas descritos en esta
publicacin en cualquier momento sin previo aviso.
Las referencias hechas en esta informacin a pginas Web de terceros se
proporcionan slo como gentileza para los usuarios y de ninguna manera puede
interpretarse que IBM avala esas pginas Web. El material de estas pginas Web no
forma parte del material para este producto de IBM y el usuario ser el nico
responsable del uso de estas ubicaciones Web.
Los poseedores de una licencia de este programa que deseen obtener informacin
al respecto con el fin de permitir: (i) el intercambio de informacin entre
programas creados de manera independiente y otros programas (incluido ste) y
(ii) la utilizacin mutua de la informacin que se ha intercambiado, deben ponerse
en contacto con IBM en la siguiente direccin:
451
AS/400
CUA
DB2 Connect
OS/400
400
AS/400e
DATABASE 2
DB2 Universal Database
SQL/DS
Java y todas las marcas registradas derivadas de Java son marcas registradas de
Sun Microsystems, Inc. en Estados Unidos y/u otros pases.
Lotus es marca registrada de Lotus Development en Estados Unidos y/u otros
pases.
ActiveX, Microsoft, Windows y Windows NT son marcas registradas de Microsoft
Corporation en Estados Unidos y/o en otros pases.
Otros nombres de empresas, productos y servicios pueden ser marcas registradas o
marcas de servicio de terceros.
452
ndice
Caracteres
Especiales
%GETATR, utilizacin 25
%SETATR, utilizacin 25
*INZSR 261
.MID, archivo
proceso por componentes medios
*TERMSR 261
.WAV, archivo
proceso por componentes medios
99
99
A
acceso a archivos de imgenes en tiempo
de construccin 234
actualizar registro de subarchivo
para componentes subarchivo 153
AddItemEnd, atributo 145
AddMsgId, atributo 106
AddMstTxt, atributo 106
AddRcd, atributo 65
agrupacin de botones de seleccin,
ejemplo 136
alteraciones temporales
acceso a archivos de base de datos de
AS/400 192
acceso a reas de datos de
AS/400 191
llamada a programas AS/400 262
alteraciones temporales de rea de
datos 191
aplicacin
actualizacin 407
eliminar 407
empaquetado 399
instalacin 407
volver a empaquetar 407
volver a instalar 407
aplicacin Video Catalog
adicin de ayuda en lnea 15
adicin de mensajes 15
creacin de la ventana Comedy 7
creacin de la ventana Preview 11
descripcin de 3
diseo 5
ejecutar 4
instalacin 3
aplicaciones, cliente ligero 417
archivo .EVT, descripcin 413
archivo .HLP, descripcin 413
archivo .IPF, descripcin 413
archivo .IPM, descripcin 413
archivo .LIB, descripcin 413
archivo .LST, descripcin 413
archivo .ODF, descripcin 413
archivo .ODX, descripcin 413
archivo .RST, descripcin 413
archivo .TXC, descripcin 413
archivo .TXM, descripcin 413
Copyright IBM Corp. 1994, 2000
453
454
atributo Width
para componentes recuadro de
contorno 131
usos comunes de 37
atributos
AddItemEnd 145
AddLink 100, 101
AddMsgId 106
AddMsgTxt 106
AddOffset 111
AddRcd 65
AllowLink 100, 101
Arrange 67
AudioMode 100
BackColor 37
BackMix 37, 140
Bottom 37
ColNumber 66, 155
comprobacin de atributos de evento
y de sistema 27
Count 66, 92, 154
CharOffSet 111
Checked 55, 104
DDEMode 255
DeSelect 59, 91, 92
DragEnable 41
DropEnable 41
Enabled 37, 74, 105, 111
FileName 78, 82, 99, 233
FirstSel 59
Focus 38
FontName 149
FontSize 149
ForeColor 37
ForeMix 37
GetItem 92
GetNewID 65
GetRcdText 65
Height 37, 131
Index 59, 92, 155
InfoLabel 39
InsertItem 58, 91
InsertLine 110
InsertMode 73
Interval 167
Label 39, 79, 104, 134, 149
Left 37
LineNumber 110
Masked 74
Maximum 145
Minimum 145
MsgSubText 107
Multiplier 167
obtener y establecer 25
OpenEdit 155
OpenImmediately 176, 177
Panel 82
PanelItem 102
para componentes barra de
desplazamiento horizontal 80
para componentes barra de
desplazamiento vertical 174
para componentes barra de
estado 151
para componentes barra de
progreso 133
para componentes bean Java 87
atributos (continuacin)
para componentes botn de
seleccin 136
para componentes campo de
entrada 72
para componentes cliente DDE 71
para componentes contenedor 64
para componentes control de
animacin 50
para componentes cuaderno 115
para componentes de ActiveX 47
para componentes de
posicionamiento 37
para componentes edicin de
mltiples lneas 110
para componentes graduador 139
para componentes imagen 82
para componentes interfaz
ODBC/JDBC 119
para componentes lienzo 54
para componentes lienzo de
cuaderno 117
para componentes men
emergente 132
para componentes opcin de
men 104
para componentes pgina de
cuaderno 116
para componentes panel de
medios 101
para componentes pulsador 134
para componentes pulsador
grfico 78
para componentes recuadro de
combinacin 57, 58
para componentes recuadro de
contorno 131
para componentes recuadro de
grupo 79
para componentes recuadro de
lista 75, 90
para componentes recuadro de
seleccin 55
para componentes referencia a
componente lgico 62
para componentes subarchivo 152
para componentes subarchivo de
mensajes 106
para componentes submen 166
para componentes temporizador 167
para componentes texto esttico 149
para componentes ventana con
lienzo 175, 176
ParentName 35
PartName 35
PartType 35
Position 100, 102
ReadOnly 59, 74, 111, 146
RecordID 66
RemoveItem 59, 91
RemoveMsg 107
RemoveRcd 67
Selected 59, 91, 92
SelectItem 61
Sequence 58, 90
SetItem 59, 91
SetRcdIcon 67
atributos (continuacin)
SetRcdText 64
SetTop 59, 91
TabLabel 39
Terminar al cerrar 182
Text 59, 73, 110, 146
TextEnd 111
TextSelect 111
TextStart 111
TimerMode 168
UserData 39
Validate 73
Value 139, 146, 168
View 70
Visible 38, 167, 176
Volume 102
Volumen 100
Width 37, 131
atributos comunes, descripcin de 35
atributos de evento, utilizacin 26
atributos del sistema
%DspHeight 27, 38
%DspWidth 27, 38
AudioMode, atributo 100
ayuda
adicin de grficos a 236
creacin de enlaces de hipertexto 237
creacin de un pulsador de
ayuda 236
creacin para Windows 239
editar 212
nombrearchivo.IPM 413
nombrearchivo.VPF 413
para aplicaciones Java 243
planificacin de la aplicacin 19
reutilizar UIM 212
tipos de 236
traducir 235
ayuda segn el contexto 236
B
barra de desplazamiento horizontal
atributos 80
eventos 80
finalidad 80
barra de desplazamiento vertical
atributos 174
eventos 174
finalidad 174
barra de estado, componente
atributos 151
eventos 151
finalidad 151
barra de mens
atributos 103
eventos 103
finalidad 103
barra de progreso, componente
finalidad 133
bean Java, componente
atributos 87
classpath, configuracin 88
crear 87
finalidad 87
JAR asociados 88
propiedades y mtodos 89
bibliografa 449
C
calendario 51
finalidad 51
cambio
el contenido de un campo durante la
depuracin 224
la representacin durante la
depuracin 224
un valor de puntero durante la
modificacin 226
variables, matrices y estructuras
durante la depuracin 224
vistas del depurador 226
cambio de la posicin de los
componentes 178
cambio del tamao de las ventanas 178
cambios de fuente java 278
campo, componentes
nombres exclusivos 30
campos de subarchivo ocultos 155
CLEAR, cdigo de operacin
finalidad 30
para componentes subarchivo 153
cliente DDE
atributos 71
determinar si est soportado por
programas 71
eventos 71
finalidad 71
clientes ligeros 417
Close, evento 182
cdigo de operacin BEGACT, respuesta
a eventos con 26
cdigo de operacin CALL, ejemplo
de 262
cdigo de operacin CALLB
llamada a funciones locales 255, 256
cdigo de operacin ENDACT, respuesta
a eventos con 26
cdigo de operacin READ (leer un
registro)
archivos de base de datos 195
finalidad 30
cdigo de operacin SETATR (establecer
atributo)
para componentes imagen 82
reflejar valores almacenados en la
pantalla 29
cdigo de operacin STOP (detener un
componente lgico)
descripcin 261
cdigo de operacin WRITE (crear
nuevos registros)
archivos de base de datos 195
finalidad 30
para componentes subarchivo 153
455
456
componentes
*component 184
ActiveX 46
barra de desplazamiento
horizontal 80
barra de desplazamiento vertical 174
barra de estado 151
barra de mens 103
barra de progreso 133
Bean Java 87
botn de seleccin 136
cambio de los colores de 37
campo de entrada 72
Cliente DDE 71
colocacin en diversas resoluciones de
monitor 38
comunicacin entre 253
contenedor 64
Contenedor 64
control de animacin 50
cuaderno 115
detener 261
edicin de mltiples lneas 110
elemento de men 104
enlace 253
graduador 139
grfica 75
habilitacin de componentes 37
imagen 81
iniciar 260
interfaz ODBC/JDBC 118
lienzo 53
listado de eventos para un
componente 26
marco de la ventana 175
medios 99
men emergente 132
pgina de cuaderno 116
pgina de cuaderno con lienzo 117
panel de medios 101
posicionamiento 37
pulsador 134
pulsador grfico 77
recuadro de combinacin 57
Recuadro de combinacin 57
recuadro de contorno 131
recuadro de grupo 79
recuadro de lista 83, 90
recuadro de seleccin 55
referencia 25
referencia a componente lgico 62
Referencia a componente lgico 62
selector cclico 145
soportar transferencia de datos 41
subarchivo 152
subarchivo de mensajes 106
submen 166
temporizador 167
texto esttico 149
ventana 175, 176
comprobacin de nivel
conectores de proveedor
aadir 371
crear 373
gestionar 371
invocar 371
196
contenedor, componente
atributos 64
cambio de vistas de 67
ejemplo de actualizacin de datos
en 66
ejemplo de adicin de registros a 66
ejemplo de eliminar registros de 67
eventos 64
finalidad 64
control de animacin, componente
atributos 50
eventos 50
finalidad 50
conversin
cdigo fuente RPG utilizando
CVTRPGSRC 214
Crear archivo de mensajes, programa de
utilidad 250
cuaderno, componente
atributos 115
eventos 115
finalidad 115
CVTRPGSRC, herramienta de conversin
ILE RPG/400 214
CH
CHAIN (recuperacin aleatoria de
archivo), cdigo de operacin 153
Change, evento
para componentes graduador 140
para componentes panel de
medios 102
y componentes edicin de mltiples
lneas 112
CharOffset, atributo 111
D
DELETE (suprimir registro), cdigo de
operacin 153
depurador
cambio de vista 223
Cargar aparicin 218
ejecucin de pasos 222
ejecucin de pasos externos 222
ejecucin de pasos internos 222
ejecucin de un programa durante la
depuracin 222
ejecucin del programa 223
establecimiento de puntos de
interrupcin 219, 221
iniciar 217
modificacin de la
representacin 224
modificacin de las vistas del
depurador 226
modificacin del contenido de un
campo 224
puntos de interrupcin 218
retorno de recorrido 222
selecciones de la barra de
herramientas 222
visin general 217
visualizacin de la pila 223
visualizacin de la supervisin del
programa 223
depurador (continuacin)
visualizacin de la ventana de control
de sesin de la depuracin 223
visualizacin de registros 223
visualizacin del
almacenamiento 223
visualizar variables 223
diferencias de tiempo de ejecucin
java 280
diseo
aplicacin Video Store Catalog 5
ayuda en lnea 19
contenido de la ventana 20
lgica del programa 21
mensajes 21
nmero de ventanas 20
DLL, archivo
carga de la aparicin de DLL durante
la depuracin 218
descripcin 413
llamada a funciones 256
DSPLY 250
E
edicin
archivos de ayuda 212
datos en campos de entrada y
componentes texto esttico 229, 230
fuente RPG 214
mensajes 249
editar mensajes de forma directa 251
ejecucin con puntos de interrupcin
programas durante la
depuracin 222
puntos de interrupcin de la
depuracin 221
ejecucin de pasos externos
durante la depuracin 222
ejecutar subrutina
invocacin de subrutinas de accin
con 26
ejemplos
actualizacin de componentes
contenedor 66
adicin de registros a un componente
contenedor 66
agrupacin de botones de
seleccin 136
aplicacin Video Store Catalog 3
cambio del tamao de una
ventana 178
componente ventana 183
de componentes que comparten un
campo de programa 31
de transferencia de datos 42
eliminacin de registros de
componentes contenedor 67
lectura y modificacin de registros de
subarchivo 154
obtencin y establecimiento de valores
para componentes selector
cclico 146
utilizacin de componente referencia a
componente lgico 62
utilizacin de subarchivos para
visualizar datos de AS/400 155
ejemplos (continuacin)
utilizacin del componente edicin de
mltiples lneas 112
utilizacin del componente
graduador 140
utilizacin del componente
imagen 83
utilizacin del componente recuadro
de lista 93
utilizacin del componente subarchivo
de mensajes 108
utilizacin del componente subarchivo
para visualizar registros de base de
datos 156
utilizacin del componente
temporizador 168
utilizacin del evento Create para una
ventana 38
eliminar
cdigo de tiempo de ejecucin 407
una aplicacin 407
empaquetado
aplicacin 399
cdigo de tiempo de ejecucin 399
prerrequisitos 399
enlace de componentes 253
enlaces de hipertexto, creacin 237
entradas de posicin y conversin
durante la importacin 208
establecer
fonts de la depuracin 227
puntos de interrupcin de la
depuracin 219
etiquetas
descripcin 39
sustitucin 247
etiquetas de sustitucin
definicin de texto para 247
descripcin 39
evento Create, ejemplo de 38
evento Enter
para componentes recuadro de
combinacin 61
para componentes recuadro de
lista 92, 165
evento GotFocus
usos comunes de 39
y componentes edicin de mltiples
lneas 112
evento LostFocus, usos comunes de 39
evento MenuSelect
para componentes opcin de
men 105
evento Press
para componentes pulsador 135
para componentes pulsador
grfico 78
evento Select
para componentes botn de
seleccin 138
para componentes recuadro de
combinacin 61
para componentes recuadro de
lista 92
para componentes subarchivo 165
sealizacin 56
eventos
Close 182
codificacin de BEGACT y
ENDACT 26
Complete 100
comprobacin de errores de atributos
de evento 27
Change 102, 112, 140
descripcin de atributos 26
Enter 92, 165
GotFocus 39, 112
invocacin de subrutinas de
accin 26
listado de eventos para un
componente 26
LostFocus 39
MenuSelect 105
Notify 63
para componentes barra de
desplazamiento horizontal 80
para componentes barra de
desplazamiento vertical 174
para componentes barra de
estado 151
para componentes barra de
mens 103
para componentes barra de
progreso 133
para componentes bean Java 87
para componentes botn de
seleccin 136
para componentes campo de
entrada 73
para componentes cliente DDE 71
para componentes control de
animacin 50
para componentes cuaderno 115
para componentes de ActiveX 47
para componentes edicin de
mltiples lneas 110
para componentes graduador 139
para componentes imagen 82
para componentes Interfaz
ODBC/JDBC 119
para componentes medios 99
para componentes opcin de
men 104
para componentes pgina de
cuaderno 116
para componentes panel de
medios 101
para componentes pulsador 134
para componentes pulsador
grfico 78
para componentes recuadro de
combinacin 61
para componentes recuadro de
contorno 131
para componentes recuadro de
grupo 79
para componentes recuadro de
lista 90
para componentes recuadro de
seleccin 56
para componentes selector
cclico 145
para componentes subarchivo 152
ndice
457
eventos (continuacin)
para componentes subarchivo de
mensajes 106
para componentes submen 166
para componentes temporizador 167
para componentes texto esttico 149
para componentes ventana con
lienzo 175, 176
Press 78, 135
respuesta a eventos en el
programa 26
Select 56, 92, 138, 165
Tick 167
eventos, atributos
definicin de atributos de evento y de
sistema 28
finalidad 26
EXE, archivo
descripcin 413
llamada a archivos .EXE 258
F
FirstSel, atributo 59
FontName, atributo 149
FontSize, atributo 149
fuente RPG
reutilizar 214
J
G
Gestor de Interfaz de Usuario, reutilizar
archivos 212
GETATR
utilizacin 25
GetNewID, atributo 65
GetRcdText, atributo 65
glosario 437
graduador, componente
atributos 139
eventos 139
finalidad 139
grfica 75
finalidad 75
I
ICO, archivo
utilizacin 81, 233
iconos, utilizacin 233
imagen, componente
acceso a archivos de imgenes y
sonido en tiempo de
construccin 234
atributos 82
especificacin del atributo
FileName 233
eventos 82
finalidad 81
imgenes, adicin 233
importar 206
archivos de pantalla 206, 207
color de componentes
convertidos 211
entradas de posicin y
conversin 208
458
L
lienzo, componente
atributos 54
eventos 54
finalidad 53
listas de bibliotecas
configuracin de un servidor 190
Consideraciones sobre el cuaderno
Definir informacin de AS/400 193
descripcin de trabajo 190
QCMDDDM 190, 191
QCMDEXC 190
LL
llamada a programas locales
funciones locales 256
funciones sin parmetros
obligatorios 257
M
Masked, atributo 74
matriz
modificacin durante la sesin de
depuracin 224
visualizacin durante la sesin de
depuracin 223
Maximum, atributo 145
medios, componente
atributos 99
control con el componente panel de
medios 100
eventos 99
finalidad 99
sealizacin de eventos 100
mensajes
buscar 249
compilar para traducir 250
crear 247, 248
disear 21
edicin 249
editar para traducir 251
eleccin del tipo de 248
nombrearchivo.TXM 413
supresin 249
tipos de 247
utilizacin con la lgica 250
utilizacin de etiquetas 251
mensajes de error
error al referenciar componentes 177
salida formateada
incorrectamente 231
men emergente, componente
atributos 132
eventos 132
finalidad 132
mtodos java, invocar 269
mtodos java, prototipo 270
Minimum, atributo 145
modificacin
eventos de enlace a subrutinas de
accin 26
ID de recurso 413
MsgSubText, atributo 107
N
nemotcnico
para botones de seleccin 136
para componentes recuadro de
seleccin 56
para elementos de men 104
para pginas del cuaderno 116
para pulsadores 134
nemotcnico (continuacin)
traduccin 22
Notify, evento 63
O
obtencin de la cuenta de registros
atributo de texto para componentes de
mltiples lneas 110
atributos de componente 25
cuenta de registros en un
subarchivo 154
estado de componentes botn de
seleccin 138
estado de componentes recuadro de
seleccin 55
valor para componentes
graduador 139
valores para componentes selector
cclico 146
Open Immediately, atributo 176
OpenEdit, atributo 155
P
pgina de cuaderno, componente
atributos 116
eventos 116
finalidad 116
pgina de cuaderno con lienzo,
componente
atributos 117
eventos 117
finalidad 117
palabras de edicin
correccin de salida formateada
incorrectamente 231
cuerpo de 231
estado de 232
finalidad 229, 230
partes de 231
posiciones de expansin de 232
panel de medios, componente
atributos 101
control del componente medios 100
eventos 101
finalidad 101
planificacin de la aplicacin 19
posicin de los componentes,
cambiar 178
proceso recurrente
llamadas recursivas 266
programa de lenguaje de control (CL)
ALCOBJ 196
CVTRPGSRC, herramienta de
conversin ILE RPG/400 214
QCMDDDM 190
QCMDEXC 190
STRPCCMD 263
programa de utilidad de
Empaquetado 399
programa de utilidad Definir informacin
de AS/400
establecimiento de un servidor en
tiempo de ejecucin 190
y empaquetado de la aplicacin 400
programas, no GUI 357
Q
QCMDDDM
cambio de la lista de bibliotecas
QCMDDDM, cambio de la lista de
bibliotecas 190
QCMDEXC
cambio de la lista de bibliotecas
QCMDEXC, cambio de la lista de
bibliotecas 190
190
190
R
READC (leer siguiente registro
modificado), cdigo de operacin 153
READS (leer registro seleccionado del
subarchivo), cdigo de operacin 153
RecordID, atributo 66
recuadro de grupo
atributos 79
eventos 79
finalidad 79
recuadro de lista, componente
atributos 75, 90
eventos 90
finalidad 90
y transferencia de datos 41
recuadro de seleccin, componente
atributos 55
eventos 55, 56
finalidad 55
obtencin y establecimiento de
estados 55
Recurso de Presentacin de Informacin
(IPF) 235
referencia
componentes en diferentes
ventanas 25
componentes en las mismas
ventanas 25
S
seleccin de elementos en recuadros de
combinacin 59
SelectItem, atributo 61
selector cclico, componente
ejemplo de 146
eventos 145
finalidad 145
servidores
acceso a archivos de base de datos de
AS/400 192
acceso a reas de datos de
AS/400 191
alteracin de archivos de base de
datos 196
bloqueo de archivos de base de
datos 196
comprobacin de nivel 196
configurar para desarrollar/ejecutar
aplicaciones 190
consideraciones de base de datos 197
consideraciones sobre el
cuaderno 189
consideraciones sobre la lista de
bibliotecas 190
definicin de la informacin de
AS/400 189
emisin de mandatos CL 190
llamada a programas AS/400 262
llamada a programas AS/400 con
archivos de estacin de trabajo 263
utilizacin de la aplicacin como
servidor DDE 254
SETATR
utilizacin 25
SetRcdIcon, atributo 67
SetRcdText, atributo 64, 67
SHOWWIN, cdigo de operacin
carga de ventana en memoria 177
sistema, atributos
comprobacin de errores de atributos
de sistema 27
sonido, adicin 233
START (iniciar un componente lgico),
cdigo de operacin
descripcin 260
ndice
459
T
temas finales
para componentes graduador 140
usos comunes de 37
temporizador, componente
eventos 167
finalidad 167
terminacin de un programa 182
Terminar al cerrar 182
texto
finalidad 30
para componentes campo de
entrada 73
para componentes recuadro de
combinacin 59
para componentes selector
cclico 146
Tick event 167
tiempo de ejecucin
actualizacin 407
eliminar 407
nombrearchivo.DLL 413
nombrearchivo.EXE 413
nombrearchivo.HLP 413
nombrearchivo.ODX 413
nombrearchivo.RST 413
suprimir 407
volver a empaquetar 407
volver a instalar 407
tipo de componente
descripcin 264
tipo de datos grficos 365
traduccin
compilar mensajes para 250
consejos para 22, 40
editar mensajes para 251
mensajes 22
nemotcnico 22
transferencia de datos
componentes que soportan 41
ejemplo 42
utilizacin 41
460
V
Validate, atributo 73
valor de color RGB 37
valores por omisin
abrir inmediatamente 176
contenido de la lista de ventanas 181
debido a cdigo de operacin
CLEAR 183
foco 181
orden de los elementos en un
recuadro de combinacin 58
valores del men del sistema 182
visible 176
varios procedimientos
llamada de prototipo 264
ventana con lienzo, componente
atributos 176
eventos 176
finalidad 176
ventanas
atributos 175, 176
atributos para cdigos de
operacin 30
cambiar el tamao 178
carga en memoria 177
cdigos de operacin para 30
consideraciones sobre el estilo 22
creacin al iniciar 177
cundo puede establecer
atributos 177
dar foco de entrada 38
diseo del contenido de 20
especificar cundo visualizar 38
establecimiento del contenido de la
lista de ventanas 181
establecimiento del foco 181
eventos 175, 176
finalidad 175, 176
mtodo para mover 178
nombres exclusivos para componentes
campo de entrada y texto
esttico 30
OpenImmediately, atributo 176
referencia 177
situar sin utilizar la barra de
ttulo 178
terminacin al Cerrar 182
utilizacin de sonido 233
valores del men del sistema 182
valores por omisin 176
Visible, atributo 176
visualizacin 176
visualizacin de imgenes en 233
View, atributo 70
vistas, cambiar 67
vistas de contenedor, cambiar 67
Visual RPG
barra de herramientas de la
depuracin 222
ejecucin de puntos de
interrupcin 221
establecimiento de fonts de la
depuracin 227
establecimiento de puntos de
interrupcin 219
informacin de arranque de la
depuracin 219
W
Windows, ayuda, creacin 239
IBM
SC10-3067-04