NLS (Nationnal Language Support)

BoTTom |   
 
 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éfinition :
 
  - 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)
 
les jeux 1252 et 1253 comprennent des caractères supplémentaires
                      (alphabet hébreu,cyrillique,...)
 


|   
 
 - 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 multinationa l est le 256
   le code page français est le 297 
 
   voici le détail de ce code page :
 


|   
   !  4  !  5  !  6  !  7  !  8  !  9  !  A  !  B  !  C  !  D  !  E  !  F ! 
 0 ! (sp)!  {  !  -  !  ø  !  Ø  !  [  !  `  !  ¢  !  é  !  è  !  ç  !  0 ! 
 1 ! #   !  ê  !  /  !  É  !  a  !  j  !  ¨  !  #  !  A  !  J  !  ÷  !  1 ! 
 2 !  â  !  ë  !  Â  !  Ê  !  b  !  k  !  s  !  ¥  !  B  !  K  !  S  !  2 ! 
 3 !  ä  !  }  !  Ä  !  Ë  !  c  !  l  !  t  !  ·  !  C  !  L  !  T  !  3 ! 
 4 !  @  !  í  !  À  !  È  !  d  !  m  !  u  !  ©  !  D  !  M  !  U  !  4 ! 
 5 !  á  !  î  !  Á  !  Í  !  e  !  n  !  v  !  ]  !  E  !  N  !  V  !  5 ! 
 6 !  ã  !  ï  !  Ã  !  Î  !  f  !  o  !  w  !  ¶  !  F  !  O  !  W  !  6 ! 
 7 !  å  !  ì  !  Å  !  Ï  !  g  !  p  !  x  !  ¼  !  G  !  P  !  X  !  7 ! 
 8 !  \  !  ì  !  Ç  !  Ì  !  h  !  q  !  y  !  ½  !  H  !  Q  !  Y  !  8 ! 
 9 !  ñ  !  ß  !  Ñ  !  µ  !  i  !  r  !  z  !  ¾  !  I  !  R  !  Z  !  9 ! 
 A !  °  !  §  !  ù  !  :  !  «  !  ª  !  ¡  !  ¬  !  ­  !  ¹  !  ²  !  ³ ! 
 B !  .  !  $  !  ,  !  £  !  »  !  º  !  ¿  !  |  !  ô  !  û  !  Ô  !  Û ! 
 C !  <  !  *  !  %  !  à  !  ð  !  æ  !  Ð  !  ¯  !  ö  !  ü  !  Ö  !  Ü ! 
 D !  (  !  )  !  _  !  '  !  ý  !  ¸  !  Ý  !  ~  !  ò  !  ¦  !  Ò  !  Ù ! 
 E !  +  !  ;  !  >  !  =  !  þ  !  Æ  !  Þ  !  ´  !  ó  !  ú  !  Ó  !  Ú ! 
 F !  !  !  ^  !  ?  !  "  !  ±  !  ¤  !  ®  !  ×  !  õ  !  ÿ  !  Õ  !    ! 
 
 une colonne représente la partie gauche d'un octet (hors texte)
 une ligne la partie droite (digit) ; ainsi 80 = Ø , B6 = ¶ , etc ...
 
 l'affichage de cette page de code dépend de votre écran et de votre CHRID.


|   
 
 - 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 job
 
 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.
 
    (modifiable par CHGPF)
 


|   
 
DEPUIS LA V2R30 les fichiers unité :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
 
  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


|   
 
* fichiers prtf   : CHRID(*JOBCCSID)
 
  constantes          converties : CCSID/PRTF -> CCSID/JOB
 
  les variables sont supposées être au CCSID du JOB (CHRID géré par l'unité)
 
* fichiers prtf   : CHRID(xxx yyy)
  les variables sont supposées être au CCSID du JOB ( ""    "    "     "   )
 
* fichiers prtf   : CHRID(*DEVD)   pas de conversion
 
* pannel groupe   : CHRID(*JOBCCSID)
   et menus UIM   
 
  le texte est converti CCSID/PNLGRP -> CHRID/DEVD
 
 
AUTRE NOUVEAUTE V2R30 : les tables de séquence permettent d'avoir des tris
                         et des tests logiques (compraraisons) fonction
                         du langage (voir le cours "Séquences de tri")
 





©AF400