ONYX - 9.0 - Utilisation

Envoi de travaux d'impression IBM i vers ONYX par LPR

De MappingDoc
Révision datée du 4 janvier 2021 à 13:59 par Jdieu (discussion | contributions) (Problématiques connues)

Introduction

Le principe de cette fonctionnalité est d'utiliser la commande LPR native OS/400 pour l'envoi de fichier spool IBMI vers Onyx.

Problématique rencontrée avec LPR

La plus grosse problématique avec l'utilisation d'une RMTOUTQ utilisant le protocole LPR pour l'envoi des spools AS/400 vers Onyx Linux/Windows est la perte des métadonnées car les attributs de spools ne sont pas transportés.

Solution

Avec la commande LPR, il est possible de faire transiter des métadatas grâce à l'utilisation du paramètre destopt de la commande LPR.

En l'utilisant comme dans l'exemple ci-dessous à partir du robot Mapping, il est possible de transporter les métadonnées que vous souhaitez :

LPR RMTSYS(xxxxx) (…) destopt('Z:map_userdata:KEY=VALUE')

Avec :

  • "Z:map_userdata:" : obligatoire pour indiquer à Onyx qu'il s'agit d'une métadonnée
  • "KEY" : le mot clé de votre choix
  • "VALUE" : la valeur de votre choix


Sous Onyx (Windows ou Linux), les informations se retrouvent alors dans le job sous forme de Mapping User Data :

USERDATAS_KEY=VALUE

Exemple d'utilisation :

LPR RMTSYS(xxxxx) (…) destopt('Z:map_userdata:FROMAS400=&USER;&OUTORI;&SPLFNAME;&STARTPAGE;&ENDPAGE;&USRDTA;&FORMTYPE')

Problématiques connues

Longueur du paramètre destopt

Le champs destopt a une longueur maximale de 128 caractères. Dans le cas où cette valeur dépasse les 128 caractères, la commande LPR tombera en erreur. Vous obtiendrez alors le message Erreurs trouvées dans la commande dans les logs du robot MAPPING.

Incompatibilité avec les espaces

Il faut s'assurer qu'il n'y ait pas d'espace (un caractère blank) dans la chaine destopt car son contenu sera verra tronqué après ce caractère blanc. En effet, Onyx recevra uniquement le contenu du destopt jusqu'au premier blanc trouvé. Pour éviter cela, il faut s'assurer que le contenu du destopt ne contienne pas de "blank"

Il faut donc faire attention au contenu des paramètres utilisées pour le contenu du destopt.

Paramètres avec des blanks potentiels

Numéro du spool

&SPLNUM = ' 1' &CLSPLNUM5 = '000001'

Référence utilisateur

&USRDTA = 'REFUSER ' &SPLUSRDTA = 'REFUSER'


Etant donné que tous les paramètres ne sont pas trimés (&FORMTYPE, &SPLUSRDTA), en cas d'utilisation de ces deux paramètres, le serveur ONYX ne recevra pas toute la valeur du FROMAS400. En effet celle-ci sera tronqué à cause des blancs après la valeur de &SPLUSRDTA ou &FORMTYPE. Pour pallier ce soucis, il convient donc de demander explicitement le trim de ces paramètres. Pour ce faire, un nouveau paramètre est apparu (Disponible à partir de la version 10.2.8 d'OPALE) : &TRIM. Celui-ci devra être positionner dans la commande LPR au niveau du destopt avant le ou les paramètres à trimer.

Exemple :

LPR RMTSYS('192.168.217.224') PRTQ(PRINTER1) FILE(&SPLF) JOB(&JOBNUM/&USER/&JOB) SPLNBR(&SPLNUM)DESTOPT('Z:map_userdata:FROMAS400=&SPLF;&OUTORI;&STARTPAGE;&ENDPAGE;&TRIM&SPLUSRDTA;&SPLF;&USRDFNDTA;&FORMTYPE')                         

En effet, tous les paramètres situés après le paramètre &TRIM se trouveront trimé.

Remarque 1 : Si vous souhaitez trimer tous les paramètres, vous pouvez mettre le paramètre &TRIM tout au début de la chaine destopt :

LPR RMTSYS('192.168.217.224') PRTQ(PRINTER1) FILE(&SPLF) JOB(&JOBNUM/&USER/&JOB) SPLNBR(&SPLNUM) DESTOPT('Z:map_userdata:FROMAS400=&TRIM&SPLF;&OUTORI;&STARTPAGE;&ENDPAGE;&SPLUSRDTA;&SPLF;&USRDFNDTA;&FORMTYPE')

En faisant cela, vous vous assurez du trim de tous les paramètres envoyés à Onyx.

Remarque 2 : Il est possible à tout moment de désactiver le trim du &TRIM en utilisant le paramètre &NOTRIM

LPR RMTSYS('192.168.217.224') PRTQ(PRINTER1) FILE(&SPLF) JOB(&JOBNUM/&USER/&JOB) SPLNBR(&SPLNUM) DESTOPT('Z:map_userdata:FROMAS400=&TRIM&SPLF;&OUTORI;&STARTPAGE;&ENDPAGE;&SPLUSRDTA;&SPLF;&NOTRIM&USRDFNDTA;&FORMTYPE')     

Dans cet exemple, les paramètres (&SPLF;&OUTORI;&STARTPAGE;&ENDPAGE;&SPLUSRDTA;&SPLF seront bien trimés mais les deux derniers paramètres (&USRDFNDTA;&FORMTYPE) sont quant à eux non pris en compte par le &TRIM.

Interprétation côté Onyx

Avec cet exemple, il suffit ensuite de découper la chaine de caractères obtenue directement dans un workflow Mapping, à l'aide de la boite "String/Couper par champ", en précisant le délimiteur ainsi que le numéro de champ à extraire. Par contre, la position de l'élément est importante dans ce cas.

Une autre solution pourrait consister à passer également le nom des paramètres et utiliser la boite "String/Couper par séparateur".

Exemple d'utilisation :

LPR RMTSYS(xxxxx) (…) destopt('Z:map_userdata:FROMAS400=USER=&USER;OUTQ=&OUTORI;SPLFNAME=&SPLFNAME;STARTPAGE=&STARTPAGE;STOPPAGE=&ENDPAGE;USRDTA=&USRDTA;FORMTYPE=&FORMTYPE')

Ensuite, dans le workflow Onyx, pour récupérer la valeur "USER" par exemple, il faut mettre "USER=" dans le séparateur de début de sous chaine et ";" dans le séparateur de fin de sous chaine.