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 fois par an : en général en Bretagne et sur Paris.

Pause-café #88

Octobre 2021
le 5 octobre , en ligne

La réunion débute à 14h.

Pour vous connecter : https://www.gotomeet.me/CommonFrance/pause-cafe-88

IBM i 7.4 TR4 - IBM i 7.3 TR10

Hard / Firmware

Support des cartes :

  • #EN1J/#EN1K - PCIe4 32 Gb dual-port optical FC adapter
  • #EN1E/#EN1F - PCIe4 16 Gb quad-port optical FC adapter
  • #ES1K - Enterprise 800 GB SSD PCIe4 NVMe U.2 module for IBM i
  • #ESK7/#ESK9 - 387GB Enterprise SAS 4k SSD for IBM i
  • #ESKB/#ESKD - 775GB Enterprise SAS 4k SSD for IBM i
  • #ESKF/#ESKH - 1.55TB Enterprise SAS 4k SSD for IBM i
  • #ESK6/#ESK8 - 387GB Enterprise SAS 4k SSD for VIOS
  • #ESKA/#ESKC - 775GB Enterprise SAS 4k SSD for VIOS
  • #ESKE/#ESKG - 1.55TB Enterprise SAS 4k SSD for VIOS
  • #ESK0/#ESK1 - 387GB Enterprise SAS 5xx SSD for VIOS
  • #ESK2/#ESK3 - 775GB Enterprise SAS 5xx SSD for VIOS
  • #ESKL/#ESKM - 931 GB Mainstream SAS 4k SSD for IBM i
  • #ESKQ/#ESKR - 1.86 TB Mainstream SAS 4k SSD for IBM i
  • #ESKU/#ESKV - 3.72 TB Mainstream SAS 4k SSD for IBM i
  • #ESKY/#ESKZ - 7.45 TB Mainstream SAS 4k SSD for IBM i
  • #ESKJ /#ESKK- 931GB Mainstream SAS 4k SSD for VIOS
  • #ESKN/#ESKP - 1.86 TB Mainstream SAS 4k SSD for VIOS
  • #ESKS/#ESKT - 3.72 TB Mainstream SAS 4k SSD for VIOS
  • #ESKW/#ESKX - 7.45 TB Mainstream SAS 4k SSD for VIOS
IBM i / logiciels sous licence

BRMS for i (5770-BR1)

  • Nouveaux services SQL pour accèder aux logs BRMS (cf DSPLOGBRM)
  • Amélioration de la performance des travaux réseau par la diminution de nombre de postes de journaux traités
  • Amélioration du support cloud lors de l'installation réseau par NFS
  • Support intégré pour sauvegarde système complète en utilisant des périphèrisques IBM i iSCSI

PTF Servie aPack : SI74479 (7.4) / SI74478 (7.3)

PowerHA SystemMirror for i (5770-HAS)

Des améliorations et simplifications pour la gestion des switchover et failover (avec des capacités de monitor détaillé), intégration des technologies FlashCopy sur FlashSystemest plus poussée, possibilités d'opérations multi-noeuds.

PTF & documentation détaillée : https://helpsystemswiki.atlassian.net/wiki/spaces/IWT/pages/163577866/Welcome+to+PowerHA+SystemMirror+for+i

Db2 Mirror for i - 5770-DBM (7.4 uniquement)

Les nouvelles fonctionnalités requièrent également :

  • SF99704 niveau 13 (DB2)
  • SF99668 niveau 10 (Db2 Mirror for i)

Des améliorations et simplification pour la gestion des switchover et failover (avec des capacités de monitor détaillé). L'intégration des technologies FlashCopy sur FlashSystemestest plus poussée et permet également les opérations multi-noeuds.

Sécurité :

La commande Analyze Profile Activity (ANZPRFACT) a été modifiée pour ne désactiver les profils que s'il n'y a aucune activité sur l'ensemble des noeuds. Préalablement, on ne regardait que sur le système depuis lequel on éxecute la commande.

DB2 for i - performance :

 Des améliorations de performances pour les environnements DB2 Mirror

Toutes les informations dans la FAQ "IBM Db2 Mirror for i: Performance Considerations": https://www.ibm.com/downloads/cas/QYGKQJMK

Nouveaux types d'objets supportés :

Support des entrées dans les *DTAQ (Data Queue) et plus uniquement les *DTAQ elles-mêmes.

