herramientas os/2 - espacio psicoanalítico de … · herramientas os/2 1 _~,_i figura k ejemplo de...

8

Upload: phamdang

Post on 09-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

HERRAMIENTAS OS/2

Programación Visual en REXX

.XXy'V x

En este artículo vamos a tratar los fundamentos de la programación visual en REXX

y hablaremos de dos de sus grandes productos para OS/2: VisPro/REXX de Hockware

y VX-REXX de Watcom.

H' ACE años, en 1985, tuve mi primer contac­

to con el lfnguaje REXX en el entornoVM/CMS. He de decir que fue una expe­riencia realmente gratificante y positiva. Me

enfrentaba a un lenguaje potente, flexible y a la vez sen­cillo. Un lenguaje que interaccionaba con el sistema de unamanera asombrosamente natural. Un lenguaje estructu-.rada que me permitía programar profesionalmente.

En el 85, el mundo de los PCs todavía estaba en paña­les. Era impensable una implementación de REXX en Pe.Pero las cosas fueron avanzando rápidamente y en pocosaños, dispusimos de REXX tanto para DOS como paraOS/2.

En el entorno microinformático REXX presentaba dosimportantes novedades respecto a su implementación demainframe: La primera consistía en ofrecer la posibilidadde ampliar las funciones incorporadas de REXX con fun­ciones externas escritas en otros lenguajes. La segunda, enposibilitar llamadas al intérprete de REXX desde pro­gramas escritos en otro lenguaje.

Estas dos innovaciones son las que han permitido la exis­tencia, en la actualidad, de aplicaciones que usan un entor­no de programación visual basadas en REXX. Para poderacceder a las APIs de Presentation Manager (PM) de OS/2,necesitamos utilizar funciones externas escritas en un len­guaje distinto al REXX ya que éste no tie~e acceso direc-

to a las APls. Por otra parte, REXX no interactúa direc­tamente con el entorno PM por lo que su código debe serejecutado desde otro programa que le proporcione elentorno PM. Aquí tenemos, pues las bases de la progra­mación visual en REXX. Toda la lógica de nuestras apli­caciones está escrita en REXX. Cuando hay interaccióncon PM, utilizamos funciones externas y el entorno PMnos viene dado por el ejecutable que se genera.

Los productos que nos permiten la programación visualen REXX siguen un esquema muy similar. Proporcionan

Franeese Rosés

Francesc Rosés, nacido en Barcelona en 1958, es licenciado enFilologfa Catalana por la Universidad de Barcelona. Desde 1985 desa­rrolla en el Centre dÍnformatica de la Universitat de Barcelona (ClUB)la coordinación informática de diversos proyectos de lexicografía com-

putacional. Profesor del Máster de Lingüistica Aplicada de laUniversidad de Barcelona. Desde 1994 es el responsable de la sección

de Microinformática del ClUB. Su dirección Internet [email protected].

José María Blaseo

José Marfa Blasco, nacido en 1960, es Licenciado en Matemáticaspor la Universidad de Barcelona. Ha sido profesor de Programación enla Facultad de Informática de Barcelona, y Coordinador Nacional de la

red EARN en Alemania. Sus temas de interés más recientes son lasredes, la programación orientada a objeto, las bases de datos, y todo lo

relacionado con OS/2. Su dirección Internet es [email protected].

RPP NQ 16

31

HERRAMIENTAS OS/2

EOf1\1 _~~ecled fdl,- Ylew lOOI$'. tlelp

una interfaz gráfica (GUI) que nospermite manejar los distintos objetos(campos de entrada, botones, conte­nedores, etc.) de manera visual (arras­trando y soltando para incluir obje­tos o cambiarlos de posición ytamaño). Además, la GUI sirve tam­bién para asignar comportamiento aesos objetos. Este comportamientoestá sujeto a eventos. Que un botón seapulsado es un evento. Cuando el even­to se produce, podemos realizar unaserie de acciones que configurarán sucomportamiento. El lenguaje que uti­lizamos para crear los comporta­mientos es REXX. La GUI suele pro­porcionarnos un editor que nos facilitala escritura de esos comportamientos.Si seleccionamos un evento de un obje­to, se nos abre una ventana de edi­ción. Allí podemos escribir las accio­nes necesarias para ese evento.

