pause-café
rendez-vous technique
Pause-Café est une réunion technique
destinée aux informaticiens sur plateforme IBM i.
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é #86
Février 2021
le 2 février, en ligne
TR3
TR3 (et aussi la TR9 de la 7.3)
- Syntaxe SQL
- DROP IF EXISTS (évite une erreur la première fois que vous lancez un script et que la table n'existe pas)
- Amélioration de WHENEVER
on peut déclarer, par DO
- une procédure (DCL-PROC)
- EXSR (ou PERFORM) un sous programme
- Support de la clause FOR SYSTEM NAME sur CREATE SEQUENCE
- Support de DBGVIEW(*STMT) et DBGVIEW(*LIST) sur l'ensemble des précompilateurs SQL (RPG/COBOL/C/C++)
- Compatible avec toutes les valeurs de TGTRLS
- Clause SELECTIVITY
- L'optimiseur SQL doit connaitre le nombre de lignes supposé (en %) pour chaque sélection afin d'établir son plan d'accès
- dans certains cas (Utilisation d'une fonction (UDF), par exemple) la prédiction est impossible :
SELECT * From Producteurs where appel_code in (13, 15 ,22) or depart = 66 or calcul_nbvins(pr_code) > 5
- Si vous la connaissez (par exemple en moyenne 2%) vous pouvez l'indiquer :
SELECT * From Producteurs where appel_code in (13, 15 ,22) or depart = 66 or calcul_nbvins(pr_code) > 5 SELECTIVITY 0.02
- Nouveaux services
- COMMUNICATIONS_ENTRY_INFO affiche les entrées de communication d'un sous-système (ADDCMNE)
- DATA_QUEUE_ENTRIES lit (SANS détruire) les entrées d'une DTAQ
- EXIT_POINT_INFO affiche les points d'exit (WRKREGINF)
- EXIT_PROGRAM_INFO affiche les programmes associés aux points d'exit
- IFS_WRITE : procédure pour écrire dans un fichier steam
- PATH_NAME : nom du fichier
- LINE : ligne à écrire (CLOB)
- FILE_CCSID : CCSID du fichier, si création (1208 par défaut, 0 = CCSID du JOB)
- OVERWRITE
- APPEND : en ajout
- REPLACE : mise à blanc préalable
- NONE : Erreur sir le fichier existe déjà
- END_OF_LINE
- CR, CRLF, LF, LFCR : caractère de fin de ligne
- NONE : pas de fin de ligne
- IFS_READ : fonction table de lecture d'un fichier stream
- PATH_NAME : nom du fichier
- MAXIMUM_LINE_LENGTH
- END_OF_LINE
- CR, CRLF, LF, LFCR : caractère de fin de ligne
- NONE : pas de fin de ligne
- Il existe des versions travaillant avec des données binaires
- IFS_WRITE_BINARY, IFS_READ_BINARY
- et des versions acceptant/retournant de l'Unicode
- IFS_WRITE_UTF8, IFS_READ_UTF8
- Enfin, elles peuvent travailler aussi les membres sources
- JOURNAL_INHERIT_RULES
- Vue et fonction table indiquant si une bibliothèque est journalisée et avec quels paramètres
- et vue JOURNALED_OBJECTS listant les objets journalisés
- OPEN_FILES, liste les fichiers ouverts par un travail
- SERVER_SHARE_INFO donne la liste des paratages Netserver
- SOFTWARE_PRODUCT_INFO donne la liste des produits installés (comme DSPSFWRSC)
- SYSDISKSTAT est l'équivalent de la commande WRKDSKSTS
- SYSTEM_STATUS_INFO_BASIC
- retourne une ligne avec des infos de performance (un peu comme WRKSYSACT)
- Comme SYSTEM_STATUS_INFO, mais sans les informations de la table des travaux
- la vue SYSLIMITS_BASIC
- retourne des informations simplifiée sur les limites
- basée sur la table QSYS.SYSLIMTBL, mais nécessite moins de droits et avec de meilleurs performances
- la vue WATCH_INFO retourne la liste des "Watch" actifs (comme WRKWCH, voyez notre exemple d'écran de veille)
- WATCH_DETAIL, fonction table retournant du détail sur un Watch
- Services DB2
- SYSCOLUMNS2_SESSION affiche une ligne par colonne de table de QTEMP
- RELATED_OBJECTS affiche les objets liés à un fichier (DSPDBR)
Enfin les services suivats ont été revus (souvent une colonne en plus)- QSYS2.ACTIVE_JOB_INFO()
- QSYS2.DB_TRANSACTION_INFO
- QSYS2.DISPLAY_JOURNAL()
- QSYS2.LIBRARY_INFO()
- QSYS2.SYSDISKSTAT (View)
- QSYS2.SYSTEM_STATUS()
- QSYS2.SYSTEM_STATUS_INFO
- SYSTOOLS.GROUP_PTF_CURRENCY
- SYSTOOLS.GROUP_PTF_DETAILS
- SYSTOOLS.SPLIT
- QSYS2.ANALYZE_CATALOG
- Langage RPG
- Gestion obligatoire ou non des prototypes de procédures exportées
Nouvelle option de compilation
CTL-OPT (carte H) : mot clé REQPREXP- Nouveau paramètre REQPREXP sur les commandes CRTBNDRPG et CRTRPGMOD
- Valeurs possibles
*NO : comportement actuel -> un prototype n'est pas nécessaire pour les procédures exportées
*WARN : génère un avertissement à la compilation
*REQUIRE : génère une erreur à la compilation
- Bonnes pratiques : utiliser des prototypes pour les procédures exportées !
- Nécessite les PTF
7.3 : SI74590
7.4 : SI74591
Attention : réinitialise les valeurs par défaut que vous auriez modifiées par CHGCMDDFT sur les commandes CRTRPGMOD et CRTBNDRPG
- Nouveau mot-clé CTL-OPT (carte H)
- EXPROPTS(*ALWBLANKNUM)
- Comportement des BIFs %INT, %INTH, %UNS, %UNSH, %DEC, %DECH et %FLOAT : retournent une valeur à 0 lorsqu'appelées avec une valeur à blanc (au lieu d'une erreur)
- Pour XML-INTO et DATA-INTO : une valeur blanc est également supportée pour les numériques
- EXPROPTS(*USEDECEDIT)
- Comportement des BIFs %DEC et %DECH : acceptent les séparateurs de milliers, en fonction du format défini par DECEDIT
- EXPROPTS(*ALWBLANKNUM:*USEDECEDIT) pour les deux
- La fonction %RANGE() permet de contrôler si une valeur est entre une borne minimum et maximum (bornes comprises)
- x IN %RANGE(y : z) • x >= y AND x <= z
- La fonction %LIST() permet de créer un tableau temporaire depuis une liste de valeurs
- L'opérateur IN permet de tester l'existence d'une valeur dans un tableau
- Tableau, ou %subarr() ou %list()
- Le code opération FOR-EACH permet d'itérer sur les valeurs d'un tableau ou d'un tableau temporaire
- Tableau(DIM), ou %subarr() ou %list()
- Débogage des valeurs retours de fonctions
- Le mot-clé DEBUG(*RETVAL) permet d'accéder à une valeur retour de fonction en débug sous le nom _QRNU_RETVAL
- La valeur est modifiable avant retour à l'appelant
- Les fonctions sur les tableaux et debug nécessitent les PTF
- 7.3:
- ILE RPG compiler: SI74612
- 7.4:
- ILE RPG compiler: SI74613
- ILE RPG compiler, TGTRLS(V7R3M0): SI74614
- RDi (Rational Developer for i) 9.6.0.9
- Support des nouveautés RPG
- BIFs: %RANGE(), %LIST()
- Options de compilation EXPROPTS(*ALWBLANKNUM), EXPROPTS(*USEDECEDIT), DEBUG(*RETVAL), REQPREXP
- Code opération : FOR-EACH
- Opérateur : IN
- Avec 9.6.0.9 :
- Sans :
- Prise en charge OPTION(*EVENTF) pour la commande CRTCMD
- Nécessite :
- V7R3 PTF: SI74609
- V7R4 PTF: SI74565
- Nombreuses améliorations de l'ergonomie
- Les prompts de commande s'affichent sur le même écran que RDi
- Formatage
- Analyse de code
- …
- Certains correctifs nécessitent des PTF :
- Access Client Solutions 1.1.8.6
- Disponible depuis le 6 décembre 2020
- Changement d'icône
- Exécutable signé
- Synthèse des PTF nécessaires :
- 7.4 PTF SI74324 ou 7.3 PTF SI74326
- Pour le support de CCSID 1377 (Hong Kong T-Chinese Mixed Host enhancement for HKSCS-2004) et 1388 (Simplified Chinese DBCS- GB 18030 Host with UDCs and Uygur extension.) :
- 7.4 - MF67073, MF67039, MF66935, SI71938, SI71937, SI71982, SI72073
- 7.3 - MF67069, MF66942, MF67120, SI71948, SI71942, SI72060
- 7.2 - MF67072, MF66946, MF67121, SI71953, SI71952, SI72104
- Pour l'installation sur Mac, principalement avec Big Sur :
- Mise à jour possible depuis un système IBM i de référence, lui-même mis à jour par PTF
- Menu Edition -> Préférences -> onglet Général
- Pour l'IFS, importante amélioration performances
- Capacité d'envoyer plusieurs fichiers simultanément vers l'IBM i
- Sélection de plusieurs fichiers en maintenant la touche Ctrl
- Capacité d'envoyer un (ou plusieurs) répertoire complet
- De mixer répertoire(s) + fichier(s)
- Support de la décompression des archives
- Support de la conversion en UTF-8 au téléchargement ET support de QSYS (en download)
- Rend les membres sources lisibles après download
- A l'inverse l'upload dans QSYS n'est pas supporté :
- De nombreuses amélioration SQL
- Exécution de script SQL
- Content Assist : propositions de syntaxes pour INSERT, UPDATE, DELETE, MERGE, CREATE INDEX, TRUNCATE
- Ctl-Espace :
- première fois : retrouve les tables/vues/colonnes
- seconde fois : retrouve les mots clés SQL utilisables à cet endroit
- Support INSERT et CASE avec OLAP
- Amélioration du support pour les fonctions intégrées
- Ajout de propositions pour les UDTF et tables dérivées (TABLE ou LATERAL) dans les suggestions
- Support des alias
- Refonte des menus
- Amélioration du formatage et des propositions syntaxiques
- Support de INCLUDE SQL
- Recherche : ajout de Find Previous et Goto Line
- Mise en évidence des valeurs nulles par un tiret – (modifiable)
- Fermeture du result sets après un certain temps – évite les verrouillages
- Améliorations des performances
- Nouveaux exemples pour les services IBM i
- Content assist : paramétrage supplémentaire
- Schéma base de donnée
- Support du nom système pour les séquences (nécessite 7.4 PTF SI74324 ou 7.3 PTF SI74326)
- Open source
- dos2unix
très pratique, voici ce que dit man
- cron, le scheduler d'unix
- MariaDb, la version open source de Mysql
- Pour l'installer, vous passerez par l'utilitaire d'ACS
tous les fichiers sont dans /QOpenSys/pkgs/bin
- Ensuite, modifiez my.cnf (ici par EDTF)
- terminez l'installation par mysql_install_db
- Lancez mysqld_safe
Attention, ce la bloque la fenêtre, il serait prudent de soumettre (SBMJOB)
- Vérifions par NETSTAT *CNN
- il faut ensuite attribuer un mot de passe à root (le "root" de mysql)
- use mysql (choix de la base active, mysql impératif pour tout ce qui est administration de mysql)
- select host,user from user ;
permet de voir les utilisateurs enregistrés leurs droits d'accès
Rappel : un utilisateur sous mysql est autorisé à ce connecté depuis une IP
L'accord de droits se fait sur cette syntaxe
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'IP ou %'
- voyez tous les détails ici : https://github.com/richardschoen/howtostuff/blob/master/installmariadbonibmi.md
- La documentation : https://mariadb.com/kb/en/documentation/