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