COMPILADOR WEBGATE MANUAL DE PROGRAMACIÓN CONTENIDO MANUAL DE PROGRAMACIÓN ............................................................................................ 1 CONTENIDO ........................................................................................................................ 2 INTRODUCCIÓN .................................................................................................................. 6 1 INTERPRETACIÓN DEL ARCHIVO DE PANTALLA ........................................................... 7 1.1 Acciones Iniciales ........................................................................................................................................7 1.2 Limitaciones y Notas ....................................................................................................................................7 1.3 Palabras Clave Soportadas ............................................................................................................................8 1.4 Interpretación de las Constantes que Describen Teclas de Función .....................................................................9 1.5 Interpretación de los Atributos de Visualización de Campo (DSPATR y COLOR) ....................................................9 1.5.1 Atributos de Color ..................................................................................................................................9 1.5.2 Atributos de Pantalla ............................................................................................................................ 10 2 ELEMENTOS GRÁFICOS INCRUSTADOS DE IBM .......................................................... 11 2.1 Botón de Radio.......................................................................................................................................... 11 2.2 Casilla de Selección ................................................................................................................................... 12 2.3 Cuadro de Texto ........................................................................................................................................ 12 2.4 Botón Pulsador .......................................................................................................................................... 13 2.5 Título de Ventana ...................................................................................................................................... 13 3 ELEMENTOS GRÁFICOS ESPECÍFICOS DE WEBGATE400 ............................................. 15 3.1 Riferimento msgid per text lunghe ............................................................................................................... 15 3.2 Ignorar Campo Gráfico ............................................................................................................................... 16 3.3 Ocultar Campo Gráfico ............................................................................................................................... 16 3.4 Definiciones Layout .................................................................................................................................... 16 3.5 Ignora definiciones Layout por proyecto ....................................................................................................... 16 3.6 Tecla funcional variable .............................................................................................................................. 16 3.7 Copyright ................................................................................................................................................. 16 3.8 Visualiza en gráfica campo hidden (oculto) ................................................................................................... 17 3.9 Definir cambio de teclado ........................................................................................................................... 17 3.10 Web Browser ............................................................................................................................................ 17 3.11 Expansión horizontal y vertical de un marco (frame) ...................................................................................... 17 3.12 Valorización campos hidden a través de MSGID ............................................................................................. 18 3.13 Valorización de campos hidden a través de MSGCON ..................................................................................... 18 3.14 Valorización de campos hidden a través de DEFAULT ..................................................................................... 18 3.15 Cabecera de Columna de Subarchivo ........................................................................................................... 18 3.15.1 Encabezamientos con referencia a campo presente en otro formato ........................................................... 18 3.15.2 Cabeceras Compartidas (//) .................................................................................................................. 18 3.16 Marcos ..................................................................................................................................................... 19 3.17 Alineación constante o campo de output ....................................................................................................... 19 3.18 Modifica ocupación campo en pantalla .......................................................................................................... 19 3.19 HiperVínculos ............................................................................................................................................ 20 3.20 Texto Desplazable ..................................................................................................................................... 21 3.21 Imágenes ................................................................................................................................................. 22 3.22 Iconos de Texto......................................................................................................................................... 22 3.23 Iconos Extendidos ..................................................................................................................................... 24 3.24 Iconos Genéricos, Imágenes JPG y SWF ....................................................................................................... 25 3.25 Botones de Imagen.................................................................................................................................... 25 3.26 Iconos de Comando ................................................................................................................................... 26 3.27 Mensajes Variables .................................................................................................................................... 27 3.28 Búsqueda con Clic Derecho ......................................................................................................................... 27 3.29 Micro-Gráficas Contextuales ........................................................................................................................ 27 3.29.1 Tipo 0: Flecha en una Línea de Tres Colores ............................................................................................ 28 3.29.2 Tipo 1: Histograma a un Color ............................................................................................................... 28 3.29.3 Tipo 2: Histogramas Apilados ................................................................................................................ 29 3.29.4 Tipo 3: Estado de Avance...................................................................................................................... 29 3.29.5 Tabla de Colores .................................................................................................................................. 29 3.30 LOBS ....................................................................................................................................................... 29 3.30.1 Definición del Cuerpo de los LOB ............................................................................................................ 29 3.30.2 Guardado ............................................................................................................................................ 30 3.30.3 Índices ............................................................................................................................................... 30 COMPILADOR WEBGATE – Manual de programmación 3.30.4 Salvar y Restaurar LOB ......................................................................................................................... 30 3.30.5 API para RPG....................................................................................................................................... 30 3.31 Campos SQL ............................................................................................................................................. 32 3.32 Casillas de Verificación ............................................................................................................................... 32 3.33 Listas Combinadas ..................................................................................................................................... 33 3.33.1 Composición del TEXT .......................................................................................................................... 33 3.33.2 Características del Campo ..................................................................................................................... 34 3.33.3 Valores de Retorno ............................................................................................................................... 35 3.33.4 División de Valores Disponibles en la Lista............................................................................................... 35 3.33.5 API para Creación de Listas ................................................................................................................... 35 3.34 Manejador de Fechas ................................................................................................................................. 36 3.34.1 Sintaxis del TEXT sin Formateo de Salida ................................................................................................ 36 3.34.2 Sintaxis del TEXT con Formateo de Salida ............................................................................................... 37 3.35 Gráficos.................................................................................................................................................... 38 3.35.1 Información General ............................................................................................................................. 38 3.35.2 Sintaxis .............................................................................................................................................. 38 3.35.3 API Involucradas .................................................................................................................................. 38 3.35.4 Gestión Simplificada de GRÁFICOS ......................................................................................................... 39 3.36 Font ......................................................................................................................................................... 39 3.37 Drag & Drop ............................................................................................................................................. 40 3.38 Campos de valorización remota ................................................................................................................... 41 3.39 Extended Button........................................................................................................................................ 42 3.40 File Manager e File Chooser ........................................................................................................................ 42 3.40.1 3.41 3.41.1 Programa de generación ....................................................................................................................... 47 3.41.2 Api WGUITC ........................................................................................................................................ 50 3.42 4 Información General .................................................................................................................................. 53 4.2 5 Resumen FMTATR ...................................................................................................................................... 54 GESTIÓN DE SUBARCHIVOS ....................................................................................... 56 5.1 Reconocimiento de Subarchivos................................................................................................................... 56 5.1.1 5.1.2 Reconocimiento de Cabeceras de Columna .............................................................................................. 56 Reconocimiento de las Opciones ............................................................................................................ 56 5.2 Optimización de Espacio en Filas Horizontales ............................................................................................... 56 5.3 Paginación ................................................................................................................................................ 57 5.4 Expansión subarchivos en las ventanas ........................................................................................................ 57 5.5 Colocación ................................................................................................................................................ 57 5.5.1 Comportamientos según los parámetros ................................................................................................. 57 5.5.2 Forzamiento del programa .................................................................................................................... 57 5.5.3 7 Sumario de TEXT ....................................................................................................................................... 51 ATRIBUTOS DE FORMATO .......................................................................................... 53 4.1 6 Sintaxis .............................................................................................................................................. 43 Menu con teselas ....................................................................................................................................... 46 Limitaciones ........................................................................................................................................ 57 5.6 Pantallas con Dos Subarchivos .................................................................................................................... 58 5.7 Jerarquías Generadas por Programa............................................................................................................. 58 5.7.1 Mostrar Jerarquías DINÁMICAS .............................................................................................................. 58 5.7.2 Mostrar Jerarquías ESTÁTICAS .............................................................................................................. 58 5.7.3 Mostrar Jerarquía Guardando el Estado de Despliegue de Nodos Individuales .............................................. 59 5.7.4 Casos Prácticos .................................................................................................................................... 59 Funciones de Personalización de Subarchivos, SQL y Gráficas ................................... 63 6.1.1 Función de Tabla de Gráfica .................................................................................................................. 63 6.1.2 Función de Actualización ....................................................................................................................... 65 6.1.3 Función de Jerarquía ............................................................................................................................ 66 6.1.4 Funciones de Resumen ......................................................................................................................... 66 6.1.5 Funciones de Resumen Gráficas ............................................................................................................. 66 6.1.6 Resumen de Atributos de Formato Aplicables a Rejillas, SQL y Gráficas ...................................................... 70 CONFIGURACIÓN DEL PROGRAMA ............................................................................. 71 Page 3 de 108 COMPILADOR WEBGATE – Manual de programmación 7.1 Variables de Entorno .................................................................................................................................. 71 7.1.1 Declaración en RPG III ......................................................................................................................... 71 7.1.2 Declaración en RPG IV .......................................................................................................................... 71 7.2 Palabras Clave ROLLUP y ROLLDOWN........................................................................................................... 73 7.3 Interpretación de la Estructura de Datos INFDS............................................................................................. 73 7.4 8 Interpretación pantalla en SHARE (compartida) ............................................................................................. 73 SERVICIOS DE APLICACIÓN ...................................................................................... 74 8.1 Servicios de Comando ................................................................................................................................ 74 8.1.1 Estándar y Personalizado ...................................................................................................................... 74 8.1.2 8.2 Iconos de Comando.............................................................................................................................. 74 Scripts y WGEXEIOUT ................................................................................................................................ 74 8.2.1 8.3 9 Manejar un Objeto de Salida de un Comando .......................................................................................... 75 Soporte de Ejecución de Programas PC ........................................................................................................ 75 MENÚS ....................................................................................................................... 77 9.1 Comando de Conversión o Integración ......................................................................................................... 77 9.2 El DBmenu ............................................................................................................................................... 79 9.2.1 Estructura de la Base de Datos .............................................................................................................. 79 9.3 Ajustes Globales ........................................................................................................................................ 81 9.4 Hallazgo menú de WEBGATE ....................................................................................................................... 81 9.4.1 Hallazgo menú único ............................................................................................................................ 81 9.4.2 Hallazgo menú en el cambio del sistema informativo ................................................................................ 82 9.4.3 Menú que hay que visualizar en el momento del Logon ............................................................................. 82 9.4.4 Api para escribir/leer parámetros ambientales ......................................................................................... 82 10 MANEJO DE MENSAJES ............................................................................................ 83 10.1 Mensajes Entre Usuarios............................................................................................................................. 83 10.2 Mensajes de Programa ............................................................................................................................... 84 10.3 Emulación de SNDBRKMSG y SNDUSRMSG ................................................................................................... 85 11 GESTIÓN DE COMPAÑÍAS ........................................................................................ 86 11.1 Introducción ............................................................................................................................................. 86 11.2 Archivos ................................................................................................................................................... 86 WGCOMP .......................................................................................................................................................... 86 WGCOMPT ........................................................................................................................................................ 86 12 AYUDA ..................................................................................................................... 87 12.1 Descripción ............................................................................................................................................... 87 12.2 Puntos de Enlace de la Ayuda...................................................................................................................... 87 12.3 Información Técnica ................................................................................................................................... 87 12.3.1 Estructura de Directorios para Guardar los Documentos ............................................................................ 87 12.3.2 Plantillas ............................................................................................................................................. 88 12.3.3 Archivos Involucrados........................................................................................................................... 88 12.4 Paneles de Administración de la Ayuda ......................................................................................................... 88 12.5 Migración de una Ayuda Existente ............................................................................................................... 88 12.5.1 Modo .................................................................................................................................................. 88 12.5.2 Ejecución Repetida de la Migración ......................................................................................................... 88 12.5.3 API WEBGATE400/WGFHLP01 ................................................................................................................ 88 12.5.4 Ejemplo de archivo HTML ...................................................................................................................... 91 13 UTILIDADES ............................................................................................................ 93 13.1 Extracción y Restaurado de Uno o Más Archivos de Pantalla: Comando WGDSPSND ........................................... 93 13.2 Borrado de Especificaciones Gráficas de Archivos de Pantalla .......................................................................... 94 13.3 Depuración de un Programa WG-Compilado .................................................................................................. 94 14 VERSIONES WEBGATE (RXXXX) ............................................................................... 96 15 Globalizar aplicaciones con el uso de WEBGATE400 ................................................ 97 15.1 Introducción ............................................................................................................................................. 97 15.2 Definiciones .............................................................................................................................................. 97 15.2.1 Globalización/Localización ..................................................................................................................... 97 15.2.2 Glyphs y caracteres (characters) ............................................................................................................ 97 Page 4 de 108 COMPILADOR WEBGATE – Manual de programmación 15.2.3 Script ................................................................................................................................................. 97 15.2.4 Set de caracteres (Character Set) ......................................................................................................... 97 15.2.5 SBCS/DBCS/MBCS ............................................................................................................................... 97 15.2.6 Code Page........................................................................................................................................... 97 15.2.7 Sistema de codificación de datos (Character Encoding) ............................................................................. 98 15.2.8 Unicode .............................................................................................................................................. 99 15.2.9 Universal Character Set (UCS) ............................................................................................................. 100 15.2.10 Unicode Trasformation Format (formato de transformación Unicode) (UTF) ............................................ 100 15.2.11 UTF-EBCDIC ................................................................................................................................... 100 15.3 LA ESTRATEGIA....................................................................................................................................... 102 15.3.1 Enfoque global ................................................................................................................................... 102 15.3.2 Consideraciones sobre los datos........................................................................................................... 102 15.4 Tácticas de Data Managment .................................................................................................................... 102 15.5 Proyectos piloto ....................................................................................................................................... 102 15.6 Globalización y iSeries.............................................................................................................................. 103 15.7 Definiciones de campos Unicode en Webgate400 ......................................................................................... 103 15.7.1 Asignación de un CCSID a través de la palabra llave TEXT ...................................................................... 103 15.7.2 CCSID Variable .................................................................................................................................. 103 16 Tabs Control .......................................................................................................... 105 16.1 Modificaciones en el display file ................................................................................................................. 105 16.1.1 Overlay............................................................................................................................................. 105 16.1.2 Definición del formato de control.......................................................................................................... 105 16.1.3 Definición de los campos en el formato de control .................................................................................. 105 16.2 Modificaciones al programa ....................................................................................................................... 107 16.3 Colocación del cursor ............................................................................................................................... 108 Page 5 de 108 COMPILADOR WEBGATE – Manual de programmación INTRODUCCIÓN La aplicación Webgate400 se ha desarrollado como un "SISTEMA PARA EL DESARROLLO DE INTERFAZ GRÁFICA". El WG-Compilador (el cual actúa en realidad como un "pre-compilador") es una herramienta que le confiere el uso de nuevas funciones básicas también en los programas antiguos. El objetivo de este producto no es tan sólo realizar una simple conversión, sino suministrar varias funciones gráficas capaces de cumplir con las necesidades del mercado y del usuario en los años venideros. Aunque el WG-Compilador se ha utilizado con éxito en centenares de aplicaciones diferentes, escritas por multitud de programadores diferentes, creemos que tan sólo hemos implementado el 80% del potencial técnico del manejo de archivos de pantalla. En el restante 20%, es necesaria una cuidadosa valoración para decidir si desarrollar técnicas actualmente no gestionadas, las cuales podrían sin embargo suponer un obstáculo para un uso completo de las funciones disponibles. Básicamente, si desea aprovechar completamente el potencial de Webgate400, los archivos de pantalla y fuentes RPG deben tener la siguiente configuración: Los archivos de pantalla tiene que definirse externamente. La paginación de subarchivos (n filas leídas y mostradas, en lugar de llenar completamente el subarchivo antes de su visualización). Cuando es necesaria, si utiliza este método, puede perder (o limitar) la disponibilidad para visualizar gráficos, realizar ordenaciones, agrupar y obtener jerarquías. Page 6 de 108 COMPILADOR WEBGATE – Manual de programmación 1 INTERPRETACIÓN DEL ARCHIVO DE PANTALLA 1.1 Acciones Iniciales En general, no es necesario modificar el código existente. Sin embargo, puede mejorar considerablemente la estética general y funciones con poco esfuerzo, comunicando con las aplicaciones para PC y animando a los usuarios a actualizar el sistema y el software. Por ejemplo, la mejor relación coste/beneficio se obtiene añadiendo marcos a las pantallas y llevándolas a 132 columnas cuando estén particularmente llenas. Allí donde haya subarchivos, opcionalmente puede implementar funciones Jerárquicas Estáticas y Dinámicas. Normalmente, no son necesarias acciones específicas en los programas RPG. 1.2 Limitaciones y Notas La palabra clave DSPMOD definida en el formato de una pantalla no está soportada dado que no es posible gestionar dinámicamente la ocupación del formato. La palabra clave IGNORE si está combinada con un subarchivo, también debe estar combinada a su registro de control de subarchivo y viceversa. El WG-Compilador automáticamente crea una serie de variables dentro del fuente RPG a ser WG-Compilado: las variables que comienzan por 'WG', 'WR', 'WP', 'WT', 'WL', 'WE', 'WC',' WW' no pueden utilizarse, con el objeto de prevenir problemas durante la fase de conversión. Hay ciertas limitaciones con los nombres de las variables de pantalla o variables dentro del programa a WG-Compilar y los formatos de pantalla. Los siguientes nombres no pueden usarse: KIDX, K18P18WG, K18toFMT, K18WG, P18WG, DSPFNWG, FMTNWG, KTYPEWG, SFLRRNWG, DATAXH, FMTTYPE, wWIN, RECA, FMTIND99, SFLPAG, SFLTOPRR, SFLLSTRR, SFLEOF, Q512, Q58, QMSG, Q59to382, Qw, Qwtop, Qwleft, Qwheight, Qwweigth, QdspfLIB, QthisPgm, Qerrmsg, QcsrFmt, QcsrFld, QcsrPosF, QcsrLin, QcsrCol, QcsrLinW, QcsrColW, QcsrSFLr, Qdummy, IND24, IND99, FMTCYCL, wgs*, win*, FMTFLDSZ, I, F, readcRRN, SFLNXTin, memIND, dspfLIB, memCOD, memWGfmt, IND24DS, IND99DS, MSGID7, MSGLIB, MSGFIL, MSGDTA, MSGTXT, MSGFLD, A1, A13, i8, memKIDX, memH, memRRN, B0, B1, B2, B3, B4, B5, B6, B7, IDXAPI, IDXREADC, INACTION, LICRR, RCVMSG, ADDMSG, ADDMSGID, RTVMSGID, ENDJOB, RUNFMT, SEXEC, DATAXD, dSFLC, dSFLEOF, dFMTIND9, dFMTFLD, RRN, $ARR, $ARR3, $SPEC, $SPEC2, $COMMENT, $SPACE, $DSPF, $Fdesc, $Dname, $Dfrom, $DfromN, $Dto, $DtoN, $Dtype, $Ifmt, $INFDSn, $INFDSds, $Ifrom, $Ifrom29, $Ifrom30, $Ito, $Ito36, $Ito37, $Itype, $Idec, $IBLANK1, $InputP, $IfmtInd, $IfldExt, $IBLANK2, $IBLANK3, $IfldInt, $Ifldind, $WORKSTN, $Fkwords, $IN01, $condition, $condOR, $LINE, $F1, $CODE, $F2, $RESULT, $HI, $LO, $EQ, memSRCDTA, mIfldExt, mIfldInt, mF1, WDTA, $WBEF, $WSPEC, $WCOM, $WcondOR, $Wconditio, $Wproc, $NAME, $WIN01, $WLINE, $WF1, $TYPE, $WCODE, $LENGH, $WF2, $WF2L, $WTYP, $DECIM, $WINZ, $WRESULT, $WLEN, $WDEC, $WHIloEQ, $WHI, $WLO, $WEQ, $WCOMM, TWINX, WINspec, WGWLINP, WGWCOLP, WGWLIN, WGWCOL, $$HLE, $$HI, $$LO, $$EQ, SCRn, SCRa, WGWn, WGWa, WGBUFFa, WGBUFF, WGTOa, WGTO, WGFLDB, WGFLDBa, WGFLDP, WGFLDPa, WGSFLP, WGSFLPa, K2a, K2, WGDSmax, WGDSmaxa, T24, T24p, T24A, T300, T100, TIND, T405, TDSP, TDSPl, TDSPu, TDSPi, TDSPp, TDSPpr, TfDSP, TfDSPl, TfDSPu, TfDSPi, TfFMT, TfFMTr, TfFMTs, TfFMTi, TfFMTw, TfFMTa, TfPAGv, TfPAGa, TfTYP, TfSFLr, TfWIN, TfWspe, TfVLDK, Tffir, Tflas, TsflE, TfSHAR, TfRRN, TfRRC, TfPAG, TfTOP, TfTOPW, TfLST, TfEOF, TdspfINDDS, NOTE, TF, TDUI, TDQ, TDM, TP, TC, TCX, TbSND, TSND, TRCV, TaRCV, RMVB, CLRK24, TSNDm, TEXFR, TRUNF, TINDDS, TZIPI, TCXC, TGETLB, TSHARE, TRMVC, TLST, TCP, TINK24, TDFTa, TDFTn, LC, UC, bnumeric. Es preferible evitar cadenas de caracteres con los caracteres "H", "F", "D", "I", "C", "O" (también en minúscula) en las Matrices en Tiempo de Compilación en su posición 6, porque en ciertos casos, pueden confundirse con caracteres que definen especificaciones durante la fase de conversión. Page 7 de 108 COMPILADOR WEBGATE – Manual de programmación 1.3 Palabras Clave Soportadas A continuación hay una lista de palabras clave que son emuladas por Webgate400: CAnn REF CFnn REFFLD CHANGE ROLLDOWN CHCCTL ROLLUP CHECK RTNCSRLOC CHIOCE SETOF CLRL SETOFF CMP SFL CNTFLD SFLCLR COLOR SFLCSRRRN COMP SFLCTL CSRLOC SFLDSP DATE SFLDSPCTL DFT SFLEND DFTVAL SFLINZ DSPATR SFLLIN DSPSIZ SFLMSG EDTCDE SFLMSGID EDTWRD SFLNXTCHG ERRMSG SFLPAG ERRMSGID SFLRCDNBR ERRSFL SFLSIZ INDARA SLNO MLTCHCFLD SNGCHCFLD MSGCON SYSNAME MSGID TIME OVERLAY USER PAGEDOWN VALUES PAGEUP VLDCMDKEY PROTECT WINDOW RANGE WDWTITLE Page 8 de 108 COMPILADOR WEBGATE – Manual de programmación 1.4 Interpretación de las Constantes que Describen Teclas de Función Las constantes que describen teclas de función se interpretan basándose en la configuración de diseño ejecutada a nivel de proyecto para formatos de pantalla completa y ventana: El número de filas para estas constantes puede especificarse empezando desde la parte inferior. Se especifican los caracteres iniciales, por ejemplo F03 o CMD03, etc. Si todos ellos están en la misma cadena de caracteres, necesitan separarse con dos espacios en blanco; si cada constante es una cadena de caracteres simple, entonces sólo se necesita un carácter de separación. Los campos ocultos o de salida puede interpretarse como teclas de función: deben tener el TEXT <w>*fkeyvar</w> y pueden situarse en cualquier lugar de la pantalla. El TEXT <w>*nofkey</w> puede añadirse a un formato haciendo posible ignorar las condiciones establecidas a nivel de proyecto en cuanto a la interpretación de las filas inferiores de dicho formato. 1.5 Interpretación de los Atributos de Visualización de Campo (DSPATR y COLOR) Cuando están habilitados los Atributos de Color, tienen prioridad sobre otros atributos gráficos, en caso contrario tienen prioridad los Atributos de Pantalla. 1.5.1 Atributos de Color Atributo de vídeo inverso (RI) Atributo de Color Texto Fondo OFF BLU (Azul) Color de texto RGB(0, 0, 255) Ninguno OFF GRN (Verde) Color de Texto RGB(51,149, 53) Ninguno OFF RED (Rojo Color de texto RGB(0, 0, 255) Ninguno OFF PNK (Rosa) Color de texto RGB(255, 0, 255) Ninguno OFF YLW (Amarillo) Color de texto RGB(252, 128, 3) Ninguno OFF TRQ (Turquesa) Color de texto RGB(3, 188, 250) Ninguno ON BLU (Azul) Color de texto RGB(0, 0, 255) Color de fondo RGB(221, 221, 255) ON GRN (Verde) Color de texto RGB(51, 149, 53) Color de fondo RGB(221, 255, 221) ON RED (Rojo) Color de texto RGB(0, 0, 255) Color de fondo RGB(255, 207, 159) ON PNK (Rosa) Color de texto RGB(255, 0, 255) Color de fondo RGB(255, 221, 255) ON YLW (Amarillo) Color de textoRGB(252, 128, 3) Color de fondo RGB(255, 255, 221) ON TRQ (Turquesa) Color de texto RGB(3, 188, 250) Color de fondo RGB(222, 254, 253) Page 9 de 108 COMPILADOR WEBGATE – Manual de programmación 1.5.2 Atributos de Pantalla Atributo de alta intensidad (HI) Atributo de vídeo inverso (RI) Atributo de subrayado (UL) Atributo de parpadeo (BL) ON ON ON ON ON ON ON ON ON ON ON ON Texto Fondo ON Color de texto Ninguno Color de texto Ninguno Color de texto Color de fondo Color de texto Ninguno ON Color de texto Color de fondo ON Color de texto Color de fondo ON Color de texto Ninguno ON ON Atributo de separador de columna (CS) Blanco Color de fondo ON Color de texto Ninguno ON Color de texto Color de fondo ON ON Color de texto Color de fondo ON ON Color de texto Color de fondo ON ON ON Color de texto Color de fondo ON ON ON Blanco Color de fondo ON ON ON Color de texto Ninguno ON Page 10 de 108 ON COMPILADOR WEBGATE – Manual de programmación 2 ELEMENTOS GRÁFICOS INCRUSTADOS DE IBM En modo 5250, estas palabras clave están optimizadas para el emulador Client-Access de IBM. Tienen una estructura común: Hay un campo que representa al administrador de objetos únicos; Existe un campo de control oculto vinculado a cada objeto (opcional en botones de radio); Hay una serie de atributos que acompañan al campo administrador y al campo de control, y define las propiedades de visualización del objeto. Vínculo a IBM – Documentación de referencia DDS: http://publib.boulder.ibm.com/pubs/html/as400/v4r5/ic2924/info/db2/rbafpmst02.htm Ejemplo: CALL WEBGATE400/RADIOC (desde 5250 ó modo gráfico) Los fuentes se encuentran en WEBGATE400/QDDSSRC RADIOD WEBGATE400/QRPGLERC RADIO WEBGATE400/QCLSRC RADIOC 2.1 Botón de Radio Es un campo que contiene un número fijo de opciones y el usuario puede escoger sólo una: Se utiliza cuando tiene que indicar una elección donde las diversas opciones disponibles son mutuamente excluyentes. El campo aparece en la pantalla como una lista vertical de opciones con un campo de entrada a la izquierda, o como un grupo de botones. Las palabras clave obligatorias y las gestionadas por el WG-Compilador son las siguientes: SNGCHCFLD (Campo de selección única): Este es un campo de tipo Y (numérico), de tamaño 2 con 0 decimales. Su posición identifica la posición de la primera opción. En entrada contiene el índice de la opción escogida (0 si no se ha elegido nada); en salida contiene la opción predeterminada. Los parámetros no son obligatorios: Cuando no están establecidas, las opciones se presentan en una columna simple. Los parámetros gestionados por el WG-Compilador son: *NUMCOL, *NUMROW, *GUTTER. El parámetro *NUMCOL contiene el número de columnas en las que se distribuyen las opciones. Debe ser un entero positivo, capaz de contener todas las opciones. Por ejemplo, las opciones: Opción 1 Opción 2 Opción 3 Opción 4 Opción 5 Opción 6 Si introducimos *NUMCOL = 2, se distribuirán de la siguiente forma: Opción 1 Opción 2 Opción 3 Opción 4 Opción 5 Opción 6 De forma similar, el parámetro *NUMROW indica el número de filas en las que se mostrarán las opciones. Si se entra *NUMROW = 2, las opciones se mostrarán en dos columnas: Opción 1 Opción 3 Opción 5 Opción 2 Opción 4 Opción 6 El parámetro *GUTTER indica el número de espacios vacíos que deben situarse entre cada columna (si se ha indicado el parámetro *NUMCOL) o entre filas (si se especificado el parámetro *NUMROW). Debe haber al menos una de las dos. Si no se especifica entonces se sumen tres espacios. CHCCTL (Control de opción): Se utiliza en un campo de selección para verificar si las opciones son válidas. La sintaxis es CHCCTL(número-opción &campo-control). El número de opción es obligatorio y puede tener un valor desde 0 a 99. El campo de control es obligatorio y especifica el nombre de una variable (precedido por el carácter "&"), la cual está definida en el mismo formato, Y, longitud 1, 0 decimales y uso H (oculto). A continuación se indican los valores del campo de control y sus significados: Valor Significado en salida Significado en entrada 0 Disponible No seleccionado 1 Seleccionado Seleccionado 2–3–4 No disponible (campo en gris) CHOICE (Opción del campo de selección): Esta palabra clave define una opción para un campo de selección. La sintaxis es CHOICE(número-elección clave-elección). El símbolo ">" hace posible habilitar un acceso directo presionando la tecla Alt junto con la letra subrayada (la letra subrayada es la que sigue inmediatamente al símbolo ">"). Ejemplo: Page 11 de 108 COMPILADOR WEBGATE – Manual de programmación A INT01H 1Y 0H A A INT02H OPINTV 1Y 0H 2Y 0B 13 45SNGCHCFLD A A CHCAVAIL((*COLOR BLUE)) CHOICE(1 '>> >Sì') A CHCCTL(1 &INT01H) A A CHOICE(2 '>> >No') CHCCTL(2 &INT02H) 2.2 Casilla de Selección Este es un campo que contiene un número establecido de opciones y el usuario puede elegir una o más de ellas. El campo aparece en la pantalla como una lista vertical de opciones con un campo de entrada a su izquierda o como un grupo de botones. Las palabras clave obligatorias y las gestionadas por el WG-Compilador son las siguientes: MLTCHCFLD (Campo de selección múltiple): Este es un campo de tipo Y (numérico), de tamaño 2 con 0 decimales. Su posición identifica la posición de la primera opción. En entrada contiene el número de opciones escogidas (0 si no se ha elegido ninguna); en salida contiene la opción predeterminada. Su definición y modo son los mismos que para SNGCHCFLD. CHCCTL (Control de opción): Descrito anteriormente. CHOICE (Opción del campo de selección): Ya descrito con anterioridad. Ejemplo: A OPSELV 2Y 0B 5 4MLTCHCFLD A A CHCAVAIL((*COLOR BLUE)) CHOICE(1 '>Prima selezione') A CHCCTL(1 &SEL01H) A A CHOICE(2 '>Seconda selezione') CHCCTL(2 &SEL02H) A A CHOICE(3 '>Terza selezione') CHCCTL(3 &SEL03H) A A CHOICE(4 '>Quarta selezione') CHCCTL(4 &SEL04H) 2.3 Cuadro de Texto Se trata de un campo independiente que el usuario ve como una serie de campos durante la fase de entrada y edición. El formato del texto es más atractivo que un campo único extendiéndose a lo largo de varias líneas. Las palabras clave son: CNTFLD (Campo de entrada continua): Es un campo de tipo alfanumérico que tiene el mismo tamaño que la longitud total del texto. El número de columnas es un parámetro obligatorio y no puede ser mayor el tamaño total de la pantalla o ventana. NOTA: No puede utilizarse en subarchivos. Ejemplo: Page 12 de 108 COMPILADOR WEBGATE – Manual de programmación A NOTEV 60A B 17 56CHECK(LC) A A CNTFLD(020) DSPATR(HI) El campo de 60 caracteres NOTEV se muestra en tres filas de 20 caracteres. Nota: Webgate400 se asegura de que el espacio ocupado en la pantalla y el número de caracteres atribuidos coinciden con 5250, visto que la alineación del texto no está garantizada. 2.4 Botón Pulsador Se utiliza para definir una opción por medio de un botón o una tecla de mandato entre "<>". Las palabras clave son: PSHBTNFLD (Campo de botón pulsador): Es un campo que contiene un número establecido de botones que el usuario puede utilizar. Se define como un campo Y (numérico), de tamaño 2 con 0 decimales. El campo contiene el número de opciones efectuadas como entrada, y como salida no tiene valor. Los parámetros gestionados por el WGCompilador son: *NUMCOL, *NUMROW y *GUTTER. PSHBTNCHC (Opción de botón pulsador): Describe una opción para el botón pulsador. La sintaxis es PSHBTNCHC(número-opción texto-opción) Ejemplo: A BUTF01 2Y 0B 22 4PSHBTNFLD((*NUMCOL 2)) A A CHCAVAIL((*COLOR BLUE)) PSHBTNCHC(1 'F3->Uscita') A A A PSHBTNCHC(2 'F5->Riprist') PSHBTNCHC(3 'F6->Noused') PSHBTNCHC(4 'F21->Noused') Nota: La palabra clave CHCCTL definida en "Botón de radio" y "Cuadro de selección" también se puede utilizar con el "Botón pulsador". Por ejemplo: A A XBUTENT 2Y 0B 14 8PSHBTNFLD((*NUMROW 2)) CHCAVAIL((*COLOR RED)) A 10 A PSHBTNCHC(1 '>Ignorar y seguir' CF01) A A 11 CHCCTL(1 &CTLF1) PSHBTNCHC(2 '>Confirmar' CF02) A A 12 CHCCTL(2 &CTLF2) PSHBTNCHC(3 '>Reintentar' CF03) A A 13 A CHCCTL(3 &CTLF3) PSHBTNCHC(4 '>Salir' CF04) CHCCTL(4 &CTLF4) 2.5 Título de Ventana La palabra clave WDWTITLE le permite ver texto (constante o variable) en el borde de una ventana: Page 13 de 108 COMPILADOR WEBGATE – Manual de programmación WDWTITLE((*TEXT 'Titolo della window') *TOP) WDWTITLE((*TEXT 'F3 Fine') *BOTTOM) En 5250, si junto al texto se entra el parámetro *TOP, este se muestra en el borde superior de la ventana; si se indica *BOTTOM, el texto se muestra en el borde inferior de la ventana. Desde un punto de vista gráfico, el texto al cual se le haya especificado *TOP se interpretará como título de ventana, y el texto al cual se haya codificado *BOTTOM se interpretará como teclas de función y se situará en la barra de herramientas. Page 14 de 108 COMPILADOR WEBGATE – Manual de programmación 3 ELEMENTOS GRÁFICOS ESPECÍFICOS DE WEBGATE400 Hay muchos elementos gráficos que no se definen a través de palabras clave nativas de IBM y que son específicas del WGCompilador de Webgate400: El WG-Compilador reconoce secuencias de caracteres específicas en el atributo TEXT del campo de la pantalla. Definir elementos en el atributo TEXT del campo los convierte en transparentes para la pantalla 5250: La intervención influye solamente en la pantalla gráfica mientras que el aspecto de la 5250 permanece sin cambios. El soporte para la programación se suministra a través de las funciones "Tutorial Interactivo" y "Fuentes del Tutorial Interactivo" al conectarse a Webgate400 con el perfil WEBGATECVT. Proporcionan una apreciación global de los TEXTS existentes. Puede utilizar estas funciones para copiar sintaxis e introducirla en los campos, verificando que son correctos. Puede definir la sintaxis general que debe utilizar el WG-Compilador para reconocer las especificaciones. 1. La cadena de caracteres TEXT SIEMPRE empieza con los caracteres <w> (o <W>) y finaliza con </w> (o </W>). 2. Los caracteres que identifican el tipo de objeto (LINK, IMG, SCROLL,...) van o bien precedidos por el carácter "*" (ejemplo, *IMG) o están situadas entre los caracteres "<" y ">" (ejemplo, <IMG>). 3. A continuación se muestran los atributos más frecuentes: l: Línea (número de caracteres) c: Columna (número de caracteres) w: Ancho (número de píxeles) h: Altura (número de píxeles) v: Valor de variables de pantalla n: Número 4. Si se utiliza <…> para abrir el TEXT, entonces el código de cierre de la sintaxis es necesario: Por ejemplo, </IMG>. Nota: 1. 2. 3. Preste atención a los TEXT con una longitud superior a 50 caracteres: el mantenimiento de pantallas del SDA los trunca. Si en un subarchivo se utilizan elementos gráficos, suele ser suficiente con especificar la columna. Solo es útil especificar la fila cuando en subarchivos multifila desee que se muestre el elemento gráfico en una fila diferente de la primera. Allí donde no sea imprescindible, uno de los dos parámetros entre anchura ("w:") y altura ("h:") puede ignorarse. Su valor se establece automáticamente al mismo que se haya especificado en el otro parámetro. 3.1 Riferimento msgid per text lunghe Está disponible la text: Page 15 de 108 COMPILADOR WEBGATE – Manual de programmación <MT>MsgFile/MsgId</MT> que permite introducir una text larga en un msgid. 3.2 Ignorar Campo Gráfico El TEXT *ignore (o *IGNORE) hace que los gráficos del campo definido en el formato de pantalla se ignoren y no se muestren. A DCODCAR 13A 0 13 3 TEXT('<w>*IGNORE</w>') 3.3 Ocultar Campo Gráfico El TEXT *hide (o *HIDE) hace que el campo definido en el formato de pantalla sea considerado en el programa WG-Compilado, pero que no se envíe al applet, de forma que es ignorado. Este TEXT es útil cuando los subarchivos tienen muchos campos ocultos que no son importantes desde un punto de vista gráfico. Los datos son grabados, pero el CGI no los envía a la pantalla, aligerando considerablemente la escritura y lectura del subarchivo. A DCODCAR 13A 0 13 3 TEXT('<w>*hide</w>') 3.4 Definiciones Layout Existen unas series de TEXT que se pueden combinar con un campo o con una constante del display file, que permiten definir esos campos como titúlo, company, estatus para el formato vídeo. TITÚLO *title (o *TITLE) COMPANY *company (o *COMPANY) ESTATUS *status (o *STATUS) Por ejemplo: A A 5 18‘Gestión Anagráfica Artículos’ TEXT('<w>*title</w>') 3.5 Ignora definiciones Layout por proyecto Existen unas series de TEXT que pueden ser añadidas a nivel de formato del display file, que permiten ignorar la identificación automática del Layout definido en el proyecto de conversión del display file. TITÚLO *notitle (o *NOTITLE) COMPANY *nocomp (o *NOCOMP) ESTATUS *nostatus (o *NOSTATUS) TECLAS FUNCIÓN *nofkey (o *NOFKEY) A TEXT('<w>*notitle</w>') O también encadenadas: A TEXT('<w>*notitle*nofkey</w>') 3.6 Tecla funcional variable La TEXT *fkeyvar (o *FKEYVAR) Permite definir un campo variable como tecla funcional. 3.7 Copyright El TEXT Page 16 de 108 COMPILADOR WEBGATE – Manual de programmación *cpyright (o *CPYRIGHT) en un campo de un formato de pantalla mueve el contenido para que reemplace el texto "Powerd by IBM ISeries" (si se ha eliminado en la configuración del runtime). 3.8 Visualiza en gráfica campo hidden (oculto) La TEXT <sh>L:Riga C:Colonna E:edtcde</sh> Sirve para visualizar en la gráfica un campo que en el 5250 ha sido definido hidden. Donde L: es el número de la línea donde será visualizado el campo C: es el número de la columna E: es el código para editar (sólo si el campo es númerico) Será posible añadir esta text sólo a campos de subarchivo. La text se puede combinar con la keyword<h> para definir un encabezamiento del campo a subarchivo: <H> </H> <SH> </SH>. Notas: Hay que definir la columna exacta para evitar superposiciones. Si el subarchivo se encuentra en más de una línea, hay que definir la línea también. Ejemplo: <H>Header</H><SH>C:3 E:2</SH> 3.9 Definir cambio de teclado La text: <KS>M</KS> Permite volver a definir en gráfica el atributo de „cambio teclado” (keyboard shift) del campo en pantalla. 3.10 Web Browser Combinada con un campo (hidden o visualizado), permite visualizar una página html cuyo valor se define con el programa o a través de MSGID. <W>*WB L:07 C:30 W:120 H:30 </W> O bien <W>*WB HIWEBB </W> Cuando la text está combinada con un campo no hidden, mantiene sus posiciones y por lo tanto no es necesario especificar los parámetros “l:” y “c:”. Añadiendo después del valor de alto (h) y de amplitud(w) el carácter “E”, se remite a la applet la optimización del campo, conforme a la pantalla corriente. La referencia a un campo hidden dentro de la text (segunda sintaxis) permite gestionar dinámicamente todos los parámetros de definición de la ventana. 3.11 La TEXT Page 17 de 108 Expansión horizontal y vertical de un marco (frame) COMPILADOR WEBGATE – Manual de programmación *we (o *WE) permite deferir a la applet la expansión horizontal de un marco(constante o variable) según la pantalla corriente. De la misma manera, *he (o *HE) habilita la expansión vertical a runtime. 3.12 Valorización campos hidden a través de MSGID Un campo hidden en 5250 tiene que ser valorizado de programa. Para permitir la valorización a nivel de display file, se ha introducido la text <W><MI>Nome MsgF/MsgID</MI></W> El valor del msgid se encuentra activamente cuando se ejecuta el programa. 3.13 Valorización de campos hidden a través de MSGCON A través de la text <W><MC>Nome MsgF/MsgID</MC></W> se puede aplicar el concepto de MSGCON a campos hidden. El valor del msgid se encuentra estáticamente en fase de conversión del display file. 3.14 Valorización de campos hidden a través de DEFAULT La text: <DF>Valore</DF> permite asociar una cadena constante de default a un campo hidden directamente en el display file. 3.15 Cabecera de Columna de Subarchivo Hay un atributo especial, utilizado para forzar el encabezamiento de un campo en un subarchivo. La sintaxis es la siguiente: <h>Heading</h> Por ejemplo, si quiere que se muestre la cabecera 'Cod.Item' para el campo "item code" (definido en el subarchivo como DCODAR), entonces debe asociarle un TEXT como el siguiente: A DCODAR 124A 0 24 5 TEXT('<w><h>Cod.Item</h></w>') 3.15.1 Encabezamientos con referencia a campo presente en otro formato Hay una utilización particular de la TEXT <H> cuando se hace específica referencia ( hidden o output) a un campo presente en un formato que será emitido en combinación con el subarchivo: este campo se convierte en el encabezamiento de la columna, y si es de output (salida), se esconde automáticamente: <h>CTL01.HDESC</h> 3.15.2 Cabeceras Compartidas (//) Es posible agrupar varias cabeceras: A SFXSC1 4 2O 22 59TEXT('<w><h>Sconto//Articolo</h></w>') A SFXSC2 4 2O 22 66TEXT('<w><h>Sconto//Cli/For</h></w>’) A SFXSC3 4 2O 22 73TEXT('<w><h>Sconto//Ordine</h></w>') Cualquier cosa que venga antes de los caracteres "//" en la cabecera de una columna de subarchivo, se convierte en la cabecera de dos (o más) columnas cuando se repite en varias columnas consecutivas. Page 18 de 108 COMPILADOR WEBGATE – Manual de programmación 3.16 Marcos Los marcos son cajas que permiten agrupar y organizar información en la pantalla. En una pantalla organizada de esta manera, puede introducir muchos campos sin reducir la legibilidad, haciendo así más fácil entender su contenido. Es posible definir marcos variables y marcos constantes: Para marcos variables (campos de salida con valores suministrados por el programa) es suficiente añadir el TEXT '*FRAMEVAR'; Los marcos constantes no están definidos por un TEXT: Son simples cadenas de caracteres abiertas por la izquierda con el carácter "[" (carácter abrir corchete), "I" (letra i mayúscula) subrayado (DSPATR(UL)) y cerrado por la derecha con el carácter "]" (carácter cerrar corchete) o "I" (letra i mayúscula) también subrayado (DSPATR(UL)). En ambos casos las siguientes reglas para el uso de marcos involucran solamente a la pantalla: El final del marco se identifica con la primera fila vacía que se encuentre yendo hacia la parte inferior de la pantalla, perteneciente al formato de registro actual, y la longitud será igual a la distancia entre las partes superior izquierda y derecha. Es necesaria una columna en blanco a lo largo de toda la altura del marco, tanto por la izquierda como por la derecha. Las columnas 1 y 80 (ó 132 en pantallas de 132 columnas) deben estar vacías siempre. Pueden crearse marcos dentro de otros marcos. Una constante oculta (por ejemplo, '*' con DSPATR(ND) o indicadores 99N99 no se consideran un espacio en blanco y esto permite alargar el marco dándole una mejor apariencia. El texto entre los caracteres "[" y "]" (o el campo de salida con TEXT '*FRAMEVAR' asociado) se convierte en el título del marco; sus atributos de color o video inverso se mantienen. Nota: 1. 2. Para definir un marco sin tener que preocuparse por el CCSID es posible usar el carácter subrayado 'I' en lugar de los corchetes ('[' y ']'), los cuales tienen un valor binario que cambia según el CCSID. Los saltos efectuados con la tecla de tabulador cambian su manera de comportarse: No son lineales, dado que primero se pasa por todos los campos existentes dentro de un marco. 3.17 Alineación constante o campo de output La TEXT <a>C/R</a> permite modificar con respecto del default (=izquierda) la alineación de una constante o de un campo de output. Los parámetros son: C: alineación en el centro R: alineación a la derecha El resultado en pantalla es el siguiente: En 5250: En gráfica: 3.18 Modifica ocupación campo en pantalla La TEXT <sx>xxxx</sx> permite diferenciar la ocupación horizontal de un campo en pantalla con respecto a su dimensión. El parámetro xxxx tiene que ser un númerico 4.0 e indica esta nueva ocupación. Esta text permite recuperar espacio en pantalla sin renunciar a la dimensión deseada de los campos. Ejemplo: Los campos en pantalla son ambos largos 50 caracteres, pero el primero se combina con la text: Page 19 de 108 COMPILADOR WEBGATE – Manual de programmación <sx>0020</sx> y el segundo con la text: <sx>0100</sx> Aquí el resultado en gráfica: 3.19 Se usan HiperVínculos para: Ejecutar un programa Mostrar un objeto Procesar una sentencia SQL Ir a una URL Es preciso definir dos campos en el formato de pantalla: Un campo oculto al cual se le da un valor por programa, con la vía de acceso al vínculo Un campo con el TEXT *LINK (o <LINK>) y una referencia al campo oculto: Si el campo es una constante el vínculo es fijo; si es una variable el vínculo puede cambiar. A A LINKH DBOAT 100A 35A H O 7 2TEXT('<w>*link c:LINKH </w>') Pueden definirse en formato normal de pantalla normal y en subarchivo. El campo oculto y el campo variable (si está presente) reciben un valor desde el programa RPG. LINKH TIPO 'http://www.webgate400.com' URL EJEMPLO '/webgate400/images/dds.gif' URL – IFS Servidor iSeries 'exec://CALL PGM(ABCV) PARM('1' 'DD')' Llamada a un RPG en nueva ventana 'exeb://CALL PGM(ABCV) PARM('1' 'DD')' Llamada a pantalla) 'exei://CALL PGM(ABCV) PARM('1' 'DD')' Llamada a un RPG, el cual genera una salida que gestionar (ver inserción de script) 'sqli:// SELECT' SQL en una nueva ventana un RPG en batch (sin Ejemplo de vínculo constante: DDS: A LINKH 255A A A H 9 2'Ir a Google' TEXT('<w> *link v:LINKH </w>') RPG: C Ejemplo de vínculo variable: DDS: Page 20 de 108 EVAL LINKH = 'http://www.google.com' COMPILADOR WEBGATE – Manual de programmación A LINKH 255A H A A TEXT 50A O 9 2 TEXT('<w> *link v:LINKH </w>') RPG: C C EVAL EVAL 3.20 LINKH = 'http://www.google.com' TEXT = 'Ir a Google' Texto Desplazable Este es un texto que se desplaza en un área fija de la pantalla. Es útil para mostrar información extensa o menús de opción en una cantidad limitada de espacio. Se define en la pantalla por medio de un campo oculto con la palabra clave '*SCROLL' en el TEXT. A SCROLH 300A H TEXT('<w>*scroll l:3 c:106 h:1 w:20</w>') El programa da un valor al contenido del campo oculto, pasándole la cadena de caracteres que hay que mostrar. A través del programa también es posible establecer el color de los caracteres y el color de fondo. Los siguientes colores están disponibles: BLU, GRN, PNK, RED, TRQ, WHT, YLW. La sintaxis para definir un color es la siguiente: bc="RED" color de fondo tc="TRQ" color de texto También es posible hacer que el texto se interprete como un hípervínculo, incluso múltiple, permitiendo de esta forma el desarrollo de un verdadero menú de funciones. La sintaxis es la siguiente: <A tc… HREF: … > texto a mostrar </A> Ejemplo: A través de las DDS se define el campo con el texto desplazable en la fila 2, columna 5, altura 1 carácter, anchura visible con 50 caracteres. A SCROH 255A H TEXT('<w> *scroll l:2 c:5 h:1 w:50</w>') El contenido del campo oculto se define por medio del programa RPG. Caso I: Texto constante sin colores C EVAL SCROH = 'Texto desplazable' Caso II: Texto constante con caracteres en color rojo C EVAL SCROH='<A tc="RED">Texto desplazable</A>' Caso III: Vínculo a un sitio web C EVAL SCROH='<A HREF="www.google.com">Google</A>' verá el texto "Google" desplazándose por la pantalla y con el vínculo http://www.google.com. Caso IV: Enviar correo electrónico C C EVAL SCROH='<A HREF="mailto:[email protected]">+ mail webmaster</A>' Caso V: Se llama a un programa, el texto es verde y su fondo es rojo C EVAL SCROH='<A HREF="exec://CALL WGICONER" bc= + C "RED" tc="GRN">Lista de iconos</A>' Page 21 de 108 COMPILADOR WEBGATE – Manual de programmación 3.21 Imágenes Las imágenes pueden utilizarse con propósitos puramente estéticos o como botones para ejecutar comandos o mostrar animaciones. Una imagen se define en la pantalla utilizando un campo oculto marcado con el TEXT *IMG. Al campo se le da el valor por programa, junto con la vía de acceso en la que se encuentra la imagen. Es posible ver diversos tipos de imágenes (fotos, dibujos, gráficos, archivos de Flash,...), tanto en formato normal como en subarchivo. Ejemplo 1: Imagen sencilla A XXPALNK 256A H TEXT('<w> *img l:12 c:32 w:9 h:9 </w>') Ejemplo 2: Imagen en un subarchivo, con texto para la cabecera del subarchivo A XXPALNK 256A H TEXT('<w><h>L</h>*img c:32 w:9 h:9</w>') H TEXT('<w>*link v:XXXPALNK *img l:12 c:32-A Ejemplo 3: Imagen con un vínculo A XXPALNK w:9</w>') 256A Leyenda: c (columna) Columna donde está ubicado el campo l (línea) Fila donde se encuentra el campo (no necesaria en un subarchivo) h (altura) Altura en píxeles w (anchura) Anchura en píxeles 3.22 Iconos de Texto Son pequeños símbolos utilizados para describir estados o situaciones y permiten a la aplicación enviar información de una forma inmediata e intuitiva. Se definen en la pantalla por medio de un campo oculto marcado con el TEXT *IMG, el cual rellena el programa con los códigos de los iconos que tiene que mostrar (los disponibles vienen junto con Webgate400). Es posible definir varios iconos en el mismo campo separados por el carácter ";" (punto y coma); los parámetros de cada icono deben estar separados por el Page 22 de 108 COMPILADOR WEBGATE – Manual de programmación carácter ":". Los nombres de los iconos van precedidos por el carácter ' #' o por el carácter ' %' (si quiere que la definición sea independiente del CCSID). Pueden utilizarse en formatos de pantalla sencillos y en filas de subarchivo. Son extremadamente ligeros de procesar y no sobrecargan los recursos del sistema. Estos iconos se puede utilizar simplemente para visualizarlos, pueden mostrarse como indicadores de estado o pueden definirse como botones (TEXT *BMG) para cambiar el valor de un campo, o pueden asociarse a un comando (definiéndolo como "COMMAND ICON"; si desea más información sobre estos últimos, vea la sección que trata sobre ellos en este manual). Desde el menú principal del usuario WEBGATECVT, llamando a la función "Catálogo de Iconos de Texto", se muestra la lista de iconos disponibles juntamente con su código. Para cambiar las descripciones predeterminadas se puede modificar el archivo XFIMG (en la biblioteca de archivos de pantalla) y entrar una descripción (también cambiando el idioma si fuera necesario). Ejemplo: En el siguiente ejemplo tres iconos de estado se definen en un subarchivo empezando a partir de la columna 10. DDS: A ICOH 50A H TEXT('<w><h>S</h>*img c:10 n:3 </w>') RPG: C EVAL ICOH='%0010; %0011; %0012' Ejemplo: En el siguiente ejemplo el campo oculto ICOH recibe como valor siete iconos: C 1. 2. 3. 4. 5. 6. EVAL ICOH='%0010:Executed;%0012::;%0011::%001101+ C ;%0013;%0520::OPTION=D;%0777::F01:OPTION=D;+ C %0678::FORMAT1.OPTION=D' El primero (% 0010:Executed) reemplaza descripción estándar con el texto "Executed" y no ejecuta ningún comando. El segundo (%0012::) no reemplaza el texto estándar y ejecuta el comando predeterminado asociado al icono (mismo nombre). El tercero (%0011:: %001101) no reemplaza el texto y ejecuta el comando %001101. El cuarto (%0013) muestra solamente el icono con el texto estándar. El quinto (%0520::OPTION=D) muestra el icono con el texto estándar. Asigna el valor "D" al campo "OPTION" para el formato al cual pertenece el campo con iconos, y simula la tecla ENTER. El sexto (%0777::F01:OPTION=D) es similar al anterior, pero se simula la tecla F1 en lugar de ENTER. Page 23 de 108 COMPILADOR WEBGATE – Manual de programmación 7. El séptimo (%0678::FORMAT1.OPTION=D) muestra el icono con el texto estándar y asignar valor "D" al campo "OPTION" del formato FORMAT1. 3.23 Iconos Extendidos Todos estos iconos están disponibles en los siguientes formatos: 16 × 16, 24 × 24, 32 × 32 y 48 × 48. Al contrario que los iconos de texto, cada campo sólo puede contener un icono. Una lista de 1250 EXTENDED ICONS está disponible en el menú principal del usuario WEBGATECVT. Para obtener información sobre licencias vaya a www.iconexperience.com. Las descripciones predeterminadas se codifican modificando el archivo XFIMG (en la biblioteca de archivos de pantalla) y entrando una descripción (también cambiando el idioma si fuera necesario). La sintaxis para esta función es la siguiente: nombredeicono.wdf:descripción Ejemplo: En el siguiente ejemplo se define el icono add.wdf en la fila 5 y columna 12 en formato 32 × 32. DDS: A ICOH 50A H TEXT('<w>*img l:5 c:12 w:32 h:32 </w>') RPG: C Page 24 de 108 EVAL ICOH='add.wdf:Add' COMPILADOR WEBGATE – Manual de programmación 3.24 Iconos Genéricos, Imágenes JPG y SWF Es posible utilizar iconos (*.ICO) creados con software de iconos para Windows. Estos iconos necesitan instalarse en el IFS, en el directorio WGPublic (también es posible crear un subdirectorio para identificar sus iconos más fácilmente). La sintaxis para esta función es la siguiente: /víadeacceso/nombredeicono.ico Ejemplo: En el siguiente ejemplo se define el icono test.ico en la fila 5 y columna 12 en formato 16 × 16. DDS: A ICOH 50A H TEXT('<w>*img l:5 c:12 w:16 h:16 </w>') RPG: C EVAL ICOH='/Wgpublic/test.ico' Nota: En términos de velocidad de visualización, los iconos de texto y los iconos wdf son los más rápidos mientras que los iconos tipo.ico se cargan de forma asíncrona, al igual que las imágenes. 3.25 Botones de Imagen Los "Botones de Imagen" son imágenes que tienen asociado un evento generado por un clic. En la pantalla difieren de las imágenes estándar, debido a que el puntero del ratón cambia cuando pasa por encima de ellas. Para que clic sea interceptado por el programa RPG es suficiente con comprobar el contenido de la variable WGQcsrFld, la cual contiene el nombre del campo actual cuando el applet retorna el control al programa RPG. El programa RPG debe ejecutar una acción si el valor de la variable es el nombre del campo "Botón de Imagen". Para usar esta información es suficiente con definir la variable WGQcsrFld con una longitud de 10 caracteres. Si se utiliza RPG III, es posible utilizar en su lugar la variable WGCSFL, también de 10 caracteres. La sintaxis para definir botones de imagen en un archivo de pantalla es la misma que para las imágenes con la única diferencia de que los botones son *BMG. En lugar de imágenes, pueden utilizarse iconos WDF e ICO con la sintaxis previamente definida. Ejemplo: En el archivo de pantalla: A XMNIH01 40A H TEXT('<w>*bmg l:4 c:39 w:16 h:16 </w>') En el programa: * Cargar el contenido del botón de imagen (no obligatorio) C … EVAL XMNIH01='add.wdf:Add' * Salida por pantalla … * Sección de comprobación de las teclas de función pulsadas C IF WGQcsrFld = 'XMNIH01 C CALL C C PARM PARM KOXAZIEN KOXWORKC C C PARM PARM KOXACTIO KOXARGOM PageC25 de 108 ENDIF ' 'RIQI10' 2 0 3 1 15 COMPILADOR WEBGATE – Manual de programmación Puede añadir ":" tras la descripción y entrar la tecla de función que hay que ejecutar: about.wdf:Descripción:TECLA Se obtienen diferentes resultados dando diferentes valores en el campo TECLA: Si no se especifica TECLA, entonces se ejecuta ENTER. CF01 CF24 se aprieta la correspondiente tecla de función. ROLLUP se desplaza la página hacia arriba. ROLLDOWN se desplaza la página hacia abajo. CF25 lanza la caja de herramientas de impresión. CF26 expande completamente un subarchivo con una jerarquía (al igual que con el botón de la barra de herramientas). CF27 contrae completamente un subarchivo con una jerarquía (al igual que con el botón de la barra de herramientas). CF28 expande un nivel de un subarchivo con una jerarquía (al igual que con el botón de la barra de herramientas). CF29 contrae un nivel en un subarchivo con una jerarquía (al igual que con el botón de la barra de herramientas). CF30 ejecuta WRKACTJOB. CF31 muestra los trabajos del usuario. CF32 lanza el manejo de mensajes entre usuarios. CF33 lanza el manejo de mensajes de QSYSOPR. CF34 muestra la ventana de menú (la que tiene el menú SPI). CF35 lanza Instant Report, gestión de notas compartidas. El programa puede ejecutar una llamada con CALL. Por medio de la sintaxis: FLD001=val001 se asigna un valor (val001) a un campo (FLD001) es ejecuta automáticamente ENTER. Por medio del archivo de pantalla, es posible indicar el nombre del archivo de mensajes (MSGF) y el identificador del mensaje en el campo TEXT del botón de imagen con el contenido de la variable. Esto tiene dos ventajas: 1. Ya no sigue siendo necesario que el programa suministre un valor al campo oculto. 2. El contenido del campo oculto puede cambiarse dinámicamente sin necesidad de ejecutar conversiones y es posible mostrar descripciones para las diversas imágenes en diferentes idiomas, situando en línea las bibliotecas de los archivos de mensajes del idioma que sea necesario. La sintaxis es la siguiente: M:NombreMsgF/NombreIDMsg Ejemplo: A XMNIH01 </w>') 40A H TEXT('<w>*bmg m:MsgF/MsgID l:4 c:39 w:16- A Nota: El manejo de botones de imagen en subarchivos actualmente no se puede utilizar. 3.26 Iconos de Comando Se trata de iconos definidos para lanzar automáticamente los Servicios de Comando: Vea el manual de Administración del Sistema. La opción está accesible desde el menú principal del usuario WEBGATECVT. Estos comandos se definen de la misma forma que los comandos de los "servicios de comando", pero pueden ejecutarse solamente junto con un Icono de Texto. La sintaxis es la siguiente: %nnnn:DescripciónReemplazo:NombreIconoComando Cada icono debe estar separado por el carácter ";". Los parámetros deben separarse con el carácter ":". El carácter ":" activa la búsqueda del comando asociado (ver ejemplo). #nnnn = Código de icono Requerido Descripción de reemplazo Opcional Si está presente, reemplaza la descripción estándar del icono. Icono de Comando Opcional Si no se especifica, se usa el nombre del icono. Page 26 de 108 COMPILADOR WEBGATE – Manual de programmación 3.27 Mensajes Variables Existe un TEXT que permite reconocer campos de salida que contienen mensajes de error y mostrar los mensajes en la primera parte de la última fila de la pantalla gráfica. La sintaxis es la siguiente: A MSGERR 128A B 26 2 TEXT('<W>*MSGVAR</W>') El campo de salida MSGERR, el cual el programa rellena con los mensajes de error, desaparece de la pantalla y su contenido se muestra en la fila amarilla en la parte inferior de la ventana. 3.28 Búsqueda con Clic Derecho Este TEXT le permite realizar búsquedas en un campo por medio de un menú que se despliega con un clic derecho del ratón. La sintaxis más sencilla es la siguiente: A XCODAR on</W>') 13A B 26 2 TEXT('<W>*put:char t:text:*FKEY i:textic-A Char: Puede ser cualquier carácter; cuando nos especifica se asume "?" Text: Una palabra simple que identifica la opción de menú que lanza la búsqueda; cuando no se especifica, se asume "search". Texticon: Específica el icono de texto para la opción de menú; de forma predeterminada se utiliza un interrogante de color rojo. *FKEY: esta acción se ejecuta para lanzar la función; puede asumir estos valores: *ENTER, *F1,… *F24. Al introducir *put el valor del campo se reemplaza con el carácter entrado y se simula la tecla de función especificada. Adicionalmente al tipo estándar, existen otras cuatro opciones de definición de búsqueda que incrementan los diferentes tipos de búsquedas disponibles: *putL: Si al campo se le indica un valor, el carácter establecido para la búsqueda se añade como el primer carácter del campo en cuestión; *putR: El carácter indicado se añade por la derecha del valor del campo; *putLR: Incluye las dos anteriores en un único texto; *putL_R: Igual que la anterior, pero con la capacidad de añadir el carácter de búsqueda como el primero y último carácter del valor del campo actual. *put: No fuerza ningún valor en el campo y activa la tecla de función asociada. 3.29 Page 27 de 108 Micro-Gráficas Contextuales COMPILADOR WEBGATE – Manual de programmación Es posible mostrar gráficas en una ventana o en una fila de un subarchivo. Las Micro-gráficas se definen en una pantalla por medio de un campo oculto que el programa rellena con los parámetros de las gráficas y con la palabra clave '*IMG' en el TEXT. A GRAH 50A H TEXT('<w>*img c:10 l:2 h:8 w:180 </w>') Leyenda: c columna l fila (no necesaria en un subarchivo) h altura w anchura en pixeles El valor de este campo oculto se establece en el programa RPG y debe seguir la sintaxis predefinida: El primer carácter debe ser * El segundo carácter es un número entre 0 y 3 e indica el tipo de gráfica El resto depende del formato de gráfica. GRAH = '*0;3000;1500:2;1000;2000‟ tipo 0 GRAH = '*1;300;1;100;150‟ tipo 1 GRAH = '*2;300;30;1;60;2;90;3;100;4‟ tipo 2 GRAH = '*3;300;1;200‟ tipo 3 Hay cuatro tipos de micro-gráficas, todas con sintaxis posicional. 3.29.1 Tipo 0: Flecha en una Línea de Tres Colores Sintaxis: *0 ; 3000 ; 1500:2 ; 1000 ; 2000 Tipo de gráfica ; Valor máximo que la gráfica puede alcanzar (línea) ; Valor donde situar la flecha : color de flecha ; Valor umbral inferior (donde acaba la línea roja) ; Valor umbral superior (donde empieza la línea verde) 300 ; 2 ; 100 ; 150 Valor máximo : ; Color ; Valor de inicio ; Valor final 3.29.2 Tipo 1: Histograma a un Color Sintaxis: *1 ; 300 Tipo degráfi a ; Valor donde comienza la línea (opcional; de forma predeterminada, desde 0) Ejemplos: Page 28 de 108 : COMPILADOR WEBGATE – Manual de programmación 3.29.3 Tipo 2: Histogramas Apilados Máximo de 10. Sintaxis: *2 ; 300 ; 30:1 ; 60:2 ; 90:3 ; 100:4 Tipo de gráfica ; Total de la línea ; Valor del primero: color ; Valor del segundo: color ; Valor del tercero: color ; Valor del cuarto: color 3.29.4 Tipo 3: Estado de Avance Sintaxis: *3 ; 300 ; 1 ; 200 Tipo de gráfica ; Valor de la línea ; Color ; Valor de la gráfica 3.29.5 Tabla de Colores El parámetro de color en la sintaxis de las micro-gráficas puede tomar valores desde 1 hasta 9, los cuales se corresponden con los colores que se muestran en la siguiente tabla: 3.30 LOBS Manejo de objetos complejos de aplicaciones 5250 WG-Compilados a Webgate400. El objetivo es manejar objetos externos como si fueran datos de aplicación incrustados, utilizando una técnica similar a la utilizada para el manejo de LOB en DB2, pero simplificado desde un punto de vista de programación. Ejemplos de LOB pueden ser: texto plano, texto RTF, texto HTML (cuerpo del correo electrónico), objetos de Office,... 3.30.1 Definición del Cuerpo de los LOB Los campos LOB deben tener un nombre con el prefijo WLOB_. Deben tener el TEXT <lob> … </lob>, como en los siguientes ejemplos: <lob>txt h:10 w:80 s:F1 d:F4 l:F5 </lob> <lob>mht h:10 w:80 s:F1 d:F4 l:F5</lob> <lob>rtf h:10 w:80 s:F1 d:F4 l:F5 </lob> <lob>doc h:10 w:80 s:F1 d:F4 l:F5</lob> <lob>xls h:10 w:80 s:F1 d:F4 l:F5</lob> <lob>sql h:10 w:80 s:F1 d:F4 l:F5</lob> <lob>dgm h:10 w:80 s:F1 d:F4 l:F5</lob> <lob>xml h:10 w:80 s:F1 d:F4 l:F5</lob> Donde: h = altura del campo LOB en la pantalla (en filas) w = anchura del campo LOB en la pantalla (en columnas) s (save) = tecla de función ligada a la función de guardado d (delete) = tecla de función ligada a la función de borrado Page 29 de 108 COMPILADOR WEBGATE – Manual de programmación l (lose changes) = tecla de función ligada a la función de restaurado (cancelar cambios) 3.30.2 Guardado Los campos LOB se guardan en carpetas del IFS, como la siguiente: /WGPublic/Lobs/subcarpeta_almacenLob/Añomes/UNIDE.xxx donde: subcarpeta_almacenLob es el subdirectorio actual al cual está vinculada la aplicación que utiliza el LOB xxx es la extensión del archivo Determinar la subcarpeta_almacenLob El valor de la subcarpeta_almacenLob se obtiene desde el procedimiento de guardado del LOB por medio de una variable de entorno del proceso, identificada por la palabra clave WGLOB_STORE_SUBDIR. Esta variable también puede ser establecida por la aplicación que utiliza las funciones vinculadas al LOB, por medio de la API WGLOBSETST, por ejemplo CALL PGM(WGLOBSETST) PARM('SPIFIEP'). Cuando no se establece un valor para la variable, el sistema utiliza el valor dlobstore. 3.30.3 Índices Creación de un fichero índice en WEBG4FD. CAMPO DESCRIPCIÓN Tipo Tamaño XUNIDE Identificador único del LOB A 18 XCOMPID Código de compañía A 10 XLEXT Extensión de archivo (tipo) A 10 XLSIZE Tamaño del archivo S 10 XLPATH Vía de acceso del archivo A 256 XUSERC LOB creado por A 10 XDATEC Fecha de creación S 8 XTIMEC Hora de creación S 6 XUSERU LOB actualizado por A 10 XDATEU Fecha de actualización S 8 XTIMEU Hora de actualización S 6 El identificador único XUNIDE se calcula invocando a la API "EGETUNID": C C CALL PARM 'EGETUNID' PUNIDE 18 3.30.4 Salvar y Restaurar LOB Los LOB pueden transportarse de un sistema a otro simplemente salvando y restaurando el directorio IFS que los contiene. El índice nunca debería ser salvado. Tras restaurarlo se sigue el procedimiento WGLOBRBIDX para reconstruir el índice. Si se lanza sin argumentos, regenerará el índice comenzando desde la raíz de salvado del LOB (/WGPublic/Lobs), y en caso contrario se regenerará la rama IFS solicitada. 3.30.5 API para RPG 3.30.5.1 Establecer Almacenamiento - WGLOBSETST Permite establecer el directorio IFS donde se salvarán los LOB generados para el trabajo actual (lobstore_subdir). PARÁMETRO DESCRIPCIÓN LONG. XLOBST Nombre del directorio donde se salvan los LOB. No debe contener caracteres especiales, solo letras y números 18 3.30.5.2 Reconstruir Índice - WGLOBRBIDX Utilidad para reconstruir índices de los LOB. Parámetros de llamada: Ninguno. Page 30 de 108 DEC. TIPO I/O Alfanumérico I COMPILADOR WEBGATE – Manual de programmación 3.30.5.3 Obtener Texto de un LOB - WGLOBGTXT (verificado) Extrae texto de un LOB de tipo txt. Devuelve el texto de un LOB en una serie de cadenas de caracteres. El texto se ajusta, es decir, las líneas se rellenan con blancos y las filas se cortan a la longitud indicada manteniendo las palabras completas. PARÁMETRO DESCRIPCIÓN LONG. XUNIDE Identificador del LOB tipo txt 18 XMAXNL Número de líneas de texto (máximo) 4 XMAXLL Longitud de cada línea XCCSID CCSID a utilizar XNUMLN XSTRBF DEC. TIPO I/O Alfanumérico I 0 Numérico I 3 0 Numérico I 5 0 Numérico I Número de líneas de texto válidas 4 0 Numérico O Buffer de salida Xx Alfanumérico O 3.30.5.4 Obtener Vía de Acceso de un LOB - WGLOBGPATH Retorna la vía de acceso IFS de un LOB. PARÁMETRO DESCRIPCIÓN LONG. XUNIDE Identificador del LOB XLPATH Vía de acceso IFS del archivo LOB DEC. TIPO I/O 18 Alfanumérico I 256 Alfanumérico O 3.30.5.5 Creación de un LOB - WGLOBCRT (verificado) Creación de un LOB. PARÁMETRO DESCRIPCIÓN LONG. XUNIDE Identificador del LOB que se crea 18 XLINEL Longitud de cada línea 3 XNUMLN Número de líneas de texto 4 XCCSID CCSID a utilizar 5 XTYPE Tipo de LOB a crear (txt, mht, etc) XSTRBF Buffer DEC. TIPO I/O Alfanumérico I/O 0 Numérico I 0 Numérico I 0 Numérico I 4 Alfanumérico I Xx Alfanumérico I 3.30.5.6 Supresión de un LOB - WGLOBRMV (verificado) Suprime un LOB. PARÁMETRO DESCRIPCIÓN LONG. XUNIDE Identificador del LOB que se suprime 18 DEC. TIPO I/O Alfanumérico I TIPO I/O 3.30.5.7 Copiado de un LOB - WGLOBCPY (verificado) Copia un LOB. PARÁMETRO DESCRIPCIÓN LONG. DEC. XUNIDF Identificador del LOB que se copia 18 Alfanumérico I XUNIDT Identificador del LOB destino de la copia. Si el valor UNID no es válido, se crea uno nuevo y se retorna 18 Alfanumérico I/O 3.30.5.8 Get LOB Size – WGLOBGSIZ Retorna la dimension de un LOB. PARAMETRO DESCRIZIONE L XUNIDE ID LOB 18 XLOBSIZ Dimension del LOB 10 XLOBERR Page 31 de 108 1 D 0 TIPO I/O Alfanumérico I Numérico O Alfanumérico O COMPILADOR WEBGATE – Manual de programmación 3.31 Campos SQL Los campos SQL son campos hidden que permiten introducir en un form (en una posición establecida y con una dimensión establecida) el resultado de una instrucción SQL. Por eso, a nivel de display file, es necesario añadir un campo hidden que va a ser llenado de programa con el "statement" sql que se quiere ejecutar. Aquí hay varias sintaxis: 1. <W>*SQL L:3 C:109 H:42 W:52 </W> 2. 3. 4. Se definen estáticamente posición y dimensión de la lista. <W>*SQL L:3 C:109 H:42 W:52 a:*C</W> El sql tiene que ser ejecutado sólo si la query cambia. <W>*SQL L:3 C:109 H:42 W:52 a:*R</W> El sql se ejecuta sólo a petición del usuario; obviamente el usuario tiene que modificar un campo y también tiene que empezar el proceso, dado que la ejecución del sql empieza sólo pulsando „enter‟. <W>*SQL L:3 C:109 H:42E W:52E </W> Los caracteres ”E” después de las dimensiones, remiten a la applet la expansión en horizontal o/y en vertical de la lista: las dimensiones especificadas son las dimensiones mínimas de la lista. 5. <W>*SQL HSQL01 </W> Tanto la posición como la dimensión son valorizadas por el programa a través delcampo hidden HSQL01. El SQL puede ser elemental o muy complejo (no hay límite a la complejidad del control) y, siendo construido dinámicamente del código (por ej. RPG), tiene la total capacidad de incluir filtros o selecciones de datos que tienen que ser extractos. En los campos SQL es posible utilizar muchos de los Format Attribute disponibles (por ejemplo Jerarquías y Agrupaciones) y con esos mismos atributos se puede también introducir columnas de iconos que permiten proveer informaciones al „form‟ donde está dibujado el SQL, o ejecutar unos links libremente. Además en los campos SQL se pueden encontrar atributos formatos que permiten obtener un gráfico a través de la simple definición de ejes (X, Y, Serie). Se obtendrá el gráfico pulsando el botón "Gráfico" en la Quick Access Toolbar de la interfaz. Por fin, los SQL pueden evitar complejos programas de interrogación, dado que está garantizada la exportación de datos a Excel y, con la ayuda de los Command Service, pueden ser utilizados para volver a llamar otras funciones ya presentes en la instalación. Son utiles para: Ahorrar código Aprovechar las potencialidades SQL Tener la posibilidad de exponer más de una cuadrícula en un mismo formato. 3.32 Casillas de Verificación Es posible convertir un campo que puede tener dos valores alternativos en una casilla de verificación, simplemente añadiendo un TEXT específico en el archivo de pantalla. En las pantallas, las casillas de verificación son pequeños cuadros que ocupan un espacio de dos caracteres. Por consiguiente, siempre es necesario suministrar un espacio en blanco adicional tras las casillas de verificación, el cual se representa en la pantalla 5250 por un carácter. Hay tres maneras de insertar casillas de verificación: 1. Breve: El único parámetro requerido del TEXT es el valor ON. El valor OFF se establece como blanco de forma predeterminada. En este caso la casilla de verificación NO PUEDE seleccionarse por medio del teclado. Ejemplo: A A A 2. 7 QSCALA 1A B 3'Esplodi' 7 11VALUES('S' 'N') TEXT('<W><CB>ON:S</CB></W>') Extendido con constante de texto: Hace posible seleccionar/deseleccionar el campo también haciendo clic En la cabecera: Son necesarios varios parámetros. Los parámetros requeridos son la etiqueta, la columna donde empieza el campo y el valor ON. En este caso, la casilla de verificación NO PUEDE seleccionarse por medio del teclado. Page 32 de 108 COMPILADOR WEBGATE – Manual de programmación Ejemplo: A 7 A A QSCALA </CB></W>') 1A B 3'Esplodi' TEXT('<w>*ignore</w>') 8128TEXT('<W><CB>T:Esplodi C:110 ON:S OFF:N- A El campo "QSCALA" puede adoptar los valores "S", "N" o " " en la pantalla 5250. En la versión gráfica el mismo campo se gestiona como una casilla de verificación. El TEXT se identifica como sigue: Empieza con la palabra clave <CB> (o <cb>). La cabecera (etiqueta) de la casilla de verificación es un parámetro requerido para el manejo extendido; Se introduce con la palabra clave "T:" (o "t:") y puede tener una longitud de hasta 20 caracteres. Al definir este texto, es importante considerar el espacio disponible, para prevenir que en la pantalla la casilla de verificación cubra otros campos. La posición (columna) en la cual empieza la casilla de verificación va precedida por el símbolo "C:" (o "c:"); la fila permanece siendo la misma que la del campo original. Este parámetro es obligatorio para el manejo extendido, mientras que para el manejo breve se mantiene la posición original del campo. El tamaño total de la casilla de verificación, opcional, debe ir precedido por el símbolo "S:" (o "s:"). Cuando no se introduce, se calcula automáticamente. Es importante recordar que el tamaño mínimo de las casillas de verificación breves es de 2 caracteres, y de 3 caracteres más el tamaño de la etiqueta para las extendidas. El campo precedido por el valor "ON:" (u "on:"), siempre requerido, es el valor que el campo en la pantalla adquiere cuando se marca la casilla de verificación. El campo precedido por "OFF:" (u "off:"), opcional, es el valor que el campo en la pantalla adopta cuando no se deja la casilla de verificación sin marcar. NOTA: Si no se indica el valor OFF, entonces asume que es blanco. El TEXT finaliza con la palabra clave "</CB>" (o "</cb>"). 3. Extendido con nombre de constante: La pantalla gráfica se muestra de la misma forma que la del punto 2. Ejemplo: A A 7 A QSCALA </W>') 1A B 3'Esplodi' TEXT('<w>*CSCONST01</w>') 8128TEXT('<W><CB>CR:CONST01 ON:S OFF:N</CB>- A Las reglas son las mismas que las indicadas en el punto 2. La única diferencia es que, en lugar de especificar directamente la etiqueta en el TEXT del campo variable, esta se define por referencia a una constante que se encuentra en el mismo formato de pantalla, a través de la palabra clave "CR:" (o "cr:"). NOTA: El texto relacionado con las casillas de verificación, solo puede implementarse en campos alfanuméricos. 3.33 Listas Combinadas El control se maneja por medio de dos variables: 1. El campo real, que transporta el valor o valores escogidos, y que pueden ir separados por ";" 2. El campo oculto, que contiene una serie de elementos divididos con el separador ";" los cuales consisten en: Nombre del icono Valor elegido Descripción de la elección (Texto) Los valores de cada elemento se dividen con el carácter ":" y son posicionales. El segundo valor (descripción) puede omitirse. Ejemplo: Elemento completo = %0045:1:Opción1; %0046:2:Opción2; … Los mismos elementos sin icono = :1:Opción1; :2:Opción2; … 3.33.1 Composición del TEXT Elemento Sintaxis Identificación Inicio <cl>, final Page 33 de 108 Valores Predet. Notas COMPILADOR WEBGATE – Manual de programmación </cl> Selección simple o múltiple S: Lista campos establecidos Opción de mostrar valores elegidos S=Simple M=Múltiple M Permite elegir solo un elemento o más F: Nombre del campo (oculto) que contiene el icono, el texto y el valor del elemento Si se establece ver N, el primer elemento en la lista es el valor que se muestra siempre V: V=Mostrar valor E T=Mostrar texto E=Mostrar ambos N=No mostrar S=Con atributos La opción "No mostrar" permite simular la función realizada por medio del panel de menú. En ese caso, el primer elemento de la lista es el texto mostrado durante la validación Campo con atributos I: N Opción de longitud L: Ancho del control W: Número de columnas usadas para visualizar Longitud del campo que se comprueba Número de filas visibles en la lista R: Número de filas Número de elementos en la lista Ver lista abierta H: S S N=No se pueden especificar atributos Solo se pueden indicar atributos en campos de selección simple Valor de la longitud de una opción en campos de múltiple selección (próxima versión) La validación se muestra con la lista siempre abierta con el número de filas indicado 3.33.2 Características del Campo Vista En una pantalla el campo ocupa las posiciones indicadas por el parámetro W: más dos posiciones para la flecha. Si W no se especifica, entonces se ocupa el espacio exacto asignado al campo. Campo editable Si el campo permite especificar atributos (por lo tanto es de selección simple), el campo aparece como de entrada normal con una pequeña flecha por la derecha: Un delimitador aparece cuando el puntero del ratón se desplaza por encima del campo: El campo de entrada se selecciona y es posible escribir en él cuando se hace clic a la izquierda del delimitador; haciendo clic en la flecha se muestra la lista de opciones. Campo sin atributos El campo puede ser de selección simple o múltiple, y aparece como una constante con un borde y una pequeña flecha a la derecha: El fondo cambia y aparece un delimitador cuando el ratón se mueve sobre el campo: Si hace clic en cualquier parte de él aparece una lista de opciones. Si se selecciona (haciendo clic o presionando Tab) aparece un borde. Si el campo está seleccionado y es de selección simple, entonces al apretar la fecha hacia abajo se selecciona el siguiente valor de la lista de opciones; pulsando la tecla hacia arriba se selecciona el valor anterior, presionando la barra espaciadora se hace que aparezca la lista de valores. Page 34 de 108 COMPILADOR WEBGATE – Manual de programmación Si el ratón permanece quieto sobre el campo durante una fracción de segundo, aparece una pequeña ventana descriptiva con el valor actual: Con un clic derecho sobre la lista se deseleccionan las opciones que estén ya marcadas; si el campo es de selección múltiple, entonces un segundo clic derecho selecciona todas las opciones. 3.33.3 Valores de Retorno Campos de selección simple El campo muestra el valor asociado a la opción elegida o el valor establecido por el usuario, si el campo es editable. Campos de selección múltiple Opciones no copiadas Si los valores asociados a los dos primeros elementos de la lista son diferentes, entonces se asume que todas las opciones son diferentes entre sí: En este caso, el valor retornado es la lista de valores seleccionados y formateados de acuerdo a la longitud establecida en el parámetro L. El número máximo de opciones seleccionadas que se mostrará es igual al campo longitud dividido por el valor de L. Opciones copiadas Si los valores asociados a los dos primeros elementos de la lista son iguales, se retorna una cadena de caracteres "posicional": Para cada una de las opciones disponibles se toman tantos caracteres como se hayan especificado en el parámetro L del TEXT; si una opción no se selecciona, sus correspondientes caracteres serán blancos, y si se ha seleccionado se mostrará su correspondiente valor ajustado por la izquierda. Suponiendo que en el TEXT se ha indicado L:2 y hay tres opciones: A, BB, C: Si el usuario selecciona solamente la segunda opción, el valor de retorno es " BB "; Si el usuario selecciona las opciones primera y última, se retorna "A Si no se efectúa ninguna selección, se devuelve " C "; ". 3.33.4 División de Valores Disponibles en la Lista Si se especifica la palabra clave "Valores", los valores indicados dividen el contenido de la lista. De esta forma es posible personalizar los valores utilizando el mismo método para la personalización de pantallas y sin tener que modificar el programa. 3.33.5 API para Creación de Listas Para crear un campo oculto (lista de valores disponibles) por medio de SQL, está disponible la API WGCOLISQLR, la cual da una lista de N elementos en un campo con el formato apropiado y listo para su visualización tras recibir una instrucción SQL enviada con el primer parámetro (P0XSQLSP). (P0XCLIST). La instrucción SQL debe ser construida definiendo dos campos. El primero debe representar el código (el valor mostrado en el campo de entrada/salida de la pantalla) y la descripción asociada al código. Por ejemplo: SELECT CODE, DESCR FROM ARCHIVE También está disponible un parámetro (P0XSQLIC) para especificar si debe incluirse también en la lista un icono de identificación para cada elemento. PARÁMETRO LONG. P0XSQLSP 1024 Instrucción SQL para procesar P0XSQLIC 40 Icono que mostrar a la derecha Opcional I P0XCERRO 1 Código de error 0=La lista excede la longitud máxima (1000) O P0XCLIST 10000 Campo que contiene la lista de valores que mostrar Page 35 de 108 DEC. DESCRIPCIÓN VALORES I/O I O COMPILADOR WEBGATE – Manual de programmación Ejemplos: Uso Lista de opciones de selección múltiple que muestra el título del contenido. Campo sin atributos. Sintaxis TEXT de DDS TEXT('<W><CL> F:XCLIST01 V:N I:N L:1 W:07 </CL></W>') Lista conteniendo elementos de tabla de selección simple que muestra el valor y descripción. Campo sin atributos. TEXT('<W><CL> S:S F:XCLIST01 V:E R:9 W:20 </CL></W>') Lista conteniendo elementos de tabla de selección múltiple que muestra solamente el valor. Campo sin atributos. TEXT('<W><CL> F:XCLIST02 V:V I:N L:2 W:20 </CL></W>') Lista conteniendo elementos de tabla de selección simple que muestra solamente la descripción. Campo sin atributos. TEXT('<W><CL> S:S F:XCLIST05 V:T W:15 </CL></W>') Lista conteniendo elementos de tabla de selección simple que muestra solamente el valor. Campo con atributos. TEXT('<W><CL> S:S F:XCLIST01 V:V I:S W:8 </CL></W>') 3.34 Manejador de Fechas Para definir un campo numérico que representa una fecha se utiliza un TEXT. Puede utilizarse de dos formas diferentes: 1. Identificar la sintaxis de un campo de fecha sin intervenir en el formateo del valor mostrado en pantalla (por ejemplo, para hacer posible ordenar un subarchivo correctamente respecto a una columna de fecha): En este caso el TEXT solamente define un formato de fecha. 2. Hacer que la interfaz formatee y valide el campo: En este caso el TEXT trabaja conjuntamente con un parámetro definido en la configuración del Runtime de Webgate400 (Entorno de ejecución - Formato de fecha) para definir el valor generado por el RPG y el valor de salida que la interfaz genera. 3.34.1 Sintaxis del TEXT sin Formateo de Salida En este caso la sintaxis es como sigue: TEXT('<W><D> P=*EUR; </D></W>') El parámetro P define como se formatea la fecha, y puede tomar estos valores: SINTAXIS DEFINICIÓN FORMATO *MDY Mes/Día/Año mm/dd/aa *DMY Día/Mes/Año dd/mm/aa *YMD Año/Mes/Día aa/mm/dd Page 36 de 108 COMPILADOR WEBGATE – Manual de programmación *ISO Organización Internacional deEstándares aaaa-mm-dd *USA Estándar USA de IBM mm/dd/aaaa *EUR Estándar Europeo de IBM dd.mm.aaaa *JIS Estándar Industrial Japonés de Era Cristiana aaaa-mm-dd Especificando este TEXT, el formateo del campo depende de cualquier EDTCDE / EDTWRD definido. 3.34.2 Sintaxis del TEXT con Formateo de Salida En este caso la sintaxis es la siguiente: TEXT('<W><D> O=*EUR D=*TODAY S=; M=Y </D></W>') O = Formato original (sintaxis del valor numérico entrado por el programa RPG). Este es un parámetro requerido y puede tomar los siguientes valores: SINTAXIS DEFINICIÓN FORMATO *MDY Mes/Día/Año mm/dd/aa *DMY Día/Mes/Año dd/mm/aa *YMD Año/Mes/Día aa/mm/dd *ISO Organización Internacional de Estándares aaaa-mm-dd *USA Estándar USA de IBM mm/dd/aaaa *EUR Estándar Europeo de IBM dd.mm.aaaa *JIS Estándar Industrial Japonés de Era Cristiana aaaa-mm-dd D = Valor predeterminado, si al campo no se le da un valor. Si el parámetro no está definido al campo se le asigna un blanco. Puede tener los siguientes valores de parámetro: SINTAXIS DEFINICIÓN *TODAY Día actual *STRMONTH Primer día del mes actual *ENDMONTH Último día del mes actual *STRYEAR Primer día del año actual *ENDYEAR Último día del año actual También es posible añadir o sustraer un número fijo de días: Por ejemplo, *TODAY+7 le permite sumar siete días a partir del día actual. S = Separador. Esta opción indica qué separador se utilizará para formatear la fecha. M = Obligatorio. Especifica si la fecha es obligatoria. La fecha de forma predeterminada activa NO es obligatoria. El valor M = Y define que la fecha es obligatoria. 3.34.2.1 Reglas de Formateo El formateo del valor de salida se basa en las siguientes reglas: 1. El orden para situar el día, el mes y el año está definido por el parámetro de configuración del Runtime, el cual solamente acepta los valores *DMY, *YMD, *MDY. 2. La longitud del campo en la pantalla es exactamente la misma que la longitud definida para el campo, teniendo en cuenta cualquier EDTCDE y EDTWRD. 3. Que se muestre el año con 2 ó 4 dígitos depende de la longitud del campo y de si hay separadores: 4. Si la longitud del campo es 6, el año siempre se mostrará con 2 dígitos y no se mostrará ningún separador. Si la longitud del campo es 8 y no se especifica el separador, el año siempre se mostrará con 4 dígitos. Si se define un separador, el año se mostrará con 2 dígitos. Si la longitud del campo es 10, el año siempre se mostrará con 4 dígitos, independientemente de si se ha definido un separador. Si el TEXT no especifica un valor para el separador, se usará el que esté asociado, caso de haberlo, al EDTCDE o EDTWRD definido para el campo. 3.34.2.2 Ejemplos de Formateo Suponiendo que se especificado en la configuración del Runtime el valor *DMY, que el valor del campo es 31122007 (ó 311207 si la longitud del campo es 6) y que el separador es /, estos son algunos ejemplos: Page 37 de 108 Campo de longitud 6 (con o sin separador): 311207. COMPILADOR WEBGATE – Manual de programmación Campo de longitud 8: 31122007 (sin separador) ó 31/12/07 (con separador). Campos de longitud 10: 31122007 (sin separador) ó 31/12/2007 (con separador). 3.35 Gráficos 3.35.1 Información General Webgate400 suministra una serie de objetos swf (Macromedia Flash) que le permite incorporar gráficos en pantallas 5250. Es posible mostrar gráficos de varios modelos: Series simples de datos Series múltiples Series múltiples combinadas Existe una función Tutorial de Gráficos que aporta explicaciones, fuentes de ejemplos y una galería de todas las plantillas disponibles al utilizar gráficos. A esta función se accede desde el menú principal del usuario WEBGATECVT, seleccionando la función "Tutorial Interactivo". Estos objetos se utilizan insertando el habitual campo oculto en el formato de pantalla, dando valor adecuado al campo a través del programa RPG. El campo debe contener el nombre de la plantilla utilizada, separada por el carácter ":", y la vía de acceso IFS al archivo que contiene los datos necesarios para alimentar la plantilla. A continuación se encuentra el flujo del programa RPG para mostrar gráficos: 1. Cargar una cadena de caracteres con la sintaxis XML apropiada (ver la documentación sobre GRÁFICOS anexa a la licencia). 2. Escriba la cadena de caracteres en forma de archivo en el IFS del iSeries utilizando la API "EB2IFS" (documentada más abajo). 3. Rellene el campo oculto con el nombre y vía de acceso de la plantilla. 4. Muestre el formato de pantalla. Si esto es demasiado complejo, vaya a la administración simplificada de GRÁFICOS. 3.35.2 Sintaxis DDS: A P0XSTRCH </w>') 100A H TEXT('<w>*chart l:04 c:03 h:23 w:110 1 - A Leyenda: c Columna donde se encuentra el campo l Fila donde el campo está ubicado (no necesaria en un subarchivo) h Altura en FILAS w Anchura de columna RPG: C EVAL P0XSTRCH=NombrePlantilla;VíaAccesoDatosGraf Debe mencionarse que el navegador busca el archivo que contiene la pantalla comenzando desde el directorio /webgate400. De este modo, la vía de acceso que hay que escribir en el campo oculto debe tener esta forma: NombrePlantilla;/temp/NombreArchivo. 3.35.3 API Involucradas Page 38 de 108 COMPILADOR WEBGATE – Manual de programmación Enviar cadena de caracteres al IFS C********************************************************************** C* Enviar cadena de caracteres al IFS C********************************************************************** C RPUTIFS BEGSR C EVAL EBXPATHP='/webgate400/temp/'+E0XUNIDE+'.xml' C C CALL 'EB2IFS' C C PARM PARM C C C PARM EBXBUFFE EBXPATHP 'S' 32767 512 EBXCVTEB 1 ENDSR El parámetro EBXBUFFE es la cadena de caracteres que contiene la sintaxis XML. El parámetro EBXPATHP contiene el nombre de la vía de acceso para escribir en el archivo (si desea que los archivos generados sean limpiados automáticamente por procedimiento de Webgate400 especifique webgate400/temp). El parámetro EBXCVTEB debe establecerse a "S" para ejecutar la conversión EBCDIC a ASCII. Si fuera necesario generar un nombre de archivo único, está disponible la siguiente rutina, la cual genera un identificador preciso diferenciado por el milisegundo. C C CALL PARM 'EGETUNID' E0XUNIDE 18 El parámetro E0UNIDE contiene el valor que se utilizará como nombre de archivo. 3.35.4 Gestión Simplificada de GRÁFICOS Webgate400 suministra una API que hace posible obtener GRÁFICOS de una manera extremadamente sencilla y eliminando la necesidad de aprender la sintaxis de cada plantilla y la sintaxis XML. Esta API puede utilizarse para obtener los datos necesarios para rellenar el campo oculto que muestra el gráfico en la pantalla del usuario y mostrar el gráfico real de forma independiente. El fuente del programa mismo (DSPF y RPG) está disponible en el "Tutorial Interactivo", en la sección sobre GRÁFICOS. Muestra cómo utilizar la API en las dos formas descritas. La documentación sobre su uso está también disponible en el fuente. Nombre de la API WGCHAHANR Biblioteca WEBGATE400 3.36 Font <W><F>ARIAL;UBI;10;W:20;H:2</F></W> <W><F>F:HFONT</F></W> Se gestionan los siguientes parámetros (en el orden especificado y divididos por el carácter “;”, aunque una sección es vacía): Nombre de la fuente U=underline; I=italic; B=Bold (se pueden especificar sólo las voces que interesan o ningunas) Dimensión fuente (por default la-Dimensión fuente (por default la dimensión corriente de la pantalla) Alto y ancho, expresadas en número de columnas y líneas. Es posible no definir la dimensión de la fuente: se mantendrá la dimensión establecida a nivel de interfaz. De la misma manera, es posible no especificar los parámetros W y H. Los parámetros de la text se pueden especificar directamente en la text, o bien en un campo hidden. La información no será administrada dinámicamente, en el sentido que se va a visualizar la definición presente en la primera emisión del campo. El efecto gráfico es el siguiente: Page 39 de 108 COMPILADOR WEBGATE – Manual de programmación N.B: En fase de proyecto de la pantalla, es necesario calcular la ocupación final del campo; la interfaz, en este sentido, no ejecuta ningún control. La text fuente no se puede aplicar a campos de subarchivo. 3.37 Drag & Drop Permite gestionar copia/pega con la operatividad típica de Drag & Drop. Los valores contenidos en los campos, pueden ser arrastrados a otros campos sin ninguna intervención a nivel de código o command service. Es posible interceptar el evento y entender que la información procede de un Drag (también selecciones multiplas y de subarchivos). Se empieza con los botones ... Se puede deshabilitar sobre cada archivo de pantalla, a través del click derecho del ratón: Se puede unir, al campo que recibe la operación de Drop, la text: <w>*d</w> De eta manera la operación Drag arrastra ( también para selecciones multiplas) tanto el nombre del campo arrastrado como su valor, además de las referencias de la base de datos que contiene datos presentes en pantalla. Los valores arrastrados son, en el orden: Company K18 (=Id del proceso) P18 (=Id del trabajo) librería database temporal nombre database temporal librería file vídeo Page 40 de 108 COMPILADOR WEBGATE – Manual de programmación nombre file vídeo formato record número/os relativos de record (si el drag se ejecuta en una cuadrícula) lista de 10 de los campos arrastrados y su valor lista de 100 números relativos de record (si el drag ha sido ejecutado de más de una línea de subarchivo) Ha sido creada la API WEBGATE400/WGDEDR que permite extraer del bufér de datos las informaciones descritas en forma de parámetros; aquí la lista: Si el drag ha sido efectuado por un subarchivo, es posible testear el valor del parámetro P0SSNRR (opcional) que devuelve los números relativos de record de las líneas de las cuales se ha ejecutado el drag; en este caso la agrupación con los valores de los campos no es importante: el valor se puede recuperar ejecutando una CHAIN en el subarchivo. Especificando la text: <w>*df</w> en cambio, en el campo se pueden arrastrar archivos que provienen de otras aplicaciones Windows (Explora Recursos, client de correo arrastrando tanto mensajes como anexos,…). El valor arrastrado es un recorrido momentáneo en el IFS donde los archivos han sido trasladados. En este caso el „drag‟ (arrastre) descrito antes no está habilitado. Especificando la text: <w>*db</w> el campo está habilitado para recibir los dos tipos de drops descritos: el valor arrastrado depende del tipo de drop ejecutado. 3.38 Campos de valorización remota Son campos hidden o de output que son valorizados automáticamente por medio del contenido de un archivo presente en una carpeta PC, después de una acción especifica. La „root‟ de la carpeta que hay que monitorizar es fija; se puede conseguir del registro de configuración de Windows, leyendo el valor de una de estas llaves (según el tipo de sistema operativo y de instalación Webgate): Sistemas 64 bit HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Webgate\Main Application Data Directory HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Edm srl\Main Application Data Directory Sistemas 32 bit HKEY_LOCAL_MACHINE\SOFTWARE\Webgate\Main Application Data Directory HKEY_LOCAL_MACHINE\SOFTWARE\Edm srl\Main Application Data Directory La lectura de los archivos ocurre con periodicidad especificada en la definición del campo. Hecha la lectura, el programa simula un envío. Son definidos por la text: <w><b>F:NombreCampoHidden N:Timer P:Prefijo</b></w> Page 41 de 108 COMPILADOR WEBGATE – Manual de programmación El campo hidden de apoyo (F:) tiene que estar presente en el mismo formato y contiene el directorio que se quiere monitorear; si no está valorizado adopta como default “COMSPY” El timer (N:), expresado en segundos, define la periodicidad del control del contenido de la carpeta y es un dato obligatorio. El prefijo (P:) es el prefijo del nombre del archivo que se quiere abrir. Si no está especificado, todos los archivos de la carpeta de origen se consideran válidos. 3.39 Extended Button Pueden tener un icono (.WDF) y un texto Pueden tener un indicador Pueden “recargar” teclas funciones Son “Dropables” Son sensibles a los DSPATR Protect (PR) y Not Display” (ND) Aquí la sintaxis de la Text: <eb> W:22 H:1 F1:XHCS6 F2:XDCS6 </eb> F1 = campo hidden que incluye sintaxis visualización y comandos(ICONO.WDF:TEXTO:CFxx) F2 = campo hidden que recibe cadena de DROP interpretable con API WGDEDR Los nuevos botones debe ser campos visibles. En la text se especifica la dimensión en pantalla (que puede ser diferente de la del campo original). El valor del campo (que define la imagen que hay que utilizar y el texto) puede ser reconducido al mismo campo o a un campo hidden definido en la text. La sintaxis del valor es la siguiente: ICONO.WDF:TEXTO:CFxx. CFxx es la tecla función que tiene que ser simulada al cliquear: si no está especificada, será simulado un enter. Con el click el botón se define como campo corriente. Se puede asociar al botón la text que identifica los campos recibidores del drop: en este caso en la text del botón hay que indicar un segundo campo hidden que recibirá el valor del drop. Si el campo asociado a la text, tiene combinado el atributo BLINK (DSPATR(BL)), en el botón aparecerá un indicador verde si el blink no está activo y un indicador rojo si el blink está activo (gris si el campo está protegido). Cuando se utilizen iconos WDF, la dimensión se calcula automáticamente: se elige el icono más grande que puede ser dibujado entre las dimensiones disponibles (16/24/32/48/256). Si el ancho del botón no permite la visualización por lo menos de dos caracteres además del icono, el icono se centra y el texto no va a ser dibujado. 3.40 File Manager e File Chooser Webgate File Manager es un control introducido en la applet Webgate400 así que los programadores RPG puedan proveer para sus usuarios una modalidad para navegar el file system de iSeries, para ejecutar upload o download de los archivos, para consultar, modificar o eliminar objetos del IFS o del PC. Page 42 de 108 COMPILADOR WEBGATE – Manual de programmación Este control se puede obtener a través de tres modalidades distintas, según el fin para el cual va a ser incluido en pantalla: Extensa: permite navegar el file system del PC local o el IFS Compacta: control „edit‟ con botón, para activar la navegación para seleccionar archivos Selección: es lo mismo que la modalidad extensa pero devuelve (si requerido) el recorrido del archivo o directorio seleccionado A continuación hay imagenes del componente y también imagenes de como se presenta en algunas modalidades de función. Visualización modalidad chooser (ningún recorrido): Visualización modalidad chooser remoto (selección archivo, IFS, iconos pequeños): Visualización modalidad chooser remoto (recorrido seleccionado): Visualización modalidad extensa(disco local, iconos pequeños): La modalidad de selección es exactamente como la modalidad extensa, por eso se ha omitido la imagen. Además de la visualización a través de iconos pequeños, se puede visualizar los elementos del file system con iconos grandes o a través de la visualización detalles que añade a cada elemento informaciones adicionales, como por ejemplo la fecha de creación y la dimensión del archivo. 3.40.1 Sintaxis La sintaxis se puede especificar directamente en la text o haciendo referenCia a un campo ocultado valorizado a programa con toda la sintaxis. Ejemplo: DDS: Page 43 de 108 COMPILADOR WEBGATE – Manual de programmación A P0XSTRCH 100A H TEXT('<w>*FB l:04 c:03 h:23 w:110</W>') Legenda (inscripción): c (column) Columna donde se encuentra el campo; l (line) LÍnea donde se encuentra el campo (no es necesaria dentro un SFL); h (height) alto en LÍNEAS; w (width) largo COLUMNAS; o bien: A A HIFSEST IFSEST 256A 520A H H TEXT('<W>*FB HIFSEST</W>') LISTA PARÁMETROS DISPONIBLES Y DESCRIPCIÓN: Tipo de browser (K:) L (Local): El browser local permite navegar el file system (sistema de archivo) de la maquina en la que se utiliza la applet Webgate400. R (Remoto): El browser remoto permite navegar el file system IFS del server donde se encuentra la instancia Webgate400 a la cual estamos conectados. U (Uploader): El browser empieza en modalidad selección files local. El archivo seleccionado va a ser cargado automaticámente en el IFS a partir del momento en el que se confirma el cierre. En modalidad de visualización compacta (chooser) se puede utilizar el browser local y remoto en combinación. Tipo de visualización (V:) Especifica cómo el browser tiene que ser incorporado: C (Compacta): en modalidad file chooser, E (Extensa): en modalidad browser, S (Selección): en modalidad selección archivo extensa. Además especifica la modalidad de visualización de los iconos dentro del control browser: S: iconos pequeños, I: iconos grandes, L: lista, D: detalles. El default es CL. La específica del tipo de visualización del browser influye también en su comportamiento. En particular, si se va a utilizar una visualización compacta (opciones C, CS, CI, CL, CD) se va a crear un componente para la selección de archivos o directorios, en cambio si se utiliza una visualización extensa (opciones E, ES, EI, EL, ED) se va a crear un componente para navegar el file system. Si utilizamos la modalidad selección vista extensa (opciones S, SS, SI, SL, SD) será creado un control parecido a la modalidad de visualización extensa pero que permite la selección de archivos y/o directorios y devuelve el recorrido. Output (O:) Especifica el tipo de objeto que hay que mostrar en el file browser: D: directory, F: file. El default es FD. Return (R:) Especifica si, en la modalidad „chooser‟, el control tiene que permitir la selección de: F: file, D: directory). El default es F. Gestión de los permisos (P:) Acciones que se pueden ejecutar en los archivos. La gestión de los permisos utilizada por el componente no está en algun modo ligada a las autorizaciones usuario especificadas en el file system. El modelo de permisos prevé los siguiente privilegios: L (List): capacidad de ver el contenido de los recorridos (necesaria para navegar); Page 44 de 108 COMPILADOR WEBGATE – Manual de programmación R (Read): capacidad de ver el contenido de los archivos (necesaria para abrir documentos y para hacer un download); W (Write): capacidad de modificar el contenido de los directorios (necesaria para la modificación de los archivos y la creación de nuevos directorios); X (Execute): no utilizado; D(Delete): capacidad de eliminar archivos y directorios (eliminación total, no pasa por papeleras u otros sitemas de backup, cobertura) El default es R. Nota: sin el parámetro L, el browser no naviga y no se ven archivos ni tampoco directorios. Directorio inicial (I:) Recorrido inicial: especifica a cual recorrido hay que abrir el browser cuando aparece en pantalla; (default: „/webgate400‟ para el browser remoto, el desktop del usuario para el browser local). Directorio Base (B:) Recorrido base: especifica el nivel mínimo que el usuario del browser no puede superar ( la root para la sesión) (ningún default); Resumen parámetros: Parámetro Descripción Valores Default K: Kind L, R, U L V: View CS, CI, CL, CD, CL ES, EI, EL, ED, SS, SI, SL, SD O: Output F, D, FD FD R: Return F P: Permissions F, D L, R, W, X, D, RW, RX, WX, RW I: Initial directory B: Base directory Page 45 de 108 R COMPILADOR WEBGATE – Manual de programmación 3.41 Menu con teselas Hoy es posible crear un menú con iconos flat parecidos a los del menú inicial de Windows 8 y Windows 10. Como ejemplo ponemos el menú inicial del perfil WEBGATECVT: Se aconseja, por razones de claridad y espacio en la pantalla, transformar menus bastante breves. Toda la estructura se basa en un único campo hidden al que se asocian la posición y la dimensión del menú entero: <W><UIT> L:xxx C:xxx W:xxx H:xxx </UIT></W> Por ejemplo: A A UIT 4096A H TEXT('<W><UIT> L:02 C:02 H:28E W:132E </UIT></W>') El campo hidden es valorizado en el programa a través de la sintaxis compleja que incluye cada componente y sus atributos. El menú se compone de dos distintos tipos de objetos: Teselas: son botones a los que se asocia un texto, un icono y un comando que se ejecuta al hacer clic . O bien o bien Page 46 de 108 COMPILADOR WEBGATE – Manual de programmación Grupos: son agrupamientos de teselas a las que se puede asociar un título. N.B: Una tesela tiene que encontrarse obligatoriamente dentro de un grupo. 3.41.1 Programa de generación Dada la complejidad de la sintaxis en la base de esta estructura, ha sido creado un programa de generación. Este programa se puede llamar a través del elaborado NM o bien del menú “Aplicaciones Ambiente Webgate400” (EX DD), “ Construcción sintaxis campo de teselas”: Esta función crea la sintaxis compleja a partir de la configuración de cada componente y sus atributos. Por comodidad se ha decidido memorizar la sintaxis en un file mensajes: esta no es una opción forzada, el usuario puede decidir la manera de memorizar la sintaxis. El mantenimiento está estructurado de la siguiente manera: en el encabezado se configuran los parámetros y las acciones generales del objeto; en la izquierda se encuentran dos tab para la configuración de grupos y teselas; en la derecha hay tres tabs como soporte operativo: o vista previa del menú: se actualiza cada vez que se va a apretar la tecla “Crea Sintaxis” y va a mostrar la representación de la sintaxis incluida en la tab “Sintaxis compleja”; o sintaxis compleja: se genera dinámicamente según la configuración de grupos y teselas o búsqueda WDF: visualiza la lista de iconos flat disponibles. Fondo Dentro de esta frame (marco) se puede definir el fondo del campo entero: un color seleccionable entre los colores de la combo; un recorrido IFS de una imagen Page 47 de 108 COMPILADOR WEBGATE – Manual de programmación N.B: los primeros colores listados en la combo list, que empiezan con “W”, sono los más recurrentes en las páginas de Windows 8 y estos colores han sido utilizados en la configuración de la pantalla inicial de WEBGATECVT. Dimensión Teselas Las teselas creadas tienen una dimensión estándar de 120 pixel: es posible modificar esta dimensión según la resolución de la pantalla, estableciendo este valor. Datos Mensaje La sintaxis compleja puede ser memorizada en un file mensajes. Estas sono las referencias a este mensaje. Zoom Es posible visualizar una vista previa del campo con las dimensiones que tendrá en la pantalla donde se va a posicionar, definiendo la posición y la dimensión efectiva y clicando en el botón ZOOM. Ejemplo Están disponibles tres sintaxis de ejemplo que ponen en evidencia las potencialidades del instrumento y las diferentes posibilidades de configuración. Acciones el botón “Crea Sintaxis” ( ) construye la sintaxis compleja empezando de los componentes; el botón “Descompone Sintaxis” ( el botón “Recarga” ( el botón “Limpia Sintaxis” ( el botón “Fin” ( el botón “Actualiza mensaje” ( el botón “Nuevo” ( ) ejecuta la operación inversa; ) descarga la sintaxis presente en el MsgId; ) inicializa la sintaxis; ) sale del programa sin guardar; ) memoriza la sintaxis creada en el mensaje deseado; ) permite añadir un nuevo grupo o una nueva tesela. Grupos Definidos los datos de encabezado, es necesario crear por lo menos un grupo al cual pertenecerán las teselas. Aquí los atributos de un grupo: progresivo: sirve para atribuir un orden de visualización (obligatorio); color texto (no obligatorio); color fondo (no obligatorio); alineación (horizontal/vertical) de las teselas contenidas (no obligatorio); la alineación por defecto (default) es vertical; texto (no obligatorio); link (enlace):es posible asociar una acción al clic en el texto del grupo (no obligatorio). Un nuevo grupo va a ser visualizado cuando contiene por lo menos una tesela. Teselas Aquí los atributos de las teselas: progresivo: sirve para atribuir un orden de visualización dentro del mismo grupo (obligatorio); secuencia: se define (en combinación con el campo timer) si se quiere agregar un efecto de animación a las teselas y asigna una secuencia a la imagen elegida ( no obligatorio); grupo de pertenencia: indica el progresivo del gruppo al cual pertenece la tesela (obligatorio); dimensión: se puede elegir entre tres distintos formatos: grande, media, pequeña; la dimensión de defecto es aquella media (no obligatorio); la dimensión grande es utilizable sólo en los grupos con alineación vertical; color texto (no obligatorio); color fondo (no obligatorio); texto pequeño bottom: es el texto (pequeño) visualizado en la tesela de abajo (no obligatorio); Page 48 de 108 COMPILADOR WEBGATE – Manual de programmación texto grande top: es el texto (grande) visualizado en la tesela arriba (no obligatorio) texto pequeño top: es el texto (pequeño) visualizado en la tesela arriba (no obligatorio) link(enlace): indica la acción que hay que ejecutar al hacer clic en la tesela. Para las “call” hay que respetar la siguiente sintaxis: EXEC://CALL xxx Aquí hay algunos ejemplos: o /webgate400/Tutorial/Manual/Webgate400ConverterTutorialEN-Id(20090917.1031).pdf o EXEC://CALL PGM(WGLSMAN) o www.google.it el campo no es obligatorio imagen: indicar el recorrido de una imagen a visualizar o el nombre de la WDF. Para las WDF es disponibile la lista en la tab “búsqueda WDF” de donde se puede arrastrar el icono elegido en el subarchivo o sobre la imagen o sobre la descripción (no obligatorio); los varios textos asociados se van a visualizar sólo si a la tesela se une un icono o una imagen; adapta imagen: puede tomar los valores TRUE (verdadero) o FALSE (falso) y permite adaptar la imagen al espacio a disposición (no obligatorio); timer: se refiere al tiempo de exposición de las imagenes combinadas con diferente secuencia a la misma tesela (no obligatorio); Page 49 de 108 COMPILADOR WEBGATE – Manual de programmación 3.41.2 Api WGUITC Esta api permite modificar en el programa la sintaxis compleja: esto permite, por ejemplo, hacer dinamico el texto de una tesela actualizandolo dinámicamente según la elaboración del programa. CAMPO LONGITUD P0UITC 5096 DEC I/O DESCRIPCIÓN I-O VALOR UIT P0GCDL 3 I Codigo grupo de la tesela P0SEQ 3 I Secuencia tesela P0ATR 512 I Atributo P0ACT 1 I Acción: 1 = Cancela grupo 2 = Modifica texto grupo 3 = Modifica link grupo A = Modifica color fondo grupo C = Nuevo grupo 4 = Elimina tesela 5 = Modifica enlace tesela 6 = Modifica imagen tesela 7 = Modifica texto 1 8 = Modifica texto 2 9 = Modifica texto 3 B = Modifica color fondo tesela D = Nueva tesela E = Modifica dimensión tesela Notas: El parámetro P0GCDL (= codigo grupo) es obligatorio excepto para P0ACT=‟C‟ (= inserción nuevo grupo). Cuando se va a insertar un nuevo grupo (P0ACT=”C”) o una nueva tesela (P0ACT=”D”), los parámetros del nuevo objeto tienen que ser trensformados en P0ATR. Si la eliminación de una tesela implica la formación de un grupo vacio, este grupo también va a ser eliminado. Page 50 de 108 COMPILADOR WEBGATE – Manual de programmación 3.42 Nr Sumario de TEXT TEXT <w>*title</w> DESCRIPCIÓN 1 2 <w>*company</w> Compañía 3 <w>*status</w> Tipo de operación 4 <w>*pgm</w> Nombre del programa 5 <w>*cpyright</w> Copyright 6 <w>*fkeyvar</w> Tecla de función variable 7 <w>*msgvar</w> Mensaje de error variable 8 <w>*optvar</w> Opciones de subarchivo variables 9 <w>*framevar</w> Marcos variables 10 <w>*ignore</w> El campo es ignorado y no se muestra en el gráfico 11 <w>*hide</w> Junto a un campo oculto hace que el campo no se envíe al applet, mostrando así más rápido el subarchivo 12 *notitle Junto a un formato, permite ignorar el reconocimiento automático del titúlo definido en la configuración Layout del proyecto(en el Control). 13 *nocomp Junto aun formato, permite ignorar el reconocimiento automático de la company definido en la configuración Layout del proyecto (en el WG-Compilador Control). 14 *nopgm Junto a un formato, permite ignorar el reconocimiento automático del “display info” definido en la configuración Layout del proyecto (en el WG-Compilador Control). 15 *nostatus Junto a un formato, permite ignorar el reconocimientoautomático del estatus definido en la configuración Layout del proyecto(en el WGCompilador Control). 16 <w>*nofkey</w> Junto a un formato, le permite considerar las últimas filas de la pantalla, normalmente utilizadas para teclas de función, como si fueran filas del resto de la pantalla 17 <w><h>cabecera</h></w> Vinculado a un campo de subarchivo, se convierte en la cabecera de columna del campo 18 <w><opt>*=Seleccionar;4=Cancelar</opt></w> Vinculado al campo "opciones" del subarchivo, el texto se añade a las opciones 19 <w>*SCROLL L:7 C:50 H:1 W:83 </w> Texto desplazable en la línea 7, columna 50, de altura 1 y longitud 83 20 <w>*link v:XXXPALNK</w> Permite ejecutar un programa, mostrar un objeto, visualizar un SQL o ir a una URL 21 <w>*img c:131 w:9 h:9</w> Imagen (en un subarchivo) en la columna 131, de altura 9 y longitud 9. Esta imagen puede ser un icono WDF, una imagen JPG o SWF o una gráfica 22 <w>*img c:132 w:8 h:8 n:5</w> Espacio en un subarchivo para cinco iconos de texto 23 *fit Se utiliza para añadir un atributo de pantalla DSPATR(FIT) a las imágenes: Ajustar al tamaño del campo 24 *TN Se utiliza para añadir un atributo de pantalla DSPATR(TN): La imagen se muestra a un tamaño fijo de 11 x 150. Nota: Sólo se utiliza en subarchivos 25 <w>*bmg l:04 c:39 w:16 h:16</w> Es una imagen en la que se puede hacer clic para generar una acción 26 <w>*put:char t:texto a:*FKEY i:texticon5</w> Con un clic derecho se llama a la función definida en el texto, el carácter "char" se envía al campo asociado, y simula la tecla ENTER 27 <w><cb>t:No read c:33 s:11 on:S off:N</cb></w> Crea una casilla de verificación a partir de una variable que puede tomar dos valores alternativos. Versión extendida con constante de texto: El campo también se marca haciendo clic en la constante 28 <w><cb>ON:s</cb></w> Crea una casilla de verificación a partir de una variable que puede tomar dos valores alternativos. Versión abreviada: El campo solo se marca haciendo clic en la constante. El valor devuelto para el campo sin marcar es un blanco 29 <w><cb>CR:CONST01 C:110 ON:S:OFF:N</cb></w> Crea una casilla de verificación a partir de una variable que puede tomar dos valores alternativos. Es igual que la versión extendida, pero en lugar de fijar el texto, hace referencia a una constante que ya está en pantalla 30 <w><cl>S:S F:CLISTRAV V:E W:18</cl></w> Lista combinada de botones de radio 31 <w><cl>F:CLISTMEV V:N I:N L:2 W:18</cl></w> Lista combinada de menú Page 51 de 108 Título COMPILADOR WEBGATE – Manual de programmación 32 <w><cl>F:CLISTCHV V:T I:N L:2 W:18</cl></w> Lista combinada de casillas de verificación 33 <w><cl>S:S F:CLISTINV V:V I:S W:18</cl></w> Lista combinada de entrada 34 <w>*DMI</w> Máscara dinámica: Calcula el número de caracteres disponibles para la introducción desde el teclado, basado en el número de bytes del campo marcado con el valor hexadecimal 1F 35 <MI>MsgFile/MsgId</MI> Junto a un a un campo Hidden, permite asociarle un id de mensaje de un messagefile directamenteen fase dedefinición del display file. Emula la keyword MSGIDque del 5250 no se puede juntar a campos hidden: el mensaje se halla dinámicamente a runtime según su actual valor. 36 <MC>MsgFile/MsgId</MC> Junto a un campo Hidden, permite asociarle un id de mensaje de message file directamenteen fase de definición del display file. Emula la keyword MSGCONque del 5250 no se puede juntar a campos hidden: la información por lo tanto resulta estática. 37 <MT>MsgFile/MsgId</MT> Permite introducir una text larga en un msgid 38 *WB L:07 C:30 W:120 H:30 Web Browser: junto a un campo (hidden o visualizado),permite visualizar una página html cuyo valor va a ser definido por el programa o a través MSGID. 39 *FB…. File Manager yfile Chooser (Ver párrafo) 40 <w><D>P=*ISO</d></w> Campos de fecha: Identifica los campos que muestran una fecha. Vea Manejador de Fechas para más detalles sobre su uso <w><D>O=*ISO</d></w> 41 <F>F:HFONT</F> o Permite modificar elfont del campo; el valor ha transitado por el campo introducido por la expresión “F:” o directamenteen la text. <F>ARIAL;UBI;10;W:20;H:2</F> 42 *D Permite definir un campo comorecibidor de Drag &Drop 43 Extended Button 44 <eb> W:22 H:1 F1:XHCS6 F2:XDCS6 </eb> <b>F:NomeCampoHidden N:Timer P:Prefisso</b> 45 <A>C/R</A> Junto a una constanteo a un campo deoutput permite alinear los caracteres en elcentro (C) o a la derecha(R) 46 <SX>xxxx</SX> Junto a un campo deI/O permite definir la ocupación en pantalla del campo, diferenciandola de la dimensión. Page 52 de 108 Son camposhidden o deoutput (salida)que se valorizan automáticamente con el contenido de un archivo presente en una carpeta PC, después de una específica acción. COMPILADOR WEBGATE – Manual de programmación 4 ATRIBUTOS DE FORMATO 4.1 Información General Los modos de salida y comportamiento de un formato de pantalla pueden cambiarse cuando hay atributos de formato. Estos atributos se identifican por un código numérico y por una regla de comportamiento. Estos atributos pueden transferirse al formato de pantalla por DDS, base de datos (WGATR) y por programa. Para hacerlo es necesario definir uno o más campos ocultos en las DDS con la función de transportar los atributos e influir en consecuencia en el modo de salida del formato de pantalla. Estos campos se identifican aplicando un TEXT de la siguiente manera: A HFMT0001 100A H TEXT('<w>*fmtatr</w>') El TEXT debe contener la palabra clave "*fmtatr" (*FMTATR). El atributo puede ser asignado por el programa en el campo oculto o en las DDS del archivo de pantalla, con la siguiente sintaxis: A HFMT0001 100A H TEXT('<w>*fmtatr2178=R();2191=R()</w>') Donde 2178 y 2191 son dos códigos de identificación con el mismo número de atributos de pantalla, mientras que R() es la regla que se les aplica. La regla, o valor del atributo, determina el comportamiento en la pantalla del objeto (formato) en cuestión. También pueden darse valores durante la ejecución a los campos utilizados para transportar los atributos (por ejemplo durante la INZSR, si el atributo especificado necesita un valor por defecto). Para valores en tiempo de ejecución es suficiente con indicar el código del atributo y la regla que hay que aplicar (por ejemplo, 2191=R()). No todos los atributos de pantalla pueden cambiarse en tiempo de ejecución, y para algunos de ellos es necesario completar un TEXT con el valor predeterminado. A continuación se muestra la tabla de atributos de formato que están actualmente disponibles. Page 53 de 108 COMPILADOR WEBGATE – Manual de programmación 4.2 Resumen FMTATR Código Descripción Dinám Requiere Valor Por Defecto Sintaxis 2178 Activa / desactiva la cabecera de fila al mostrar una tabla de subarchivo S N 2178=R(0) desactiva vista Activa / desactiva la cabecera de columna al mostrar una tabla de subarchivo S Ajusta el tamaño total de la tabla a las filas/columnas con el objetivo de evitar que las barras de desplazamiento desborden los límites N Permite la expansión de la tabla de un subarchivo N Desactiva el que se sitúe el cursor en los campos protegidos (PR) en la tabla de un subarchivo S 2303 Le permite personalizar el número de filas de subarchivo (distinto de 100) entrados por el applet en cada operación de pasar página. Incrementando el valor, el applet sigue descargando registros hasta que el valor especificado en el atributo se alcanza. La operación puede ser lenta, y por esta razón es mejor establecer la variable WGSFLPGL (o WGSFPL), 7 posiciones numerica S 2313 Desactiva el color alternativo 2314 Fuerza que se muestre multi-fila 2315 Habilita el situar el cursor en un subarchivo por medio de las variables "fila" (WGSCSR, 7 posiciones numéricas) y "campo" (WGSCSF, 10 posiciones alfanuméricas). Si está activado, los valores recibidos son enviados a la pantalla automáticamente. Al programa le es posible forzar diferentes valores S Habilita encabezamientos subarchivos alineados con campos N Lista de campos de ordenamiento para una tabla. Esta lista se utiliza para ordenar los registros disponibles en la pantalla S 2191 2192 2193 2195 2178=R(1) activa vista (predeterminado) N 2191=R(0) desactiva vista 2191=R(1) activa vista (predeterminado) N 2192=R(0) desactiva 2192=R(1) activa (predeterminado) N 2193=R(0) desactiva expansión 2193=R(1) activa expansión (predeterminado) N 2195=R(0) permite situarse (predeterminado) 2195=R(1) no permite situarse N 2303=R(número) 2313=R(1) color alternativo activo 2313=R(0) color alternativo inactivo 2314=R(1) multi-fila activado 2314=R(0) fila única 2320 0602 0603 Usado para definir jerarquías dinámicas. Lista de campos de agrupación en una tabla. La lista se usa para agrupar los registros disponibles en la Page 54 de 108 N 2315=R(1) permite situarse 2315=R(0) situarse desactivado (predeterminado) 2320=R(0) Encabezamientos centrados (default) 2320=R(1) Encabezamientos alineados con los campos N Ejemplo 1: 0602=R(XXSDSTAT;XXXDSANA;) Ejemplo 2: 0602=R(XXXDSANA;XXXICODE;) Ejemplo 3: 0602=R(XXXDSTAT;INCDAEVN;XXXDSANA;) Es importante utilizar el carácter ";" como separador Ejemplo 1: 0603=R(XXSDSTAT;XXXDSANA;C:1;) Ejemplo 2: 0603=R(XXXDSANA;) Ejemplo 3: COMPILADOR WEBGATE – Manual de programmación pantalla, y obtener una "jerarquía" o vista, con elementos expandidos y contraídos. 0603=R(XXXDSTAT;INCDAEVN;C:2;) La última parte de la sintaxis define el nivel mínimo de contracción visualizado. Son necesarios los campos de ordenamiento. C:0 = contrae hasta nivel 0 (todo cerrado) Los campos indicados deben ser una parte o todos los campos de ordenación. C:1 = contrae hasta nivel 1 C:2 = contrae hasta nivel 2 Nota: Cuando esta función está activada, el cliente descarga automáticamente todo el contenido del subarchivo que ha cargado el programa RPG. En realidad, el cliente comprueba el número de registros ya descargados y descarga más hasta que se alcanza el número actual de registros en el subarchivo. 0604 Se utiliza para definir jerarquías estáticas. El nombre del campo de nivel en una "jerarquía" o tabla de subarchivo, donde la lógica seguida para rellenar el subarchivo todavía es capaz de establecer el nivel de jerarquía entre los registros mostrados (por ejemplo, base distinta). El campo de nivel puede ser numérico o alfanumérico, pero sólo puede contener valores entre 0 y 9 ó entre "0" y "9". S N Ejemplo 1: 0604=R(TLEVEL;) Ejemplo 2: 0604=R(TLEVEL;C:2) Ejemplo 3: 0604=R(TLEVEL;C:1;S:TSTATUS;) La última parte de la sintaxis define el nivel mínimo de contracción visualizado. C:0 = contrae hasta nivel 0 (todo cerrado) C:1 = contrae hasta nivel 1 C:2 = contrae hasta nivel 2 El campo TSTATUS (el cual debe ser definido en el archivo de pantalla, al igual que TLEVEL) especifica los elementos de estado contraídos visualizados. Los valores establecidos para este campo son los siguientes: 0 Administración manejada por el cliente. Guarda el estado de cada elemento hasta que se carga el siguiente subarchivo. 1 El elemento debe cerrarse. 2 Elemento debe abrirse. Si el campo TSTATUS no se especifica, el subarchivo se muestra en cada operación de salida de la forma que indique el parámetro C: 0605 Presionar ENTER automáticamente en la pantalla actual tras nnn segundos 0607 Campos de total y resumen 0608 Emisión de funciones S S 0605=R(0005) Presiona ENTER tras 5 segundos 0605=R(9999) Desactiva la función AUTOENTER F =Formato: R = D = Detalle solo resúmenes NC = Número de columna: Columna que se usará para emisión en el caso de mostrar valores individuales 0609 Habilita la función para que en un subarchivo con una jerarquía estática también propague a los registros subsiguientes del próximo nivel una opción en el registro contraído Page 55 de 108 0609=R(0) desactiva la función (predeterminado) 0609=R(1) ) activa la función COMPILADOR WEBGATE – Manual de programmación 5 GESTIÓN DE SUBARCHIVOS 5.1 Reconocimiento de Subarchivos A continuación se indican las reglas que sigue el WG-Compilador para reconocer un subarchivo y las partes que lo describen. 5.1.1 Reconocimiento de Cabeceras de Columna El WG-Compilador reconoce las cabeceras de columna de subarchivo de esta forma: El WG-Compilador transforma un subarchivo multi-fila en un subarchivo con una única fila conteniendo todos los campos. La cabecera de subarchivo puede ocupar hasta cuatro filas antes de la primera del subarchivo. La pantalla es leída comenzando desde la fila anterior a la primera del subarchivo, desde abajo hacia arriba. Cualquier cosa que se encuentre dentro de las columnas se considera una cabecera de campo. Si un campo se superpone a dos columnas, se considera que es la cabecera para ambas. Las cabeceras de fila se distribuyen proporcionalmente sobre las filas del subarchivo, dando prioridad a la primera. Por ejemplo, si la cabecera se compone de dos filas y un registro de subarchivo ocupa dos filas, entonces una fila de cabecera se asigna a cada fila ocupada; en su lugar, si la cabecera se distribuye sobre tres filas y el registro de subarchivo ocupa dos, entonces las dos primeras filas de cabecera describen la primera fila de subarchivo y la tercera describe la segunda fila de subarchivo. Si un registro de subarchivo ocupa más de una fila y los campos de la segunda fila van precedidos por constantes de cabecera, entonces estas constantes se convierten en cabeceras de columna de los correspondientes campos y, si las cabeceras de fila son más de una entonces todas ellas se asocian a la primera fila del subarchivo. Se supone que estas cabeceras acaban cuando se encuentra lo siguiente: Una fila conteniendo ":" o "=" (puede ser la fila en la que se indican las opciones) Una fila mixta (conteniendo variables y constantes) Una fila en blanco tras haber encontrado otra válida Una fila subrayada tras haber encontrado otra válida (puede ser la fila en la que se indican las opciones) Las mismas reglas indicadas para las cabeceras constantes son válidas si las cabeceras están en campos variables en las 4 filas que preceden al subarchivo. 5.1.2 Reconocimiento de las Opciones El reconocimiento de las filas utilizadas para contener las descripciones de las opciones en un subarchivo se efectúa de la siguiente manera: El WG-Compilador lee hasta seis filas antes de la primera del subarchivo Una fila que contenga ":" o "=" se considera válida El WG-Compilador para la búsqueda cuando: Encuentra una fila mixta (que contenga variables y constantes) Encuentra una fila en blanco tras haber encontrado otra válida Se necesita un TEXT para activar el reconocimiento de cabeceras en campos variables: En un formato que se introduce junto a un subarchivo, cada campo con el TEXT '<w>*optvar</w>' (o '<W>*OPTVAR</W>') se considera que es el campo que contiene las opciones del subarchivo. Tras los caracteres *optvar es posible forzar el nombre del subarchivo al cual están asociadas las opciones: Esta sintaxis es particularmente útil si hay subarchivos duplicados. 5.2 Optimización de Espacio en Filas Horizontales Webgate400 ignora las líneas 5250 rotas. Para el mejor aprovechamiento del espacio disponible en una pantalla, también tras obtener elementos estándar (cabeceras, opciones), Webgate400 ejecuta operaciones adicionales de optimización, con el objeto de eliminar filas en blanco sin uso, alargar los subarchivos allí donde sea posible y crear separadores lógicos a través de las filas horizontales. Dentro de un formato de pantalla: Las filas en blanco múltiples se reemplazan por una fila horizontal Si los campos descritos en el proyecto bajo 'Layout' (título, compañía, pantalla,...) son reconocidos por el WGCompilador y movidos a sus posiciones relativas, las filas que los contienen en modo 5250 pueden quedar vacías y de esta forma ser optimizadas. El número de filas de un subarchivo puede incrementarse automáticamente en modo gráfico si: No hay un formato por debajo (o está vacío tras la conversión); El subarchivo contiene filas que pasan a estar disponibles; No hay campos variables en la parte inferior del subarchivo tras la conversión; Page 56 de 108 COMPILADOR WEBGATE – Manual de programmación El subarchivo no está en una ventana (registro de equipo window). Nota: Allí donde sea posible es mejor evitar utilizar campos variables en la parte inferior del subarchivo: La salida es más rápida debido a que la imagen gráfica de la pantalla es más estable. 5.3 Paginación Programas con gestión de paginación del subarchivo Webgate400 lo emula mostrando el mismo número de filas de subarchivo gestionadas en el modo 5250. Programas con carga completa de subarchivo Webgate400 optimiza el número de filas mostradas basándose en el espacio disponible (dependiendo de la resolución de su PC). La paginación se establece de forma predeterminada a 100 registros: El applet carga 100 registros de subarchivo cada vez y espera a cualquier operación de paginación necesaria para cargar los siguientes registros. Si hay una jerarquía asociada al subarchivo entonces algunas agrupaciones pueden no estar completas, dado que pudiera ser que algunos registros no hayan sido producidos todavía, en el caso de que éstos vengan tras el centésimo cargado. La jerarquía se completa a página hacia adelante tras la fila centésima. Es posible cambiar este parámetro administrando una variable de entorno en el programa RPG (WGSFLPGL, numérica de longitud 4 sin decimales, o WGSFPL en RPG III), estableciéndola a un valor superior a 100. Esta variable DEBE establecerse al valor deseado antes de escribir el subarchivo y controlar la operación de salida por medio de una simple operación de asignación: C Z-ADD 2000 WGSFLPGL 4 0 Nota: Recuerde que Webgate400 utiliza valores altos para recuperar una mayor cantidad de datos desde el iSeries comparado con los programas gestionados en modo de "pantalla verde", y de esta forma se incrementa la carga en el servidor, lo cual provoca problemas de prestaciones. Por consiguiente, es importante encontrar el compromiso correcto entre la necesidad de obtener jerarquías completas y la velocidad en la salida de subarchivos. 5.4 Expansión subarchivos en las ventanas La expansión está condicionada por un flag en la configuración runtime y por un atributo de formato, según la siguiente lógica: si la habilitación está activa, las cuadriculas en las ventanas siempre son expandidas, a menos que no sea explícitamente requerido que no se haga a través del atributo de formato 2193=R(0). Si en el runtime falta la habilitación, las cuadriculas en las ventanas son expandidas sólo si se haya especificado el atributo de formato 2193=R(1). 5.5 Colocación La colocación del subarchivo (primera línea visualizada) está condicionado por 2 parámetros definibles en la configuración runtime: 1. Gestión MIN-RRN 2. Gestión SFLRCDNBR 5.5.1 Comportamientos según los parámetros El comportamiento de la versión gráfica es el siguiente: MIN-RRN y SFLRCDNBR los dos deshabilitados: la primera línea visualizada es el topRRN de la pantalla 5250. MIN-RRN deshabilitado y SFLRCDNBR habilitado: la primera línea va a ser establecida según sea el valor del SFLRCDNBR si está especificado *TOP, de otra manera se utiliza el valor del TopRRN (como en el punto anterior). MIN-RRN activo y SFLRCDNBR desactivo: la primera línea es la primera que se ve en el gráfico; si el subarchivo cuenta con su primera emisión, se utiliza el valor TopRRN – como en los casos anteriores. MIN-RRN activo y SFLRCDNBR activo: la primera línea está definida por el valor del SFLRCDNBR si es de tipo *TOP, de otra manera se utiliza el valor del TopRRN (como en casos anteriores). 5.5.2 Forzamiento del programa Si se quiere forzar la colocación en cierta página de subarchivo, por ejemplo porque el subarchivo ha vuelto a ser cargado totalmente y por eso ya no está disponibile el valor del TOPRRN, es posible forzar en el programa, en las específicas anteriores a la emisión del subfile-control, la primera línea a visualizar a través de la variable WGSTOP. Pero de esta manera, la colocación forzada sobre el último registro o sobre el primero por medio de SFLRCDNBR no será posible: para obtener esos comportamientos, será necesario forzar en la programación el valor de la variable Webgate WSTOP. 5.5.3 Limitaciones Si en un campo del subarchivo resulta activo el atributo DSPATR(PC) que va a forzar la colocación del cursor sobre ese registro, todas las consideraciones anteriores no seràn válidas. Para poder gestionar el subarchivo en gráfica de manera correcta, será necesario eliminar ese atributo del archivo de pantalla (display file). Page 57 de 108 COMPILADOR WEBGATE – Manual de programmación 5.6 Pantallas con Dos Subarchivos Las pantallas con dos subarchivos son emuladas: Un ejemplo es la función "Fuentes de Tutorial Interactivo", la cual puede lanzarse desde el perfil WEBGATECVT. Nota: La cabecera de subarchivo de la parte inferior debe definirse por medio del TEXT <h>…</h> para poder ser interpretado. 5.7 Jerarquías Generadas por Programa 5.7.1 Mostrar Jerarquías DINÁMICAS Las jerarquías dinámicas se utilizan cuando desea agrupar datos de subarchivo basándose en agrupaciones lógicas: No es posible ejecutar opciones relativas a agrupar campos. Además, los subarchivos dinámicos son cargados completamente por el applet. Las jerarquías dinámicas se definen con los atributos: 0602: Contiene la lista de campos de ordenación del subarchivo (dichos campos pueden estar ocultos). 0603: Contiene la lista de campos de agrupación del subarchivo: Son los campos utilizados para agrupar datos de subarchivo (los campos deben ser visibles). Para mayor información sobre la sintaxis vea la tabla resumen de los atributos de formato. Ejemplo 1: Tabla con "jerarquía" utilizando listas de ordenación y de agrupación (atributos 0602 y 0603). 5.7.2 Mostrar Jerarquías ESTÁTICAS Las jerarquías estáticas se utilizan cuando hay un campo en cada fila de subarchivo que indica el nivel de jerarquía. Las jerarquías estáticas se definen con el atributo: 0604: Contiene el nombre del campo que lleva el nivel y el del campo que guarda el estado de contracción del elemento. Para ver la sintaxis vaya a la tabla resumen de los atributos de formato. Page 58 de 108 COMPILADOR WEBGATE – Manual de programmación Ejemplo 2: Tabla con "jerarquía" utilizando un campo de nivel (atributos 0604). 5.7.3 Mostrar Jerarquía Guardando el Estado de Despliegue de Nodos Individuales Es posible mantener niveles contraídos y/o desplegados de nodos de jerarquía estática a través de la salida de pantalla así como la última configuración efectuada por el usuario. Es preciso ejecutar lo siguiente para realizar esta función: Introducir una variable de estado numérica oculta en el formato del subarchivo; Completar del siguiente modo el atributo de formato que regula la salida de jerarquía estática: 604=R(XLEVEL;C:x;S:XSTAT;), donde: o XLEVEL es el nombre del campo que identifica el nivel de jerarquía del nodo representado por la fila de subarchivo o x es el nivel de contracción predeterminado y puede tomar valores entre 0 y 9 o XSTAT es el nombre del campo que identifica el estado del nodo representado por la fila del subarchivo y que puede tomar los siguientes valores: 0 = indiferente, 1 = no visible, 2 = visible. 5.7.4 Casos Prácticos 5.7.4.1 Subarchivo Jerarquizado con Contracción Predeterminada Establecer el atributo de formato para contraer hasta el nivel 1: 604=R(XLEVEL;C:1;S:XSTAT;). Todos las filas de subarchivo se generan con el valor XSTAT = 0. El operador despliega algunos nodos: Page 59 de 108 COMPILADOR WEBGATE – Manual de programmación La interfaz del operador utiliza el campo XSTAT de las filas 3, 8, 9, 13, 20, 21 para guardar el estado de "visibilidad". Así, estos nodos tienen un valor 2 en el campo XSTAT. Cuando el operador aprieta ENTER o una tecla de función que activa el retorno de datos, este valor puede comprobarse también por el programa RPG. Nota: Para las filas utilizadas del subarchivo, se accede al indicador de la operación READC. Por consiguiente, es necesario prestar atención a su uso en el programa RPG. El operador activa una opción de la fila 3: la cual abre otra aplicación: entonces abre una nueva aplicación y vuelve a la jerarquía: Page 60 de 108 COMPILADOR WEBGATE – Manual de programmación el cual lo encontrará tal como lo dejó, con tal de que el subarchivo no vuelva a ser emitido, dando así nuevos valores a la variable de estado XSTAT. Como puede observar, los nodos 3, 8, 9, 13, 20, 21 mantuvieron el estado dispuesto por el usuario mientras que el 29 permanece en el estado de contracción predeterminado. 5.7.4.2 Expansión o Contracción Dinámica a Niveles Preestablecidos Si desea seguir expandiendo o contrayendo a ciertos niveles predefinidos, es necesario reenviar el subarchivo estableciendo el valor de la variable de estado de todos los nodos a 0 (XSTAT = 0) y cambiar el atributo de formato, indicando en la cláusula C:x el valor deseado. Partiendo del estado de pantalla anterior, haciendo 604=R(XLEVEL;C:3;S:XSTAT;), obtenemos el siguiente efecto: o con 604=R(XLEVEL;C:9;S:XSTAT;) Page 61 de 108 COMPILADOR WEBGATE – Manual de programmación para volver al nivel 1: 604=R(XLEVEL;C:1;S:XSTAT;) Page 62 de 108 COMPILADOR WEBGATE – Manual de programmación 6 FUNCIONES DE PERSONALIZACIÓN DE SUBARCHIVOS, SQL Y GRÁFICAS 6.1.1 Función de Tabla de Gráfica NOMBRE LONG. P0XVIEW 1 DEC. DESCRIPCIÓN VALORES I/O Mostrar gráfica 1=Sí I 0=No (completar campo P0XSTRCH) P0XSECON 4 Duración de la visualización en segundos (opcional) (si P0XVIEW=1) P0XNUMCH 2 Tipo de gráfica CHXARRAY I (Lista mostrada más abajo) I 300 elementos de longitud 200 posiciones, donde cada elemento se define como la DS CHXDATA que se muestra más abajo I P0XCTITL 80 Título de la gráfica (opcional) I P0XXTITL 30 Título del eje X (opcional) I P0XY1TIT 30 Título del eje Y (opcional) I P0XY2TIT 30 Título del eje Y1 (opcional) I P0XHPARM 200 Parámetros de cabecera de gráfica (opcional) I P0XSPARM 100 Parámetros de cabecera de series (opcional) I P0XTPARM 200 Parámetros de líneas / áreas de tendencia (opcional) I P0XSTRCH 100 Datos a mostrar (vías de acceso a plantilla y archivo para la gráfica) O D CHXDATA DS D D DSXSERIES DSXCATEG 1 31 30 60 D D DSXPRISE DSXVXYZ 61 62 61 82P 3 D D DSXCL DSXSLICE D D DSXNUPFX DSXSHOVA 83 122 *Serie *Categoría DIM(3) *Y Primaria/secundar. *Valores X,Y,Z (13,3) *Vínculos 123 123 *Subrayar sector 124 125 124 125 *Prefijo número *Mostrar valores Los cinco parámetros mostrados en rojo son requeridos. Fíjese que el parámetro CHXARRAY es una serie donde cada elemento está definido por la estructura de datos mostrada. (SI DESEA MAYOR INFORMACIÓN, VEA LA API WGCHAHANR EN WEBG4SRC). Para que la función pueda ser llamada por el usuario, debería ver un indicador que lista las columnas donde se indican los ejes de las correspondientes gráficas. La sintaxis para indicar como una extensión de la instancia SQL consiste en códigos de operación seguidos por el signo "=", el valor relacionado y marcado por un carácter ":". Page 63 de 108 COMPILADOR WEBGATE – Manual de programmación CÓDIGO SIGNIFICADO 610 Título de la gráfica 611 Tipo de gráfica 612 Título del eje X 613 Título del eje Y 614 Título del eje Y1 615 Serie (nombre del campo o serie de campos, separados por el signo "+") 616 Categoría (nombre del campo o serie de campos, separados por el signo "+") 617 Nombre del campo del valor X. Si se introducen varios campos separados por una coma, el primero es el primario y los siguientes son secundarios en una serie combinada. El nombre de la serie para el campo secundario se construye añadiendo la descripción del campo al valor obtenido por el atributo 615 618 Nombre del campo del valor Y (para gráficas que requieren 2 coordenadas para definir un punto) 619 Nombre del campo del valor Y1 (para gráficas que requieren 3 coordenadas para definir un punto) 620 Parámetros de cabecera de gráfica 621 Parámetros de cabecera de serie 622 Parámetros de cabecera de líneas / áreas Permite devolver contextual a la salida de pantalla, la ejecución del SQL definido en una tab o en un campo SQL (de esta manera, enseguida, la pantalla aparecerá completa del resultado del SQL). Para activar esa posibilidad hay que especificar en la cola del SQL la siguiente sintaxis: 700 701 702 703 704 705 706 707 Page 64 de 108 700=1; Permite volver a definir el orden de los campos: 701= R(CAMPO1;CAMPO2;CAMPO3;); loscampos serán dimensionados normalmente 701= R(CAMPO1:Wxx;CAMPO2:Wyy;); xx, yy dimensión(en columnas ) del campo Permite especificar los campos que hay que ocultar 702= R(CAMPO1;CAMPO2;CAMPO3;); Permite aplicar el zoom a la cuadrícula 703= R(xx); xx representa el factor de zoom (100 visualización normal) Permite bloquear las columnas en el scroll horizontal. 704=R(xx); xx representa el índice de la columna que se quiere bloquear Permite introducir un icono en el interior de un campo SQL. El valor del campo tiene que ser el valor que se asociaría a un normal campo icono. Si, por ejemplo, los campos CAMPO1 yCAMPO2 , que derivan de un SQL, traen la sintaxis de un icono, es necesario añadir en cola al SQL la sintaxis: 705=CAMPO1(h:11;w:11;n:1;u:px);CAMPO2(h:16;w:16;n:1;u:px); Esa sintaxis sirve para identificar la dimensión del icono, exactamente lo que pasa en la text juntada a los campos de las pantallas. Los iconos así definidos pueden ser activos: es decir, pueden valorizar un campo (perteneciente a un cualquier formato record) con un valor cuando se va a hacer click. Si por ejemplo: CAMPO1 = „about.wdf:Barrido:T2.EJECUTA=Z ‟ con el click el campo EJECUTA del formato T2 será valorizado con el valor „Z‟. Además es posible hacer que el valor escrito en el campo dedestino sea el valor de otro campo del record al cual pertenece la imagen: „about.wdf:Barrido:T2.EJECUTA= &CAMPO2‟ Si después del '='aparece la letra '&', el valor escrito en el campo EJECUTA será el valor campo CAMPO2. Es posible juntar a un icono un link (cuyo valor está definido en otro campo del record), así que con un click se vaya a ejecutar el mismo link: 705=ICO(h:11;w:11;n:1;u:px);706=ICO:LINK; La sintaxis precedente indica que al apretar el campo ICO se va a ejecutar el link especificado en el campo LINK. Además se puede indicar queun campo resultadodel SQL no es visible, por medio de la siguiente sintaxis:707=CAMPOH El campo CAMPOH no será visualizado. Permite especificar que a través de un clic en el icono (especificadocon el atributo 705) se ejecuta el link especificadoen otro campo resultado de la query. La sintaxis es : 709=CAMPO_ICONA:CAMPO_LINK CAMPO_ICONO es el nombre del campo definido como icono a través del atributo 705 CAMPO_LINK es el nombre del campo en el cual se especifica el link a ejecutar Permite especificar que un campo, resultado de la query, no tiene que ser visualizado La sintaxis es: COMPILADOR WEBGATE – Manual de programmación 707=CAMPO1;CAMPO2; 708 709 CAMPO1 y CAMPO2 no serán visualizados en el campo SQL Permite forzar el comportamientodefindopor los atributos 701, 702, 703, 704 aunque no esté presente unreset (restablecer) disposición columnas. La sintaxis es: 708=R(1); Define la modalidad para volver a ejecutar la query. Si no está indicado, la query vuelve a ser ejecutada cada vez que se apreta la tecla función. 709=R(*C); la query vuelve a ser ejecutada si cambia su sintaxis. 709=R(*R); la query vuelve a ser ejecutada sólo si lo solicita el usuario. Para forzar la ejecución de la query, hay que hacer un click derecho en la primera celda de la cuadrícula y seleccionar la opción “Ejecuta SQL”. Ejemplo: 610=R(Situación de stock para inventario);611=R(26);615=R(XCODAR);616=R(XCOMAG); 617=R(XSTOCK); El ejemplo define una gráfica con el título "Situación de stock para inventario", la cual utiliza el modelo 26, tiene el campo XCOMAG como identificador de categoría y XCODAR como identificador de serie. El valor que hay que representar se encuentra en el campo XSTOCK. Ejemplo de lectura de una tabla para mostrar una gráfica con seis combinadas: <?610=R(Título de Gráfica);611=R(26);615=R(Año);616=R(Tipo);617=R(Total,Media,Máximo);?> Año Tipo Total Media Máxi mo Primario Secundario RS Eje X Eje Y1 e Y2 Eje Y2 P S 2001 PERAS 100 7 14 Total 2001 PERAS 100 Media 2001 PERAS Máximo 2001 PERAS 14 7 2001 PATATAS 110 3 6 Total 2001 PATATAS 110 Media 2001 PATATAS Máximo 2001 PATATAS 6 3 2001 MANZANAS 125 3 4 22 PERAS 100 15 25 Total 2002 PERAS 100 Media 2002 PERAS 15 2002 PATATAS 100 2 15 2002 MANZANAS 110 15 2003 PERAS 100 15 2003 PATATAS 110 15 6.1.2 Función de Actualización La regla para actualizar la base de datos es la siguiente: "Todos los campos en la cuadrícula y también en la descripción de archivo indicada van a ser utilizados por la función de actualización". "Todos los campos indicados en la sintaxis (si han cambiado) van a ser modificados". Las indicaciones que hay que entrar en la instancia son las siguientes: NombreCampo:campo;campo; campo, NombreCampo:Campo;Campo;Campo Ejemplo: SELECT C.XDSCLS, A.XCLASS, COUNT(*) FROM PARAR A INNER JOIN CLBAS ON A.XCLASS=B.XCLASS, PARAR A1 INNER JOIN TABGE C ON A1.XCLASS=C.XCLASS GROUP BY C.XDSCLS, A.XCLASS, B.XCLASS [650=(PARAR:XCLASS;…… CLBAS:XCLASS;…….)] Los puntos existen. Produce una lista Descripción - Clase que identifica las clases presentes en PARAR y CLBAS. DESCRIPCIÓN CÓDIGO NÚMERO DE REGISTRO Materias primas A 150 Acabados BB 170 Accesorios CC 190 En este caso hay dos instrucciones de actualización lanzadas, donde si el valor de la clase es AA, se cambia a A1: UPDATE SPIFIGM/PARAR SET XCLASS = 'A1' WHERE XCLASS = 'AA' Page 65 de 108 COMPILADOR WEBGATE – Manual de programmación UPDATE SPIFIGM/CLBAS SET XCLASS = 'A1' WHERE XCLASS = 'AA' Existe la API Webgate400/RFQR04, la cual tras enviarle la sintaxis en el primer parámetro, ejecuta la actualización. Parámetros: 1 P0XFQSQU 1024 Cadena de caracteres alfanumérica que se ejecutará 2 P0XRESULT 1 Resultado alfanumérico de la ejecución La sintaxis que se entra como extensión de la instancia SQL es la siguiente: <?650=R(PARAR:XCLASS,XCODAR,XUNITM;CLBAS:XCLASS,XCODAR,XUNITM,XKKKKK)?> Donde indica que hay dos archivos en la actualización (PARAR y CLBAS), y los campos que pueden ser cambiados en PARAR son XCLASS, XCODAR y XUNITM, mientras que en CLBAS los campos son XCLASS, XCODAR, XUNITM y XKKKKK. 6.1.3 Función de Jerarquía Los códigos y sintaxis válidos utilizados por el programa son: 6.1.3.1 Código Significado 602 Ordenar campos 603 Agrupar campos 604 Campo de nivel 605 No utilizable 606 No utilizable Ejemplo <?602=R(XCOMAG;XCODAR);604=R(XCOMAG);?> El ejemplo muestra una jerarquía por XCOMAG en una ordenación por XCOMAG + XCODAR. 6.1.4 Funciones de Resumen Códigos de operación parecidos a los que se utilizan para las jerarquías se utilizan para identificar y asignar funciones al mostrar un subarchivo que deriva de una función SQL dinámica, o de una jerarquía de un subarchivo normal de programa. En realidad, para ser más específicos, trabajan conjuntamente dado que los campos de jerarquía definen puntos de interrupción para calcular totales, promedios u otras operaciones. Hay cinco funciones matemáticas: Total, promedio, mínimo, máximo y contar. Si las funciones de resumen se asocian a un SQL dinámico, el comando SQL debe contener una conveniente cláusula ORDER BY. Código Significado 607 Funciones de resumen y cuenta 608 Funciones de salida: F = Formato: R = Solo resumen D = Detalle NC = Número de columna: Columna utilizada para la salida, visualizando valores simples Ejemplo: Si quiere aplicar la función total y promedio en el campo XNUMER (campo cantidad) mientras que para el campo XPREZZ aplica las funciones mínimo, máximo y contar: 607=R(XNUMER<SUM,AVG>;XPREZZ<MIN,MAX,COUNT>;) SELECT XWORKC, XCOMAC, XEFFIC, XPROOR FROM SPIFIBO/MACHI ORDER BY XWORKC <?603=R(XWORKC+XCOMAC<T:Y,D:N>;);607=R(XEFFIC<SUM,AVG>;XPROOR<AVG,MIN,MAX>;); 608=R(FE=R;NC =4)?> La primera fila de totales debe verse en la correspondiente fila de jerarquía. 6.1.5 Funciones de Resumen Gráficas Cuando la consulta tiene una jerarquía, y para ella se muestran funciones de resumen, la función de petición del gráfico también queda influida. En particular, el sistema reconoce el primer nivel de jerarquía como el objeto de la jerarquía de la gráfica, una vez que el nivel definido como serie cambie (el primero, si cambia la serie, no está definido). Si las funciones de compresión de apertura del nivel se utilizan como objeto, entonces se reconoce el último nivel actualmente abierto. Si lo sitúa en el detalle del último nivel la función de petición de la gráfica pregunta qué nivel de detalle Page 66 de 108 COMPILADOR WEBGATE – Manual de programmación desea alcanzar: Seleccionando el último (por ejemplo, el detalle), se efectúan totales parciales en los detalles del nivel contenido, incluyendo todos los cambios de serie. Por ejemplo, una consulta con dos niveles de jerarquía (Año, Clase de elemento) con detalles consistentes en los Códigos de elemento. Fíjese en las funciones de resumen, los cambios de serie, la primera selección para el eje X y los 2 datos elegidos para representarlos en la gráfica Y1, Y2. Page 67 de 108 COMPILADOR WEBGATE – Manual de programmación La gráfica automáticamente muestra el resultado por clase de elemento. Al situar el cursor en el detalle el programa muestra un menú para elegir el nivel de gráfica. Por ejemplo, si elige Código de elemento, obtendrá este resultado. Page 68 de 108 COMPILADOR WEBGATE – Manual de programmación Compruebe que los resultados mostrados pertenecen a la rama de la jerarquía donde ha situado el cursor. Page 69 de 108 COMPILADOR WEBGATE – Manual de programmación 6.1.6 Resumen de Atributos de Formato Aplicables a Rejillas, SQL y Gráficas Código Significado 602 Campos de ordenación 603 Campos de agrupación 604 Campo de nivel 605 No utilizable 606 No utilizable 607 Campos de total y resumen 608 Funciones de salida: Ejemplo F = Formato: R = Solo resumen D = Detalle NC = Número de columna: Columna utilizada para la salida, visualizando valores simples 610 Título de la gráfica 611 Tipo de gráfica 612 Título del eje X 613 Título del eje Y 614 Título del eje Y1 615 Serie (nombre de campo o serie de campos separados por el signo "+") 616 Categoría (nombre de campo o serie de campos separados por el signo "+") 617 Nombre del campo del valor X. Si se introducen varios campos separados por una coma, el primero es el primario y los campos siguientes son secundarios en una serie combinada. El nombre de la serie para el campo secundario se construye anexando la descripción del campo al valor obtenido por el atributo 615 618 Nombre del campo del valor Y (para gráficas que requieren dos coordenadas para definir un punto) 619 Nombre del campo del valor Y1 (para gráficas que requieren tres coordenadas para definir un punto) 620 Parámetros de cabecera de la gráfica 621 Parámetros de cabecera de las series 622 Parámetros de cabecera de las líneas/áreas 630 Nombre del campo que identifica el nivel forzado de resumen cuando se vuelve a representar una gráfica obtenida a partir de un SQL dinámico (si está disponible en la programación RPG) 631 Nombre del grupo que identifica el nivel forzado de resumen cuando se vuelve a representar una gráfica obtenida a partir de un SQL dinámico (si está disponible en la programación RPG) 650 Archivos y campos para la función de actualización (UPDATE) 680 Título desglosable (No disponible en programación RPG) 681 Índice del campo utilizado al desplegar el desglose. Se calcula lo siguiente: Suma, media, mínimo, máximo, cuenta. La definición del campo de desglose en la pantalla establece qué resultado utilizar. (No disponible en programación RPG) 690 Page 70 de 108 Cabecera de columna en la rejilla al representar la salida de un SQL <?630=DEC. Item;631=DEC. Class<METALIC RAW MATERIALS X>;?> SELECT XNAZIO, XQTUMP FROM CLBAS WHERE XNAZIO=‟IT‟ <?680=Average National Quantity Moved;681=2;?> COMPILADOR WEBGATE – Manual de programmación 7 CONFIGURACIÓN DEL PROGRAMA Webgate400 gestiona fuentes escritos en RPG III o RPG IV. Durante la fase de conversión en fuente RPG III se transforma en RPG IV. Los mismos programas WG-Compilado pueden trabajar en modo gráfico y también en modo 5250. 7.1 Variables de Entorno Si quiere diferenciar los entornos (Webgate400 y 5250), es posible usar una variable suministrada por Webgate400 en el fuente. Esta variable se llama WEBGATE en RPG IV, o WEBGAT en RPG III. Nombre de variable: WEBGATE Tipo: *CHAR Longitud: 1 Valores: WEBGATE = '0' en 5250 WEBGATE = '1' en entorno gráfico En los programas puede utilizar la variable WEBGATE y declararla sin tener que inicializarla. 7.1.1 Declaración en RPG III DEFINICIÓN: I DS I 1 1 WEBGAT *===================================================================== C C 99N99 MOVE MOVE *BLANK WEBGAT WEBGAT WEBGAT IFEQ '1' WEBGAT 1 1 USO: C * C … ENDIF 7.1.2 Declaración en RPG IV DEFINICIÓN: D D DS WEBGATE 1 *===================================================================== C MOVE WEBGATE WEBGATE 1 C 99 CAN99 MOVE *BLANK WEBGATE C IF WEBGATE = '1' * C … ENDIF 1 USO: Webgate400 también suministra una API, ya llamada en el programa WG-Compilado, la cual retorna al valor de la variable WEBGATE: Programa API Webgate Page 71 de 108 CALL WEBGATE400/WGINACTION PARM WEBGATE Tipo Longitud I/O Ejemplo A 1 O 1 = Webgate COMPILADOR WEBGATE – Manual de programmación 0 = No Webgate Page 72 de 108 COMPILADOR WEBGATE – Manual de programmación 7.2 Palabras Clave ROLLUP y ROLLDOWN Las palabras clave ROLLUP y ROLLDOWN se interpretan a nivel de archivo de pantalla y a nivel RPG. Las palabras clave PAGEDOWN y PAGEUP tienen la misma función y no son gestionadas. Nota: Se asocia un indicador de respuesta para el programa, con el fin de gestionar las palabras clave ROLLUP y ROLLDOWN definidas en un formato de pantalla. 7.3 Interpretación de la Estructura de Datos INFDS El programa RPG WG-Compilado gestiona ciertos campos que describen el formato de pantalla definido en el programa original en la estructura de datos INFDS y se asignan automáticamente cuando se retorna la pantalla: Notas: NOMBRE DE CAMPO DESCRIPCIÓN POSICIÓN INICIAL POSICIÓN FINAL IO-RCD-FMT Nombre del formato de registro 261 270 DSP-AID Byte de ayuda 369 369 CURSOR Posición del cursor 370 371 SF-RRN Número relativo de registro del subarchivo 376 377 MIN-RRN Mínimo número relativo de registro del subarchivo 378 379 NUM-RCDS Número de registros del subarchivo 380 381 ACT-CURS Posición del cursor en la ventana activa 382 383 *STATUS Código de error El campo MIN-RRN siempre debe definirse conjuntamente con el campo SF-RRN, con el fin de ser interpretado. Actualmente los códigos de error gestionados por el campo *STATUS son los relativos a las teclas ROLLUP / ROLLDOWN (códigos 01122 y 01123). Para activar esta función debe definir el atributo 606, especificando el indicador que debe activarse cuando se aprieta una de las dos teclas: 606=R(1122;1123;I99) Los valores de fila y columna para los campos CURSOR y ACT-CURS solamente se gestionan en los campos (no en ninguna posición del archivo de pantalla) y el valor de la columna siempre indica la primera columna del campo donde está situado el cursor. 7.4 Interpretación pantalla en SHARE (compartida) La gestión de pantalla en share (compartida) está garantizada también en entorno gráfico. En la mayoría de los casos la condivisión está garantizada automáticamente en el interior del programa deletreado en modalidad Webgate, que ejecuta automáticamente, cuando empieza, una práctica de lectura de datos compartidos, eventualmente escritos por otro programa que utiliza la misma pantalla. En el caso de que un programa que gestiona una pantalla en share (compartida) vuelva a llamar otro programa que ejecuta operaciones en la misma pantalla, es necesario que el programador RPG añada la siguiente /COPY en el interior de la surgente que hay que compilar, en la especifica sucesiva a la CALL. /COPY *LIBL/WGQCPYSRC,WGRTVH LIMITACIONES: Dentro programas que utilizan pantallas compartidas no se puede utilizar la funcion de RENAME (Volver a nombrar)de formatos. Page 73 de 108 COMPILADOR WEBGATE – Manual de programmación 8 SERVICIOS DE APLICACIÓN Se podría decir que con Webgate400 se ha introducido un tercer nivel de programación: 1. El primer nivel de programación es la base de datos (archivos lógicos, integridad referencial, disparadores, etc.) 2. El segundo nivel consiste en los programas RPG. 3. Webgate400 suministra un tercer nivel de programación que opera a un nivel superior, en el proceso de la interfaz y sus eventos. Los parámetros disponibles son usuario, grupo, idioma, sistema y todos los campos de pantalla (visibles u ocultos). 8.1 Servicios de Comando A esta función se accede desde el menú principal. Para incrementar las funciones disponibles en cada pantalla es suficiente con describir reglas de activación que definan la disponibilidad de un comando cuando haya ciertas variables en la pantalla (en campos visibles u ocultos). Básicamente, las reglas se describen por medio de una instrucción que representa este concepto: "Allí donde estén presentes el campo1 o el campo2 y el campo 3, estará disponible el comando xxxxxxxx con parámetros que recibirán los valores en pantalla de las variables campo1 y campo3." Se pueden llamar comandos AS/400, comandos PC (tales como mandatos DOS) y servicios web. De este modo, compilando solamente un registro de comandos podría, por ejemplo, generar una gráfica utilizando "Crystal Reports" en todas aquellas pantallas que contengan un "código de artículo", representando el consumo del producto y sin cambiar la aplicación de ninguna otra forma. Los tipos de servicios de comando disponibles son los siguientes: GENERAL: Activado desde la "barra de comandos" o haciendo clic derecho en el campo en cuestión. MÁS INFORMACIÓN: Activado haciendo doble clic en el campo en cuestión. ANEXAR: Se lanza desde la "barra de comandos" (DATABASE LINKS). AYUDA: Se ejecuta haciendo clic derecho. BÚSQUEDA: Activado con clic derecho. Cuando un campo en una pantalla puede activar un comando, éste se marca con un símbolo especial (un punto rojo, azul, verde, amarillo respectivamente en la esquina de los campos en cuestión). 8.1.1 Estándar y Personalizado 8.1.2 Iconos de Comando 8.2 Scripts y WGEXEIOUT Es posible asociar al vínculo un comando interactivo o batch que ejecutará el sistema. Este comando puede generar una salida, la cual puede ser un archivo, un documento, un programa ejecutable u otro objeto. Page 74 de 108 COMPILADOR WEBGATE – Manual de programmación Para hacer que el applet entienda que el vínculo es un comando que ejecutará es necesario usar las siguientes claves al inicio del vínculo: exei:// Para ejecutar un comando interactivo; exeb:// Para ejecutar un comando batch. Ejemplo: Exei://CALL LIB01/PGM01 PARM('ABC' 12) Nota: El comando se ejecuta en el trabajo (sesión) que contiene el vínculo. 8.2.1 Manejar un Objeto de Salida de un Comando Si el comando exei genera una salida, Webgate400 suministra una API para poderla manejar: API para manejar la salida Tipo Longitud I/O Ejemplo CALL WEBGATE400/WGEXEIOUT PARM URL A 256 I '/webgate400/temp/page1.html' PARM ACTION A 64 I 'Open' 'OpenDelete' PARM ERRMSG A 256 O PARM TYPE A 1 I 'Y' = Retorna el control al RPG (se puede usar en botones pulsadores) ' ' = No retorna el control al RPG (se usa en vínculos con exei://) (En el ejemplo anterior, se supone que se llama a la API tras la ejecución del programa LIB01/PGM01). Ejemplo 1 Supongamos que el programa PGMCRTHTML crea una página HTML y la pone en el directorio /html/page1.html del IFS. El vínculo tendrá este valor: exei://CALL PGMCRTHTML PARM('XXX'). El mismo programa PGMCRTHTML, tras crear la página HTML, debe llamar de la siguiente manera a la API Webgate400: CL: CHGVAR VAR(&URL) CHGVAR CHGVAR CALL VAR(&ACTION) VALUE('OpenDelete') VAR(&MSGERR) VALUE(*BLANK) PGM(WEBGATE400/WGEXEIOUT) PARM(&URL &ACTION &MSGERR) VALUE('html/page1.html') La página HTML aparece tras hacer clic en el vínculo. Ejemplo 2 Si quiere que se abra un documento de Word, indique: CHGVAR VAR(&URL) VALUE('C:\documentos\documento.doc') CHGVAR VAR(&URL) VALUE('C:\documentos\prueba.pdf') Si necesita iniciar Acrobat Reader, indique: Y si quiere enviar un correo electrónico: CHGVAR VAR(&URL) VALUE('mailto:direccion_email@dominio') ¡Cuidado!: Para que el applet pueda mostrar por pantalla la salida, es necesario que el trabajo que lanzó la API WGEXEIOUT emita una pantalla que debe permanecer abierta hasta que la salida esté disponible. 8.3 Soporte de Ejecución de Programas PC El soporte para la ejecución de programas PC se obtiene llamando al programa WGSTRPCOC: CALL PARM El parámetro CMDW es alfanumérico de 200 posiciones. Page 75 de 108 'WGSTRPCOC' CMDW COMPILADOR WEBGATE – Manual de programmación De forma alternativa, puede ejecutar el parámetro WGSTRPCOP desde el applet: Por ejemplo, si quiere llamar a una sesión de applet en un programa RPG WG-Compilado debe emitir esta instrucción: CALL PGM(WGSTRPCOC) PARM('C:\EDMAPP\WEBGATE400\WEBGATE400.EXE') La máscara de la primera conexión al applet se lanza con esta instrucción. Con un comando un poco más complejo es posible automatizar ciertas fases de la conexión hasta el lanzamiento de una única instancia gráfica: WEBGATE400 /HHost /UUsuario /WContraseña /AAplicación /SSesión /C"Comando" Donde: Host = Nombre o dirección IP del host de conexión; Usuario = Nombre de usuario para la conexión; Contraseña = Contraseña para la conexión; Aplicación = Nombre de la aplicación referida, para configuración del entorno (configuración del Runtime - archivo WGXPARMS); Sesión = Nombre de la sesión o prefijo a utilizar (configuración del Runtime); Comando = Línea de comando que debe ejecutarse (estilo iSeries). Si desea ejecutar un comando DOS, por ejemplo COPY, es necesario especificar esta sintaxis: CALL PGM(WGSTRPCOC) PARM('cmd.exe /C COPY "VíaAcceso1" "VíaAcceso2" ') Nota: Recuerde que el programa WGSTRPCOC debe incluirse en un programa que contenga un archivo de pantalla. Ejemplo: Ejecución directa de un programa en otro sistema abriendo otra instancia de Webgate400 enviando los parámetros: CALL PGM(WGSTRPCOC) PARM('C:\EDMAPP\WEBGATE400\WEBGATE400.EXE /H192.10.10.10 /UROSSIM /C”CALL PGM(PROVA) PARM(‘AR44001’ ‘402’)”) Page 76 de 108 COMPILADOR WEBGATE – Manual de programmación 9 MENÚS Es posible crear menús con estructura de árbol utilizando el WG-Compilador de Webgate400: Este resultado se puede obtener de dos formas: 1. El applet lee el archivo WGMNTREE: Este archivo es el mismo para todas las aplicaciones y se encuentra en la biblioteca WEBG4FD. Se rellena utilizando el comando WGCRTMNU y contiene el árbol del menú expandido. 2. El applet lee los cuatro archivos de DBmenu, los cuales pueden ser compilados por el programador utilizando el comando WGCRTMNU (para menús UIM o DSPF) o lanzando la función "Menu Management" desde el mantenimiento del proyecto en el control del WG-Compilador. El applet lee los cuatro archivos de DBmenu solamente si el archivo WGMNTREE está vacío o no existe. 9.1 Comando de Conversión o Integración El comando de conversión interpreta el menú UIM o DSPF: UIM Fuentes MENU DSPF Fuentes MNUDDS El comando de conversión de menú se sustenta en una base de datos (DBmenu) que puede llenarse automáticamente por la misma conversión utilizando los fuentes del menú, o cumplimentado a mano por el programador. Esto hace posible llevar menús desde las oficinas del desarrollador de software a las del cliente, e integrar menús personalizados para cada cliente. Page 77 de 108 COMPILADOR WEBGATE – Manual de programmación El nombre del menú y su biblioteca se establecen en el parámetro "Menu" (MNU). El parámetro "Application name" (APP) es el nombre de la aplicación a la que se vincula el árbol jerárquico del menú. Es necesario crear una rama separada. Si este parámetro se utiliza para crear el árbol, también pueden utilizarse para actualizarlo. El parámetro "Library of WG-compiled programs" (LIBCVTPGM) contiene la biblioteca de los objetos WGCompilado: en esta biblioteca se crean automáticamente cuatro archivos DBmenu. Los parámetros "Pre-command" y "Post-command" (PRECMD y POSTCMD) indican los comandos que hay que seguir antes y después de la conversión. El parámetro "Source file" - "Source library" (MNUSRCFIL) contiene el nombre (o nombres) del archivo fuente del menú y su biblioteca. El parámetro "Use source menu" (USESRCMNU) indica si el parámetro MNUSRCFIL debe usarse. Si se indica *YES, los archivos DBmenu y WGMNTREE se rellenan basándose en los menús establecidos en el parámetro MNUSRCFIL; si se indica *NO, el archivo WGMNTREE se llena basándose en el contenido del archivo DBmenu precompilado. Los menús se crean en batch; al final, el menú se encuentra en el archivo WGMNTREE de la biblioteca WEBG4FD. Nota: El menú se descarga en la memoria del PC por medio del applet en la primera conexión del usuario: Si ha cambiado, entonces es necesario eliminarlo de la cache usando el comando del applet, con el fin de ver la versión actualizada. Ejemplo 1: Conversión de menú desde diferentes bibliotecas WEBGATE400/WGCRTMNU MNU(LIB01/*ALL LIB02/*ALL LIB03/*ALL) USESRCMNU(*YES) DOTREEMNU(*ALL) Ejemplo 2: Conversión de menú desde diferentes bibliotecas con fuentes trasladados desde sus archivos fuente originales WEBGATE400/WGCRTMNU MNU(LIB01/*ALL LIB02/*ALL LIB03/*ALL) USESRCMNU(*YES) MNUSRCFIL(LIBSCR01/FILSRC01) DOTREEMNU(*ALL) Ejemplo 3: Cambiar un menú específico y regenerar todo el árbol WEBGATE400/WGCRTMNU MNU(LIB01/MNU01) USESRCMNU(*YES) DOTREEMNU(*ALL) Ejemplo 4: Cambiar dos menús específicos y regenerar todo el árbol WEBGATE400/WGCRTMNU MNU(LIB01/MNU01) USESRCMNU(*YES) DOTREEMNU(*NO) WEBGATE400/WGCRTMNU MNU(LIB01/MNU02) USESRCMNU(*YES) DOTREEMNU(*NO) WEBGATE400/WGCRTMNU MNU(LIB01/*ALL) USESRCMNU(*NO) DOTREEMNU(*ALL) Page 78 de 108 COMPILADOR WEBGATE – Manual de programmación Ejemplo 5: Menú desde base de datos (Ejemplo de módulo básico) Primero cree los archivos DBmenu (vacíos) en la biblioteca especificada; lance el comando: WEBGATE400/WGCRTMNU MNU(LIB01/*ALL) USEMNUSRC(*NO) DOTREEMNU(*NO) Llene el DBmenu (vea el formato del archivo). Ejemplo 6: Crear el árbol de menú WEBGATE400/WGCRTMNU MNU(LIB01/*ALL) USEMNUSRC(*NO) DOTREEMNU(*ALL) Ejemplo 7: Volver a crear solamente una rama del árbol, sin recrear el árbol entero (multi-entorno) Use el parámetro APP del comando; creará una rama separada. Si este parámetro se utiliza para crear el árbol también puede reutilizarse para actualizarlo. La limitación es que un *APPLIB no puede superponerse sobre otro. Creación: WEBGATE400/WGCRTMNU MNU(LIB01/*ALL) APPLIB(APP01) DOTREEMNU(*ALL) Actualización: WEBGATE400/WGCRTMNU MNU(LIB01/*ALL) APPLIB(APP01) DOTREEMNU(*APPLIB) Ejemplo 8: Añadir e integrar menús de cliente personalizados en el menú sin cancelar las entradas originales Las bibliotecas de objetos de los menús originales son suministradas por el cliente: WEBGATE400/WGCRTMNU MNU(ORIGLIB01/*ALL ORIGLIB02/*ALL PERSOLIB01/*ALL) DOTREEMNU(*YES) 9.2 El DBmenu El DBmenu consta de los cuatro siguientes archivos: WGMNUFLD (Carpeta), WGMNUFLT (Texto de carpeta), WGMNUCMD (Comandos), WGMNUCMT (Texto de comandos). Los archivos de trabajo se pueden crear de una de estas dos formas: 1. Si los fuentes del menú están disponibles, el convertidor de menús UIM o DSPF de Webgate400 lanza la función de conversión. En este caso se llena (o actualiza) el contenido de los archivos WGMNUFLD, WGMNUFLT, WGMNUCMD y WGMNUCMT, en caso contrario los archivos permanecerán vacíos. De esta forma un cliente puede integrar menús personalizados en una estructura de menú convertido (suministrado por un fabricante de software) sin necesidad de tener los fuentes. 2. Si los menús que hay que convertir residen en una base de datos (por ejemplo el archivo de menú ACG) es posible llenar los archivos DBmenu directamente, y entonces gestionarlos por medio de la función "Menu Management" perteneciente a "Gestión de proyectos" del Control del WG-Compilador. 9.2.1 Estructura de la Base de Datos A continuación hay un ejemplo de cómo crear una pequeña estructura con un menú y un submenú partiendo desde el menú de caracteres estándar y llenando los archivos de trabajo de DBmenu. Page 79 de 108 COMPILADOR WEBGATE – Manual de programmación Los cuatro archivos DBmenu se compilaron de la siguiente manera para obtener el árbol de menú gráfico: WGMNUFLD Vínculo entre carpetas FLDLIBI FLDMNUI FLDSEQO FLDLIBO FLDMNUO BIBLIOTECA FLDA1 1 BIBLIOTECA FLDB2 BIBLIOTECA FLDA1 2 BIBLIOTECA FLDC2 BIBLIOTECA FLDC2 1 BIBLIOTECA FLDE3 FLDTXTO FLDRES WGMNUFLT Texto de las carpetas TXTLIB TXTMNU TXTLANG TXTFLD BIBLIOTECA FLDA1 Menu livello 1 BIBLIOTECA FLDB2 Menu B livello 2 BIBLIOTECA FLDC2 Menu C livello 2 BIBLIOTECA FLDE3 Menu E livello 3 WGMNUCMD Directorio de los comandos CMDLIB CMDMNU CMDCPT BIBLIOTECA FLDA1 1 CALL PGM1 BIBLIOTECA FLDA1 2 CALL PGM2 BIBLIOTECA FLDB2 1 CALL PGM3 BIBLIOTECA FLDB2 2 CAPGM4 BIBLIOTECA FLDC2 1 CALL PGM5 BIBLIOTECA FLDC2 2 CALL PGM6 BIBLIOTECA FLDE3 1 CALL PGM7 BIBLIOTECA FLDE3 2 CALL PGM8 WGMNUCMT Texto de los comandos Page 80 de 108 CMDPRE CMD CMDPOST CMDLIBCVT CMDLIBPRD CMDLIBCUR COMPILADOR WEBGATE – Manual de programmación TXTLIB TXTMNU TXTOPT BIBLIOTECA FLDA1 1 TXTLANG TXTCMD Azione 1 BIBLIOTECA FLDA1 2 Azione 2 BIBLIOTECA FLDB2 1 Azione 3 BIBLIOTECA FLDB2 2 Azione 4 BIBLIOTECA FLDC2 1 Azione 5 BIBLIOTECA FLDC2 2 Azione 6 BIBLIOTECA FLDE3 1 Azione 7 BIBLIOTECA FLDE3 2 Azione 8 Para crear el menú gráfico a partir de los archivos con datos, es necesario ejecutar el comando: WEBGATE400/WGCRTMNU MNU(MenuLibrary/*ALL) APP(ApplicationName) USEMNUSRC(*NO) DOTREEMNU(*ALL) 9.3 Ajustes Globales Webgate400 puede configurarse para lanzar el menú definido en el perfil de usuario cuando se identifica en la pantalla de inicio, por medio de los parámetros INLMNU o INLPGM (utilizados en las sesiones 5250): La única condición es que estos menús hayan sido convertidos. Estos valores están protegidos: Solamente pueden cambiarlo los usuarios que pertenezcan a la categoría *SECOFR. También es posible especificar el uso de un menú fijo o de un menú predeterminado (el cual se lanzará si el menú que hay que utilizar no existe en Webgate400). Desde el menú WEBGATE400/WGMNURUN, lance la opción 5 (Configurar Acceso de Menú): 9.4 Hallazgo menú de WEBGATE Webgate provee dos métodos por lo que concierne el hallazgo del menú del usuario: 1. el usuario posee un único menú asociado; 2. el usuario posee un menú distinto por cada company (=sistema informativo). 9.4.1 Hallazgo menú único El método de individuación del menú usuario, según el valor del campo “Menú Principal”, sigue los siguientes pasos: Si el valor es igual a *SIGNOFF o bien a *SAME, significa que no existe un menú especifico para el usuario, por eso, si el campo “Programa inicial” está vacío, se va a buscar el menú de default (aquel que está indicado en el campo “Menú Default Programas”) y, si también este no existe, se empieza la búsqueda de un menú que se encuentre en el campo “Proyecto”, es decir el nombre de la aplicación en uso. Si el menú principal no está definido pero existe un programa inicial, es decir si el campo “Programa inicial” tiene un valor distinto de *NONE y de WGINLMNU, se crea un menú con un único nudo que coincide con el programa especificado. Si el menú “Menú Default Programa” es igual a MAIN y la librería es *LIBL (o bien si estos son los valores devueltos del programa WGINLMNU), significa que el menú que se va a utilizar, si existe, es el menú indicado en el campo “Menú Principal”. Si en los casos de arriba se identifica un menú usuario que no existe, hay que proceder como explicado en el paso 1. Page 81 de 108 COMPILADOR WEBGATE – Manual de programmación 9.4.2 Hallazgo menú en el cambio del sistema informativo Este procedimiento se aplica si el campo “Utiliza Menú de la Company” vale Y. Por cada cambio de sistema informativo siempre el programa WGINLMNUXX será llamado en la librería del programa inicial (campo “Librería Programa Inic”), al cual se trasladan dos parámetros: el usuario y la Company (Empresa) corriente (los dos parámetros formados por 10 caracteres). Ese programa tiene que configurar dos variables ambientales correspondientes al nombre y a la librería del menú usuario. Si ese menú no existe, otro menú será buscado según las modalidades que se han explicado aquí arriba. 9.4.3 Menú que hay que visualizar en el momento del Logon En el logon el usuario no ha seleccionado todavía una company, por eso es necesario definir una company inicial. De hecho, en esta situación el programa WGINLMNUXX, no recibiendo el parámetro company, no puede devolver un menú válido. De esa tarea se encarga el programa WGINLMNU, que tiene que ser definido en los parámetros “Librería” y “Programa inicial” y valoriza las variables ambientales (por medio de adecuadas API provistas) necesaria para definir la company y el menú inicial. Ese programa tiene que devolver no sólo el nombre y la librería del menú, sino también la company que está asociada a ese menú, de lo contrario aquel parámetro no se puede conocer. N.B: Es importante recordar que cuando se utiliza el programa WGINLMNU el parámetro “Menú principal” tiene que ser distinto de *SIGNOFF. 9.4.4 Api para escribir/leer parámetros ambientales WGSETMNU: sirve para definir el nombre del menú. Tiene tres parámetros: Librería del menú que hay que definir: alfanumérico desde 10. Nombre del menú que hay que definir: alfanumérico desde 10 Código de error: alfanumérico desde 1. WGSETCOM: sirve para definir el id de la company. Tiene dos parámetros: ID de la company que hay que definir: alfanumérico desde 10 Código de error: alfanumérico desde 1. WGGETENV: Sirve para recuperar los parámetros ambientales necesarios para la configuración del menú. Tiene dos parámetros: Especifica el nombre de la variable buscada (input): alfanumérico desde 50. Devuelve el valor buscado (output): alfanumérico desde 50. Los valores que se utilizan por la mayoría son: WGAPPN (nombre proyecto de compilación Webgate), WGADLIB (librería de default de datos para el proyecto), WGLANGID (lengua del usuario), REMOTE_USER (usuario que lanza la instancia http), REMOTE_ADDR (dirección IP de donde se lanza la instancia http), MENUNAME (nombre menú), MENULIB (librería menú). Las variables especificadas arriba se pueden recuperar sólo si se está ejecutando el programa en entorno CGI; en entorno no CGI, se gestionan las siguientes variables: COMPID (ID company), GRPID (ID Grupo). 9.4.4.1 Definición de las CALL Las CALL definidas en los menús, además de parámetros fijos, se pueden valorizar a través de dos variables ambientales de la applet: el nombre del usuario y el ID de la Company corriente. Para hacer que el programa que se vuelve a llamar, reciba uno o los dos parámetros, es necesario que en la lista parámetros de la CALL aparezcan dos cadenas de la sintaxis fija: &WGCOMPID y &WGUSRID, las dos sin ápices (que van a ser añadidos automáticamente). Por ejemplo: CALL LIB/PGM PARM(„PARM1‟ &WGCOMPID &WGUSRID) Page 82 de 108 COMPILADOR WEBGATE – Manual de programmación 10 MANEJO DE MENSAJES El applet es capaz de gestionar mensajes enviados entre usuarios y mensajes desde un programa a un usuario. 10.1 Mensajes Entre Usuarios Los mensajes entre usuarios se gestionan a través de la pantalla principal del applet: La pantalla de gestión de mensajes aparece para todos los mensajes enviados por el usuario: Los mensajes están caracterizados por su tipo (*INFO, *INQ, *RPY, *NTY) y nivel de gravedad descrito aplicando un número que va desde 0 hasta 99. Todos los mensajes, con excepción de los informativos (*INFO) solamente se pueden ver en la gestión de mensajes. Los usuarios que pertenezcan a las categorías *SECOFR, *SECADM y *PGMR están autorizados a utilizar 'Borrar Todo', opción que les permite borrar todos los mensajes recibidos. Haciendo clic en 'Enviar Mensaje', aparece esta ventana: Page 83 de 108 COMPILADOR WEBGATE – Manual de programmación Es posible insertar un breve mensaje que es leído inmediatamente por el receptor y un mensaje de segundo nivel para detalles. Estableciendo el parámetro 'Borrar' a 'Yes', puede solicitar que los mensajes sean eliminados una vez que el receptor los haya leído. Por medio del parámetro 'Respuesta', puede solicitar una respuesta del receptor y con el parámetro 'Notificación' a 'Yes' obtendrá una notificación de que el mensaje fue recibido. Haciendo clic en el botón ' Avanzado', puede establecer algunas características opcionales del mensaje: Se puede anexar una imagen, una dirección de correo electrónico, un sitio web para, un texto desplazable y una serie de iconos descriptivos. Los parámetros 'Planificación de Recepción de Mensaje' le permiten planificar la fecha y la hora de recepción del mensaje. 10.2 Mensajes de Programa Cuando el que envía el mensaje es un programa, se utiliza la API "WGMSWR" de la biblioteca WEBGATE400; a continuación hay una lista de los parámetros que hay que enviar al programa y sus longitudes. CALL 'WGMSWR' PARM P0TMS0 10 PARM P0SEV0 2 PARM P0RMV0 1 Eliminar mensaje PARM P0RPY0 1 Solicitud de respuesta PARM P0NTY0 1 Recibir notificación Page 84 de 108 Tipo de mensaje 0 Gravedad COMPILADOR WEBGATE – Manual de programmación PARM P0JOB0 10 PARM P0USR0 10 Nombre del trabajo PARM P0NBR0 6 PARM P0LIB0 10 Biblioteca del programa PARM P0PGM0 10 Nombre del programa PARM P0DTS0 8 0 Fecha planificación (DDMMYYYY) PARM P0HHS0 6 0 Hora planificación (HHMMSS) PARM P0SUS0 10 PARM P0SDT0 8 0 Fecha de envío (DDMMYYYY) PARM P0SHH0 6 0 Hora de envío (HHMMSS) PARM P0RUS0 10 Usuario receptor PARM P0MS10 256 Mensaje de nivel I PARM P0MS20 1024 Mensaje de nivel II PARM P0IMG0 256 Imagen asociada PARM P0ICO0 256 Icono asociado PARM P0EML0 256 mailto:// PARM P0URL0 256 Dirección Internet PARM P0BNR0 256 Texto desplazable PARM P0RTNC 1 E = Error Usuario del trabajo 0 Número del trabajo Usuario que envía Los parámetros requeridos son: Usuario receptor (P0RUS0); Tipo de mensaje (P0TMS0); Mensaje de nivel I (P0MS10); Usuario que envía o Nombre de biblioteca y programa. 10.3 Emulación de SNDBRKMSG y SNDUSRMSG La versión gráfica de Webgate400 intercepta los comandos SNDBRKMSG y SNDUSRMSG, emulando solamente una parte de su ejecución y enviando mensajes al usuario a través del manejador de mensajes propietario de Webgate400. Los parámetros interceptados y gestionados por SNDBRKMSG son: MSG (mensaje de texto) MSGTYPE (siempre establecido como *INFO) Nota: El receptor del mensaje siempre es el usuario que se obtiene por medio de RTVJOBA en el trabajo que se está ejecutando. Los parámetros interceptados y gestionados por SNDUSRMSG son: MSG (mensaje de texto) MSGTYPE (tipo de mensaje) se gestionan mensajes de tipo *INQ y *INFO, pero en modo Webgate400 TOUSR (perfil de usuario que recibe el mensaje) Los demás parámetros se ignoran. Page 85 de 108 COMPILADOR WEBGATE – Manual de programmación 11 GESTIÓN DE COMPAÑÍAS 11.1 Introducción De forma predeterminada, el applet le permite establecer la definición de hasta 9 compañías por medio del menú "Herramientas / Configuración": Estos ajustes son locales y son válidos para cada usuario que se conecte desde dicho PC; la identificación de cada compañía es un número. Para indicar compañías de forma centralizada y hacerlas configurables para cada usuario y para cada aplicación WGCompilado, están disponibles dos archivos: WGCOMP y WGCOMPT. 11.2 Archivos Los dos archivos deben residir en la biblioteca de datos de la aplicación WG-Compilado. WGCOMP Le permite definir qué compañías están visibles para un usuario, asociando sus correspondientes identificaciones. La lista de compañías habilitadas se obtiene por medio de diferentes lecturas del archivo, utilizando una clave cada vez menos detallada, basándose en los parámetros establecidos en la configuración seleccionada por el usuario (idioma y grupo). La marca "Incluir / Omitir" le permite ocultar o activar una cierta compañía solamente para determinados usuarios: Para que una compañía sea visible, la marca debe establecerse a "Y". Si la clave está completamente en blanco, el identificador especificado está habilitado para todos los usuarios. WGCOMPT Este archivo se lee una vez que se ha obtenido la lista de compañías asociadas con el usuario, al principio con la clave completa (idioma + compañía) y posteriormente usando solamente la compañía como clave, para buscar las descripciones asociadas con la compañía. Page 86 de 108 COMPILADOR WEBGATE – Manual de programmación 12 AYUDA 12.1 Descripción Webgate400 le permite desarrollar paneles de ayuda que puede añadir directamente a la interfaz de usuario. Es posible editar el contenido de la ayuda haciendo clic derecho sobre los objetos definidos como +++"puntos de enlace" (vea la lista en la siguiente sección). Puede desarrollar documentos "estándar" (suministrados por el desarrollador de la aplicación) o personalizados para el usuario, grupo, idioma y compañía. La aplicación le permite editar documentos con las herramientas habituales de Office y, para documentos estándar, los convierte automáticamente en formato HTML, guardándolos en un directorio distinto. De cualquier forma, es posible ver los documentos directamente en el formato original si la aplicación de edición está instalada en el PC. 12.2 Puntos de Enlace de la Ayuda Los Puntos de enlace están definidos del mismo modo que las referencias en instancias Webgate400 que le permiten enlazar con un documento de ayuda. Son las siguientes: Campos Archivos de pantalla (accesibles haciendo clic derecho en el área libre de la pantalla o haciendo clic derecho sobre el icono) Funciones de menú simples 12.3 Información Técnica 12.3.1 Estructura de Directorios para Guardar los Documentos Los documentos de ayuda se guardan en el IFS, en directorios creados automáticamente y con la siguiente estructura: Ejemplo: Este ejemplo muestra la disposición de las carpetas para la biblioteca DBLINK. Las plantillas están en el directorio seleccionado. Los nombres de los directorios están estructurados como sigue: Directorio de publicación: WGHnnnnnn donde nnnnnn es el nombre de la biblioteca que contiene los archivos de pantalla Directorio de edición: EWGHnnnnnn donde nnnnnn es el hombre de la biblioteca que contiene los archivos de pantalla Para distribuir los objetos de la ayuda a los sistemas de usuario final, es suficiente con salvar a todos los directorios que empiecen con WGH. Por ejemplo, el directorio publicado de Webgate400 se llama WGHwebgate400. El directorio con el prefijo EWGH contiene documentos en formato editable. Page 87 de 108 COMPILADOR WEBGATE – Manual de programmación 12.3.2 Plantillas Para adaptar el formato de los documentos de ayuda, cuando se crea un nuevo documento aparece una ventana de selección conteniendo todas las plantillas disponibles en el directorio "Templates" (vea la estructura indicada anteriormente) situada en el directorio que identifica la clase de documento. Las plantillas que quiera utilizar para cada clase de documento se sitúan en este directorio. Si hay más de una, aparecerá una ventana de selección durante la creación del documento. 12.3.3 Archivos Involucrados Una vez el documento se ha creado se encadena con un atributo de vínculo en el archivo WGATR (WGATRC para la versión personalizada). El vínculo hace referencia al número de identificación del documento codificado en el archivo WGHDC, el cual contiene la vía de acceso completa al documento. Las clases de documento están definidas en el archivo WEBGATE400/WGHCL. 12.4 Paneles de Administración de la Ayuda Para crear, modificar o borrar un panel de ayuda, primero debe ser activado. Los permisos se definen con el perfil "Configuración del Runtime" en el menú principal de Webgate400. En particular, un usuario puede tener permisos para mantener la ayuda estándar de la aplicación o solo personalizar la ayuda por compañía, idioma, grupo o usuario. Para una breve demostración de cómo se utilizan los paneles de ayuda, vea: http://www.webgate400.com/EDMSites/Clips/NovitaV3/SviluppoHelpApplicazioneeUtente.swf 12.5 Migración de una Ayuda Existente 12.5.1 Modo Para migrar paneles de ayuda existentes, estos tienen que ser convertidos a formato HTML y sus referencias tienen que estar integradas en la base de datos de archivos de pantalla generada por Webgate400. Está disponible una API, descrita a continuación, que ejecuta esta integración automáticamente. Así, los usuarios que quieran ejecutar la migración deben: 1. Ejecutar un programa que identifica esos documentos. 2. Ejecutar un programa para cada documento convirtiéndolo a formato HTML (ver el siguiente ejemplo) en el archivo QTEMPWEBGATEHLP. 3. Ejecutar la API WGFHLP01. 4. Volver al paso uno. Una vez se lleva a cabo la conversión, los paneles pueden modificarse siguiendo el procedimiento de mantenimiento normal descrito en la sección anterior. Con este propósito, tras convertir los documentos a formato HTML, además de convertirlos, la aplicación para la gestión de la ayuda los convierte automáticamente a formato WORD, para editarlos y los guarda en un formato editable en el directorio (EWGHnnnnnn). 12.5.2 Ejecución Repetida de la Migración Si es necesario repetir la migración, se deben llevar a cabo acciones antes de volver a migrar: Borre todos los registros de referencia del archivo WGATR con una instrucción SQL (se identifican por el valor del campo XFATYP entre 6001 y 6010). Ejecute CLRPFM en el archivo WGHDC (contiene los vínculos entre las pantallas y los documentos). Borre los documentos del directorio WGHnnnnn (donde nnnnn es el nombre de la biblioteca que contiene los archivos de estructura de la aplicación). 12.5.3 API WEBGATE400/WGFHLP01 La API lee el archivo QTEMP/WEBGATEHLP definida con esta sintaxis: CRTPF FILE(QTEMP/WEBGATEHLP) RCDLEN(32000) Page 88 de 108 COMPILADOR WEBGATE – Manual de programmación La sintaxis HTML no puede exceder los 32 Kb de tamaño. Los datos tienen que estar conectados en un campo con una longitud de 32000 bytes. Page 89 de 108 COMPILADOR WEBGATE – Manual de programmación NOMBRE DESCRIPCIÓN PARÁMETRO DE RETORNO LONGITUD BIBLIOTECA Obligatorio. Biblioteca a la que pertenece la ayuda. Es la biblioteca donde se encuentran los archivos de estructura de Webgate400 NO 10 COMPAÑÍA Opcional. Clave de personalización NO 10 GRUPO Opcional. Clave de personalización NO 10 USUARIO Opcional. Clave de personalización NO 10 IDIOMA Opcional. Clave de personalización NO 10 NOMBRE DEL ARCHIVO DE PANTALLA Opcional. (Deben proporcionarse el nombre del archivo o sólo el nombre de campo o el nombre del archivo de pantalla, el nombre de formato y el nombre del campo juntos). Nombre de la pantalla a la que pertenece la ayuda. Si no se indica, el documento que se está procesando se asocia a todos los campos con este nombre en la aplicación. Si el nombre del archivo de pantalla se omite también debe omitir el formato y viceversa. NO 10 NOMBRE DEL FORMATO Opcional. (Deben proporcionarse el nombre del archivo o sólo el nombre de campo o el nombre del archivo de pantalla, el nombre de formato y el nombre del campo juntos). Nombre del formato de pantalla a la que pertenece la ayuda. Si no se indica, el documento que se está procesando se asocia a todos los campos con este nombre en la aplicación. Si el nombre del archivo de pantalla se omite también debe omitir el formato y viceversa. NO 10 NOMBRE DE CAMPO Opcional. (Deben proporcionarse el nombre del archivo o sólo el nombre de campo o el nombre del archivo de pantalla, el nombre de formato y el nombre del campo juntos). Nombre del campo al que pertenece la ayuda, o acceso directo asociado a una opción de menú. Puede entrar el nombre completo del campo de la pantalla o su destino precedidos por un asterisco. Si, por ejemplo, escribe *CODAR y omite el nombre del archivo de pantalla y formato, el documento de ayuda se asocia a todos los campos que acaban con "CODAR" en todos los archivos de pantalla de la aplicación. NO 10 CLASE DE AYUDA Obligatorio. Clase de ayuda (por ejemplo, 6001 es la clase Definición General). El archivque contiene estas clasificaciones es WEBGATE400/WGHCL. NO 4 SECUENCIA Dejar en blanco. Número de secuencia del atributo en el archivo WGATR (WGATRC). El valor lo carga la API y lo retorna durante la fase de adición. SÍ 4 TÍTULO Obligatorio. Título de la ayuda. Es la descripción del documento de ayuda y es útil también durante la fase de búsqueda. También se utiliza para establecer el nombre del documento. Cuidado con los duplicados. NO 100 ESTÁNDAR Obligatorio. Forzado a Y. Y = ayuda estándar. NO 1 ACCIÓN Obligatorio. Forzado a WGHDCSAVE. WGHDCSAVE = Añadir ayuda. NO 10 UNIDE Dejar en blanco. Identificador único de ayuda. Lo genera la API y el valor se retorna durante la fase de adición. SÍ 18 TIPO DE AYUDA Obligatorio. Forzado a '0' para archivos de ayuda vinculados a objetos de pantalla; forzado a '1' para archivos de ayuda vinculados a claves de menú. Define el tipo de ayuda: Indica si el archivo de ayuda está vinculado a un objeto de pantalla (campo, archivo de pantalla) o a una clave de menú. NO 1 Page 90 de 108 COMPILADOR WEBGATE – Manual de programmación 12.5.4 Ejemplo de archivo HTML El fuente del ejemplo se encuentra en WEBGATE400/WGSAMPLES/WGHLPHTML. <head> <STYLE type="text/css"> <!-p.title {color:red; font-family:arial; font-size:16pt; font-weight: bold;} p.description {color:black; font-family:arial; font-size:16pt; font-weight:bold; marginbottom:3pt;} p.example {color:blue; font-family:arial; font-size:16pt; font-weight: bold; margin-bottom:3pt;} p.valuesavailable {color:green; font-family:arial; font-size:16pt; font-weight:bold; marginbottom:3pt;} div.normal {color:black; font-family:arial; font-size:12pt; margin-top: 3pt;} --> </STYLE> <title>Titolo del pannello di aiuto</title> <P class=title> Titolo del pannello di aiuto </P> </head> <body> <P class=description>Descrizione</P> <DIV class=normal>Testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale</div> <DIV class=normal>Testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale</div> <P class=example>Esempio</P> <DIV class=normal>Testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale</div> <P class=valuesavailable>Valori disponibili</P> <DIV class=normal>Testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale testo normale</div> </body> Visualización del archivo HTML anterior en Explorer. Page 91 de 108 COMPILADOR WEBGATE – Manual de programmación El ejemplo anterior muestra una forma básica y fácil de entender de cómo utilizar el lenguaje HTML para escribir paneles de ayuda. Todas las partes resaltadas quedan fijadas una vez que el usuario ha ajustado a sus necesidades los diversos parámetros. Las partes que no están resaltadas configuran el contenido real del panel de ayuda. Si desea más información sobre el lenguaje puede consultar una de las numerosas publicaciones en la web. El archivo TEMP/WEBGATEHLP utilizado durante el tratamiento debe contener escrito algo similar también consecutivamente en el campo WEBGATEHLP (el mismo nombre del archivo) contenido en uno o más registros, si el panel excede 32000 caracteres. Page 92 de 108 COMPILADOR WEBGATE – Manual de programmación 13 UTILIDADES 13.1 Extracción y Restaurado de Uno o Más Archivos de Pantalla: Comando WGDSPSND El comando WEBGATE400/WGDSPSND está disponible para alinear la información gráfica ESTÁNDAR para un archivo de pantalla a su objeto (incluyendo referencias a cualquier archivo de ayuda, valores predeterminados, tablas y jerarquías). Este comando permite salvar y restaurar la información en un archivo de pantalla WG-Compilado. Se crean doce archivos de trabajo (WG2ATR, WG2DS, WG2DSPF, WG2DSIND, WG2DSMSG, WG2FDB, WG2FLD, WG2FMT, WG2DFT, WG2HDC, WG2VER, WG2RUNF) en una biblioteca y es posible especificar cuál. Los parámetros determinan: El nombre del archivo de pantalla: Puede indicar un archivo de pantalla único, un grupo de archivos de pantalla (por ejemplo, RGBM*), o todos los archivos de pantalla en la biblioteca (*ALL). El nombre de la biblioteca conteniendo el archivo de pantalla WG-Compilado. La opción (*SAVE o *RST) la cual permite salvar o restaurar el archivo de pantalla. El modo (*ADD o *REPLACE) de la copia que debe ser ejecutada en los archivos de trabajo (solamente junto a la opción SAVE). Cuando se salva con la opción *REPLACE, se lanza una búsqueda de los archivos WG2* y se limpia su contenido. El nombre de la biblioteca donde quiere salvar los archivos de trabajo (WG2*). Una vez los archivos de trabajo se han restaurado, llamando al comando en el modo de restauración (*RST), los datos son situados en los archivos originales de la biblioteca especificada en el sistema. Es importante prestar atención a lo siguiente con el fin de asegurar que el comando funcionará correctamente: 1. Ponga siempre la misma biblioteca para los archivos de pantalla cuando salve y restaure. 2. Haga que la biblioteca que contiene el objeto sea la biblioteca para el archivo de pantalla. 3. El comando lanzado en más de un archivo de pantalla a la vez (por ejemplo, RGBM* o *ALL) gestiona como máximo 9999 archivos de pantalla. 4. Cuando se hacen cambios de nivel o cuando son integrados nuevos archivos de Webgate400, es necesario ejecutar el comando de salvado con la opción *REPLACE, de forma que los archivos WG2 vuelvan a ser creados basándose en las nuevas vías de acceso para los archivos correspondientes en el PC de origen. Page 93 de 108 COMPILADOR WEBGATE – Manual de programmación 13.2 Borrado de Especificaciones Gráficas de Archivos de Pantalla Existe un programa que hay que llamar con el fin de borrar de los archivos WG* los registros existentes para un archivo de pantalla y que se añadieron durante la conversión: CALL WEBGATE400/WGALLWGFP Los parámetros requeridos son el nombre de biblioteca y el nombre de archivo de pantalla. 13.3 Depuración de un Programa WG-Compilado Tal como se ha indicado, durante la conversión de los fuentes RPG que gestionan un archivo de pantalla, éstos vuelven a ser procesados con las especificaciones gráficas añadidas y son recompilados de forma que el objeto puede ser ejecutado tanto en el entorno 5250 como en el entorno gráfico. Cuando es necesario depurar un programa WG-Compilado en modalidad 5250, la conversión necesita ser lanzada con la vista de depuración en el objeto: 1. Es necesario modificar las opciones de conversión del proyecto asociado y conectar con el perfil WEBGATECVT, función "Control del WG-Compilador ", opción 10 en el proyecto. Aparece una ventana con las opciones para las especificaciones de compilación del proyecto; establezca el parámetro DBGVIEW para el comando CRTBNDRPG (sección II) a "*ALL" y el mismo parámetro para el comando CRTSQLRPGI (sección III) a "*SOURCE". Lance de nuevo el programa de conversión. Si es necesario depurar del programa en el entorno gráfico, necesita: 1. Proceder de la misma forma que en el punto 1 de la conversión 5250. 2. Entonces, tras generar la sesión Webgate lanzando al programa o función desde el menú, debe lanzar el siguiente comando a través de la sesión 5250: STRSRVJOB JOB(NombreSesiónWebgate) Si no es el único trabajo abierto con este nombre, aparece una lista para seleccionar cuál es el activo. 3. Ejecute entonces: STRDBG(NombreDePrograma) Page 94 de 108 COMPILADOR WEBGATE – Manual de programmación Aparece la pantalla de diálogo, donde está ubicado el RPG; introduzca los puntos de interrupción necesarios y continúe con el programa utilizando la tecla F12. Page 95 de 108 COMPILADOR WEBGATE – Manual de programmación 14 VERSIONES WEBGATE (RXXXX) Se puede instalar en el mismo sistema diferentes versiones de la aplicación Webgate400 y sus módulos. El PC cliente utiliza la versión correcta de una forma que es transparente para el usuario. El procedimiento de instalación del cliente se ocupa de descargar solamente los componentes necesarios para la aplicación: Los diversos componentes (ayuda, gestor,...) se descargan automáticamente la primera vez que se utilizan. Page 96 de 108 COMPILADOR WEBGATE – Manual de programmación 15 GLOBALIZAR APLICACIONES CON EL USO DE WEBGATE400 15.1 Introducción El objetivo de este manual es ser una guía útil para el desarrollador de aplicaciones que quiere internacionalizar su trabajo, es decir el desarrollador que quiere permitir el uso de la tecnología desarrollada por parte de grupos de usuario heterogéneos por lengua, cultura y nacionalidad 15.2 Definiciones 15.2.1 Globalización/Localización Globalización en el contexto de “información technology” quiere decir permitir el uso de una tecnología con todos los idioma, tipo de escritura (script) y cultura (W3C Internazionalizaciàon Activity Proposal, 05 de septiembre de 2002). El término original utilizado màs a menudo es internacionalización. Para la localización se entiende la "configuración de una tecnología con respecto a un idioma particular y la cultura" (W3C Internazionalizacion Activity Proposal , 05 de septiembre de 2002). La globalización hace posible y facilita la localización. Localización de datos Formato de datos (fechas, horarios , moneda, representación de números) Lengua (idioma y caracteres en la que los datos son expresados) 15.2.2 Glyphs y caracteres (characters) Un "glyph" es una figura, generalmente visible, que se utiliza en la escritura. Un "carácter" es un glyph que tiene significado o función en una lengua escrita. Letras, ideogramas en idiomas como chino, signos de puntuación, fórmulas matemática, notas musicales o el braille son todos ejemplos de caracteres glyps que se usan en lengua escrita. Un glyph se puede utilizar para representar caracteres diferentes en distintos idiomas: el glyph de P se utiliza para la letra 'P' en el alfabeto latino y la letra ER ' en cirílico el glyph c se pronuncia como una "k" o una "s" en inglés, se pronuncia "ts" en Polaco en ambos casos, un glyph, 2 diferentes usos, 2 distintos caracteres. 15.2.3 Script Un script es un conjunto de letras parecidas y otros símbolos escritos que se utilizan para representar la información textual de uno o más sistemas de la escritura (The Unicode Glossary). Ejemplo de scripts son los alfabetos, los varios Latinos (angloAmericano, Polaco, etc.), Cirílico, Griego, Árabe, los alfabetos indianos (Indic ), los alfabetos chinos y japoneses. 15.2.4 Set de caracteres (Character Set) Un conjunto de caracteres que representa una Script o un subsistema de una Script. Ejemplos son: el alfabeto Latín en uso en Europeo Occidental, el alfabeto latin de Europa Central, el chino simplificado y tradicional. Muchos utilizan el término "charácter repertoire" y "charácter set" como sinónimo de " code page". 15.2.5 SBCS/DBCS/MBCS SBCS significa “Single Byte Character Set ": utiliza un sólo byte para representar cada uno de los caracteres pertenecientes al charácter set. DBCS significa "Doble Byte Character Set ": utilizando dos bytes para representar cada uno de los caracteres pertenecientes al charácter set. MBCS significa "Multi Byte Character Set": es el uso de un número variable de bytes para representar cada uno de los caracteres pertenecientes al character set. 15.2.6 Code Page Un conjunto de códigos numéricos son asignados a los caracteres relacionados a valores binarios memorizados en un ordenador. Un code page (página de códigos) es el esquema para codificar uno o más conjuntos de caracteres. La relación entre charácter set y un code page es de muchos a muchos. Un único charácter set puede ser codificado en diferentes formas que dependen de la estructura del sistema informático que procesa los datos, por ejemplo un esquema de codificación ASCII en un PC y un esquema de codificación EBCDIC en un mainframe ( marco principal). Page 97 de 108 COMPILADOR WEBGATE – Manual de programmación Una sola code page puede contener más de un charácter set, si se basa en un esquema de múltiples bytes (MBCS). Por ejemplo, la code page estándar de la República Popular de China incluye más de 6000 símbolos de la script Chino Simplificada y el charácter set latino de Europa occidental (en otra parte indicado como Latin-1). Hay code page estándar para todos los lenguajes escritos más ampliamente usado (character set). Ejemplos de code page para el carácter set de los idiomas latinos ISO-8859-1de Europa occidental ISO 8859-2 de Europa Central IBM EBCDIC CP00870 de Europa Central Ejemplos de code page para el carácter set de los idiomas no latinos: Gb2312 :Estándar nacional de Chino ISO-8859-6 :Árabe Windows 949: Corea 15.2.7 Sistema de codificación de datos (Character Encoding) Establece el número binario que el ordenador va a utilizar para representar los caracteres que ves en la pantalla o en la impresora. Los 2 principales sistemas de codificación, y entonces su codepages, son ASCII y EBCDIC. ISO 646 (ASCII: American Standard Code for Information Interchange : código estándar Estadounidense para el intercambio de informaciones) codificación de 7 bits (128 caracteres) nativo en PC EBCDIC (Extended Binary Coded Decimal Interchange Code ) codificación de 8 bits. 256 caracteres. Estándares propietarios de IBM. Originalmente desarrollado porque se utilizaba con tarjetas perforadas. Nativo en muchos dispositivos IBM (mainframes, impresoras). No utilizado en PC. IBM ha desarrollado numerosas code pages equivalentes a code pages de códigos ASCII Equivalencia de la letra 'A' Code Page Valor hexadecimal ISO 646 Superset of ASCII X '41 ISO 8859-1 Western Europa (ASCII) X '41 CECP 500 Internacional Latin(EBCDIC) X 'C1 Unicode UTF-8 X '41 Unicode UTF-16 X '00 41 UTF-EBCDIC X 'C1 Page 98 de 108 COMPILADOR WEBGATE – Manual de programmación 15.2.8 Unicode Unicode es el nombre de la code page, multi byte, universal que puede contener todos los 'character set'. Esquema de asignación en la code page Unicode de los varios Character set/alfabetos en el interval(rango) 0000-FFFF, también conocido como Basic Multilingual Plane (BMP). Unicode define 2 modos de codificación (encoding): el Unicode TrasformacionFormat y el Universal Character Set. El primer se caracteriza por la capacidad para representar los codepoints unicode en un numero variable de bytes(MBCS), el segundo para un número fijo de bytes DBCS. Codificación Número de bits/bytes UTF-8 8 bits UTF-16 16 bits UTF-32 32 bits UCS-2 2 bytes UCS-4 4 bytes Page 99 de 108 COMPILADOR WEBGATE – Manual de programmación Mientras que UCS-4 y UTF-32 son equivalentes, UCS-2 y UTF-16 son diferentes en cuanto UCS-2 es capaz de representar solamente la 'range' x'0 -x'FFFF vice versa UTF-16 representa el range x'0- x' 10FFFF utilizando 4 bytes para codepoints mayor de x ' FFFF. 15.2.9 Universal Character Set (UCS) EL estándar internacional ISO/IEC 10646 define el Universal Character Set (UCS)(Juego de caracteres Universal -UCS) como un carácter encoding. Contiene cientos de miles de caracteres abstractos que se identifican cada uno con un nombre y número que se llama code point. Los caracteres (letras, números, símbolos, ideogramas, etc.) de diferentes lenguajes, scripts y tradiciones del mundo están representados por un único code point. UCS se actualiza constantemente con la inclusión de nuevos caracteres. Por esta razón se habla de versiones UCS , estamos actualmente en la versión 4.0 (UCS-4). La versión 4 de UCS es capaz de cubrir más de 1,1 millones de puntos de código (1.114.111), pero sólo los primeros 65.536 entraron en uso común antes del año 2000. En este caso se refiere a la versión 2.0 (UCS-2). Esta situación evolucionó cuando la República de China decidió que en su territorio los ordenadores vendidos tenían que suportar la code page GB1830 que incluye tanto el chino simplificado que el chino tradicional. Esto obligó al estándar USC a superar el límite de 65.535. Afortunadamente, el sistema había planeado mantener algunas áreas en el BMP para su uso futuro. Para superar el problema entonces se recurrió a los llamados surrogados, esto condujo a la superación de la codificación UCS-2 en favor de la codificación UTF-16. UCS-2 (2 bytes encoding): encoding de longitud fija 2 bytes (sólo BMP) cubre la mayoría de alfabetos y chino simplificado nativo para Windows NT/2000/XP/Vista, SQL Server,. NET, Symbian No se recomienda para DB2 y Oracle UCS-4 (4 bytes codificación): Encoding de longitud fija 4 bytes cubre todas las code page y más allá No se recomienda 15.2.10 Unicode Trasformation Format (formato de transformación Unicode) (UTF) UTF-8 (8-bit encoding): Encoding de longitud variable De 1 a 4 bytes por character o 1 bytes en el estándar US-ASCII o 2 bytes por los alfabetos o 3 bytes para chino simplificado o 4 bytes para chino tradicional Especialmente utilizado en protocolos de internet, adoptados por el Internet Mail Consortium UTF-16 (16 Bit Encodingt ): Encoding de longitud variable 2 bytes para el BMP o 4 bytes para los 'planes' siguientes 2 bytes cubren la mayoría de los alfabetos y el chino simplificado Soporta scripts bidireccionales como hebreo y árabe Es el formato interno de IBM Z/OS, es nativo de Java Versión nativa 2 bytes para SQL Server, Windows 2000/XP/Vista (con soporte para los suplentes) Symbian, .NET Aprobado para dominios de internet Recomendado por consultores de IBM Utilizado como CCSID por default (defecto) en los datos de UNICODE para OS/400 15.2.11 UTF-EBCDIC Versión UTF-8 Encoding de longitud variable Page 100 de 108 modificada por EBCDIC COMPILADOR WEBGATE – Manual de programmación De 1 a 5 byte por carácteres o 1 byte para el estándar US-ASCII o 2/3 bytes para los alfabetos o 4 bytes para chino simplificado o 5 bytes para chino tradicional Soporta todos los caracteres de UNICODE Formato interno utilizado para permitir migración o la convivencia de datos y no para el intercambio de los mismos No es activamente apoyada por IBM que pero ha elaborado la especificación que está depositada en el consorcio de Unicode Es el formato interno de trabajo del 'parser' XML desarrollado por Webgate400 Esta explicación es fuertemente orientada hacia el uso de UNICODE. Page 101 de 108 COMPILADOR WEBGATE – Manual de programmación 15.3 LA ESTRATEGIA 15.3.1 Enfoque global Migración de los database a UNICODE Exclusión de soluciones DBCS (también por recomendación de IBM) Convertir a UNICODE sólo los datos que realmente lo necesitan. Construir los sistemas en dos niveles: o El nivel de interfaz hombre-máquina (Customer Interface Layer), donde los usuarios interactúan con el sistema de información o El nivel de proceso (Core Processing Layer), donde los datos se validan, son procesados, almacenados y distribuidos a múltiples aplicaciones a por ser utilizado, por su análisis o crear informes. La mayoría de los datos para el CPL no necesitan el formato UNICODE. Minimizar el trabajo y el riesgo . Dejar el CPL como se encuentra. Aplicar la localización y UNICODE en el CIL. 15.3.2 Consideraciones sobre los datos 15.3.2.1 Clasificación de los datos donde Unicode no es necesario Codigos/identificadores alfanuméricos: códigos partes, códigos de cliente/proveedor, códigos de tablas de uso internos, etc.) Fecha Números (identificadores) Cantidad Totales (de monedas) Timestamps ( marcadores de tiempo) 15.3.2.2 Clasificación de los datos donde Unicode es necesario Nombres: Organizaciones, personas, direcciones, países. Texto: Títulos, traducciones , mensajes, etiquetas (labels), comentarios, texto por direcciones de correo, correos electrónicos . 15.4 Tácticas de Data Managment Desarrollar el código estándar para el uso en aplicaciones globalizadas utilizando el lenguaje y los códigos que son genéricos para la organización. Planificar descodificaciones para descifrar múltiples idiomas y alfabetos. No localizar a nivel de código la gestión de la información: desarrollar servicios genéricos. Determinar el nivel de integración de datos que se quiere utilizar: un database único o un database por país. Considerar la posibilidad de añadir datos de idioma y script como clave de database para memorizar el texto. Puede ser necesario almacenar la versión de idioma local, la versión transliterada y la versión traducida. Aumentar la capacidad de almacenamiento (más bytes por carácter en versiones localizadas) Activar servicios de traducción Iniciar proyectos piloto para implementar las técnicas. Globalización significa desarrollar técnicas genéricas, no patch 15.5 Proyectos piloto Utilizar proyectos piloto para desarrollar y documentar el material que se reutilizará para otras aplicaciones: métodos, procedimientos, frameworks, estándares, pruebas, 'lecciones aprendidas' y modelos de planificación. Desarrollar, probar y documentar métodos y procedimientos para “Unicoding“ y 'data bases' Elaborar normas y guías practicas Identificar, probar y documentar la infraestructura y el software necesario Page 102 de 108 COMPILADOR WEBGATE – Manual de programmación 15.6 Globalización y iSeries Nivel sistema operativo Soporte Unicode V4R4 UCS-2 (CCSID 13488) V5R1 ICU (Componentes Internacionales para Unicode) V5R3 + PTF UTF-8 (1208/1209) UTF-16 (1200/1201) 15.7 Definiciones de campos Unicode en Webgate400 Para definir, en un display file, campos que soporten el estándar UNICODE, hay diferentes posibilidades. El estándar IBM prevé la definición en el archivo video, de campos de tipo G (=gráfico) completados con la específica palabra llave CCSID con el valor adecuado. A A R REC01 UFLD1 50G B 9 43CCSID(xxxxx) Donde xxxxx puede ser: Release OS/400 4.2 5.3 (con PTF) 5.3 (con PTF) Estándar UCS-2 UTF-16 BE UTF-8 Valor 13488 1200 (formato interior de default para OS/400) 1208 El estándar IBM es soportado por Webgate400 según los límites impuestos por la release de realización. Con Webgate400 es posible, a través de la palabra llave text, soportar campos UNICODE aun más en release precedentes y obtener funcionalidades adicionales que están conectadas a campos que no son de tipo G. 15.7.1 Asignación de un CCSID a través de la palabra llave TEXT A A R REC01 FLD2 50A B 9 43TEXT('<W><CI>xxxxx</CI></W>') Donde, en el sentido general, xxxxx es el CCSID que hay que utilizar en el tratamiento del campo. Con la escritura de arriba es posible hacer gestionar el CCSID (SBCS o UNICODE), del campo video en objeto, de manera autónoma con respecto al sistema operativo. 15.7.1.1 UTF-EBCDIC (CCSID 1210) Un caso particular concierne el CCSID n.ro 1210, catalogado, pero no activamente soportado por IBM que clasifica su utilización en las fases de migración de aplicaciones de SBCS a UNICODE. A A R REC01 FLD2 50A B 9 43TEXT('<W><CI>1210</CI></W>') La escritura de arriba, permite la utilización de un campo alfanumérico normal (no tipo G), para contener datos UNICODE en el formato UTF-EBCDIC (CCSID 1210). Esta es claramente una ventaja si pensamos en una migración „suave‟ de las bases de datos de SBCS a Unicode, porque no nos obliga a rehacer el proyecto completo de la base de datos. Más bien habilita viejas bases de datos SBCS a contener datos de tipo UNICODE. 15.7.2 CCSID Variable Además la interfaz de Webgate ofrece la posibilidad de establecer de manera variable (a runtime), el CCSID de un campo video. A A A Page 103 de 108 R REC01 FCCSID FLD1 5S 0H 50A B 7 43TEXT('<W><CC>FCCSID</CC></W>') COMPILADOR WEBGATE – Manual de programmación La variable FCCSID contendrá (a runtime) el código del CCSID por el cual será representado el campo FLD1. Consecuencia lógica es que se puede obtener una aplicación nativa SBCS que muestra en su pantalla diferentes CCSID. Aquí también se puede hablar de migración „suave‟. Una aplicación práctica puede ser la del traductor donde el valor de un campo se puede expresar en una lengua, mientras que el equivalente que incluye la traducción tiene que ser expresado en el CCSID de aquella lengua. A A A A A Page 104 de 108 R REC01 FCCSID TCCSID FWORD TWORD 5S 0H 5S 0H 50A B 50A B 7 43TEXT('<W><CC>FCCSID</CC></W>') 7 43TEXT('<W><CC>TCCSID</CC></W>') COMPILADOR WEBGATE – Manual de programmación 16 TABS CONTROL Los TABS Controles son formatos video que pueden trabajar como envase para otros formatos (llamados paneles o sheets). Cada formato resulta accesible a través de la presión del ratón en “ pestañas” (Tabs), que llevan una etiqueta de identificación del contenido atinente a cada panel (sheets). Esta estructura en 'pestañas', de alta visibilidad, es particularmente útil para 'aliviar' cada formato y para distribuir mejor las informaciones. Estas pestañas son muy apreciadas en programas que gestionan muchas informaciones (por ejemplo los datos anagráficos principales) aportando mínimas modificaciones al display file y al programa. Los Controles TABS pueden incluir paneles (o sheets), formatos registro solos o compuestos (ej. control + subfile). Además en una pantalla pueden aparecer más de un Control TABS (más contenedores o grupos), cada uno con sus 'pestañas' y sus paneles (superando aun el límite de las 132 columnas o de las 27 líneas). TABS Controles TAB (pestaña) Sheet (panel) Ejemplo de uso de un Control TABS en un típico programa de gestión anagráfica clientes proveedores. 16.1 Modificaciones en el display file 16.1.1 Overlay Asociar a los varios formatos implicados la palabra llave OVERLAY. 16.1.2 Definición del formato de control Hay que definir un formato que desarrolle la función de contenedor y control de los formatos secundarios. A este formato se va a asociar la TEXT *TCL (TABS Control): <W>*TCL:5;2;23;131</W> En la text se define la naturaleza del formato, su posición y dimensión. En nuestro ejemplo: 5 = linea 2 = columna 23 = número líneas 131 = número columnas 16.1.3 Definición de los campos en el formato de control En este campo hay que definir 5 campos ocultos: Page 105 de 108 COMPILADOR WEBGATE – Manual de programmación 1. TABS Structure (estructura Tabs): es un campo oculto alfanumérico suficientemente grande; sirve para definir la estructura de la tab. Es definido por la text : <TS>EDMMSG001/M211001</TS> Es obligatorio hacer referencia a un MSGID (que se encuentra en línea durante la conversión), en el cual se va a definir la estructura del grupo de formatos que se quieren insertar en el Control TABS. El MSGID contiene fundamentalmente una lista de formatos separada por punto y coma. Ejemplo de lista simple T1;T2;T3;T4;T5; donde T1, T2, T3, T4 son formatos a introducir en el grupo. El switch (conmutador) entre un formato y otro ocurre de manera clara con respecto al programa de referencia. Ejemplo de lista compuesta T1CTL:T1SFL;T1H:T1F;T2; donde T1CTL es un subarchivo control unido a su subarchivo T1SFL, T1H es un formato header y T1F un formato foot (pie) emitidos en el mismo sheet, T2 es un formato solo. El switch (conmutador) entre un formato y otro ocurre de manera clara con respecto al programa de referencia. Si se quiere simular la presión de una tecla en la activación de un panel (cuando se vaya a hacer clic en la pestaña correspondiente), hay que especificar la tecla como en la explicación siguiente: T1CTL:T1SFL,CF01;T2,CF02;T3,CF03;T4,CF00; La tecla ENTER es descrita con CF00. 2. Display On/Off: es un campo 1 alfanumérico que contiene el valor „1‟ si el TABS Control tiene que ser visualizado y „0‟ en caso contrario. La text que lo define es: *TABDLY 3. TABS Descripción: es un campo oculto alfanumérico que contiene las diferentes descripciones que se colocan en las etiquetas. Está caracterizado por la TEXT: *TABDES Puede ser valorizado por programa o por la text <MI>…</MI>. En nuestro ejemplo: Precios/Descuentos;Recibo/Facturas/Transportes;Clasificaciones/Crédito;Especificas/Expedición/Previsiones;E ntrega; 4. Active Sheet: es un campo 2 alfanumérico y sirve para identificar el panel (sheet) activo en un determinado grupo (de „01‟ a „99‟). Por eso permite establecer tanto la sheet activa en la próxima emisión de la pantalla como registrar la última tab (pestaña) 'clicada' por el operador. El número corresponde a la posición del formato en el MSGID. Está caracterizado por la TEXT: *TABACT 5. TABS Attributes (atributos): es un campo alfanumérico largo 99 que corresponde a un array de 99 elementos largos 1 , donde cada elemento contiene el atributo del sheet correspondiente. Los atributos que se pueden gestionar actualmente son: Blank(vacío): DEFAULT, N (=Not Display): todos los campos de la sheet correspondiente son „NOT DISPLAY‟. P (=Protect): todos los campos de la sheet correspondiente son protegidos. La text che lo define es: *TABATR No es un parámetro obligatorio. Page 106 de 108 COMPILADOR WEBGATE – Manual de programmación 6. Running Group: es un campo alfanumérico largo 1, refiere la información del TABS Control actualmente activo en la pantalla (en el caso en el cual estén más de uno). el valor '1' indica que el TABS Control contiene la última tab activada (clicada) por el operador. En caso contrario contiene el valor '0'. Además se puede usar para forzar el TABS Control al cual pertenece para que sea aquel actualmente activo en la pantalla durante una fase de emisión. Obviamente los demás tienen que presentar valor '0'. La text que lo define es: *TABRUN No es un parámetro obligatorio porque resulta útil sólo cuando han sido definidos más Controles TABS. 16.2 Modificaciones al programa El programa requiere modificaciones mínimas que tiene que ser aportadas ad hoc para la versión gráfica: si se desea que el programa siga funcionando en entorno 5250, las específicas añadidas tendrán que estar subordinadas al valor de la variable WEBGATE=1. El ciclo de emisión del video tiene que ser estructurado como sigue: En fase de apertura del programa se necesita configurar las variables: La tab activa antes de la emisión se guarda en una variable ventajosa para condicionar luego la „read‟: Este campo es útil para entender cuál es el último formato visualizado. De hecho el “Active Sheet” en el momento de la lectura contiene el número de la tab que ha sido clicada por el operador. WRITE de cada sheet: WRITE del formato “contenedor”: La escritura de este formato sirve para definir los grupos visualizados y las tabs activas o protegidas. EXFMT de uno de los formatos en pantalla: READ del formato “contenedor”: La lectura de este formato sirve para identificar activos el Control TABS y la sheet. READ del último formato de la estructura emitido: Page 107 de 108 COMPILADOR WEBGATE – Manual de programmación Despúes de esta „read‟, se puede ejecutar el control en el formato correspondiente: si el control tiene éxito positivo, inicia el „loop‟ de gestión de la tab activa (variable TCTL01ACT); si el control tiene éxito negativo se va a forzar la re-emisión del formato precedente (variable TCTL01PRV). Antes de volver a la WRITE, es posible modificar los valores de las variables “Active Sheet” y “Display” así que se pueda definir cada vez el formato activo y la modalidad de visualización. 16.3 Colocación del cursor El client de Webgate asigna el focus al primer campo que lo requiere; examinando la pantalla es el que se encuentra empezando por el vértice izquierdo de arriba. En el caso de que el primer campo pertenezca a un sheet que se encuentra dentro de un TABS Control, van a ser activados los grupos correspondientes y la tab relativa. Si un campo perteneciente a un sheet que se encuentra dentro de un Control TABS, tiene el atributo Position Cursor (colocación del cursor) activado, se activan los grupos correspondiente y la tab relativa. NB. El atributo PC o la presencia de un ERRMSG siempre tienen la prioridad en la asignación del focus tanto en el interior como en el exterior del Control TABS. Page 108 de 108