OPALE
Utilisation de la commande MAPSORTPAG et MAPQUALSPL
MAPSORTPAG
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI)
Cette commande génère un spool nommé MAPSORTPAG dans MAPFIL_JDI/JDIEU_OUTQ trié par numéro de facture
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
Cette commande stocke le spool en unicode dans le fichier LIBSORT/SORTDBFILE
Pour visualiser le contenu de LIBSORT/SORTDBFILE : select hex(PRTDTA) from LIBSORT/SORTDBFILE
HEX ( PRTDTA ) 746F3A6A64696575406D617070696E6773756974652E636F6D202020202020202020202020202020202020202020202020202020202020202020202020202020202 20202020204D617070696E6720537569746520532E412E2020202020202020202020202020202020202020202020202020202020202020202020202020202020202
Le résultat est en unicode : 74 représente le "t", 6F le "o" 3A le ":" etc
ASCII Table / character codes – SS64.com
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*YES) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
Ces commande stocke le spool 3 fois dans le fichier LIBSORT/SORTDBFILE (concaténation) et ensuite génère le spool en triant par numéro de facture. De ce fait, toutes les pages ayant le même numéro de facture seront regroupé ensemble et trié par ordre croissant
On se retrouve donc avec la 1er facture 3 fois, la 2ième facture 3 fois, la 3ième facture 3 fois
Une fois le spool créé, le fichier LIBSORT/SORTDBFILE est alors supprimé
Exemple de contenu du fichier LIBSORT/SORTDBFILE :
PAGES CRITERE0 CRITERE1 CRITERE2 CRITERE3 CRITERE4 CRITERE5 CRITERE6 CRITERE7 CRITERE8 CRITERE9 NUMSPL NUMPAG NUMLGN PRTDTA
0012601 1 0 0 (contenu de la 1er ligne de la 1er page du 1er spool)
0012601 1 0 1 (contenu de la 2ième ligne de la 1er page du 1er spool)
… … … … …
0012601 1 1 0 (contenu de la 1er ligne de la 2ième page du 1ère spool)
0012601 1 1 1 (contenu de la 2ièmeligne de la 2ième page du 1ère spool)
… … … … …
0012601 2 0 0 (contenu de la 1er ligne de la 1er page du 2ième spool)
Details de chacune des colonnes :
- PAGE : ? - CRITERE0 : Contenu de la 1er clé de tri - CRITERE1 : Contenu de la 2ième clé de tri - CRITERE2 : Contenu de la 3ième clé de tri - CRITERE3 : Contenu de la 4ième clé de tri - CRITERE4 : Contenu de la 5ième clé de tri - CRITERE5 : Contenu de la 6ième clé de tri - CRITERE6 : Contenu de la 7ième clé de tri - CRITERE7 : Contenu de la 8ième clé de tri - CRITERE8 : Contenu de la 9ième clé de tri - CRITERE9 : Contenu de la 10ième clé de tri - NUMSPL : Numéro de spool injecté (1 pour le spool du 1er MAPSORTPAG, 2 pour le 2ième MAPSORTPAG, etc) - NUMPAG : Numéro de page du spool injecté (Incrémenté à chaque page et remis à 0 lorsqu'on change de spool injecté) - NUMLGN : Numéro de ligne du spool injecté (Remis à 0 à chaque nouvelle page) - PRTDTA : Contenu de la ligne en question
Lors de l'exécution de la commande MAPSORTPAG avec *CREATE=YES, il est possible d'avoir plusieurs types d'insertion en base en jouant sur le paramètre MBROPT. Voici ses différentes valeurs avec leurs impacts :
- NONE (utilisé avec CREATE=YES)= Pas d’utilisation du numéro de fichier . Ce paramètre est utilisé avec l'option CREATE=YES. Celui-ci permettra de déclencher la création d'un spool avec le contenu du fichier sans injecté le spool traité dans le fichier
- ADD (associé avec le paramètre NUMSPL)= Ajout dans le fichier actuel, sans incrémentation du numéro de fichier. Dans ce cas-là, il faut renseigner un numéro de spool via le paramètre NUMSPL. La valeur sera alors insérée dans le fichier dans la colonne NUMSPL. (ce paramètre est utilisé pour donner des types de spool, par exemple : NUMSPL=1 pour les relevés client et NUMSPL=2 pour les factures. Les spools utilisés seront alors triés selon les critères, puis selon le numéro du spool, et enfin de la page.
- ADDAUTO = Insère le contenu du spool avec incrémentation +1 de la variable NUMSPL à chaque spool injecté (pour chaque MAPSORTPAG)
- REPLACE = Remplace le fichier. Le numéro de spool NUMSPL repasse à 1.
Dans la zone Control sort, indiquez N si vous ne désirez qu’un seul spool, ou Y (ou O) si vous désirez un fichier spool par rupture. La référence du spool contiendra alors les 10 premiers caractères du code en rupture. Si vous indiquez V dans la zone Control sort, les spools générés le seront par leur nombre de pages, ainsi que la référence de ces spools.
A creuser pour savoir les lots créés avec l'option Control Sort = V
Dans le paramètre ID, indiquez Y ou O pour ajouter le numéro de spool ajouté sur la dernière ligne du spool généré.
Voir si c'est normal qu'un saut de page est généré juste pour l'ID
NAMFORCTRL : Donner une documentation sur cela. Cela marche comment ?
MAQUALSPL
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
MAPQUALSPL NAME(SORTDBFILE) SPLFNAME(OUTPUT) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT)
Spool généré :
1 6111111 Mapping Suite S.A. page 1 FACTURE n° 0012600 du 14/10/99
De 1 à 6 : Le numéro de la page à l’intérieur de la rupture.
De 7 à 12 : Le nombre total de pages à l’intérieur de la rupture.
De 13 à 13 : Le code de rupture. 1 pour la première page de la rupture
2 pour une page de suite dans la rupture
3 pour la dernière page de la rupture
De 14 à 18 : Code de mise sous pli type kern :
Bit de parité. Si la somme des bits de sécurité et d’ejection est paire, alors valeur 1. (dans notre cas, si la somme des bits violet et jaune est paire, alors 1 sinon 0)
Bits de sécurité :
Si modulo 7, valeur décroissante de 7 à 1 (de 111 à 001 en binaire). Cela pour tout le lot de feuille, sans tenir compte des ruptures
8, valeur décroissante de 7 à 0 (de 111 à 000 en binaire)
T, valeur croissante de 1 à 7 (de 001 à 111 en binaire)
R, valeur croissante de 0 à 7 (de 000 à 111 en binaire)
4, valeur décroissante de 3 à 0 (de 11 à 00 en binaire)
F, valeur croissante de 1 à 15 (de 0001 à 1111 en binaire)
De 19 à 19 : Code de fermeture enveloppe. Suivant la machine de mise sous pli, le code se situe sur la première page du paquet ou sur la dernière. Dans la commande MAPQUALSPL, paramétrer la valeur du paramètre « Insert tag on last page » est à O ou Y, alors le code sera sur la dernière page du paquet. Sinon, il sera sur la première page du paquet. (un paquet correspond à une enveloppe soit une facture par exemple)
De 20 à 25 : Le numéro de pli (de rupture) en cours, si demandé (Si BREAKNB=Y)
De 26 à 29 : Le code de sécurité pour le numéro du pli en cours, si demandé (SI BREAKNB=Y)
Effet du BREAKNB = Y
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
MAPQUALSPL NAME(SORTDBFILE) SPLFNAME(OUTPUT) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) BREAKNB(Y) LIB(LIBSORT)
Spool généré :
1 6111111 1 3 Mapping Suite S.A. page 1
FACTURE n° 0012600 du 14/10/99
De 20 à 25 : Le numéro de pli (de rupture) en cours, si demandé (Si BREAKNB=Y)
De 26 à 29 : Le code de sécurité pour le numéro du pli en cours, si demandé (SI BREAKNB=Y)
Effet du QUOTA= 2 (exemple de valeur)
On souhaite éditer un spool avec mise sous pli, mais on a un code client ou plus qui ont trop de pages. La machine de mise sous pli n’arrive pas à mettre plus de 10 pages dans le même pli. Dans ce cas, utilisez la zone quota pour limiter le nombre de pages dans un seul pli.
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
MAPQUALSPL NAME(SORTDBFILE) SPLFNAME(OUTPUT) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) QUOTA(2) LIB(LIBSORT)
Comportement : Cela aura pour effet de changer le bit du code de fermeture enveloppe. Etant donnée que celui-ci vaut 1 à chaque début d'enveloppe, celui-ci vaudra donc 1 pour les page 1, 3, 5 (vu qu'on demande de faire rentrer uniquement 2 pages par enveloppe)
Page 1 : 1 6111111 Page 2 : 2 6211100 Page 3 : 3 6201011 Page 4 : 4 6201000
1 si 1er page du lot
2 si pages du milieu
3 si dernière page
Bit de parité
Bit de sécurité (ici modulo 7)
Bit de première page du pli (enveloppe)
Effet du QUOTA= 2 (exemple de valeur)
On souhaite éditer un spool avec mise sous pli, mais on a un code client ou plus qui ont trop de pages. La machine de mise sous pli n’arrive pas à mettre plus de 10 pages dans le même pli. Dans ce cas, utilisez la zone quota pour limiter le nombre de pages dans un seul pli.
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE) MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
MAPQUALSPL NAME(SORTDBFILE) SPLFNAME(OUTPUT) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) DUPLEX(Y) LIB(LIBSORT)
Paramètre INSLAST :
Selon les machines de mise sous pli,,le code de fermeture enveloppe indiquant qu’il faut changer d’enveloppe doit figurer sur la première page du nouveau paquet ou sur la dernière page de l’ancien paquet.
Saisir O ou Y imprimera ce code sur la dernière page du paquet. N l’imprimera sur la première page.
Exemples :
Avec MODULO=7 :
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
MAPQUALSPL NAME(SORTDBFILE) SPLFNAME(OUTPUT) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) SORTPAGE(N) BREAKNB(N) LIB(LIBSORT)
Page Code retournée par MAPQUALSPL 1 1 2111111 2 2 2311100 RUPTURE DE FACTURE 3 1 4101011 4 2 4201000 5 3 4210110 6 4 4300100 RUPTURE DE FACTURE 7 1 4110011 8 2 4201110 9 3 4211100 10 4 4311010
Avec MODULO=F
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
MAPQUALSPL NAME(SORTDBFILE) SPLFNAME(OUTPUT) OUTQ(JDIEU_OUTQ) OUTQ LIB(MAPFIL_JDI) MODULO(F) SORTPAGE(N) BREAKNB(N) LIB(LIBSORT)
Page Code retournée par MAPQUALSPL
1 1 21100011
2 2 23000100
RUPTURE DE FACTURE
3 1 41000111
4 2 42001000
5 3 42101010
6 4 43101100
RUPTURE DE FACTURE
7 1 41101111
8 2 42010000
9 3 42110010
10 4 43110100
On peut voir qu'il y a un bit en plus pour le code de sécurité. (avec le modulo=7 on avait 3 bits alors qu'avec le F on en a 4 (pour aller des valeurs 1 à 15) Dans notre exemple, on va de 1 à 10.
Avec option BREAKNB = Y et MODULO=7 (7 valeur par défaut)
MAPSORTPAG SPLF(SORTPAG1) SPLNUM(000002) JOB(QPADEV000C) JOBNUM(693999) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
MAPQUALSPL NAME(SORTDBFILE) SPLFNAME(OUTPUT) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) SORTPAGE(N) BREAKNB(Y) LIB(LIBSORT)
Page Code retournée par MAPQUALSPL
1 1 2111111 1 3
2 2 2311100 1 3
RUPTURE DE FACTURE
3 1 4101011 2 3
4 2 4201000 2 3
5 3 4210110 2 3
6 4 4300100 2 3
RUPTURE DE FACTURE
7 1 4110011 3 3
8 2 4201110 3 3
9 3 4211100 3 3
10 4 4311010 3 3
Utilisation des autres paramètres : ????????
Autres paramètres
Nom du fichier spool . . . . . . SPLF Numéro du fichier spool . . . . SPLNUM Travail . . . . . . . . . . . . JOB *CURRENT Numéro de travail . . . . . . . JOBNUM Nom sur 10 caractères maxi . . . USER *CURRENT