Pause-Café Volubis

pause-café

rendez-vous technique
Pause-Café est une réunion technique
destinée aux informaticiens sur plateforme IBM i.
Elle a lieu 3 à 4 fois par an : en Bretagne et sur internet.

Pause-café #62

Septembre 2012

Nous avons commencé la journée par un présentation des différents éléments de sécurité sur IBM i (par Guy Menu / Erable )



IBM i Access Client Solution

 

 

Nouvelle version de Client Access (5733-XJ1) Full Java, donc compatible Windows , Linux et Mac.

Pas d'installation, il suffit de lancer acsbundle.jar.

Première chose, définition du(des) système(s)

 

Le transfert de fichier est à l'identique de celui de Client Access pour Windows

Avec quelques formats de fichier spécifiques (.ods, par exemple)

Dans les propriétés, vous retrouverez la possibilité de forcer la conversion du CCSID 65535

Ainsi que le traitement de SQL dit "natif", vous permettant de copier/coller un ordre SQL existant.

Virtual Control Panel, n'est disponible qu'avec Lan Console

Hardware Management Interface, lance l'URL d'accès à la console HMC

5250 Console, lance directement la console 5250, sur la HMC si c'est votre configuration.

Navigator for I, n'a pas été réécrit et lance donc Director Navigator sur votre serveur

Enfin 5250 Session Manager permet de mémoriser plusieurs sessions 5250

New Display Session configure une nouvelle session 5250

 

Ce n'est pas communication personnelle, mais HOD (Host On Demand) qui est intégré au produit.

• il ne reconnaît les DDS graphiques (menus déroulant, boutons radios, etc....), que si vous activez ENPTUI.

• Avantage, il sait afficher de l'UNICODE (CCSID 13488 uniquement)

Unicode ?

A l'origine était le CCSID.

Pour un jeu de caractères donné (Latin-1, cyrillique, hébreu par ex.) définition d'une grille de codification de tous les caractères pour un pays donné :

Nous avons le même jeu de caractère que les espagnols, nous n'avons pas le même code page (codification).

Le CCSID est la codification du jeu de caractères et du code page d'origine d'une donnée.

"Cette données est Française ! " (CCSID au niveau zone, venant du CCSID du fichier, lui même venant du job de création)

