Gestion du caractère EURO ( € )
L'OS/400 vous permet de gérer le caractère
EURO depuis les versions V3R20 et V4R10 de l'OS/400 via PTF
(voir la liste des PTF sur http://www-1.ibm.com/servers/eserver/iseries/euro/roadmap.htm
)
- R320: SF99205
- R410: SF99206
- R420: SF99207
- R430: SF99208
voyez les groupes PTF disponibles avec l'APAR II11523
et depuis les version V4R40 et suivantes sans PTF
additionnelles pour l'OS/400
Tout est basé sur la notion de jeux de caractères
et de codes page:
voici donc un petit rappel:
N L S : Nationnal Language Support
gestion des paramètres liés à la notion de langue et de pays
et gestion de sites multilangues.
L'AS/400 sait s'adapter à la notion de pays et de langue,
vous connaisser certainement déja des paramètres propres à un pays :
QDECFMT format décimal J = virgule
QDATFMT format de la date DMY
QDATSEP séparateur de la date /
QTIMSEP séparateur de l'heure :
QKBDTYP type de clavier/dft FAB français azerty
(FAI " " multinationa l
FQB français qwerty
FQI " " multinationa l)
|
Viennent s'ajouter à ces paramètres :
+ la notion de jeu de caractères
+ la codification de ces caractères
quelques définitions :
- système de codage EBCDIC ou ASCII
SBCS (single byte character set)
= 1 octet pour un charactère
DBCS (double byte " " )
= 2 octets pour un caractère
alphabet asiatique (chinois,etc...)
la valeur système QIGC signale si votre système admet le codage DBCS
" " " QIGCCDEFNT indique la police de caractère à utiliser.
- jeu de caractères
ensemble des caractères propres à un langage
reconnus par les terminaux(claviers,imprimantes,..) de ce pays.
|
pour le codage SBCS il existe une partie invariante qui est :
les caractères entre A-Z
" " a-z
" " 0-9
et 19 symboles + < = > % & * " ' ( ) , _ - . / : ; ?
c'est le jeu de carctères 640.
puis le jeu de caractères LATIN 1 comprenant en plus tous les caractères
accentués (non connus par les anglo-saxons)
à è é ê ë Ä Ï etc ...
et quelques symboles supplémentaires : { } @ # µ | [ ] etc ...
(ces symboles ne sont pas reconnus par tous les terminaux)
c'est le jeu de caractères 697 (celui utilisé en france)
|
- point de code
c'est la valeur héxa attribuée à un caractère
- page de code
c'est le croisement jeu de caractères/point de code.
autrement dit : c'est l'ensemble des valeurs héxa attribuées dans un pays
à un jeu de caractère donné.
exemple: en angleterre x'5B' = £
au U.S.A x'5B' = $ (en france aussi)
au japon x'5B' = ¥
le code page U.S est le 037
le code page multinational est le 256
le code page français est (était) le 297
voici le détail de ce code page :
|
- CHRID (notion venant du 38)
c'est le stockage de votre jeu de caractère (5 premiers chiffres)
et de votre code page (5 suivants)
destiné à une conversion DES CONSTANTES à destination des périhériques.
Si CHRID du fichier unité(DSPF) <> CHRID de l'unité(*DEV),
il y a alors une conversion effectuée par le système en utilisant une
(ou des) table(s) de conversion Qssscccppp dans QUSRSYS.
où sss est le code page source
ccc le jeu de caractère cible
ppp la page de code cible
par exemple : Q297337256 est la table permettant de faire une conversion
français (297) vers multinationa l (337 256).
le CHRID par défaut est donné dans la valeur système QCHRID
697 297 en France
|
- CCSID (notion de la V2R11)
représentation interne (codée) du CHRID
destiné à une conversion DES DONNEES lors de leur manipulation.
Utilisé dans le cadre de CDRA(Character Data Représentation Architecture)
en association avec DRDA (bases de données distribuées)
Chaque donnée manipulée est "taggée" avec un code représentant les
particularités liées au langage :
- système de codage (SBCS,DBCS)
- jeu de caractère
- page de code
- infos sup.
Ce "tag" est construit à partir du CCSID qui en SBCS avec un jeu de
caractère standard ne peut contenir QUE : - le code page du CHRID
297 en france
ou - la valeur 65535
(pas de conversion)
(toutes les valeurs comprises entre 00001 et 28761 sont copyright IBM)
|
Sur AS cette valeur est donnée par défaut par la valeur système QCCSID
puis associée à un profil (dft = *SYSVAL)
ce qui donne la valeur pour le job (modifiable via CHGJOB)
Puis chaque fichier (PF) se voit associé un CCSID (mot-clé SDD CCSID)
- par défaut celui du code langage principal.
et ENFIN quand des données sont manipulées (DRDA, DDM, E/S pgm, ...)
si le CCSID du job est différent du CCSID du fichier et s'ils sont tous les
deux différents de 65535, il y a conversion des données de type charactère:
( type "A" dans la langage SDD. )
+ vers le CCSID du JOB en cas de lecture.
+ vers le CCSID du fichier en cas d'écriture.
- cela ne concerne pas les variables numériques bien sur
les variables de type "H" (héxa,non soumises à la
notion de langue)
les fichiers sans description (interne)
|
cette fonctionnalité est reconnue par :
- le gestionnaire de base de donnée OS/400 (toutes opérations)
- les commandes de copie (CPYF, CPYFRMQRYF)
- DRDA (SQL, QM, DDM)
- OPNQRYF (CCSID accepté dans MAPFLD)
(conversion lors de la requête)
- SNADS
TOUT SYSTEME OS/400 antérieur à la V2R11 est considéré CCSID 65535.
La valeur par défaut de QCCSID est 65535
Le CCSID des fichiers créés avant la V2R11 est 65535.
|
DEPUIS LA V2R30 les fichiers unités :DSPF,PRTF,*PNLGRP(aides et menus)
acceptent la valeur suivante:
- CHRID(*JOBCCSID)
* fichiers écrans : CHRID(*JOBCCSID)
variables en entrée converties : CCSID/DEVD -> CCSID/JOB
variables en sortie converties : CCSID/JOB -> CCSID/DEVD
constantes converties : CCSID/DSPF -> CHRID/DEVD
messages d'erreur non convertis avant la V4R40
textes de fichiers message : CCSID/JOB -> CCSID/DEVD
(autres que message d'erreur)
* fichiers écrans : CHRID(xxx yyy) CHRID/DSPF -> CHRID/DEVD
(zones avec le mot-clé CHRID)
* fichiers écrans : CHRID(*DEVD) pas de conversion
la même notion est implémentée pour les PRTF et les pannels UIM
|
AUTRE NOUVEAUTE V2R30 :
les tables de séquence permettent d'avoir des tris
et des tests logiques (comparaisons) en fonction du langage
(voir le cours "Séquences de tri")
Pour implémenter l'euro il a fallut modifier
le jeux de caractère , en fait en créer un nouveau,
qui est le LATIN-9
-
Pour l'ISO : 923 (qui remplace le 819)
- ASCII : 858 (remplace le 850)
- sous MS-Windows, c'est intégré à l'ANSI (1252)
- Sur l'AS/400 : 695
et lui associer un nouveau code-page , par pays:
en france le 1147 :
le caractère euro [ € ] est placé
en x'9F' et remplace le caractère [ ¤ ].
En ce qui concerne vos valeurs système,
SYSVAL |
Ancienne val. |
Nouvelle val. ??? |
QCCSID |
297 |
|
QCHRID |
697 297 |
695 1147 |
QKBDTYPE |
FAB |
FAE |
QCURSYM |
F |
€ |
Pour afficher ce caractère, vous devez avoir
- un terminal INFOWINDOW II (à mettre à jour)
- une Networkstation (PTF)
- Un émulateur implémentant cette notion (c'est le cas de Client
Access et de PC5250, voir l'APAR II11456)
auquel cas , il faut aussi mettre à jour vos OS client, pour cela voyez
www.microsoft.com/europe/euro/
- la saisie se fait par ALTGR + E (ou Alt+128 sous MS-Windows, pour un PC
en langue non européenne.)
du coté client , il
faut configurer votre session avec comme code page 1147 :
PC5250:

Networkstation :
l'affichage du caractère euro se fait sous
cette forme :
L'unité est automatiquement configurée
en CHRID(695 1147)
- Pour les terminaux derrière des contrôleurs 5494, il faut se
mettre au niveau 3.2 minimum et indiquer comme code clavier '4E'
- pour les imprimantes, il y a multiplicité des problèmes :
- votre imprimantes est-elle capable physiquement d'imprimer le caractère
EURO ?
- dispose-t-elle de la police adéquat, si c'est un imprimante laser
- Il y a peut-être des mise à jour à télécharger
- Pour les imprimantes acceptant le caractère EURO, il faut renseigner
le CHRID sur l'unité
- Pour les OUTQ remote, il faudra renseigner le même paramètre,
mais sur le PRTF
- Et enfin, l'OS/400 intègre la gestion de l'EURO dans HTP (Host Print
Transform) particulièrement lors de la transformation vers PCL5, où
il gère le téléchargement de la police de caractère
préalablement au spool.(Device avec PJL ou OUTQ remote)
- voyez le détail sur le site
vu plus haut, remarquons :
- la gestion des codes pages EURO est intégrée à IFS
- serveur WEB, (l'euro est intégré au HTML par "€").
Il est conseillé de le configurer avec :
DefaultNetccsid 923 (code page du réseau) DefaultFSccsid
1147 (code page du système de fichier)
- COBOL, l'utilisation des LOCALES est la solution préconisée
par IBM
(FR_FR_E en SPECIAL NAMES)
- RPG, ne supporte pas les multiples CURRENCY SIGN, on vous conseille
donc l'utilisation de %EDITC(montant : '3' : '€') qui applique le code
d'édition 3 avec comme symbole monétaire l'EURO (Attention
le résultat produit est une Chaîne)
- DSPF, PRTF, vous pouvez utiliser EDTCDE(3 '€')
en face d'une zone numérique, si le symbole monétaire est l'EURO
(QCURSYM), ou une Constante.
- DB2 : si vous devez mémoriser le caractère
€ dans vos fichiers.
- ATTENTION, si vous modifiez la valeur système et pas le CCSID
de vos fichiers, l'OS va être ammené à faire des conversions
- Soit vous Utilisez le CCSID 1147 sur vos fichiers :
- cela demande de mouliner tous vos fichiers
- Le seul danger à passer vos bases en CCSID 1147 est que, si vous
utilisez actuellement le caractère "¤", il devient
"€",
le "¤" quant à lui devient non affichable (x'20').
- Soit vous installez les PTF suivantes :
- V5R10 : SI03057
- V4R50 : SI66035
- V4R40 : SI67005
qui permettent de stocker le caractère € dans un fichier
en code page 297 , sans transformation du caractère.(sans conversion)
Copyright © 1995,2000 VOLUBIS