, , Gérer les *SAVF (WRKSAVF)

Il existe une commande DSPSAVF qui permet de visualiser le contenu d’un Save File (SAVF), elle est très utile et nous nous sommes demandés si nous pouvions améliorer son ergonomie.
Depuis l’intégration des Technical Release 7.5 TR2 et 7.4 TR8, de nouvelles vues et tables de fonctions permettent d’obtenir des informations à propos des SAVF et de leur contenu.

Nous avons ainsi créé WRKSAVF, une commande qui permet de lister le contenu d’un SAVF (comme DSPSAVF) mais avec des fonctionnalités supplémentaires :

  • Explorer les *SAVF d’une bibliothèque
  • Restaurer directement un objet depuis cette liste

Lors du lancement de la commande WRKSAVF, vous devez choisir le fichier SAVF dans la bibliothèque souhaitée. Si vous souhaitez accéder à la liste des SAVF existants, renseignez *ALL en nom de fichier et nommez votre bibliothèque.


Ensuite, vous n’avez qu’à sélectionner le SAVF de votre choix pour accéder à ses informations essentielles.

C’est à ce moment que la vue QSYS2.SAVE_FILE_INFO nous permet de récupérer des informations importantes telles que:

  • La date à laquelle le SAVF a été sauvegardé.
  • Le nombre d’objets contenus dans ce SAVF.
  • Si les données ont été compressées à la sauvegarde.
  • Etc. (je vous invite à consulter la documentation IBM i, les informations y sont nombreuses).

La deuxième vue qui nous intéresse est QSYS2.SAVE_FILE_OBJECTS, qui nous donne plus d’informations sur l’objet à l’intérieur du SAVF :

  • Le type de l’objet.
  • L’attribut de l’objet.
  • La bibliothèque d’origine de l’objet.
  • Le propriétaire de l’objet.
  • La taille de l’objet.
  • Etc. (ici encore, je vous renvoie à la documentation IBM i pour de plus amples informations ).

Une fois sur l’écran de gestion du contenu d’un SAVF, il vous est possible de filtrer son contenu :

  • Par nom, en indiquant par exemple que vous souhaitez afficher les objets commençant par « TEST »
  • Par type, l’utilisation de F4 vous permet de choisir parmi les types existants pour les objets de ce SAVF ou en saisissant le type voulu.
  • Il est alors possible de restaurer un objet en indiquant l’option 1.

Attention, la bibliothèque de restauration (RSTLIB) choisie par défaut est la bibliothèque de l’objet sauvegardé, il ne vous reste alors qu’à renseigner celle de votre choix pour y restaurer l’objet.

Une fois la demande de restauration exécutée, un message de complétion au pied du SFL vous indiquera :

  • Que tout s’est bien déroulé.
  • Que tout s’est bien déroulé, avec modification de sécurité.
  • Que la restauration a échoué.

Sources disponible : https://github.com/Gaia-Mini-Systemes/GSAVF

, Créer un menu UIM multi-langue

Vous utilisez UIM pour faire vos AIDES et vos menus

Vous voulez avoir une version multi langue sans changer votre panel de groupe

Il n’existe pas de solution dynamique, mais vous pouvez utiliser les fichiers messages, comme pour les commandes et les écrans, à la compile
il vous suffira de mettre en ligne la bibliothèque avec le bon langage

rappel un message est identifié par 7 caractéres xxxnnnn
xxx est est généralement 3 lettres (mais avec des exceptions exemple SQL et SQ2)
nnnn est composé de 4 chiffres

La partie utilisée dans les écrans et les commandes, c’est uniquement le message sur 132 caractères c’est le paramètre MSG()

dans notre exemple :
Nous avons différencié 3 Types de messages pour simplifier
TXT sur la structure du menu
OPT sur le texte des options à afficher
HLP sur les aides d’option à afficher
USR sur les commandes (mais pas utilisé pour l’instant le tag MENUI ne semblant pas admettre de message ) c’est le standard des fichiers de messages associés au menu SDA

Nous avons créer une commande

CRTMNUMOD qui génère ces messages dans le msgf, par défaut c’est un menu de 10 options avec texte en Français

Téléchargeable ici : https://github.com/Plberthoin/PLB/tree/master/GENUIMDSP

Vous obtenez un MSGF comme ceci :

Ensuite vous avez un modèle de menu en PNLGRP qui s’appui sur ce fichier messages

Vous allez devoir le customiser la première fois

1) Vous devez indiquer le fichier message sur le tag PNLGRP


Exemple :
:PNLGRP SUBMSGF=MODELE.

2) Les options sur les tags :MENUI

Exemple :

otion 4 avec un WRKSPLF

:MENUI OPTION=04 ACTION= ‘CMD WRKSPLF’
HELP=’MENU/OPTION04′.