si le CCSID du job (qui lit le fichier) est différent (il vient de la langue de l'utilisateur, sinon de QCCSID), il faut modifier la valeur héxa afin que le "é" Français s'affiche é pour l'utilisateur Espagnol ou Danois et non "{" (par exemple).

La codification UNICODE est une codification sur plusieurs octets permettant dans une même grille, de coder tous les caractères du monde (y compris chinois, bengali, braille, symboles mathématiques et notes de musique !)

  • UCS-2 projet d'origine , CCSID 13488
  • UTF-16 sur-ensemble à UCS-2, normalisé par l'ISO, CCSID 1200
  • UTF-8 proche d'UTF-16, mais stocke sur 1 octet les caractères occidentaux, sur 2 ou 4 les autres

Avec UCS-2 et UTF-16, une zone base de données de 20 caractères = 40 Octets
Avec UTF-8 une zone 20 cacactères = 20 Octets, donc potentiellement trop courte, à réserver au VARCHAR, CLOB et fichiers IFS.

         A         UCS2       10G    CCSID(13488)
         A* Lg de stockage = 20 octets
         A         UTF16      10G    CCSID(1200)
         A* Lg de stockage = 20 octets
         A         UTF8       10A    CCSID(1208)
         A* Lg de stockage = 10 octets

   (voir aussi la présentation de Christian GRIERE, lors des journées "Modernisation des apllications" d'Avril 2012)

 

 

Soit un fichier Base de données avec des zones GRAPHIC CCSID(13488)

CREATE TABLE AF4TEST.UNITEST13 ( 
 CODECLI INTEGER NOT NULL , 
 RAISOC GRAPHIC(80) CCSID 13488 DEFAULT NULL , 
 VILLE GRAPHIC(50) CCSID 13488 DEFAULT NULL , 
 DEPCLI DECIMAL(2, 0) DEFAULT NULL ) 
RCDFMT UNITEST    ; 

Le DSPF est construit en faisant Référence

Le programme de test fait un simple affichage

si vos fichiers sont codés avec CCSID(1200) la conversion 1200 -> 13488 se fera souvent sans problèmes, les caractères étant largement communs.

 

Sur une session 5250 de Client Access :

Il fallait avant utiliser l'émulateur de Web Access (Client Access for the Web) qui est un émulateur 5250 compatible Unicode.

 

Avec L'émulateur de IBM i Access Client Solution :

- il vous faudra les options suivantes

Lors de la définition de la session 5250 HOD

    il faut activer ENPTUI et le support d'Unicode.

et utilisez la police Monospaced

 

 

pour l'impression, regardons le PRTF

La police 'Monotype Sans Duospace WT SC' est apportée par l'installation de l'option 43

 

Il faut ensuite le compiler avec DEVTYPE(*AFPDS)

 

ici visualisation du résultat avec AFP Workbench Viewer.

Pour l'impression utilisez une Imprimante Réseau AVEC MFRTYPMDL(*HPDBCS), voyez :

  • un scan de l'impression
  • le résultat de la commande CPYSPLF TOFILE(*STMF) TOSTMF(unitesti.pdf) WSCST(*PDF)

 


Diverses nouveautés au fil de l'eau :

  • VALUES permet d'afficher une valeur simple ou le résultat d'une expression (V6)
    • values now, affiche le timestamp en cours
    • values (current date, current time) affiche deux colonnes, la date puis l'heure

  • Ca peut être pratique pour vérifier qu'une expression est valide
    • values (date('2012-02-30') + 4 days)

  • Ca permet de retourner une valeur dans du SQL dynamique SANS passer par un curseur
    • /free
       requete = 'VALUES(select count(*) from ' + fichier + ') into ?';
       EXEC SQL
        prepare p1 from :requete;
       EXEC SQL
        execute p1 using :compteur;
       /end-free       
  • Couplé aux nouvelles fonctions :
    • GET_BLOB_FROM_FILE
    • GET_CLOB_FROM_FILE
    • GET_DBCLOB_FROM_FILE
    • GET_XML_FROM_FILE

      permet d'afficher ou de recevoir le contenu d'un fichier de l'IFS dans une variable de programme
      EXEC SQL values
           GET_CLOB_FROM_FILE('/annotate.log')
           into :variable;
  • Enfin associé à la nouvelle fonction XMLTABLE, cela permet un affichage structuré d'un fichier XML
SELECT XML_IFS.*  FROM 
(VALUES( XMLPARSE(DOCUMENT GET_XML_FILE('/xml/vins.xml'))
)) AS XMLFILE(VIN),
XMLTABLE(
'$doc/vins' PASSING XMLFILE.VIN AS "doc"
COLUMNS
nom VARCHAR(32) PATH 'nom',
cepage VARCHAR(64) PATH 'cepage1')
AS XML_IFS

La commande CPYTOIMPF a été modifiée afin d'autoriser un critère de tri (SF99701 level 14, SF99601 level 25)

Rappel, vous pouviez déjà créer une vue dans QTEMP et copier depuis cette vue, afin de réaliser :

  • jointure
  • aggrégation (Group BY)
  • sélection d'enregistrement (Where)


Mais une vue n'acceptant pas de critère de tri (Order BY), nous étions bloqués jusqu'ici.

 

  • Exemples:
    CPYTOIMPF FROMFILE(BDVIN1/PRODUCTEUR) TOSTMF('/producteurs.txt')
    RCDDLM(*CRLF) ORDERBY('*ARRIVAL')
     

    CPYTOIMPF FROMFILE(BDVIN1/VINS) TOSTMF('/vins.txt')
    RCDDLM(*CRLF) ORDERBY(' PRIX DESC FETCH FIRST 10 ROWS ONLY ')

 

 


Copyright © 1995,2012 VOLUBIS