Cada objeto tiene un conjunto deacciones posibles. Hay acciones comu­nes para rodos los objetos (todo obje­to puede hacerse visible o invisible)pero las hay que sólo pueden reali­zarse en algunos objetos. Podemospulsar un botón, pero no un texto. Notiene sentido hacer un doble clic en unbotón, pero puede tenerlo en una lista(list box). La GUI nos facilita la escri­tura de estas acciones para añadir com­portamiento a un objeto.

Pongamos un ejemplo sencillo.Pretendemos escribir una aplicaciónsencilla que nos muestre una caja dediálogo con una lista y un botón.Queremos, además, que cada vez quepulsamos ese botón se nos añada alfinal de la lista la fecha actual. La GUInos proporciona una ventana vacía.ynos muestra el conjunto de objetosdisponibles. Seleccionamos el objetolista y lo arrastramos hasta la venta­na vacía. Seleccionamos el objetobotón y repetimos la operación. Unavez situados en la ventana, modifica­mos su tamaño y damos un título albotón. Utilizando una GUI, estamosdiseñando otra. Pero sólo tenemos losobjetos. Hay que dar comportamien­to a la aplicación. Para ello, accedemosa la lista de eventos del objeto botón

U D CJ

DD

Figura e Aspecto inicial de la GUI deVisPro/REXX

Moin RESOURCE.VPR SUBFROCS THREADS VP8ACKUP

Figura A Aspecto inicial de una carpeta deproyectos de VisPro/REXX