Support des Index Utilisateur (*USRIDX) et Espace Utilisateur (*USRSPC). 

IBM i :

CCA (Common Cryptographic Architecture) passe de la version 5.3 à 5.6 avec le coprocesseur cryptographique IBM 4767 (nécessite IBM i option 35 : CCA Cryptographic Service Provider)

ENDSBS : une pré-vérification est effectuée pour contourner automatiquement le traitement de la commande ENDSBS si le système est déjà dans un état restreint. Cela s'applique aux modes avec et sans surveillance. L'avantage est d'éviter le traitement ENDSBS inutile, ce qui permet de gagner du temps. Un avantage supplémentaire est qu'il peut éviter de mettre fin aux services TCP/IP en mode limité qui peuvent fonctionner alors que le système est dans un état restreint.

DB2

Db2 for i - Evolutions fonctionnelles

  • SIGNAL et GET DIAGNOSTICS : GET DIAGNOSTICS permet maintenant d'accèder et de traiter les exceptions levées par des triggers. Concrètement cela vous permet de gèrer vos propres message 
  • SYSIBM.CLIENT_IPADDR : cette variable contient l'adresse IP du client conneté. Elle était nulle pour les connexions non IP
  • RUNSQLSTM : le listing généré inclu la version cible (Target Release)

Db2 for i - Performance enhancements

  • Insertions en bloc avec support des colonnes générées : avant cette mise à jour, un insert en bloc dans une table contenant des colonnes générées provoquaientdes messages CPF4028 (code raison 11) même si l'opération aboutie. Désormais il n'y a plus de messages.

Db2 for i - Database Engineer enhancements

  • QSYS2.SYSCOLUMNS2 (vue) : ajout de 14 nouvelles colonnes sur le détail des attributs  
  • QSYS2.SYSPACKAGESTAT (vue) : ajout de la colonne ADHOC_PACKAG. NO => instructions préparées 1 fois et éxécutées plusieurs fois. YES => instructions éxécutées 1 fois. 

Services IBM i : nouveaux

  • QSYS2.MESSAGE_QUEUE_INFO() (UDTF) : retourne une ligne par message, sans modifier le contenu de la *MSGQ. (cf DSPMSG). Vous pouvez filtrer le résultat par file, bibliothèque,messages COMPLETE (ne nécessite pas de réponse)/INQUIRY (nécessite une réponse)/SENDER (nécessite une réponse et non encore répondu)/ALL, ou filtre de gravité
  • QSYS2.NVME_INFO (vue) : contient les informations sur les mémoires NVMe (Non Volatile Memory Express)
  • QSYS2.QCMDEXC (function scalaire) : en plus de la procédure déjà existante. Si la commande aboutit, la fonction retourne1 (-1) sinon. Cela permet donc de l'utiliser dans des expressions (par exemple CASE)
  • QSYS2.SECURITY_INFO (vue) : retourne une ligne avec les informations relatives à la configuration de sécurité de l'IBM i (cf DSPSECA et DSPSECAUD).
  • QSYS2.SEND_MESSAGE() (procédure) : envoie un message de type INFO dans la file QSYSOPR. Le message peut être un identifiant (avec bibliothèque et fichier de messages).
  • QSYS2.USER_INDEX_ENTRIES() (UDTF) : retourne les entrées d'un index utilisateur *USRIDX (cf API QUSRTVUI)
  • QSYS2.USER_INDEX_INFO (vue) : retourne les attributs des index utilisateurs (*USRIDX)
  • QSYS2.USER_INFO_BASIC (vue) : retourne des informations simplifiées sur les profils utilisateurs pour de meilleurs performances (vous devez disposer des droits *OBJOPR et *READ pour accéder aux profils)
  • QSYS2.USER_SPACE() (UDTF) : retourne le contenu d'un espace utilisateur *USRSPC (cf API QUSRTVUS). La donnée est retournée en binaire et caractère
  • QSYS2.USER_SPACE_INFO (vue) : retourne les attributs des espaces utilisateurs *USRSPC
  • SYSTOOLS.AUDIT_JOURNAL_AF() : entrée de journal AF (Authority Failure))
  • SYSTOOLS.AUDIT_JOURNAL_CA() : entrée de journalCA (Authority Changes)
  • SYSTOOLS.AUDIT_JOURNAL_OW() : entrée de journalOW (Ownership Change)
  • SYSTOOLS.AUDIT_JOURNAL_PW() : entrée de journalPW (Password)
  • SYSTOOLS.CHANGE_USER_PROFILE() (UDTF) : permet de modifier un ou plusieurs attributs sur un profil. On peut demander en mode PREVIEW ou demander à effectuer l'action. Tous les attributs du profil ne sont pas modifiables.
  • SYSTOOLS.GENERATE_PDF (fonction scalaire) : permet de générer un spool dans l'IFS depuis un spool (nécessite 5770TS1 - Option 1 - Transform Services - AFP to PDF Transform). Retourne 1 en cas de succès, -1 sinon.

