OPALE
Utilisation de la commande MAPSORTPAG et MAPQUALSPL
Sommaire
- 1 Introduction
- 2 Principe de fonctionnement
- 3 Le fichier physique
- 4 Les différents paramètres des commandes
- 4.1 MAPSORTPAG
- 4.1.1 Attributs du spool en entrée
- 4.1.2 Ligne index (KEYLINE) / Colonne index (KEYCOL) et Longueur index (KEYLGN)
- 4.1.3 Nom du fichier spool à créer (SPLFNAME) / OUTQ sortie du MAPPING (OUTQ) / Nom de la bibliothèque (OUTQLIB) / Retenir le fichier spool (RDY)
- 4.1.4 Bibliothèque (LIB)
- 4.1.5 Database pour le tri(NAME)
- 4.1.6 Ajout Remplacement fichier tri (MBROPT)
- 4.1.7 Numéro fichier spool à trier (NUMSPL)
- 4.1.8 Largeur du spool en entrée (SIZE) / Hauteur du fichier spool (HEIGHT) / Ligne d'overflow (OVERFLOW)
- 4.1.9 Contrôle sort splfname (CONTROLE)
- 4.1.10 Nom pour le control sort (NAMFORCTRL )
- 4.1.11 Imprimer numéro fichier ajouté (ID)
- 4.1.12 Code page (CP)
- 4.2 MAPQUASPL
- 4.2.1 Exemple d'éxécutions
- 4.2.2 Analyse de la ligne ajoutée
- 4.2.3 Database pour le tri (NAME)
- 4.2.4 Numéro de ligne (LINE) / Numéro de colonne (COL)
- 4.2.5 Créer un fichier spool (CREATE)
- 4.2.6 Nom du fichier spool (SPLFNAME) / Nom de l'OUTQ (OUTQ) / Bibliothèque de l'OUTQ (OUTQLIB) / Fichier prêt en sortie (RDY)
- 4.2.7 Contrôle sort splfname (CONTROLE)
- 4.2.8 Largeur du spool en entrée (SIZE) / Hauteur du fichier spool (HEIGHT) / Ligne d'overflow (OVERFLOW)
- 4.2.9 Code traductions (MODULO)
- 4.2.10 Modulo sur séquence (MODSEQ)
- 4.2.11 Quota maximum (QUOTA)
- 4.2.12 Recto/Verso (DUPLEX)
- 4.2.13 Add criteria size information (???)
- 4.2.14 Add number of break values (BREAKNB )
- 4.2.15 Insert tag on last page (INSLAST )
- 4.2.16 Source Library (LIB)
- 4.1 MAPSORTPAG
- 5 Exemples
Introduction
Les commandes MAPSORTPAG et MAPQUALSPL permettent de trier, éclater et qualifier avec des codes OMR et numéro de page un fichier spool.
Principe de fonctionnement
Le principe est la mise en base (dans un fichier physique) d'un ou plusieurs fichiers spools afin d'en générer un autre à partir de ceux mis en base. Le ou les fichiers spool résultants peuvent être triés, éclatés ou qualifier avec les numéros de page ainsi que les codes OMR de mise sous pli automatique.
Voici un exemple d'utilisation avec la mise en base de 3 spools différents :
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(000003) JOB(QPADEV000D) JOBNUM(693998) 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(000004) JOB(QPADEV000E) JOBNUM(693997) USER(JDIEU) KEYLINE(3) KEYCOL(71) KEYLGN(7) CREATE(*NO) SPLFNAME(MAPSORTPAG) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT) NAME(SORTDBFILE)
La commande MAPQUALSPL va prendre le contenu du fichier physique LIBSORT/SORTDBFILE afin de créer un fichier spool. Dans ce cas le fichier créé s'appellera OUTPUT et sera créé dans l'OUTQ MAPFIL_JDI/JDIEU_OUTQ
MAPQUALSPL NAME(SORTDBFILE) SPLFNAME(OUTPUT) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) LIB(LIBSORT)
Le fichier physique
Généralités
Afin de faire des tris, des éclatements, la commande MAPSORTPAG met le fichier spool traité dans un fichier physique IBM-i. Le fichier physique temporaire créé peut etre visualisé via des requêtes SQL.
strsql select PRTDTA from LIBSORT/SORTDBFILE
En UCS2
Dans le cas où le paramétrage du serveur est en UCS2, alors l'insertion dans le fichier physique se fera en Unicode. Son contenu via sql sera alors pas possible. (l'émulateur 5250 attendant de l'EBCDIC, ne pourra pas afficher des caractères encodés en Unicode)
Pour pouvoir lire son contenu, il faudra l'afficher en HexaDécimale.
select hex(PRTDTA) from LIBSORT/SORTDBFILE
Le contenu ressemblera alors à cela :
746F3A6A64696575406D617070696E6773756974652E636F6D20202020202020202020202020202020202020202020202020202020202020202020202020202020220202020204D617070696E6720537569746520532E412E2020202020202020202020202020202020202020202020202020202020202020202020202020202020202
Explications :
Le résultat est en unicode : 74 représente le "t", 6F le "o" 3A le ":" etc
Les premiers caractères du spool mis en base est donc to:
Plus d'information sur l'encodage des caractères en Unicode : https://ss64.com/ascii.html
Structure du fichier physique
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) | ||||||||||
Détails de chacune des colonnes :
- PAGE : Contient le nombre de pages pour une valeur de clé données (utilisé par l'option CONTROL SORT = V)
- 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
Les différents paramètres des commandes
Chacune de ces 2 commandes (MAPSORTPAG et MAPQUALSPL) comporte son lot de paramètres, ayant des fonctions bien distinctes.
MAPSORTPAG
Tri d'un fichier spool (MAPSORTPAG)
Nom du fichier spool . . . . . . > LFN160I Nom de 10 caractères maxi. N° du fichier spool . . . . . . > 000002 -1-999999, *LAST, *ONLY Nom du travail . . . . . . . . . > QPADEV0008 Nom de 10 caractères maxi. Numéro du travail . . . . . . . > 972046 de 000001 à 999999 Utilisateur . . . . . . . . . . > MYUSER Nom de 10 caractères maxi. Ligne index . . . . . . . . . . 10 Numéro de ligne (30 max)+ si autres valeurs Colonne index . . . . . . . . . 5 Numéro de colonne (30 max)+ si autres valeurs Longueur index . . . . . . . . . 10 Longueur (30 max) + si autres valeurs Créer un fichier spool . . . . . *YES *YES, *NO Nom du spool à créer . . . . . . SORTSPLF Valeur alphanumérique 10 max OUTQ sortie du MAPPING . . . . . *JOB Nom, *JOB, *DEV, *SPLIT Nom de la bibliothèque . . . . *LIBL Nom, *LIBL Retenir le fichier spool . . . . N O=Retenu, N=Prêt Bibliothèque . . . . . . . . . . MAP$$SORT MAP$$SORT,... Autres paramètres Database pour le tri . . . . . . SORTDB SORTDB Ajout Remplacement fichier tri *ADDAUTO *ADD *REPLACE *NONE Numéro fichier spool à trier . . 1 1, 2, .... Largeur du spool en entrée . . . 255 80, 132, 198, 255, 378 Hauteur du fichier spool . . . . 255 De 66 à 255 Ligne d'overflow . . . . . . . . 60 De 1 à 255 Contrôle sort splfname . . . . . Y O/Y/N/V Nom pour le control sort . . . . SORTNAME SORTNAME, xxx Imprimer numéro fichier ajouté N N, x Code page . . . . . . . . . . . *SPL *SPL, 037, 1147, ...
Attributs du spool en entrée
Les 5 attributs du spool déterminant le fichier spool a traiter.
Ligne index (KEYLINE) / Colonne index (KEYCOL) et Longueur index (KEYLGN)
Ce paramètres permettent de définir l'emplacement des clés de tris et de ruptures au sein du fichier spool. (par exemple le numéro de facture) On peut en définir au maximum 10 pour un document donné.
Nom du fichier spool à créer (SPLFNAME) / OUTQ sortie du MAPPING (OUTQ) / Nom de la bibliothèque (OUTQLIB) / Retenir le fichier spool (RDY)
Si le paramètre CREATE=YES alors la commande MAPSORTPAG crée un fichier spool portant le nom et se situant aux endroits spécifiés dans ces paramètres.
Celui-ci pourra être en statut "held" ou "ready"
Bibliothèque (LIB)
Ce paramètre indique le nom de la bibliothèque où le fichier physique sera créé
Database pour le tri(NAME)
Ce paramètre indique le nom du fichier physique qui sera créé
Ajout Remplacement fichier tri (MBROPT)
Ce paramètre permet d'indiquer au programme comment insérer le spool en base
*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 injecter 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.
Numéro fichier spool à trier (NUMSPL)
si MBROPT=*ADD
Ce paramètre permet de spécifier un numéro de spool. Cette valeur sera insérée en base dans la colonne NUMSPL.
Ce paramètre est utilisé pour insérer des type de fichier différents afin qu'ils soient retriés (par exemple : NUMSPL=1 pour les relevés client et NUMSPL=2 pour les factures)
Largeur du spool en entrée (SIZE) / Hauteur du fichier spool (HEIGHT) / Ligne d'overflow (OVERFLOW)
Ces paramètres donnes la taille du fichier spool généré
Contrôle sort splfname (CONTROLE)
Ce paramètre permet de lancer l'éclatement du fichier spool sur les indexes.
Pour ce paramètre, 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.
- Y
- O
- V
- N
Nom pour le control sort (NAMFORCTRL )
Ce paramètre permet de donner un nom à l'appel du spécific MAP_C853P1 ou MAP_C853P2. Ce programme est appelé quand on a CONTROL SORT=Y. On peut donner une valeur testable dans le programme. Ce programme est exécutée à chaque rupture.
Il faudrait avoir un usage programme pour compléter la documentation.
Imprimer numéro fichier ajouté (ID)
Indiquez Y ou O pour ajouter le numéro de spool ajouté sur la dernière ligne du spool généré.
Dans notre exemple précédent, on aura alors en dernière ligne de chaque page la valeur 1 ou 2 en fonction de si on est sur un relevé client ou une facture.
Code page (CP)
Indique l'encodage du fichier spool en entrée.
MAPQUASPL
Cette commande prend en paramètre le fichier physique créé précédement par les différentes éxécutions du MAPSORTPAG. Celle-ci va créer un fichier spool avec des données supplémentaires utilises pour la pagination et la mise sous pli automatique.
Database for sort . . . . . . . SORTDB SORTDB Line number . . . . . . . . . . 1 1-255 Column number . . . . . . . . . 1 1-360 Create spooled file . . . . . . *YES *YES, *NO Spooled file name . . . . . . . SORTSPLF Nom OUTQ name . . . . . . . . . . . *JOB Nom, *JOB OUTQ library . . . . . . . . . . *LIBL Nom, *LIBL Release new spooled file . . . . *NO *YES, *NO Control sort splfname . . . . . N O, Y, N, V Width of input spooled file . . 255 80, 132, 198, 255, 378 Spooled file height . . . . . . 255 66 to 255 Overflow line . . . . . . . . . 60 1 to 255 Translation code . . . . . . . . 7 7, 8, R, 4, F, T Sequence modulo . . . . . . . . ' ' 7, 8, R, 4, ' ', T Maximum Quota . . . . . . . . . 0 0,1,2,3,4,... Duplex . . . . . . . . . . . . . N O, Y, N Add criteria size information . N O, Y, N Add number of break values . . . N O, Y, N Insert tag on last page . . . . N O, Y, N Source Library . . . . . . . . . MAP$$SORT MAP$$SORT,... Autres paramètres Spooled file name . . . . . . . Alphanum. value,10max Spooled file number . . . . . . -1*LAST 00000-99999 Job name . . . . . . . . . . . . *CURRENT Name, *CURRENT Job number . . . . . . . . . . . Number on 6 digits Name on 10 characters max . . . *CURRENT Name, *CURRENT
Exemple d'éxécutions
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)
Analyse de la ligne ajoutée
Les numéros suivants correspondent aux positions de début et de fin
Voici un exemple d'enrichissement :
1 2111111 1 3
- 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)
Database pour le tri (NAME)
Ce paramètre prend le nom du fichier physique généré par les MAPSORTPAG
Numéro de ligne (LINE) / Numéro de colonne (COL)
Ce paramètre indiquer la position où ajouter les informations de mise sous pli. (Choisir de préférence une ligne vide.)
Créer un fichier spool (CREATE)
Ce paramètre indique la création ou nom d'un fichier spool
Nom du fichier spool (SPLFNAME) / Nom de l'OUTQ (OUTQ) / Bibliothèque de l'OUTQ (OUTQLIB) / Fichier prêt en sortie (RDY)
Si CREATE=YES
Ces paramètres indiquent le nom , l'emplacement et le statut du fichier spool à créer.
Contrôle sort splfname (CONTROLE)
Ce paramètre permet de lancer l'éclatement du fichier spool sur les indexes.
Pour ce paramètre, 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.
- Y
- O
- V
- N
Largeur du spool en entrée (SIZE) / Hauteur du fichier spool (HEIGHT) / Ligne d'overflow (OVERFLOW)
Ces paramètres donnes la taille du fichier spool généré
Code traductions (MODULO)
Ce paramètre indique comment les bits de sécurités doivent être insérés. Cela dépend de la machine de mise sous pli.
Ce paramètre donne la séquence d'éxécution des bits de sécurité affichés en rose dans notre exemple ci-dessus.
La différence par rapport à la séquence modulo (paramètre suivant), c'est que les bits ne sont pas remis à 0 lors d'un changement de lot (numéro de facture par exemple).
La séquence se suit de la 1er page du spool jusqu'à la dernière. (voir les exemples en bas de ce document)
- Si modulo 7, valeur décroissante de 7 à 1 (de 111 à 001 en binaire).
- 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)
Rappel : Cela pour tout le lot de feuilles, sans tenir compte des ruptures
1 2101111
Modulo sur séquence (MODSEQ)
Contrairement au MODULO simple, la séquence de bit est réinialisée au début de chaque nouveau lot. (voir les exemples en bas de ce document)
1 2101111 111
Quota maximum (QUOTA)
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) MAPQUALSPL NAME(SORTDBFILE) SPLFNAME(OUTPUT) OUTQ(JDIEU_OUTQ) OUTQLIB(MAPFIL_JDI) QUOTA(2) LIB(LIBSORT)
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
Recto/Verso (DUPLEX)
On décide d’imprimer en recto.verso afin de gagner en nombre de pages.
Il suffit alors d’indiquer O ou Y dans la zone Duplex. Le calcul des codes OMR tiendra compte de cette option dans le calcul des bits de sécurité.
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)
Page 1 : 1 1311111
Page 2 : 1 1311111
Page 3 : 1 2101101
Page 4 : 1 2101101
Page 5 : 2 2311010
Page 6 : 2 2311010
Page 7 : 1 2111001
Page 8 : 1 2111001
Page 9 : 2 2310110
Page 10 : 2 2310110
Nous pouvons voir que la séquence retournée par le MAPQUALSPL est la même sur 2 pages consécutives.
Cela est normal vu que la page 2 se situe sur la 1er feuille. Donc les valeurs de la page 1 et 2 sont les mêmes (idem pour 3 et 4, 5 et 6, etc)
remarque : Les 2 premiers bit ne donnent pas le numéro de pages mais le numéro de feuilles.
Add criteria size information (???)
A compléter
Add number of break values (BREAKNB )
Ce paramètre permet d'imprimer le numéro de rupture en cours ainsi que le code de sécurité pour le numéro de pli en cours.
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)
1 6111111 1 3
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)
Insert tag on last page (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.
Source Library (LIB)
Ce paramètre indique le nom de la bibliotèque contenant le fichier physique à traiter
Exemples
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 | RUPTURE DE FACTURE |
3 | 1 4101011 |
4 | 2 4201000 |
5 | 3 4210110 |
6 | 4 4300100 |
RUPTURE DE FACTURE | RUPTURE DE FACTURE |
7 | 1 4110011 |
8 | 2 4201110 |
9 | 3 4211100 |
10 | 4 4311010 |
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 | RUPTURE DE FACTURE |
3 | 1 41000111 |
4 | 2 42001000 |
5 | 3 42101010 |
6 | 4 43101100 |
RUPTURE DE FACTURE | 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.
MODULO(7) et MODSEQ(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) MODSEQ(7)
Page | Code retournée par MAPQUALSPL |
---|---|
1 | 1 2101111 111 |
2 | 2 2301100 111 |
RUPTURE DE FACTURE | RUPTURE DE FACTURE |
3 | 1 4101011 110 |
4 | 2 4201000 110 |
5 | 3 4210110 110 |
6 | 4 4300100 110 |
RUPTURE DE FACTURE | RUPTURE DE FACTURE |
7 | 1 4110011 101 |
8 | 2 4201110 101 |
9 | 3 4211100 101 |
10 | 4 4311010 101 |
La valeur de séquence de modulo change à chaque rupture de lot. Dans notre exemple, le MODSEQ=7 génère 3 bits commençant par 15 (111) et décroit à chaque changement de lot (110,etc)
BREAKNB(Y) et 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(Y) LIB(LIBSORT)
Page | Code retournée par MAPQUALSPL |
---|---|
1 | 1 2111111 1 3 |
2 | 2 2311100 1 3 |
RUPTURE DE FACTURE | 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 | RUPTURE DE FACTURE |
7 | 1 4110011 3 3 |
8 | 2 4201110 3 3 |
9 | 3 4211100 3 3 |
10 | 4 4311010 3 3 |
L'option NBBREAK ajoute les 2 dernier bit correspondant au lot en cours et au nombre total de lot.
DUPLEX(Y) et 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) DUPLEX(Y) LIB(LIBSORT)
Page | Code retournée par MAPQUALSPL |
---|---|
1 | 1 1311111 |
2 | 1 1311111 |
RUPTURE DE FACTURE | RUPTURE DE FACTURE |
3 | 1 2101101 |
4 | 1 2101101 |
5 | 2 2311010 |
6 | 2 2311010 |
RUPTURE DE FACTURE | RUPTURE DE FACTURE |
7 | 1 2111001 |
8 | 1 2111001 |
9 | 2 2310110 |
10 | 2 2310110 |
Remarque : Les 2 premiers bit retournent non pas la page et le nombre de page total du lot mais la feuille et le nombre total de feuille du lot.