** pour le moment je ne sais pas les mettre dans un fichier message

3) Vous devez ensuite compiler votre menu en précisant le nom du menu et le source

Exemple :

CRTMNU MENU(MALIB/MONMENU)
TYPE(*UIM)
SRCFILE(MALIB/QMNUSRC)

==>GO votremenu

Les identifiants de messages sont remplacés par les textes des messages, si vous avez une version par langue , mettez la bibliothèque de la langue en ligne avant la compile et c’est joué.

Vous pouvez utiliser la même technique sur les panneaux d’aide

Vous pouvez indiquer de nouveaux identifiants si vous avez des textes de plus de 132 caractères

Vous pouvez utiliser des caractères spéciaux pour éviter certains problèmes de syntaxe

&period. pour un « . »

&slr. pour un « / »

&amp. pour un « & »

&colon. pour un :

Documentation de référence ici : https://public.dhe.ibm.com/systems/power/docs/systemi/v6r1/en_US/sc415715.pdf

Pour les traductions vous pouvez même les automatiser en utilisant des webservices type Google , reverso, ou deepl bientôt nous ferons un article sur ce blog

, La bibliothèque QUSRTOOL

C’est une bibliothèque qui contient les sources d’environ 15 outils IBMi, le plus connu est NETS qui permet de gérer les partages en mode 5250.
Elle est développée par Jim Sloan, ce sont les outils TAATOOLS et depuis la version V3.7 ce sont eux qui gérent les licences.

Donc vous pouvez acquérir une licence du produit en vous adressant ici : support@taatool.com

Vous pouvez également avoir une version des outils sur votre machine : en effet avant la version 3.7 IBM distribuait gratuitement ce produit

pour plus d’information c’est ici

https://www.ibm.com/support/pages/qusrtool-status

Pour la gestion des partages, vous avez une explication ici

https://www.ibm.com/support/pages/manage-ibm-i-netserver-without-navigator-go-nets

Dans ce menu vous avez par exemple l’option 12 qui permet de gérer les utilisateurs désactivés, c’est une alternative simple à Navigator for i dans certains cas.

, , , Requêtes SQL dans ACS extraites de Navigator for i

Navigator for i utilise les services SQL, il vous indique les requêtes qui ont été utilisées.

Vous pouvez les rejouer dans ACS exécuteur de scripts.

Voici comment :

Vous avez un bouton SQL qui permet d’accéder à la requête

Par contre quand vous voulez exécuter cette requête, vous avez ce message :

Il vous faut démarrer un service sur ACS pour accepter l’exécution de ces scripts

Vous voyez votre service à l’état démarré

Vous récupérez la requête SQL dans ACS

Voila c’est simple et efficace vous pouvez également copier la requête dans propriétés si vous préférer

, SSH Alternative à PUTTY

Vous cherchez un client SSH et vous avez commencé à toucher les limites de PUTTY ?

Nous en avons testé plusieurs et nous avons bien aimé smarTTY

L’interface est simple et épurée, vous avez les icônes avec les sites que vous avez définis

Vous pouvez utiliser une connexion existante ou définir une nouvelle connexion
il vous demandera les éléments classiques, vous pourrez ensuite passer à un échange de clés pour vous identifier.

Vous avez le choix entre 2 interfaces, j’ai préféré l’interface plus classique, les plus jeunes préféreront le « SMART »

Dans l’interface SMART vous pouvez par exemple éditer directement les fichiers …

Vous pouvez alors saisir vos commandes et travailler comme sur n’importe quelle interface .

Le petit plus que nous avons aimé

C’est le bouton SCP qui est une alternative à Filezilla pour les échanges simples


Vous choisissez le fichier à télécharger


Vous avez une fenêtre qui apparait pour indiquer l’avancement du téléchargement
Vous pouvez suspendre, fermer la fenêtre

Voila , comme on dit à Gaia c’est simple et efficace, vous pouvez le tester

Remarque :

Pour l’intégrer dans ACS vous devez modifier le fichier AcsConfig.properties

Attention de vérifier que vous utiliser bien le bon fichier de configuration plus d’informations ici

https://www.ibm.com/support/pages/node/667125

En résumé vous lancez à partir de ACSBUNDLE.jar vous devrez l’ouvrir et l’éditer manuellement.

, , , Contrôler le nombre de paramètres passés à un programme CL – %PARMS() / CEETSTA
presence_flagSortie*INTVariable de retour : 1 ou 0
arg_numEntrée*INTPosition de la variable à tester

Remarques

Le compte des paramètres pour la arg_num commence à 1
La valeur de retour est un *INT pas un *LGL

Pour plus de détails

