OPALE - 10.0 - Utilisation - Tri et regroupement de spools

MAPSORTPAG

De MappingDoc
Autres langues :
English • ‎français

Modifier l'attribut d'un fichier spool avec MAPSORTPAG

Cette page explique comment modifier un attribut d'un fichier spool généré par la commande MAPSORTPAG. Dans cet exemple, il s'agit de l'attribut appelé FORMTYPE.

Il y a 2 cas :

1. S’il n’y a qu’un seul fichier spool en sortie de la commande MAPSORTPAG, il est possible d'ajouter la commande CHGSPLFA dans la même action avec une commande comme celle-ci :

CHGSPLFA FILE(MYSPOOL) SPLNBR(*LAST) FORMTYPE(MYFORMTYPE)

Où MYSPOOL est le nom du fichier spool généré par la commande MAPSORTPAG


2. S’il peut y avoir plusieurs fichiers spools en sortie de la commande MAPSORTPAG, il faut exécuter une action sur tous les spools en sortie, ce qui signifie :

  • Créer les spools en sortie de MAPSORTPAG dans une Outq d’entrée du robot
  • Créer une nouvelle Action (exemple : CHGTYPE) pour modifier l'attribut FORMTYPE et déplacer les spools dans l’Outq d’impression
CHGSPLFA FILE(&SPLF) JOB(&JOBNU/&USER/&JOB) SPLNBR(&SPLNUM) FORMTYPE(MYFORMTYPE) OUTQ(MYLIB/MYPRINTER)
  • Définir la relation Spool - Action pour ces spools

Cas pratique : Création de plis de 8 pages maximum

Soit le cas où une facture fait 10 pages, l'enveloppe sera fermée sur la 8 ème page, et une nouvelle enveloppe sera insérée pour les 2 pages suivantes). Pour pouvoir séparer un pli de plus de 8 pages en autant de plis que nécessaire, il convient d'utiliser le paramètre QUOTA et de positionner sa valeur à 8. Il est inutile de passer le paramètre CONTROLE à 'V' (Volume) et le SORTPAGE à 'O' dans ce cas.

Pour contrôler le nombre de pages dans le fichier physique, il faut exécuter une requête SQL de type :

select count(*) from SYLTST2/FA_EDA901 where numlgn = '0'

SOLUTION + de 66 lignes: CHGPRTF MAPOUT

MAPSORTPAG > problème récup Haut. spool > 66 lignes

  test 180 sous MAP400/UCS2) 
 +++++++++++++++++++++++++++++++


  1. spool en entrée # >>> R58SA127 OUTQ/LIB > SYLVAIN/MAP400
Taille de la page :                             
  Hauteur  . . . . . . . . . . . . . . :   72   
  Largeur  . . . . . . . . . . . . . . :   134  	


  1. commande: #


 MAPSORTPAG SPLF(R58SA127) SPLNUM(39) JOB(QPRTJOB) JOBNUM(391742) 
           USER(SDANGEL) KEYLINE(4) KEYCOL(66) KEYLGN(14) 
           SPLFNAME(R58SA127_S) OUTQ(SYLVAIN) OUTQLIB (MAP400)                                                                        

>>>>>>> indication >>> CHGPRTF MAPOUT pour hauteur

probleme mapsortpag avec mapreport suite passage v7

commandes SQL pour préparer SORTSIZUTF*: (une bonne fois pour toute)

  • (PF tampon pour création auto du PF de MAPSORTPAG)
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN PAGES SET DATA TYPE CHAR(10)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN PRTDTA SET DATA TYPE CHAR(1134)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE0 SET DATA TYPE CHAR(120)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE1 SET DATA TYPE CHAR(120)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE2 SET DATA TYPE CHAR(120)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE3 SET DATA TYPE CHAR(120)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE4 SET DATA TYPE CHAR(120)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE5 SET DATA TYPE CHAR(120)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE6 SET DATA TYPE CHAR(120)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE7 SET DATA TYPE CHAR(120)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE8 SET DATA TYPE CHAR(120)  CCSID 1208
ALTER TABLE MAP400/SORTSIZUTF ALTER COLUMN CRITERE9 SET DATA TYPE CHAR(120)  CCSID 1208


dans chaque commande MAPRUNRPT: ajouter paramètre : DB.MAPPING_DATASTREM=UCS2

La documentation

Dans strsql, les données ne sont plus visualisables, il faut donc les convertir à la volée :

select cast(prtdta as char(255) ccsid 1147) from alexis/sortsizutf    


Dans MapReport : Les données sont nativement lues en UTF-8. Il n’y a donc aucune modification à apporter pour une lecture simple d’une table :

Read(mytable,"Select \"PRTDTA FROM TEST.ANTO\" ") { }
               Write(mytable,0) { }
               NextRead() { }


La seule condition est de lancer la commande maprunrpt avec le paramètre DB.MAPPING_DATASTREAM=UCS2 (sinon les caractères multi octet ne seront pas pris en charge)


Attention :

Lorsqu’on souhaite faire un lien entre une table classique en EBCDIC et une table en UTF-8, la clause where TABLE_EBCDIC.CHAMP1 = TABLE_UTF8.CHAMP1 ne marche plus. C’est logique car les datas ne sont pas dans le même encodage. Pour cela, il faut appliquer un cast sur les champs :

Read(TABLE_UTF8,"Select … From … Where cast(BIB.TABLE_UTF8.CRITERE0 as char(8) ccsid 37) =  $TABLE_EBCDIC.CRITERE ") { }

Ici, on a casté le champ CRITERE0 de la table UTF8 en ccsid 37 (ebcdic) pour que la base puisse faire la comparaison.