[orm ,~cl(!d~~ 011 Y"rDW Ioots l!4Npo '00

'0

E:roJe-CI 100ls ytlndows -Mun (ipl1ons lJ.etpEntrjilehJ -

\?J .

I

l.

Figura B Aspecto inicial de una carpetade proyectos de VX-REXX

mliiiii-!iiI Window1VRX Window1VRY

iii VX-REXX Projecl - Icon View

RPP Nº 16

32

HERRAMIENTAS OS/2

vispro/REXX

y escogemos el evento when clicked("al hacer clic"). Aparece el editor deeventos y arrastramos hasta el objetolista. Aparece el conjunto de accionesque podemos realizar con el objetolista. Escogemos add item to end("añadir un elemento al final"). Ahorasólo hay que especificar qué valor aña­dimos. Sencillo y efectivo.

Una vez tenemos la aplicación dise­ñada, sólo nos queda probarla. Paraello tenemos dos opciones. Crear unprograma ejecutable y ejecutarla, oejecutarla sin generar el programa eje­cutable. Si aparece algún error, siem­pre podemos ejecutar la aplicación enmodo depuración.

El esquema que aquí hemos esbo­zado a grandes rasgos es el que se uti­liza en todos los productos disponi­bles en el mercado.

Hablaremos aquí de dos de los pro­ductos de más éxito en el ámbito dela programación visual para el entor­no OS/2: VisProIREXX, deHockware, y VX-REXX, de Watcom.Ambos son unos excelentes productosque facilitan en gran manera el desa-

.... ~ j

I In••!-.C~!__~_Irl&:!!~ __

]." I ......

l't~ JIWh ~...... ~ ~Qn!!.. _~ 'Pa.I' fPwtollur1"",l

SíNoNoSíSíSísíSíSiSiNoSísíNosísísíNoSíSíNoSiSísíSíSísíSí

rrollo de aplicaciones. Estos produc­tos presentan posibilidades muy simi­lares. Yo destacaría dos diferencias:la interfaz utilizada para el desarro­llo y el método de generación de eje­cutables.

Hablemos primero de las posibili­dades que nos ofrecen. Ya ha blare­mas luego de las diferencias.

Ambos productos nos ofrecen casial completo toda la gama de objetosdisponibles en PM (ver Tabla A).

VisProIREXX, dispone de algunosobjetos realmente interesantes. En elapartado de multimedia hay que des­tacar el MMPM Video Object que nospermite visualizar un vídeo dentro decualquier caja de diálogo que diseñe­mos. Además tenemos control sobreel vídeo. Podemos hacer una pausa,rebobinar, aumentar o disminuir elvolumen o, simplemente, pararlo.También hay que agradecer a Hock­ware que nos haya incluido el CircularSlider, utilísimo para el control devolumen.

En el apartado de gráficos, VisProlREXX nos obsequia con un nuevo

siSíSísíNosisíSísíSíSí

. SíSíSíSíNosísíSísíSísíNoSíSíSísíSÍ-

Business GrapbicCircular SliderColor Selectorco!8bo BoxConnectionContainer­~Check ButtonCheck Button 3 statesDDE CHentEntry FiéldFree Form EntryGraphicGroup Boxlmage Editorlmage PushButtonlmage Radio ButtonList Box~M/2 VideoObject~Multy Line EntryNotebookPatternSelectorPush ButtonQueryRadio ButtonSliderSpin ButtonTextValue Set

RPP NQ 16

33

HERRAMIENTAS OS/2

1

_~,_I

Figura K Ejemplo de uso delos objetos Color Selector yPatlern Selector en VisPro/REXX

tos, editor de menús, menús emer­gentes, ayuda interactiva medianteconexiones a help, posibilidad de acti­var una línea de información, editor derecursos, capacidades multithread,depurador, acceso a bases de datos,etc. Las diferencias se establecen, quizá,en las posibilidades que presentan estascapacidades. Así, el depurador deVisPro/REXX permite el seguimientode los distintos threads de las aplica­ciones. No se ha observado esta capa­cidad en el depurador de VX-REXX.

Uno de los aspectos que más estáncuidando últimamente los desarrolla­dores es la interfaz con las bases dedatos. Tanto Hockware comoWatcom han apostado por ello y nosofrecen dos buenas soluciones aunquecon aproximaciones distintas.

VX-REXX nos ofrece una aproxi­mación más clásica presentándonosen un container el conjunto de tablas

tllabilSé e.eted w lOOts~"",Jj""-----"'T~

',o

"-'

Figura L Aspecto del VX-REXXChart Editor

Ambos productos ofrecen una seriede capacidades destacables: Controlde Drag & Drop para todos los obje-

FQr!PatOÉ! soportados: BMP (OS 12 y wínqows 3. O) ,TÚ;, PCX, GIl',~ruevision TargalVista,bitmap,Amiga IFF ! TLBM 1nterleaved bit.map.

, YUV12C 14-Mocion Frame ,i;luffer, IBM K1PS',!8M rma-geAccess executive, X' ~lindows bitmap,Archimedes Sprire format from RiBCOS,IBM Printer pag~ Segmento '

Accioriesi Capturador de pantallasConversión a,. blanco y 'negroImp"resiónen blanco y negro O ~olor en tpread~parte

Importación-Exportación a (-dEl)' U;dós' 'los fonnatosgráficos soportados. ' . ..

. ,. Posibilida 'de copiar y pegar desde' el clipboard,Posibilidad de recortar la imagen (crop)Obtener atributos de una imagenRotar la imagenEscalar la imagenÜtilizar hasta 14 herramientas para rnanipul,ir 1,'"imagenEtc.

objeto en su verSlOn 3.0: elImage Editor. Este objeto es,tal como su nombre indica, uneditor de imágenes que se inte­gra como cualquier otro obje­to en nuestras aplicaciones.Tenemos un buen ejemplo dela potencia de este objeto en laaplicación VisPro Paint que seincluye en el producto. LaFigura Jnos muestra el aspec­to de esta aplicación y la TablaB nos indica algunas de susposibilidades.

También en el apartado deimágenes VisP1"O/REXX inclu­ye dos objetos interesantes: elColor Selector, un objeto quenos permite seleccionar fácil­mente un color, y el PatternSelector, que nos permite selec­cionar una trama. La Figura Knos muestra el aspecto de estosobjetos. Por otra parte, caberemarcar el editor de gráficosde negocios de VX-REXX. Esrealmente magnífico tanto porsu sencillez como por el abani­co de moda lidades gráficas quepresenta. Las acciones disponi­bles para cada objeto, tambiénson similares. VisPro/REXX ofrece,además, la posibilidad de enviar cual­quier mensaje PM a un objeto.

RPP NQ 16

34

de una base de datos (Figura N). Lainformación de cada tabla se nos pre­senta en un Notebook (Figura O).

VisPro/REXX opta por una apro­ximación gráfica (Figura M). Nos pre­senta las' tablas con su estructura y susenlaces;~ Para obtener más datos deuna tabla, hacemos doble dic en ellay nos aparece un notebook con lainformación detallada de su estructu­ra. El mismo entorno gráfico nos sirvepara diseñar nuestras propias basesde datos. Una vez diseñada la base dedatos, podemos exportar su defini-

ción a una DDL Macro o a una DDL.La DDL Macro consiste en un CMDque contiene las instrucciones nece­sarias para crear la base de datos, sustablas y las relaciones entre las tablastal y como la hemos definido gráfica­mente (listado 1). Una DDL no esmás que elcQnjunto de instruccionesnecesarias para crear la base de datos(Listado 2). Y~Pro Database Designerpermite también exportar el esquemavisual de la base de datos al portapa­peles o a un archivo Metafile. Estafacilidad es re<ilmeme práctica si tene-

HERRAMIENTAS OS/2

mos que generar documentación sobrela estructura de una base de datos.

También dispone de un generadorde consultas guiado que resulta bas­tante práctico y que aprovecha la infor­mación de las tablas que hayamosseleccionado. Hay que hacer notarque Watcom exige que se haga unbind a cada base de datos que quera­mos utilizar con VX-REXX. Esto noes necesario con VisPro/REXX.

La manera como se integra una basede datos con la aplicación a desarro­llar, también difiere. Watcom obliga

/* .re~iistéi the rexxfun,ctions */

R"riiri'5€'.¡¡"lSilBI_Iil'

IVLAOM.COLU"'tS IVLAOM..T ABlES ZCCBFRA.AULES

ZCC8fRA.CErnRES ZCCBFRA.DIVISlOttS ZCCBFRA.ENTORKS

call sqlexec 'EXECUTE I~¡EDIATE :prep~string'

rc ; .rxfW1caddl 'SQLDES' ,'SOLAR', 'SQLDBS');rc ; i"founcaqdl 'SQLEXEC', 'SQLAR', 'SQrJEXEC' };'

ca11 •sqldbs .' CREATEDATABASE EJEM.PLO'i f SQLeA .SQLCQDE<> ' Oc then do

'say' SQLeA.. SQLCODE SQLCA. SQLMSGcaÜ sqldbs 's'rop USING DATABl'SE'say 'Press Enter to continue'puÜ"exi·t 1

endcal1 sqldbs 'START USING DATABAS E E,J.EMPLO'-­·ir SQLCA.SQLCODE <> O then do

say SQLCA. SQLCODE SQLCA. SQLl-1SGcall sqldbs 'STOP USINGDATABASE'say 'Press Encer"to: coneinue'pull'exit 1

endprep_str1.11g· ; 'DROP TABLE IDUSUAR. PERSONAL'

prep_st"ing ~

-¡CODIGONOMBREDEPARTA'CARGO

.PRIMARY KEY') ,

'CREATE ·TABLE IDOSUAR.PERSONAL',INTeger NOT NULL, ' ,VARCHAR (50) NÓ'rNULL;',INTeger NOT ~ruLL, ' ,INTeger NOT NULL,',

(CODIGO) '.-

1EIZCCBFRA.HAROSOFT ZCCBFRA.PROVEIDORS ZCCBFRA..RE.SPAULES

@IZCCBFRA,VAUlES

Figura N VX-REXX DatabaseAdministrator: Lista de tablas deuna base de datas

X'

~.j

call sq1exec 'EXECUTE IM!~EDIA'l'E :ptep_string',

r... (

prep_string ; 'ALTER TABLE IDUSUAR.PERSONAL',FOREIGN ·KEY (DEPARTA)',. 'REFERENCES IDUSUAR. DEPARTA' ,FOREIGN KEY (CARGO)',

'REFERENCES IDUSUAR.CARGOS'

call sqlexec • EXECUTE I~EDIATE : prep_st:ring'

ir SQLCA.SQLCODE <> o then dosaY·SQLCA.SQLCODE SQLCA.SQLMSGcal r sq:\cdbs 'STOP USING DATABASE~

say ,p,:ress: Enter to cont inuc'yullexit l'

'end

RPP NQ 16

35

Figura O VX-REXXDatabase Administrator:Coracterísticas de una tabla

1~ ~1tI«tl:d.y- I~

~ ~ h~===_=_=",.-s...=.';:¿;;o::::------- :;!~

; =:~:~ 1;"'" CX:lNvOCWod'>lltlo·~1<.eys ,.....,$1 CON'IOO,~ AOO~ COtNOCW"Ó'll".f" ,."., CHQ'>l ro~, ~HoIIId·~I"8_ltISI.J¡I.,¡JTu.oo ADO5~ COtI"'OC\VoiPrIorForrn_'-~ AlX)S5 c:::oN\'OC\Vi~Paa-f-'lJfm_-ÜIMlf*l Q1IJ:S$ O'JN\I'lXWOlI"rMr-F _.CI\MoIIIl 01G

L

Figura P Aspecto del TeamAdministrator

HERRAMIENTAS OS/2

CREATE lNDEX XlPERSONAL-0N IDUSUAR, PERSONA,L (NOHBRE -ASC)

DROP'TABLE PERSONAL

DROP TABLE DEPARTA '

CREATE','TABbE IDUS(JAR, PERSONAL

REXX y VX-REXX: La interfaz deusuario y la generación de ejecutables.

Mi opinión es que la interfaz deusuario es más coherente y más sen­cilla en el caso de VisPro/REXX.Mientras VX-REXX no nos muestracomo objetos aparte cada ventana,VisPro/REXX nos presenta cada formcomo un objeto en la carpeta de pro­yectos. La sintaxis de VisPro/REXXtambién me parece más clara.

En cuanto a la generación de eje­cutables, VX-REXX exige la presen­cia de una DLL runtime de unas 900KB. Con VisPro/REXX, podemosoptar por entregar al cliente un sojaejecutable o un ejecutable y una DLLruntime (en este caso la DLL ocupa191 KB.

Por todo ello, mi opción ha sido lade utilizar VisPro/REXX, sin dejar deestar atento a un producto realmentemagnífico como VX-REXX.

INTeger NOT NULL •VARCHAR(50) NOT NULL,INTeger NOT NULL,INTeger NOT NULL,

(cmüGO. NOMBRE

DEPARTACARGO

PRIM.'\.I,<Y KEY (CODIGO),FORE;J:GN" KEY (DEPARTA)

REFERENCESDEPARTA.FOREIGN KEY (CARGO)

REFERENCESCARGOS),',

CREATE TABLEIDUSUAR,DEPARrÁ(CODIGO" . INTeger NOT NUbL,:NOMBRE VARCHAR(lOOj,NOT NUbL,DIRECTOR, INTeger NOT' NULL, .LOCALIDAD VARCHAR(50) 'NOTNULL;

PRÚlllRY KEY ¡CODIGO), -FOREIGN kEY (DIRECTOR)

. 'REFERENCES PERSONAL)'

CREATE INDEX XlDEPi\RTAON -IDQSUAR,DEI'I\RTA (NOMBRE ASC}

CREATE TNDEX X,léARGOS ON iDUSlJAR.CARGOS' (CARQO ASC)

CREATE. INDEX X2tiEPARTA ON: 'IDUSUAR, DEPARTA. (LOCALIDAD'AS,C j: e ,

, DRO-P "TABLE CARGOS i:

éREATE TABLE IDUSUAR,cARGOS. (CODIGO INTeger, NOT"NiJLL,

CARGO VARCHAIl (100) 'NOT.NULL,PRIMZl-RYKEY ¡COOlGO))

Shadow del menú emergente de unicono de formo

Las sombras de forms difieren delas de WPS en algo fundamental.Mientras las de WPS no tienen repre­sentación en el sistema de archivospor almacenarse en el archivoOS2.lNI, las de VisPro/REXX sondirectorios en un proyecto. Un archi­vo llamado !!LINK existe en el direc­torio de la form original. Esto pre­viene la pérdida de la estructura delproyecto debido a cambios en losarchivos de sistema de OS/2 y mejo­ra la fiabilidad sobre la implementa­ción de las sombras en OS/2.

Las sombras de forms se crean pordefecto como objetos de sólo lectura.Para cambiar este atributo, hay queseleccionar Read only en el menúemergente de la formo

Más arriba hemos hablado de dosgrandes diferencias entre Vis Pro/

~- ------I ...."'LAUU 2.- Fragmento d~ una DDL generada por el VisP~o Datobase Designer

a incluir dos objetos en la caja de diá­logo. Uno de conexión y otro de inte­rrogación. A partir del de interroga­ción, en el que habremos especificadonuestra consulta, se nos generan losobjetos del panel que ha de acceder ala base de datos. VisPro/REXX opta,una vez más, por una solución visual.Arrastrando una o más tablas desdeel Database Designer hasta una form(panel, ventana, caja de diálogo), senos generan los objetos necesariospara el acceso a las tablas y el códigoREXX correspondiente.

Hay también dos utilidades inte­resantes que nos ofrece VisPro/REXXy que no encontramos en VX-REXX:El Help Editor y el TeamAdministrator. El Help Editor, comosu nombre indica, es editor de archi­vos IPF. Es bastante completo y per­mite compilar los archivos en forma­to HLP yen formato INF.

El Team Administrator permite alos desarrolladores comparar los nive­les de cambio y las versiones de unproyecto de manera sencilla y clara.Permite deshacer un cambio y moni­torizar los progresos del desarrollo.Todos los cambios se almacenan auto­máticamente y las forms pueden serbloqueadas para asegurarse de quesólo un programador las modifica ala vez. También incluye la posibili­dad de ver una form en modalidad de"sólo lectura" y la creación de som­bras de forms para facilitar el accesoen un entorno de sistema distribuido.

VisPro/REXX incorpora en su ver­sión 3.0 el nuevo concepto de Sombrasde Forms. Las sombras de forms sonsimilares a las sombras de WPS. Tepermiten incluir una form deVisPro/REXX en otra carpeta de pro­yecto. La form original puede estarlocal en tu máquina o en un servidorremoto. Esto permite compartir formsde uso común en diversos proyectos.

Las sombras de forms se crean dela misma manera que las de WPS.Podemos arrastrar una form a unanueva carpeta de proyecto mante­niendo pulsad'as las teclas[Ctrl]+[Mayús] o seleccionar Create

RPP Nº 16

36