Documentation IBM – %PARMS() : https://www.ibm.com/docs/en/i/7.5?topic=procedure-parms-built-in-function
Documentation IBM – CEETSTA : https://www.ibm.com/docs/api/v1/content/ssw_ibm_i_75/apis/CEETSTA.htm
, Surveillez l’état de vos bandes

Vous sauvegardez sur des bandes LTO, et vous voulez savoir si vos bandes sont en bon état,
pour en savoir plus sur les LTO : https://fr.wikipedia.org/wiki/Linear_Tape-Open

La durée de vie théorique d’une bande LTO est donnée pour 30 ans, mais elle dépend beaucoup des conditions d’utilisation et elles peuvent être défectueuses.
Certaines sociétés changent leurs bandes tous les 3 ans.

La bonne pratique c’est de le faire quand vous changez votre POWER en principe tous les 3 à 5 ans.

Mais il peut être important de contrôler l’état de vos supports pour éviter les mauvaises surprises.

Il n’existe pas de service SQL ni de sortie outfile pour l’instant.

Vous allez pouvoir faire une analyse par volume.

C’est vous qui indiquez le nom de volume quand vous formater votre support
INZTAP DEV(TAPXXX) NEWVOL(xxxxxx) vous disposez de 6 caractères

Exemple :
==>INZTAP DEV(TAP01) NEWVOL(LUNDI1) …

La commande qui va vous permettre d’analyser ces volumes est la commande PRTERRLOG
qui va vous générer un spool QPCSMPRT.

En principe vous avez un roulement de bande par semaine.

Vous pouvez contrôler le volume dans le lecteur avant de déclencher une sauvegarde, mais il n’est pas conseillé de la bloquer, vous pouvez remonter un message.

« * Attention bande du LUNDI trouvée dans le lecteur * »

Exemple

Vous devez connaitre le type de votre unité de bande pour utiliser cette commande.

==>DSPDEVD TAP01

==>PRTERRLOG TYPE(VOLSTAT) OUTPUT(PRINT)
VOLTYPE(3580)
VOLSTATTYP(*LIFETIME)

Si vous avez des erreurs il faut remplacer vos bandes.

Pour vous aider à automatiser cette remontée d’information, vous pouvez utiliser notre outil disponible ici :

https://github.com/Plberthoin/PLB/tree/master/SNDVOLSTAT

Remarque :

Il est important :
d’avoir un plan de reprise d’activité suite à un crash
de tester une restauration partielle de temps en temps
de passer la cartouche de nettoyage tous les 6 mois

, Connaitre la taille vos MTI

Vous désirez connaitre la taille occupée par les MTI (Maintained Temporary Index) sur votre machine, voici une Méthode.
Vous avez des buckets (espaces dans votre mémoire centrale) sur votre partition.

Vous avez un service QSYS2.SYSTMPSTG qui permet de voir ces buckets

La taille des MTI, c’est le bucket 14

Voici la requête pour voir cette taille

SQL SELECT CURRENT TIMESTAMP AS date_heure,
BUCKET_NUMBER,
GLOBAL_BUCKET_NAME,
BUCKET_CURRENT_SIZE,
BUCKET_LIMIT_SIZE
FROM QSYS2.SYSTMPSTG
WHERE bucket_number = 14

Pour diminuer cette taille il faut créer les index qu’Index advisor vous suggère.

Vous avez une fonction table qui vous indique les MTIs de votre système, QSYS2.MTI_INFO

Ceux qui concernent votre base de données doivent être construits

Ici ceux utilisés depuis une semaine sur la bibliothèque exploit !

SELECT *
FROM TABLE (
QSYS2.MTI_INFO(‘EXPLOIT’, ‘*ALL’)
)
WHERE LAST_BUILD_START_TIME > CURRENT DATE – 7 DAYS

Remarque :

Cet espace sera réutilisé par les autres Buckets

Vous pouvez faire un suivi de ces buckets , par exemple ceux de la base de données pour voir les grandes variations

La mise à jour du fichier d’index Advisor dépendra de la méthode utilisée pour générer l’index, n’hésitez pas à effacer des enregistrements dans le fichier QSYS2.SYSIXADV.

, , Générer un XLS avec SQL

La TR 3 de la V7R5 nous apporte un nouveau service qui va permettre de générer un fichier XLS à partir d’une requête SQL

Exemple :

VALUES SYSTOOLS.GENERATE_SPREADSHEET(
PATH_NAME => ‘LST_option.xls’,
SPREADSHEET_QUERY => ‘Select * from qgpl.qauoopt’ ,
COLUMN_HEADINGS => ‘COLUMN’ ,
SPREADSHEET_TYPE => ‘xlsx’)

Remarque:

ACS doit être installé sur votre partition et si possible à jour

Attention par défaut il génère du csv