La prise en main est très simple aussi, vous définissez vos systèmes, ils doivent être accessibles en ODBC et FTP. Attention FTP est réglé en auto, il vaudra mieux essayer PASV.
L’interface est classique Vous pouvez Browser vos membres sources Vous pouvez paramétrer vos options de compile
Les plus qu’on aime : Il est interfaçable avec ACS pour l’émulation 5250 et system debugger … Vous avez une option Object Diagram qui permet de modéliser rapidement vos applications –ne rêvez pas ce n’est pas parfait– mais c’est utilisable et pratique.
Un comparateur de sources simple et efficace Un interfaçage avec git qui permet des clones locaux et des pushs par la suite
En résumé
Si vous faites beaucoup RPG en mode FREE, peu de CL (pas d’invite) C’est un très bon produit. Pour le reste, du code colonné, des clp, des includes il y a quelques lacunes.
Mais c’est un produit gratuit et parfaitement opérationnel merci à ceux qui le proposent, et un petit don s’impose quand vous le pouvez.
Divers
On a également testé rpgnextgen qui n’a plus évolué depuis 2012 et qui semble un peu dépassé
Vous pouvez également regarder du coté de ILEditor2 à l’adresse suivante https://ileditor.dev/ , un peu plus complet mais payant
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2020-11-04 12:05:292022-04-13 14:06:17IDE IBMi , une alternative à RDI
Vous allez utiliser de plus en plus de certificats et la problématique est que les certificats ont des périodes de validité.
Je vous rappelle que vous avez une interface pour gérer ces certificats qui s’appelle DCM accessible à l’adresse, http://votre_systéme:2006/dcm.
La nouvelle interface vous indique par une coloration jaune que votre certificat va expirer et rose pour vous indiquer que votre certificat est expiré.
Mais on ne va pas passer notre temps sur DCM.
Les TR V7R4 Niveau 7 et V7R3 Niveau 18 nous apportent une nouvelle fonction TABLE, QSYS2.CERTIFICATE_INFO() qui va nous permettre d’automatiser un contrôle. Vous avez des informations à cette adresse, https://www.ibm.com/support/pages/node/6156105 Exemple : On fixe la date de contrôle à – 1 mois, vous devrez avoir le mot de passe de votre magasin de certificat.
SELECT Substr(CERTIFICATE_LABEL, 1, 50) as label, VALIDITY_END as date_de_fin FROM TABLE(QSYS2.CERTIFICATE_INFO(CERTIFICATE_STORE_PASSWORD=>’votre mot de passe’)) WHERE VALIDITY_END < CURRENT DATE + 1 MONTH
Vous pourrez planifier le contrôle de vos certificats, par exemple toutes les semaines.
Attention, il reste une problématique à gérer c’est le passage et le stockage du mot de passe. Il y a plusieurs écoles, mais une chose est sûre : il doit être crypté au moins une fois.
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2020-10-11 10:38:312022-04-13 14:09:33Contrôle des dates de validité de vos certificats
Quand vous faites une analyse d’impact pour modifier un ou plusieurs programmes, vous avez besoin de connaitre ceux qui sont utilisés dans le Scheduler de votre IBMi.
Il y a une vue qui vous permet de connaitre la liste des travaux planifiés c’est la vue SCHEDULED_JOB_NAME
Exemple pour savoir si le programme NOM_PGM est utilisé vous pouvez exécuter la requête suivante
SELECT SCHEDULED_JOB_NAME, UPPER(COMMAND_STRING), ifnull(DESCRIPTION, ‘*NONE’) FROM SCHEDULED_JOB_INFO WHERE STATUS <> ‘HELD’ and upper(COMMAND_STRING) like(‘%NOM_PGM%’)
Cette requête va bien pour un programme, mais pour une analyse plus complète ca peut être fastidieux.
Voici comment améliorer la chose, quand vous faites une analyse d’une manière ou d’une autre vous utilisez un fichier qui est le resultat en OUTFILE de la commande DSPPGMREF.
La solution est donc d’ajouter un poste dans ce fichier avec comme type *JOBSCDE et comme programme appelant le nom du travail.
Vous lancerez cet outil (commande REFJOBSCDE) à chaque fois que vous mettrez à jour votre fichier de références par DSPPGMREF
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2020-09-30 16:43:202022-04-13 14:24:45Connaitre les PGMs référencés dans WRKJOBSCDE
Tout le monde connait ACS en tant que client sur un poste Windows, Mac ou Linux.
Je rappelle que la principale différence avec ses prédécesseurs c’est qu’ACS et un client léger et que l’exécutable Java acsbundle.exe suffit pour exécuter une requête.
Vous pouvez l’installer sur votre IBM i, pour les 3 raisons suivantes.
1) La mise à disposition et la mise à jour peut désormais se faire par PTF
Déploiement disponible par PTF V7.3 PTF 5770SS1-SI71934 et après mise à jour de l’exécutable, pratiquement plus d’administration à faire.
2) Le partager avec vos utilisateurs
Vous montez un partage sur le répertoire où vous l’avez installé et vous exécutez acsbundle.exe à partir de ce ce dernier. Ca marche très bien, vous pouvez faire la mise à jour de tous vos postes en changeant l’exécutable de votre répertoire. C’est à déconseiller, si vous avez des accès réseaux peut efficaces ou si vous avez des populations nomades qui accèdent à plusieurs IBM i.
3) Pour exécuter des requêtes ACS directement sur l’IBM i
C’est du Java et votre partition sait faire du Java, et vous pouvez lancer des commandes Unix par STRQSH .
La première chose à vérifier c’est que le produit est bien installé sur votre partition.
Par défaut, il se trouve dans le répertoire QIBM/ProdData/Access/ACS/Base/, mais il peut se trouver ailleurs, par exemple dans /home/ qui est souvent monté par NetServer.
Si vous ne l’avez pas utilisé depuis longtemps, il est conseillé de mettre une version ACSBUNDLE.EXE plus récente
En fonction de ce que vous voulez utiliser dans ACS, on parle de plugin
Dans notre exemple on veut créer un fichier xls à partir d’une requête SQL c’est le plugin cldownload
Dans le plugin cldownload vous avez des options, par exemple, pour ajouter des entêtes de colonne, /colheadings=1 , etc … il existe d’autres plugins dans ACS pour exécuter des commandes, exécuter des transferts etc …
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2020-09-24 14:57:452022-04-13 14:38:51Utiliser ACS depuis votre IBM i ?
Vous pourrez améliorer ce script en utilisant un mot de passe que vous récupérez à l’exécution, pensez bien à supprimer le fichier script FTP même dans QTEMP.
Vous pouvez également demander la log, en re-routant le stdout
Si vous utilisez le mail, l’utilisateur doit être inscrit à smtp.
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2020-09-11 11:30:252022-04-13 18:35:39Utiliser un script SQL pour faire du FTP
*JOBEND L’historique du travail sera généré par le travail lui-même. Si l’historique du travail ne peut pas générer son propre historique du travail, celui-ci sera généré par un serveur d’historique du travail.
*JOBLOGSVR L’historique du travail sera généré par un serveur d’historique du travail.
*JOBEND est la valeur historique, cette valeur est beaucoup moins performante sur les nouveaux systèmes que *JOBLOGSVR.
Il est donc conseillé de mettre en place la valeur *JOBLOGSVR.
la deuxième valeur système est QJOBMSGQFL *NOWRAP La file d’attente de messages du travail ne fait pas l’objet d’un bouclage.
*WRAP La file d’attente de messages du travail fait l’objet d’un bouclage.
*PRTWRAP La file d’attente de messages du travail fait l’objet d’un bouclage et les messages écrasés sont imprimés.
il est conseillé pour éviter d’avoir des messages bloquants de mettre *WRAP, ce qui permettra d’avoir les dernières informations loguées.
2) Choisir le niveau de log adapté
C’est les paramètres LOG() LOGCLPGM() du travail. ils sont fixés par JOBD ou par les paramètres de la commande SBMJOB.
On divise généralement en trois les types les travaux de votre IBM i :
Les travaux sensibles qui devront avoir le niveau de log maximum
LOG(4 00 SECLVL) LOGCLPGM(YES)
Les travaux communs , batchs traditionnels sessions interactives
LOG(3 00 SECLVL) LOGCLPGM(NO)
Les travaux qui ne doivent pas avoir de log, pour des questions de sécurité, ou des travaux trop nombreux et souvent très courts
LOG(0 99 NOLIST) LOGCLPGM(NO)
le niveau peut être ajusté par programme, CHGJOB LOG( ) LOGCLPGM( )
3) Choix du mode d’épuration
La meilleur solution est d’utiliser le cleanup standard de la machine.
Vous pouvez voir les paramètres par la commande ==> go cleanup
par l’option 1 vous voyez le paramétrage si le ménage est possible, l’heure de démarrage et la durée. Le plus souvent on est réglé à 30 jours.
Pour démarrer le ménage c’est la commande STRCLNUP , il est conseillé de la mettre dans le programme STRUP de votre partition.
Les spools de log sont placés dans l’outq QEZJOBLOG, vous pouvez éventuellement épurer des spools particuliers, le mieux étant de ne pas les produire.
4) Nouveautés de SQL AS A Service
Il y a plusieurs vues, et fonction table qui peuvent, vous aidez, voici les 2 principales :
La fonction table QSYS2.JOBLOG_INFO() permet de voir le contenu d’une joblog.
Exemple :
SELECT * FROM TABLE(QSYS2.JOBLOG_INFO(‘378809/QUSER/QZDASOINIT’)) A
pour voir la log du job identifié
La vue QSYS2.OUTPUT_QUEUE_ENTRIES permet de voir la liste des spools d’une OUTQ.
Exemple
select * from QSYS2.OUTPUT_QUEUE_ENTRIES where OUTPUT_QUEUE_NAME = ‘QEZJOBLOG’
pour voir les spools de l’outq des joblogs
5) Remarques générales
Il est souvent inutile de sauvegarder des spools de log, sauf à avoir une réelle raison … et un moyen de suivi !
Un surveillance quotidienne est plus efficace qu’une recherche hypothétique dans un spool de 10 mois
Attention, un spool qui reste est une place de travail occupé dans la table des travaux.
Vous pouvez décorréler les spools des travaux mais ce n’est pas culturel et ça peut compliquer vos recherches futures.
Attention au programme en mode debug avec du SQL, l’optimiseur rempliera rapidement la log.
L’ILE produit plus de log que l’OPM, c’est normal vous avez un niveau de plus à gérer, ca peut doubler les lignes écrites !!!
Pour avoir une vue de des spools de log, pensez à la commande, WRKJOBLOG
Un travail n’a pas forcément de log , la seule qu’il laisse dans tous les cas c’est un message CPF1124 pour son démarrage et un message CPF1164 pour indiquer sa fin.
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2020-09-06 19:08:052022-04-14 09:33:085 choses à savoir sur les logs de votre IBMi
Sur l’IBMi il existe un scheduler standard celui qui se cache derrière la commande WRKJOBSCDE. Il est très rudimentaire, vous n’avez pas d’historique ni de dépendance travaux. C’est un unique objet, QDFTJOBSCD de type *JOBSCD qui est stocké dans la bibliothèque QUSRSYS. C’est le travail QSYSSCD qui tourne dans QCTL
QCTL QSYS SBS 0,0 QSYSSCD QPGMR BCH 0,0 PGM-QEZSCNEP
Attention vous devez le sauvegarder par SAVOBJ par exemple, vous pouvez également l’envoyer sur une autre machine et le restaurer par un RSTOBJ
IBM propose un autre produit qui s’appelle job scheduler advanced c’est le produit 5770JS1, il est payant, mais il permet de faire beaucoup plus de choses ! Pour y accéder en mode 5250 ==>GO JS, sinon vous pouvez y accéder par l’interface web de navigator for i Son paramétrage est composé de fichiers qui sont stockés dans la bibliothèque QUSRIJS
Voici, comment reprendre les travaux de job scheduler vers advanced job scheduler, si vous choisissez de passer du premier vers le deuxième
La première méthode si vous avez peu de commandes dans le scheduler !
Go cmdjs
Option 5
Option 7
Option 8 en face de chaque job à migrer_
Ça produit une commande de ce type
ADDJOBJS JOB(nomjob)
SCDCDE(DAILY)
TIME(1815)
DAY(MON *TUE *WED THU)
TEXT('Votre texte')
CMD(CALL PGM(<lib/pgm))
RCYACN(SBMRLS)
JOBD(USRPRF)
JOBQ(QGPL/QS36EVOKE)
USER(SYSTEM)
MSGQ(USRPRF)
Si vous désirez automatiser cette opération.
Attention le job scheduler standard n’est pas composé de fichiers contrairement à advanced job scheduler qui lui en est composé
Par exemple pour AJS : Job actuellement planifiés : select * from QUSRIJS/QAIJSMST where JMSTS <> ‘*HELD’ Historique : select * from QUSRIJS/QAIJSHST Mais heureusement SQL as a service a résolu ce problème en créant une vue qui vous permet d’accéder aux job planifiés dans job scheduler ! select * from QSYS2.SCHEDULED_JOB_INFO pour limiter aux jobs actifs SELECT * FROM QSYS2.SCHEDULED_JOB_INFO where status <> ‘HELD’
Il vous suffit donc de lire cette vue et pour chaque ligne de faire un ADDJOBJS en adaptant les paramètres
Conseil :
Commencer par une ou 2 commandes et n’écrivez pas directement dans les fichiers de JSA. mais faites un ADDJOBJS
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2020-04-01 15:13:182022-10-19 09:01:39Migrer les jobs de Job scheduler vers Advanced job scheduler.