Services IBM i : modifiés

  • QSYS2.ACTIVE_JOB_INFO()
  • QSYS2.CERTIFICATE_INFO()
  • QSYS2.DISPLAY_JOURNAL()
  • QSYS2.IFS_OBJECT_STATISTICS()
  • QSYS2.JOB_INFO()
  • QSYS2.OBJECT_STATISTICS()
  • QSYS2.SYSDISKSTAT (table function)
  • QSYS2.SYSDISKSTAT (view)
  • QSYS2.USER_INFO
  • Alerts for IBM i System Limits : table QSYS2.SYSLIMTBL et variables de SYSIBMADM
  • SYSTOOLS.FIRMWARE_CURRENCY

Services DB2 for i : nouveaux

Query Supervisor

Le moteur SQE de DB2 fournit un spervisor de requêtes qui permet une surveillance en temps réel des requêtes. Nous pouvons fixer des seuils au delà desquels les requêtes sont interrompues. Les seuils concernent les ressources CPU TIME / ELAPSED TIME / TEMPORARY STORAGE / TOTAL IO COUNT pour le moment. Les valeurs peuvent être fixées de façon globale, ou par utilisateur/job/sous-système ...

  • QSYS2.ADD_QUERY_THRESHOLD (procédur) : ajoute la surveillance d'un seuil. Effectif à la prochaine requête.
  • QSYS2.END_IDLE_SQE_THREADS (procédure) : permet d'arrêter tous les threads du jobs qui ne sont pas utilisés (permet d'éviter CPF180B "Function XXXX is not allowed in a job which has multiple threads.")
  • QSYS2.QUERY_SUPERVISOR (vue) : contient les règles et seuils définis pour QUERY_SUPERVISOR
  • QSYS2.REMOVE_QUERY_THRESHOLD (procédure) supprime la surveillance d'un seuil. Cette modification est effective pour les prochaines requêtes.

Services DB2 for i : modifiés

  • QSYS2.CLEAR_PLAN_CACHE (procédure) : ajout de filtres
  • QSYS2.DUMP_PLAN_CACHE (procédure) : ajout de filtres
  • QSYS2.DUMP_PLAN_CACHE_PROPERTIES (procédure) : ajout de nouvelles colonnes pour le détail des information Query Supervisor
  • QSYS2.DUMP_PLAN_CACHE_TOPN (procédure) : ajout du filtre CATEGORY
  • QSYS2.GENERATE_SQL (procédure) : possibilité de générer dans l'IFS (avec choix ddu caractère de fin de ligne et du CCSID) !
  • QSYS2.GENERATE_SQL_OBJECTS (procédure) : génération dans l'IFS (idem)
  • QSQGNDDL API : génération dans l'IFS (idem)
RPG

Fonctions intégrées %LOWER et %UPPER

Permettent les conversions en majuscule et minuscule simplement, plus besoin de passer par SQL embarqué ou encore %xlate !

Syntaxe :

%LOWER(string {: start { : length } })
%UPPER(string {: start { : length } })  

String peut être de type CHAR ou de type UCS-2
Start représente la position de début à convertir (comme %substr).

Attention, la valeur est en octet et non en caractères (en fonction de l’encodage, comme UTF-8, à vous de vérifier que la longueur correspond au nombre de caractères souhaités).

Length représente la longueur, toujours en octets à convertir.

L’ensemble du string est retourné, mais seuls les caractères entre start et start+length sont convertis.

Remarque : vous pouvez demander au compilateur d’expliciter les conversions de CCSID avec CTL-OPT CCSIDCVT(*LIST)

Fonctions intégrées %SPLIT

Permet de découper une chaîne de caractères dans tableau.

%SPLIT renvoie un tableau temporaire.

Elle n’est pas utilisable avec : SORTA, %ELEM, %LOOKUP et %SUBARR.

