¡Esta es una revisión vieja del documento!


api PGMU para ApiCampos en Spool

ApiCampos y PgmU son apis especiales de Coprint, que necesitan contratación adicional.

PGMU = Api para llamada a un programa de usuario.

La definición básica se hace con paso 51 o 52, que permiten definir diferentes documentos con sus campos.

En algunos campos se puede usar una api especial (PGMU) para llamar a un programa de usuario por el contenido de un campo en el spool y hacer cosas especiales, como devolver contenido a imprimir, generar codigos de barra (barcodes) o imagenes personalizados, etc.

En resumen, un dato definido en un documento de Coprint en lugar de imprimirse directamente provoca la llamada a un programa (que escribe libremente el usuario) y ese programa retorna lo que realmente se va a imprimir.

Además la api permite multiplicar contenido, un solo dato que aparezca en el spool (el codigo de un cliente, por ejemplo) puede permitir generar diferentes contenidos con atributos (fonts, etc) especiales…

El formato de llamada es:

  • Parm1 Documento 10x (documento del p52)
  • Parm2 Campo en spool y p52 de 30x
  • Parm3 letra cod-dato en p52 (A,B,C,D,E,F,G…) de 1x. Con esto se permite generar n contenidos por un mismo dato en spool
  • Parm4 Dato de 60x. Se envia el contenido del campo en el spool, se puede cambiar por otro dato para enviar contenido cuando texto simple
  • Parm5 Tipo de Dato de 4x, enviar blancos para texto, BART o BAR para barcodes, IMG para imagen, etc. Ver ayuda/prompt del dato en paso 51 p.e.
  • Parm6 Dato2 60x Info propiedades adicionales Si se envian blancos las propiedades se toman de la parte derecha de “datos adic” del p52, o bien aqui se puede enviar ese contenido de forma programática, tal como enviar un dato de imagen/barcode/font u otro dependiendo del contenido real del spool… etc

Ejemplo de programa pgmu para controlar n contenidos por dato en spool:

select;
  when parm3 = 'A';
    chain(parm4:FicheroX);  //lee fichero xx con el contenido del spool
    parm4 = 'contenido para dato a';  //aqui venia el dato del spool, se cambia, p.e.
    parm5 = *blanks;
    parm6 = *blanks;
  when parm = 'B';
    parm6 = '18,015003,0,0,2.20,3.80,ARIAL,8NT,0,'
    parm5 = 'BART';   //imprimir un barcode con texto ademas
    parm4 = '......';  //se puede dejar con lo que tenia en spool o poner otra cosa, o blancos
  etc....
endSl;

En la propia definicion de los datos, paso 51 o 52 en as400 menu/comando COPRINT se puede definir el font del dato que se imprima (el traido por la api).

En “datos adicionales” donde se define el pgm a llamar se puede poner el font en la posic 23 de ese campo, o a la derecha del nombre de pgm, ya que lib/pgm tiene como max 21 posic.

Algo asi como

Ejemplo de llamada

Ejemplo de llamada a programa de usuario CL: CLP APIPGMUW.

PGM        PARM(&PRM1 &PRM2 &PRM3 &PRM4 &PRM5 &PRM6)
dcl &prm1   *char  10
dcl &prm2   *char  30
dcl &prm3   *char   1
dcl &prm4   *char  60
dcl &prm5   *char   4
dcl &prm6   *char  60
dcl &x512   *char 512  value(' ') /* para recuperar info extra de cola/outq, o ALL para info adicional */
dcl &MSG    *char 512
call APIPGMUG &x512 /* recuperar info extra */
chgVar &msg ('test-pgmu-apiPgmUW:' *bcat &PRM1 *bcat &prm2 *bcat &prm5 *bcat &x512)
SNDPGMMSG  MSG(&msg)
SNDPGMMSG  MSG(&MSG) TOMSGQ(*SYSOPR)
endPgm

Info extra

La info extra opcional que se puede recuperar llamando a APIPGMUG pasandole param con ALL, si se pasa blancos se retorna sólo la outq:

  • &OUTQ 10x
  • &PCserver 10x
  • &PCLid? 10x -interno-
  • &DOC form 8x
  • &FILESPL 10x
  • &USRDTA 10x
  • &NBRJOB 6x
  • &MBRMBI mbr Interface 10x
  • &JOBID 28x (nbrjob/userjob/nameJob)
  • &W10 file 10x -interno-
  • &x40 docum+file+jname+pcs -interno-

Para activar la capacidad de obtener la info se requiere activar una vez:

  • CHGDTAARA DTAARA(TEXTCPIU/CPI@XL (934 3)) VALUE('*OU')
  • para desactivar, cualquier otra cosa como CHGDTAARA DTAARA(TEXTCPIU/CPI@XL (934 3)) VALUE('—')
 
/kunden/homepages/8/d674751560/htdocs/cpies/doc/data/attic/coprint/pgmu.1547813689.txt.gz · Última modificación: 18/01/2019 13:14 por admin
[unknown button type]
 
Excepto donde se indique lo contrario, el contenido de este wiki esta bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki