La version 1.1.8.3 d’Access Client Solutions apporte une fonctionnalité attendue : complétion SQL !

L’outil cherche pour vous les noms des tables et des colonnes :

  • Gain de temps
  • Plus de faute de frappe (en tout cas sur les noms des tables et colonnes)
  • Pas besoin de connaitre tout votre modèle de donnée par cœur

Regardez notre courte vidéo pour vous faire une idée !

Vous êtes nombreux à nous solliciter sur une difficulté récurrente liée au débogage : comment déboguer un programme pour lequel le source n’est pas sur la machine, et qui n’a pas été compilé avec la vue *LISTING

Pour RPG : CRTBNDRPG/CRTRPGMOD … DBGVIEW(*ALL ou *LISTING)

Pour rappel :

  • DBGVIEW(*SOURCE) : le source n’est pas inclus dans l’objet compilé, il est recherché sur le système lors du débogage
  • DBGVIEW(*LISTING) : le source est inclus dans l’objet compilé. Si le membre source est présent lors du débogage, il est affiché, sinon c’est le source inclus dans l’objet compilé qui est affiché

Il est évidemment bien plus pratique d’indiquer DBGVIEW(*ALL ou *LISTING) pour permettre le débogage.

Vous distribuez vos objets programmes et ne souhaitez pas que vos clients puissent accéder au source ? Il est possible de crypter le source embarqué : lors du débogage, vous devez saisir la clé correspondante pour afficher le source !

Pour changer de vue source (équivalent F15 dans STRDBG), clique droit dans le source, changer la vue …

Revenons maintenant à notre cas : vous compilez avec DBGVIEW(*SOURCE) et vous envoyez vos programmes sur un autre système (production, recette/UAT …). Lorsque vous souhaitez déboguer vos programmes en production, impossible d’avoir le source, et donc de faire quoi que ce soit d’intelligent !

Vous pouvez bien sur envoyer le source ….

 

Mais RDi vous permet de déboguer un programme sur une machine de production, tout en accédant au source sur la machine de développement, voir sur votre machine Windows (Linux/Max pour ceux qui souhaitent) !

 

C’est assez simple :

–          Dans RDi, assurez-vous de disposer d’une connexion RSE au système de production et d’une autre connexion au système de développement

–          Evidemment, vous devez savoir où (bibliothèque, fichier …) se trouve le source

Lancez le débogage sur votre machine de production. L’écran suivant s’affiche, le membre source étant introuvable sur ce système :

Cliquez sur « Editer le chemin de recherche des fichiers source … », puis sur « Ajouter… » :

Puis « Fichier source IBM i » :

Sélectionner la connexion RSE correspondant à la machine de développement, puis dérouler les bibliothèques pour sélectionner la bibliothèque/fichier source correspondant, puis OK :

Le source s’affiche, vous pouvez déboguer normalement !

 

La technique peut s’appliquer également si lors de votre process de développement les membres source sont déplacés d’une bibliothèque (développement/version) à une autre (référentiel).

 

Vous avez le source sous forme de fichier texte sur votre machine ? Pas de soucis, vous pouvez également l’indiquer :

 

On peut alors déboguer :

 

Limitations :

–          Impossible d’indiquer le nom du membre source : ne fonctionne pas avec les renommages

–          les includes/copy, coloration, etc …

Pourquoi utiliser un groupe principal sur objet (on parle de PGP) ?

Le principe est le suivant :

Dans un objet vous avez le droit du propriétaire et le droit du public
Les autres droits sont contenus dans les profils.

Si vous sauvegardez un objet, par défaut ces 2 seuls droits sont restaurés
depuis la version 7.1 vous pouvez sauvegarder aussi les droits privés
en ajoutant le paramètre PVTAUT(*YES) dans vos commandes de SAV.

Pour des questions de performance vous pouvez ajouter un groupe principal et lui attribuer un droit sur l’objet.
Dans ce cas le contrôle des droits ne nécessite pas d’accéder au profil.

Et il sera également sauvegardé, pour être cohérent, on doit mettre le groupe le plus utilisé.

Voici les principales manipulations

Sur un Objet

CHGOBJPGP OBJ(PLBTSTSEC/TSTFIC) OBJTYPE(*FILE) NEWPGP(PLBgrp)

Sur l’IFS

CHGPGP OBJ(‘/gsec/test.txt’) NEWPGP(PLBGRP) DTAAUT(*RWX) OBJAUT(*ALL)

une seule commande pour la gestion pour Objets et IFS

WRKOBJPGP PGP(PLBGRP)

Groupe principal . . . . . : PLBGRP

Indiquez vos options, puis appuyez sur ENTREE.
2=Réviser les droits 4=Supprimer 5=Afficher les droits 7=Rebaptiser
8=Afficher la description 9=Changer de groupe principal

Unité
Opt Objet Bibliothèque Type Attribut ASP
/gsec/test.txt *STMF *SYSBAS
TSTFIC PLBTSTSEC *FILE PF *SYSBAS

SQL as a service

C’est la vue QSYS2.OBJECT_PRIVILEGES qui contient la zone PRIMARY_GROUP

Attention requête très longue les index n’existent pas ??
prévoir des informations complémentaires

SELECT *
FROM QSYS2.OBJECT_PRIVILEGES
WHERE PRIMARY_GROUP = ‘PLBGRP’
and AUTHORIZATION_NAME = ‘PLBGRP’

résultat de la requête

PLBTSTSEC TSTFIC PLBTSTSEC TSTFIC *FILE PLBGRP *ALL QSECOFR PLBGRP

Ne donne pas l’IFS

Remarques :

Votre profil PGP doit avoir un GUID (notion fortement Unix)

Le nouveau groupe principal PLBGRP n’a pas de numéro d’ID groupe.
L’opération a échoué pour le fichier TSTFIC de la bibliothèque PLBTSTSEC.
Fonction non exécutée pour le profil utilisateur PLBGRP.

CHGUSRPRF USRPRF(PLBGRP) GID(132)

Sur une restauration, si le groupe principal n’existe pas il indique un avertissement et il génère l’objet avec PGP = *NONE

Conclusion :

L’intérêt du PGP est qu’il est dans l’objet, donc plus rapide pour contrôler et qu’il est sauvegardé dans un SAVOBJ par défaut

, 5 raisons pour utiliser Isphere

Isphere est un plugin Eclipse que l’on peut installer sous RDi et qui apporte des fonctionnalités complémentaires

Raison 1

Il est gratuit, donc ça ne coûte rien de l’installer pour voir !
et c’est un produit open source vous pouvez même participer à son évolution


Raison 2

Vous avez un comparateur de sources un peu plus simple, qui permet par exemple de comparer 3 Sources …

Raison 3

Sur la gestion de vos spools le plugin permet d’avoir beaucoup plus d’options
C’est également vrai sur la gestion des messages …

Raison 4

Vous avez un outil qui permet de chercher des informations dans des sources avec une grande facilité d’utilisation

Raison 5

Editer simplement le contenu d’un fichier message .

En conclusions :

Voici les principales options qu’on utilise chez GAIA

Il en existe d’autres, par exemple des options ILE sur les objets …

Plus toutes celles qu’on n’a pas trouvé encore !

Gérer le pool de connexion avec iamobile

Si vous utilisez iamobile,

iamobile est une application Web sur votre IBM i qui permet d’administrer certaines fonctions  de votre IBM i à partir de votre smartphone ou de votre tablette .

Vous pouvez sans doute avoir eu ce message.
« Le nombre maximal de connexions pour le pool a été atteint »

En effet iamobile est une application Java qui utilise un pool de connexion. Un pool de connexion, c’est le système qui prépare des connexions qui seront utilisables et réutilisables par l’application pour optimiser les temps d’accès.

Vous devrez cliquer sur l’onglet ‘Autres’ puis choisir ‘Etat du pool de connexion

La valeur par défaut du nombre de connexion par utilisateur est à 4, vous pouvez par exemple passer à 10 ce qui vous permet de travailler tranquillement

, Comment utiliser plusieurs configurations JDBC avec ACS

Sous ACS dans Exécution de scripts SQL

Vous pouvez être amené à vous connecter à plusieurs partitions IBM i ou avoir plusieurs environnements différents sur une même partition.

ACS permet de gérer plusieurs configurations JDBC en même temps et de pouvoir passer de l’une à l’autre

Pour ce faire, vous devez sélectionner l’onglet connexion puis configuration JDBC

Vous pouvez définir vos configurations, liste de bibliothèques, convention de nommage etc… et une configuration par défaut ..

Pour choisir votre environnement JDBC à la connexion, cliquer sur connexion et Application configuration JDBC vous retrouvez toutes les configurations définies.

C’est bien pratique  pour faire des tests de pouvoir choir son environnement !

Un petit regret quand on est connecté, on ne sait pas quelle configuration JDBC on utilise l’information dans le titre serait bien venue petite RFE à Faire…

, Transférer un objet d’une partition à une autre

Rappel :

Pour transférer un objet (PGM, FICHIER, etc…), vous devez être dans la même version ou sauvegarder en version précédente (limité à 2 niveaux) par exemple en 7.4 vous ne pouvez plus envoyer vers une version 7.1.
Attention, il ne faut pas avoir utilisé des fonctions qui n’existaient pas dans la version cible.
Sur objet sauvegardé si vous ne précisez rien, seul le droit du propriétaire et le droit du public seront transférés, et si le propriétaire n’existe pas sur la cible, votre objet appartiendra à QDFTOWN

Vous avez principalement trop méthodes

La méthode historique c’est object connect.

Cette solution ne fonctionne que en SNA, avec toutes les restrictions que ce la impose.
elle se matérialise par la présence des commandes SAVRST*
cette méthode est très simple mais il ne survivra pas à l’abandon progressif de SNA.

La méthode la plus utilisée aujourd’hui c’est par FTP

 

C’est un protocole applicatif qui lui fonctionne sur TCP/IP.
Cette solution si vous n’avez pas d’outil, nécessite plusieurs manipulations.
vous devez d’abord sauvegarder votre objet dans un fichier de sauvegarde.
Ensuite par FTP vous pourrez faire un put ou un get mais attention vous devrez d’abord passer en BINAIRE.
une fois sur la machine cible vous devrez restaurer votre objet à partir du savf.
récapitulatif des opérations

sur machine source

ibmi–>crtsavf
ibmi–>savobj > SAVF
FTP–>Bin
FTP–>GET ou PUT

sur machine cible

ibmi–>rstobj < SAVF

remarque:

Vous pouvez utiliser simplement une connxion de type ftps
C’est la seule solution qui vous permet de mettre votre objet sous votre pc et d’envoyer le savf par mail.
Mais un usage intensif nécessite des commandes ou des outils d’habillage.

La troisième méthode c’est la moins connu, mais elle très simple d’utilisation c’est par ACS.

il vous faudra avoir ACS sur votre PC.
vous devez choisir dans Général

<Système de fichiers intégré>

sélectionner la bibliothèque qui contient votre objet.

sur l’onglet <Actions> vous avez <envoi>


Vous devrez entrer l’utilisateur distant et le mot de passe


C’est vraiment très simple et en mode graphique sans commande , vous pouvez éventuellement utiliser java pour automatiser cette opération.

Conclusion

Voila les 3 principales méthodes qui existent pour faire vos transferts, on espère que ça vous aura éclairé pour votre choix d’envois et réceptions.

Mise à jour de la bibliothèque QSYS pendant un upgrade

Rappel

La bibliothèque QSYS contient les éléments de votre système, vous ne devez en aucun cas lui ajouter des objets délibérément.
Un certain nombres d’objet ne peuvent être que dans cette bibliothèque comme, les profils, les lignes, les contrôleurs, les unités et descriptions de bibliothèque par exemple.

il est possible que vous ayez customiser certains objets voici quelques conseils.

voila ce que c’est faire le système quand vous allez changer de version par exemple pour monter en V7R4.

Si vous avez modifié une des descriptions fournies par IBM ,  le système conservera ces modifications.

Seul les Descriptions de travail et les sous systèmes ci dessous sont concernés

Descriptions de travail concernées

QCTL (Description de travail de sous-système de contrôle)
QCTLIJBD (Description de travail ICG de sous-système de contrôle)
QESAUTON (Notification automatique d’incident)
QFSIOPWK (Processeur E-S de serveur de fichiers)
QMSF (Utilisée par le travail QPGMF)
QPDAUTOPAR (Utilisée pour l’analyse automatique d’incidents)
QQQTEMPS (description de travail DB2 for i utilisée par QSYSWRK)
QSPLERROR (Erreur de spoulage)
QSPL (Sous-système de spoulage)
QSTRUPJD (Démarrage automatique)
QSYSWRK (Sous-système système)
QSYSWRK (Description de travail de sous-système de système)

QTMSNMP (Description de travail SNMP)
QZMFEJBD (Poste de travail de démarrage automatique QSYSWRK)

Les sous-système concernés

QBASE (Contrôle de base)
QBATCH (Lot)
QCMN (Communications)
QCTL (Sous-système de contrôle)
QINTER (Interactive)
QPGMR (Programmeur)
QSNADS (Distribution SNA)
QSPL (Sous-système de spoulage)
QSYSWRK (Description de travail de sous-système de système)
QUSRWRK (Sous-système utilisateur)

Comment en utilisant des bibliothèques intermédiaires ?
En copiant dans la bibliothèque QINSYS les objets et si il y a des différences, les objets de QSYS seront mis à jour.
La bibliothèque QINPRIOR contient les objets du niveau d’os précédent

Vous pouvez voir le détail ici :
https://www.ibm.com/support/knowledgecenter/fr/ssw_ibm_i_73/rzahc/rzahcibmojects.htm

Vous pouvez également imprimer les informations de votre système par la commande PRTSYSINF vous obtiendrez environ 50 spools qui contiendrons des informations, comme les ressources utilisées, les tables de réponse, Les PTF etc…
Sauvegardez l’OUTQ dans lequel sont placés ces états.

Remarque :

La jobd QDFTJOBD qui est votre jobd par défaut n’est pas dans QSYS mais dans QGPL.

C’est peu être l’occasion de modifier votre programme de démarrage, il est indiqué dans la valeur système QSTRUPPGM.
Souvent ce programme n’est pas mis à jour et fait des choses obsolètes

Vous pouvez par exemple
Extraire le source du programme QSTRUP de QSYS et l’enrichir et le recompiler dans une bibliothèques à vous en indiquant le nouveau nom dans la valeur système.

Vous devez également lire les informations sur le site Planning upgrade à l’adresse

https://www.ibm.com/support/pages/planning-upgrade-ibm-i-74-software

parceque par exemple au passage en 7.4 vous constaterez que
Les 2 PRTFS QSYSPRT et QSAVOBJ sont limités à 100000 enregistrements et que vous devrez les retailler

==>CHGPRTF FILE(QSYSPRT) MAXRCDS(*NOMAX) et
==>CHGPRTF FILE(QSAVOBJ) MAXRCDS(*NOMAX)

 

En résumé

Ne pas travailler dans QSYS
Le système vous met à jour les SBSD et les JOBDS
Mais vous devez lire les informations pour éviter les petites surprises

, Mise en place d’un PRA ?

Quand on discute avec les clients on se rend compte qu’il y a une grande confusion entre haute disponibilité est PRA, PCA etc …

Prenons la définition de WIKIPEDIA .

Un plan de reprise d’activité (PRA) est un ensemble de procédures (techniques, organisationnelles, sécurité) qui permet à une entreprise de prévoir par anticipation, les mécanismes pour reconstruire et remettre en route un système d’information en cas de sinistre important ou d’incident critique.

En gros pour moi c’est le temps dont on a besoin suite à gros un crash pour rendre un service acceptable à la production.

Comment faire le point dans votre entreprise ?

il y a une technique assez simple c’est de se dire voila, on est planté maintenant qu’est ce qui ce passe ?

1) Il va vous falloir Reconstruire une machine.