Syntaxe :
%SPLIT(string {: separators })

String peut être de type CHAR, GRAPHIC ou UCS-2.
Le second paramètre indique une liste de séparateurs possible. Son CCSID doit être identique à celui de string. La valeur par défaut est un caractère blanc.

%SPLIT peut s’utiliser avec l’itérateur FOR-EACH

Par exemple, découpage d'un fichier CSV (on a aussi des solutions avec SQL), ou pour des formats d'échanges avec des structures/séparateurs spécifiques.

Option de compilation EXPROPTS(*STRICTKEYS)

Pour les opérations BD avec clés (%KDS ou liste de clés), interdit les arguments qui pourraient déborder ou être tronqués.

Lorsque EXPROPTS(*STRICTKEYS) n'est pas indiqué : les valeurs de recherche peuvent être de longueur différentes que la zone clé, avec des CCSID différents ... Avec EXPROPTS(*STRICTKEYS), le compilateur provoque une erreur de compilation si les critères de recherche ne sont pas dans les mêmes définitions.

Pour les zones :

  • Caractère : même longueur ; même CCSID si DATA(*NOCVT) pour le fichier, CCSID du travail sinon
  • Numérique : le nombre de positions entières doit être <= nombre de positions entières de la clé. Idem pour les positions décimales
  • Date : la date de recherche doit être dans la plage de dates du format de la clé (années sur 2 ou 4 positions)
  • Heure : une date au format *USA n'est valide que si la clé est au format *USA
  • Horodatage : le nombre de décimales (pour les secondes) doit être <= à la clé

PTF

  • 7.3 : ILE RPG compiler: 5770WDS SI76100
  • 7.4 : ILE RPG compiler: 5770WDS SI76101, 5770WDS SI76109 pour TGTRLS V7R3M0
  • 7.3 : ILE RPG runtime (nécessaire pour les BIFs) : 5770SS1 SI76098
  • 7.4 : ILE RPG runtime (nécessaire pour les BIFs) : 5770SS1 SI76099

Pour rappel, nouvel emplacement du RPG Café : https://www.ibm.com/support/pages/node/1106229#announcement

IBM i 7.4 TR5 - IBM i 7.3 TR11

Disponible depuis le 10 septembre 2021

Références

SF99737 740 Technology Refresh - level 5 : https://www.ibm.com/support/pages/node/6198732 et https://www.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/0/899/ENUSLP21-0180/index.html

Sur le site du support : IBM i 7.4 - TR5 Enhancements  https://www.ibm.com/support/pages/node/6456987

Hard / Firmware

Nécessaire pour :

  • Power E1080 (9080-HEX) : contient le LIC qui supporte les processeurs Power10
  • Les cartes suivantes :
    • #EJ24 - PCIe x16 to CXP Converter Card
    • #EJ35, #EJ37 - PCIe3 Crypto Coprocessor 4769
    • #EB48 - 1 GbE Base-T Transceiver RJ45 for the 25/10 Gb Ethernet adapter
    • #EN1J/#EN1K - PCIe4 32 Gb dual-port optical FC adapter adds native support
  • Support du PCIe3 Crypto Coprocessor 4769  cf (https://www.ibm.com/support/pages/node/6479419)
IBM i / logiciels sous licence

IBM Cloud Storage Solutions for i (5770-ICC)

La PTF 5733ICC - SI76887 fait partie de la TR (disponible à fin septembre) :

BRMS for i (5770-BR1)

Les PTF SI76737 (7.3) et SI76738 (7.4) apportent :

Integrated Web Services Server (IWS) - Rest API Engine

Jusqu'à maintenant, on pouvait exposer sous forme de web service une procédure ILE (dans un programme de service) avec un maximum de 7 paramètres !

La limite passe maintenant à 248 paramètres.

Navigator for i

Nouvelle interface

L'interface actuelle est vieillissante, pas toujours réactive ni très ergonomique dans tous les cas.

Une nouvelle interface est disponible sur le port 2002.

Cela nécessite de prochain Group PTF HTTP (non disponible lors de la rédaction de cette Pause Café), les images sont fournies par IBM (Tim Row) :

 

L'architecture technique du produit est également largement simplifiée pour permettre une meilleure réactivité :

  • On utilisera toujours Java avec un serveur Liberty
  • Mais le reste de la pile est simplifié avec Angular, PrimeNG (Angular UI Component Library) et l'utilisation des Services SQL

Certaines fonctions ont été repensées dans l'interface (EIM qui est un vrai supplice aujourd'hui ...), d'autres qui n'étaient pas disponibles sur l'interface actuelle (tableau de bord multi-systèmes ?). Les fonctions arriveront progressivement dans l'interface.

