La version/modulo “mini” de apiExcel permite generar hojas excel de forma simplificada cuando el origen es ya encolumnado, tal como campos de un fichero.
Ahora además tenemos en beta un generador de programas RPG a partir de unas especificaciones (con wizard paso a paso) sencillas pero potentes.
Requisito en as400: PDM, SEU y Compilador RPG, más la llicencia adecuada de CPI Software.
Beta - Información provisional
Con el comando APIEXCEL se accede al menu. Con la opcion M4 se accede al submenú del generador MiniExcel .
Una plantilla es la base para generar un programa RPG. La ventaja es que es muy facil modificar la plantilla y obtener un nuevo programa.
Y además es todavía más sencillo, porque la propia plantilla se puede crear muy fácilmente con el wizard paso a paso, que crea una plantilla preguntando los datos básicos, y permite generar, compilar y hassta ejecutar el programa generado!
La plantilla (template) es un simple miembro fuente en el fichero TEXTCPIU/CPIAPITMPL.
Cuando se crea una nueva se ofrece una base como guia, o siempre se puede copiar de una plantilla existente, ya que son miembros fuente manejables con SEU o PDM.
En esta seccion se definen los aspectos generales del programa.
Ejemplo:
PGM = PGMXL27 PGMLIB = MYLIB PGMTIT = Informe Excel Cuentas Contables FILE = FILEACC1 FILELIB = MYPRODLIB TIT1 = Informe de Cuentas Contables - *&fileL - *&FH TIT2 = Plantilla: *&tmpl pgm: *&pgm COPRINT = COPRINT4
Simplemente, en cada linea una clave y un valor separados por el simbolo igual = :
El formato de cada campo, en una linea, precedida cada linea con fld= :
prm1 prm2 prm3 prm4 Fld = FIELDname , Header/Cabecera , FORMAT , FUNCTIONS
Ejemplo de codificación de formatos de fecha en apiExcel.ini:
[Format] F=d-m-aa;@ E=dd/mm/aaaa G=d-m-aaaa;@ P=m-d-aaaa;@
Puntos de entrada para teclear codigo fuente de usuario que se mezcla al final en el fuente rpg generado, permite insertar codigo fuente directo en la plantilla, lo cual permite regenerar el programa final cuanto se quiera sin perder codigo fuente personalizado.
Opcional, permite incluir ficheros adicionales con hojas F normales!
(src-FILE) FfileAux IF E K DISK ExtFile('library/file')
Y, por ejemplo, hacer un CHAIN en (src-aRead) para leer registro en cada detalle.
chain campoDeFileMain fileAux;
Hay otras formas de hacer esto, p.e. usar ficheros LF-JOIN, etc.
Por supuesto, EXTFILE es opcional, admite variables en lugar de constantes, etc, todo depende de la version del as400 y las necesidades. Tambien se puede usar USROPN y hacer el open/close donde convenga.
Opcional, permite definir campos de calculo en hojas D normales:
D campoCalc S 10 D wSaldo S 13 2
Al inicio de calculos, este trozo es formato fijo, si se quiere teclear aqui en free entonces poner el codigo entre C/free y /end-free.
Opcional, permite incluir rpgFijo al inicio del fuente, p.e. parametros de entrada, preguntar (con un call a un programa de pantalla, o por una ventanita, etc).
Ya que este punto se ejecuta antes que nada es ideal para cambiar nombres reales de fichero(s) a abrir (tipo ovrdbf), etc.
Al inicio de calculos, tras src-C1, en formato rpgFree.
Opcional, permite incluir sentencias rpgFree despues/after del Open del Main File p.e. Setll etc. Si el programa tiene parámetros de entrada, ya ha pasado por ahí, claro.
Tambien permite crear aqui variables de usuario (de 01 a 99, ver mas abajo “Variables de Usuario y Globales”) para ser usadas en Excel, por ejemplo poner el contenido de un campo en una variable que sea visible en el titulo o subtitulo de la hoja Excel.
Referencia: Variables de Usuario
Opcional, permite sentencias rpgFree para omitir registros.
Importante: si en este punto se quieren usar campos de calculo asociados al registro leido, esos calculos deben hacerse en el punto bExclude
if ---condicion--- ; //saltar este registro endif;
El punto de entrada bExclude se ejecuta antes del punto Exclude.
Es opcional, y su uso es solo necesario en el caso de que en el punto Exclude se requiera excluir comparando campos de calculo realizados con campos del fichero.
Esto es asi porque en el punto Exclude solo se admiten reglas simples de exclusión, no lineas completas RPG.
El diagrama es algo asi como:
Opcional, permite sentencias con cada registro despues de leer (y excluir con la regla (Exclude)), antes de generar la fila Excel.
Por ejemplo, para crear campos de calculo con varios campos del fichero y poner esos campos en la lista de (campos).
Los calculos de este punto de entrada se insertan al final de la subrutina de tratamiento de detalle, tras generar la fila/row excel.
Tambien permite, con una sentencia simple, definir la posible ruptura de nivel para Totales.
* *Opcional, permite sentencias con cada registro despues de leer y excluir, antes de generar fila Excel * saldo = pcApert + pcDebe - pcHber; * *permite tambien definir qué contenido del registro leido se usa para romper nivel y dar Total Auto * xActual = unCampo o unCampo + otroCampo;
Importante: Sólo se imprimen totales si algun campo en la lista de (campos) tiene en el param4 la constante *total:
Punto de entrada que se inserta/ejecuta despues de totales.
Insert Point para sentencias que se ejecutarán en la subr final srEndPgm.
Permite incluir subrutinas completas en free (begsr + lineas + endsr).
En este punto de entrada se pueden añadir lineas de tabla tradicionales RPG, de las que se añaden como lineas al final del fuente. Recuerda tambien definir su hoja D para definirla.
ejemplo:
(src-D) D tabMes S 6 DIM(12) PERRCD(12) CTDATA (tables) ** meses Enero Febre Marzo Abril Mayo Junio Julio AgostoSetbreOctub NovbreDicbre
Con sentencias de calculo RPG se pueden definir lineas de script especiales para establecer variables de usuario (numeradas del 01 al 50).
Una forma de establecer una variable de usuario es generar una linea directa de script tal como:
Ejemplo de uso de esa variable en el titulo de la Excel (y la fecha en el subtitulo):
(General) Tit1 = Informe del Cliente *&usr01 tit2 = Fecha:*&FH
(src-END) x256 = 'usrVar,02,' + %trim(cabec1); exSr addScript;
Las variables globales son
El fichero coprint.ini permite alguna personalizacion OPCIONAL relacionada con MiniExcel:
Seccion [miniExcel] (OPCIONAL: usar sólo si se indica)
[MiniExcel] folderScript = as400tmp IFS = 192.168.xx.yyytmpxls DeletePrt = 0 pgm = "c:programfiles+++OJOCAMBIAENCADAPC+++cpiApiOfficecpiApiExcelMini.exe"
Por defecto en esta apiExcel “nueva” se usa conectividad IFS, pero hay algunos pc que tienen pegas de seguridad/acceso, para ello se puede obligar en el pc a usar FTP.
El fichero apiexcel.ini permite configurarse con cpiInfo.exe (el programa amarillo):
en la seccion [Connection] definir las claves modeMiniXL =FTP así como los valores userID= y Password=
[Connection] modeMiniXL=FTP userID=AS400USER Password=AS400PASS
el paso 181 permite tambien definir FTP desde as400.
Para modeMiniXL=FTP pendiente permitir que el Password (y si acaso el User) sea tecleado en cada conexión, de momento es obligatorio definir los dos datos en el ini.
[General] ???? [Format] F=d-m-aa;@ G=d-m-aaaa;@ [Style] moveRowT=Navy,Violet,1,Gold,Bi moveRowG=Navy,Lime,6,Tomato,Bi+
El paso 1 del menu/comando APIEXCEL permite comprobar si funciona la ejecución de una demostración de ApiExcelGen, genera una hoja de calculo con la lista de paquetes/aplicaciones CPI instaladas en el as400.
Tener en cuenta que en apiexcel.ini se puede definir si se quiere conectividad por IFS (por defecto) o FTP.