il va falloir vous pencher sur les contrats de maintenance de votre partenaire matériel . Ne pas hésiter à ce faire confirmer les choses.
La vrai durée qui doit vous intéresser c’est combien de temps pour avoir une machine opérationnelle.

une prise en compte de l’incident au 1/4 heure s’il ne se passe rien derrière ne sert à rien !

2) Reconstruire le contexte opérationnel

On limitera ici à la restauration complète de la machine.

Ça veut dire ou sont la ou les bandes :

A) du système (on parle de savsys)

pour restaurer l’os, les configurations, les utilisateurs.
première remarque, tout ce qui a évolué sur votre système dans le lapse de temps est perdu (nouveau profils , changement de mot de passe)

la bonne fréquence , si on le peut sauvegarde complète tous les soirs, ça simplifie les opérations de reprise
sinon 1 fois par semaine est un bon compromis, une fois par mois est un minimum.
mais attention sachez précisément ou est cette bande, quand vous la chercherez le compteur tournera.

B) des données

Les bibliothèques
Les dossiers partagés (à remplacer au plus vite)
Le reste de l’ifs

Pour avoir une idée de vos temps de restauration compter vos temps de sauvegarde que vous multipliez par environ 1,5.

1 client sur trois ne saurait pas remonter sont système sans perte d’informations, 9 clients sur 10 sauvegardent bien leurs bibliothèques de données mais néglige le reste.

Une fois votre système n’oubliez pas de ré-appliquer les droit privés !

3) Conclusion

Vous devez pouvoir répondre à votre directeur combien de temps prendrait un crash du système

reconstruction de la machine    xx heures
reconstruction du système         xx heures
refresh des dernières données  xx heures

exemple :

36 heures
1 heures
3 heures

Ne négligez pas les temps de prise de décision, que vous ne rattraperez jamais.

Vous pouvez mettre en place des choses simples , pour pouvoir travailler à minima en cas de problèmes.

Par exemple , j’avais un client qui descendait tous les soirs les commandes à préparer le lendemain dans csv sur un PC de L’entrepôt

Vous devez également vérifier que vos sauvegardes sont lisibles …

 

Vous ne pourrez pas dire je ne savais pas !

, Mettre en place une alerte qui vous avertisse en cas de dépassement de seuil limite de votre ASP.

Voici comment être alerté en cas de disques pleins , en mettant en place une solution simple

Vous avez une valeur limite système qui s’appelle QSTGLOWLMT qui indique la valeur minimum qui doit rester et qui est exprimée en % souvent 15 % ou 10 %.

Vous avez une deuxième valeur système QSTGLOWACN qui indique l’action à effectuer quand vous aurez dépassé ce seuil
par défaut *MSG enverra un message dans QSYSOPR
Vous pouvez changer cette valeur en *REGFAC cette notion veut dire déclenche le programme associé au programme d’exit QIBM_QWC_QSTGLOWACN

le programme que vous devez lancer ne reçoit pas de paramètre

 

ADDEXITPGM EXITPNT(QIBM_QWC_QSTGLOWACN)
FORMAT(STGL0100)
PGMNBR(1)
PGM(MABIB/MONPGM)

exemple de programme :

PGM

/* MONPGM */
SNDSMTPEMM RCP((‘admin@votresociété.fr’)) +

SUBJECT(‘Limite espace disque’) +

NOTE(‘Attention vous avez dépassé le seuil de mémoire requise’)

ENDPGM

Bien sur il faut que votre partition soit relais de messagerie .

Attention, si vous utilisez le mail, QPGMR devra avoir le droit d’en emettre, utilisez la commande ADDSMTPLE.

Vous pouvez faire un programme beaucoup plus évolué, même en RPGLE,  si vous le désirez .

Attention :

La petite subtilité est donc au redémarrage :

Quand on démarre le système (IPL) ou qu’on lance le qstruppgm ou qu’on démarre le sous système qctl avec moins de la valeur  QSTGLOWLMT, Il ne peut pas soumettre le Programme d’exit et le système reste en restreint un peu comme la valeur *ENDSYS qui mettrait directement le sous système en restreint. et pour redémarrer vous devrez faire du ménage ….