Plus d'informations : https://www.ibm.com/support/pages/node/6483299

DB2

Services IBM i : nouveaux

  • QSYS2.COLLECTION_SERVICES_INFO : équivalent à la commande CFGPFRCOL (Configurer collecte de perf)
  • QSYS2.WORKLOAD_GROUP_INFO : DSPWLCGRP (Afficher gpe charge de travail)
  • SYSTOOLS.AUDIT_JOURNAL_CD() : entrée de journal CD (Chaînes de commande)
  • SYSTOOLS.AUDIT_JOURNAL_CO() : entrée de journal CO (Créations d'objet)
  • SYSTOOLS.AUDIT_JOURNAL_CP() : entrée de journal CP (Modifications de profil utilisateur)
  • SYSTOOLS.AUDIT_JOURNAL_DO() : entrée de journal DO (Suppressions d'objets)
  • SYSTOOLS.AUDIT_JOURNAL_EV() : entrée de journal EV (Opérations relatives aux variables d'environnement)
  • SYSTOOLS.AUDIT_JOURNAL_GR() : entrée de journal GR (Enregistrement générique)
  • SYSTOOLS.AUDIT_JOURNAL_M0() : entrée de journal M0 (DB2 Mirror for i)
  • SYSTOOLS.AUDIT_JOURNAL_M6() : entrée de journal M6 (DB2 Mirror for i)
  • SYSTOOLS.AUDIT_JOURNAL_M7() : entrée de journal M7 (DB2 Mirror for i)
  • SYSTOOLS.AUDIT_JOURNAL_M8() : entrée de journal M8 (DB2 Mirror for i)
  • SYSTOOLS.AUDIT_JOURNAL_M9() : entrée de journal M9 (DB2 Mirror for i)
  • SYSTOOLS.AUDIT_JOURNAL_SV() : entrée de journal SV (Modifications de valeurs système)

Par exemple : violations de mot de passe sur la journée précédente

SELECT A.VIOLATION_TYPE_DETAIL, A.AUDIT_USER_NAME, A.REMOTE_ADDRESS, A.ENTRY_TIMESTAMP
FROM TABLE ( SYSTOOLS.AUDIT_JOURNAL_PW(STARTING_TIMESTAMP => CURRENT TIMESTAMP - 1 DAYS) ) A
ORDER BY A.ENTRY_TIMESTAMP DESC

Services IBM i : modifiés

  • QSYS2.ACTIVE_JOB_INFO() : ajout de la colonne WORKLOAD_GROUP
  • QSYS2.DISPLAY_JOURNAL() : ajout de la colonne USER_NAME (nom alternatif à CURRENT_USER), ajout de la valeur spéciale *CURSEQCHN pour le paramètre STARTING_RECEIVER_NAME
  • QSYS2.NVME_INFO : ajout des colonnes IOP_NAME, BUS_NUMBER, LOCATION_CODE, PAGES_AVAILABLE, PAGES_USED, FORMAT_CRYPTO, OVERWRITE, SECURE_ERASE, BLOCK_ERASE, CRYPTO_ERASE, PAGES_MAXIMUM, NAMESPACES_AVAILABLE, NAMESPACES_USER, NAMESPACES_MAXIMUM, NAMESPACES_CONFIGURED
  • QSYS2.SECURITY_INFO : ajout des colonnes VERIFY_OBJECT_RESTORE, ALLOW_OBJECT_RESTORE, USE_ADOPTED_AUTHORITY, ALLOW_USER_DOMAIN, LIMIT_SECOFR_ACCESS, INACTIVE_JOB_TIMEOUT, INACTIVE_JOB_MESSAGE_QUEUE, DISCONNECTED_JOB_INTERVAL, AUTOCONFIGURE_DEVICES, and AUTOCONFIGURE_REMOTE_CONTROLLERS
  • QSYS2.SYSDISKSTAT (function table) : ajout de la colonne IOP_NAME
  • QSYS2.SYSDISKSTAT (vue) : ajout de la colonne IOP_NAME
  • IBM i System Limits : épuration par défaut à 90 jours. L'épuration se base sur les variables globales de SYSIBMADM

Services DB2 for i : nouveaux

  • QSYS2.ACTIVE_QUERY_INFO() : retourne les informations sur les requêtes SQL (moteur SQE) en cours.
  • QSYS2.SYSFILES : équivalent DSPFD (contient les informations sur les fichiers base de données)

Exemples :

Top 10 des instructions les plus consommatrices :

SELECT *
FROM TABLE(QSYS2.ACTIVE_QUERY_INFO( JOB_NAME => 'QZDASOINIT'))
order by current_runtime
limit 10

Fichiers modifiés ces 6 dernières heures :

select *
from qsys2.sysfiles
where left(TABLE_SCHEMA, 1) <> 'Q' and LAST_ALTERED_TIMESTAMP > current timestamp - 6 hours
limit 10

Top 10 des fichiers contenant le plus grand nombre de membre :

select *
from qsys2.sysfiles
where left(TABLE_SCHEMA, 1) <> 'Q' and FILE_TYPE <> 'SOURCE' and TABLE_NAME <> 'EVFEVENT'
order by NUMBER_MEMBERS desc
limit 10

Services DB2 for i : modifiés

  • QSYS2.PARSE_STATEMENT() : ajout support instruction CALL

Fonctions HTTP

L'évolution la plus importante ici certainement !

Liste des fonctions :

  • QSYS2.HTTP_GET()
  • QSYS2.HTTP_GET_VERBOSE()
  • QSYS2.HTTP_POST()
  • QSYS2.HTTP_POST_VERBOSE()
  • QSYS2.HTTP_PUT()
  • QSYS2.HTTP_PUT_VERBOSE()
  • QSYS2.HTTP_DELETE()
  • QSYS2.HTTP_DELETE_VERBOSE()
  • QSYS2.URL_ENCODE()
  • QSYS2.URL_DECODE()
  • QSYS2.BASE64_ENCODE()
  • QSYS2.BASE64_DECODE()

L'empreinte mémoire est bien moins importante, avec des gains de performance.

Les fonctions sont implémentées dans le programme de service QSYS/QSQAXISC. Pour désactiver ces fonctions, vous pouvez modifier les droits sur le programme de service (*PUBLIC *USE par défaut).

Fonctions utilitaires

Les fonctions existantes SYSTOOLS.BASE64DECODE et SYSTOOLS.BASE64ENCODE étaient limitées à des paramètres à 4Ko : impossible d'encoder des images, documents ... Les nouvelles fonctions supportent des paramètres à 2Go pour les chaines de caractères et 1,5Go pour les données binaires !

 

De même, les fonctions URL ENCODE et DECODE supportent 1Mo au lieu de 4Ko.

 

La documentation IBM : https://www.ibm.com/support/pages/node/6486889

Fonctions HTTP

Le principe est identique aux fonctions HTTP que nous connaissons dans la bibliothèque SYSTOOLS.

Par exemple, un appel HTTP GET simple :

Nous pouvons toujours transmettre des entêtes HTTP :

Ces derniers sont désormais transmis sous format JSON au lieu du format XML !

Ce paramètre est également utilisé pour transmettre des options au moteur Axis (authentification basique, timeout ...) : https://www.ibm.com/docs/en/i/7.4?topic=functions-http-get#rbafzscahttpget__HTTP_options

N'hésitez pas à passer par des variables (SQL ici ou RPG dans vos programmes) pour construire vos appels étape par étape :

De même,il est toujours possible de retrouver le code HTTP en retour, ainsi que les entêtes de la réponse avec les fonctions tables HTTP_GET_VERBOSE, HTTP_PUT_VERBOSE ...

Ici aussi, le retour se fait en JSON à la place de XML :

On remarque que les valeurs retournées ne sont pas réellement au format JSON : le séparateur clé/valeur est le symbole "=" au lieu de ":" !

Vous pouvez utiliser REPLACE :

Les PTF suivantes règlent ce problème : 7.3 SI77292 / 7.4 SI77293

De même pour simplifier le code on peut stocker le résultats dans des variables : commençons par contrôler la bonne exécution

Si le code HTTP en retour est correct, on peut alors s'occuper des données :

Une évolution importante concerne également la sécurité : les certificats nécessaires à l'accès à des ressources https sont désormais gérés dans DCM ! Avec la version SYSTOOLS, ces derniers étaient gérés dans les magasins de certificats du runtime Java utilisé par les fonctions HTTP*. Cela nécessitait d'importer par keytool les certificats dans des magasins divers. Désormais on centralise avec Digital Certificate Manager.

La présence des autorités de certification dans DCM est nécessaire pour accèder à une ressource :

Voyons les autorités :

Nous récupérons les CA (possible directement depuis la navigateur web) et les placons sur l'IFS.

Cela permet de les importer dans DCM (nouvelle interface ici) :

Une fois nos deux certificats importés, l'accès à la ressource https fonctionne :

En synthèse :

  • Le produit est simple à utiliser
  • Des performances améliorées
  • Facilité de migration des programmes utilisant les fonctions de SYSTOOLS vers les nouvelles de QSYS2

Mais ! Pour l'instant nous n'avons pas le support des donées binaires : seules les données basées sur du caractères sont supportées !

Les fonctions de SYSTOOLS conservent donc encore de l'intérêt avec la capacité de fonctionner avec de BLOB (Binary Large OBject).

RPG

Quelques nouveautés bienvenues, sous forme de fonctions intégrées, évolution de code opération ou option de compilation !

Fonctions intégrées %MAXARR et %MINARR

Retourne l'index de la plus grande ou plus petite valeur dans un tableau. Comme toute les BIFs peut s'utiliser dans une expression.

Peut s'utiliser sur un tableau de type simple ou un tableau de DS. Dans ce cas, indiquer la zone de recherche.

Tri de tableau de DS suivant plusieurs zones

Avec un la fonction intégrées %fields qui fonctionne maintenant avec SORTA.

Remarque : l'assistance à la saisie avec RDi (Ctl Espace) ne fonctionne pas avec %fields dans ce cas.

Débogage des constantes

Nécessite la PTF compilateur ET débogage.

Comportement :

  • 5250 : eval (ou ev) constante -> donne la valeur. Les constantes n'apparaissent pas par ev %localvars
  • RDi : les constantes n'apparaissent pas dans la vue variables, mais par survol de la constante dans l'infobulle (et toujours dans la vue Structure)

PTF

  • 7.3 : Debugger: 5770SS1 SI76807, ILE RPG compiler: 5770WDS SI77165
  • 7.4 : Debugger: 5770SS1 SI76808, ILE RPG compiler: 5770WDS SI77166, 5770WDS SI77167 pour TGTRLS V7R3M0
Open Source

Pour rappel, le produit 5733-OPS est remplacé par les modules disponibles par RPM.

Pour débuter avec RPM : https://ibmi-oss-docs.readthedocs.io/en/latest/yum/README.html

Sont disponibles :

  • Node.js 16 : version LTS
  •  GCC 10 : bug fix
  • Python 3.9 : version LTS
  •  tn5250 : permet d'accèder à une session 5250 depuis un terminal SSH
  • dos2unix : permet de convertir des fichiers avec gestion des caractères de fin de ligne CRLF 
  •  hexdump : sous SSH permet d'analyser les fichiers binaires avec positionnement précis sur un octet
  • Cron / anacron : planificateur
  • Ghostscript : interpréteur PostScript et PDF
  • FreeTDS Libraries : tabular data stream
  • Nouvelles fonctions pour bash : liblist, cl, getjobid. Cf le site de Kevin Adler https://kadler.io/2020/12/23/bash-builtins.html

Access Client Solutions

Version 1.1.8.7 du 12/04/2021

Exécution de script SQL

  • Tous les warnings SQL détectés lors de la récupération du résultat sont affichés dans l'onglet "Messages"
  • Une option "Rafraichir" a été ajoutée à l'option de connexion à la base de données
  • Ajout d'une infobulle permettant d'obtenir la description des configurations JDBC
  • Les données issues d'erreus de mappage sont affichées sous la forme "++++++++++++" (comme avec STRSQL)
  • Des exemples supplémentaires (principalement pour les services DB2/IBM i)

Schémas

Lors de la génération de script SQL, les contraintes sont maintenant générées dans le script CREATE TABLE, au lieu de ALTER TABLE.

Visual Explain

L'Index Advisor regroupe les scripts de création d'index CREATE INDEX dans une unique fenêtre d'éxécution de script SQL

Sortie imprimante

Les actions de suppression, suspension et libération de spoules peuvent être surveillées dans la vue Taches actives

5250

Possibilité de copier l'adresse de la machine depuis l'émulateur.

Autre

Avertissement si la touche majuscule est active sur la saisie du mot de passe.

Version 1.1.8.8 du 23/09/2021

Généralités

Cette version apporte de nombreuses évolutions sur les outils SQL.

La documentation commence ainsi :

Pour rappel, vous pouvez obtenir ACS :

Cette version corrige un bug de ACS 1.1.8.7 sur la gestion des certificats, qui pouvait bloquer l'obtention de la console. Plus de détails ici : https://www.itjungle.com/2021/05/03/major-bug-in-ibm-i-access-client-solutions/

La gestion de la mémoire a été optimisée pour une empreinte améliorée.

La prochaine mise à jour est prévue en avril 2022.

MacOS Big Sur

Vous devez préalablement installer Java 11 ou supérieur (Java 11 recommandé).

Si vous mettez à jour depuis une version 1.1.8.4 ou inférieure, suivez les instructions spéciales dans la documentation.

Nouvelle version de Navigator for i

Nécessite les PTF SI76982 (7.3) ou SI76981 (7.4).

Vous pouvez alors demander l'usage de la nouvelle version de Navigator for i :

  • Nouvelle propriété dans le fichier AcsConfig.properties : com.ibm.iaccess.NewNavigator=true
  • En ligne de commande : Start_Programs\Windows_x86-64\acslaunch_win-64.exe -Dcom.ibm.iaccess.NewNavigator=true

Exécution de script SQL

Gestion du contrôle tranasactionnel :

  • Deux icones pour valider/invalider rapidement. Les icones s'activent dès que des modifications non validées sont faites. Un rappel en bas de fenêtre pour indiquer que des changements non validés sont présents
  • Un message de confirmation en cas de fermeture de la fenêtre en présence de lignes non validées

Meilleurs synchronisation des Fichiers récents lorsque plusieurs fenêtres d'éxecution sont ouvertes

Fonction de recherche dans l'historique du travail

Des exemples supplémentaires, principalement pour prendre en compte les nouveaux services SQL

Téléchargement des résultats : modification de la fenêtre (zones séparées pour table et bibliothèque)

Schémas

Ajout des boutons précédent et suivant dans la visualisation des postes de journaux

Ajout des colonnes Deterministe et Inline dans la liste des fonctions

Centre de performances SQL

Fonction de recherche dans l'écran principal

Fonction de recherche dans les rapports d'analyse

Dans l'affichage du plan cache, affichage de l'instruction complète lors du survol

Autres améliorations

Vous pouvez sélectionner un système en tapant son nom

Rational Developer for i

Fix 11 pour RDi 9.6 

Nouvelle option dans la perspective PDM pour ouvrir l'émulateur intégré

A quand une meilleure intégration d'ACS avec RDi ?

Gestion du verrouillage des membres

Une nouvelle décoration d’icone dans l’éditeur LPEX permet d’indiquer si le membre est verrouillé ou non : il doit être verrouillé, mais dans certains cas on peut perdre ce verrouillage. Par exemple lors de la perte de connexion avec l’IBM i. Ou lorsque vous ré-ouvrez Rdi alors que des membres étaient ouverts à la fermeture précédente.

Une nouvelle option dans les préférences (non encore traduite) permet d’ailleurs d’indiquer s’il faut verrouiller les membres au démarrage de Rdi.

Amélioration de la vue Structure

  • En RPG, les opérations BD sont indiquées !
  • Il reste quelques difficultés d'analyse avec les fichiers QUALIFIED
  • Nouvelle icône indiquant les procédures exportées
  • Langage de Contrôle : la vue Structure se rapproche (enfin) de l'outillage RPG
  • Une nouvelle préférence (activée par défaut) permet de mettre à jour la vue Structure au fur et à mesure de la frappe

Sauvegarde de la recherche

Possibilité d'enregistrer en format csv :

Il faut bien indiquer le chemin complet de sauvegarde (ou passer par le bouton Parcourir), sinon :

/copy et /include

Le survol par la souris affiche le contenu du source :

Restructuration des constantes

Supporte désormais la restructuration des constantes numériques, et permet également d'ajouter un commentaire

Nouvelle connexion

Nouvelle icône permettant de créer rapidement une nouvelle connexion

Les options avancées renvoient vers la fenêtre de création de connexion usuelle. Une fois la connexion créée on arrive sur la vue Table Objets (PDM) avec la sélection alimentée

Références détaillées

Tous les fix https://www.ibm.com/support/pages/fix-list-rational-developer-i