https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2025-08-04 10:53:552025-08-04 10:53:56V7R6, la liste des commandes supprimées
Vous connaissez l’option ACS qui vous permet de gérer vos SPOOLs , c’est une alternative intéressante à la commande WRKSPLF et si vos utilisateurs ont beaucoup de spools à gérer, ca peut leurs simplifier la tache, n’hésitez pas à leurs donner l’option, c’est relativement intuitif .
Vous pouvez par exemple faire simplement un fichier PDF et le joindre à un mail .
Vous voulez simplifiez la vie de vos utilisateurs en leurs présentant cette option à la place d’un WRKSPLF dans vos applications existantes
Voici une ébauche de solution
Un programme de lancement
Vous devrez d’abord écrire un programme qui lance l’option ACS à partir de votre programme IBMi à base des commandes STRPCO et STRPCCMD
Voici un exemple RPGLE
**free
// Ce programme permet de remplacer les commandes WRKSPLF par
// L'explorateur de spool ACS
// ici le javabundle est dans \Users\Public\IBM\ClientSolutions\
//
dcl-s cmd CHAR(1024) ;
// démarrage de PCO
cmd ='STRPCO' ;
exec sql call qsys2.qcmdexc(:cmd) ;
// Démarrage de l'explorer de spools
cmd =' +
STRPCCMD PCCMD(''java -jar C:\Users\Public\IBM\ClientSolutions\acsbundle.jar +
/PLUGIN=splf /system=neptune +
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true'') PAUSE(*NO)' ;
exec sql
call qsys2.qcmdexc(:cmd) ;
*inlr= *on ;
On a fixé le répertoire du programme ici \Users\Public\IBM\ClientSolutions\
Si vous lancez ce programme, vous ouvrez alors l’écran ACS de gestion des spools, il est possible que cela vous redemande le mot de passe en fonction de votre paramétrage.
Un programme pour Associer à la commande WRKSPLF
Si vous voulez automatiser, vous pouvez utiliser un programme d’exit sur l’exit point QIBM_QCA_CHG_COMMAND
Vous avez la commande ADDEXITPGM pour ajouter un programme d’exit , vous pouvez également passer par la commande ==>WRKREGINF et faire l’option 8
Remarque :
Vous pouvez comme ici mettre une commande WRKSPLF dans une bibliothèque avant QSYS, qui vous permettra de bien gérer que les interactifs et de bypasser si besoin en faisant ==>QSYS/WRKSPLF .
Vous aurez intérêt a identifier les utilisateurs qui doivent bénéficier de la fonctionnalité, une solution très simple c’est l’utilisation d’une liste d’autorisation
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2025-07-05 16:06:412025-07-07 11:22:16Gestion des spools par ACS
Vous indiquer le nom de votre base de données distantes et vous exécuter votre requête sur le système distant.
derrière cette requête ce cache un protocole nommé DRDA , comme ODBC il permet de ce connecté à une base de donnée distante.
Nous allons voir comment le mettre en œuvre .
sur le système source Vous devez créer une entrée pour la base de données
le plus simple c’est de passer par la commande WRBRDBDIRE , vous ajouterez une connexion IP à votre système distant.
Sur le système cible Vous devez paramétrer le service par la commande CHGDDMTCPA , il faut avoir le même mode d’authentification que la base de données distante, par défaut user + mot de passe vous devez démarrer le service STRTCPSVR *DDM
voila c’est tout vous pouvez à partir de votre système source faire un connect SQL sur votre système cible si vous avez un mot de passe.
Si vous ne voulez pas renseigner de mot de passe comme dans les exemples ACS vous allez devoir utiliser sur votre système source les postes poste d’authentification serveur. Pour les ajouter vous avez la commande ADDSVRAUTE, vous devrez également avoir mis la valeur système QRETSVRSEC à ‘1’ pour que vos mots de passe soit enregistrés
il est conseillé d’ajouter un poste générique, par exemple QDDMDRDASERVER en indiquant un user et un mot de passe du système cible !
il n’y a pas de commande WRKSRVAUTE mais vous pouvez en trouver une ici https://github.com/Plberthoin/PLB/tree/master/GTOOLS/
Exemple :
A partir de ce moment la mot de passe sera passé directement.
Vous pouvez facilement, par des services sql comparer 2 partitions (valeurs systèmes, fonctions , etc …)
Remarques
Les noms doivent être en majuscule il est conseillé de mettre un programme d’exit de contrôle Attention, vous pouvez vous connecter avec un utilisateur *disabled Les fichier DDM sur IP s’appuient sur cette technologie
Le programme de substitution d’invite (prompt override program) vous permet de pouvoir précharger les valeurs d’une commande afin de pouvoir modifier les paramètres existants. Comme les commandes CHGUSRPRF, CHGCMD etc…
Dans mon exemple, j’ai créé une commande CHGCLIENT afin de pouvoir modifier le libellé et le pays d’un client. Je veux que l’utilisateur saisisse le numéro du client et que ma commande récupère les valeurs actuelles. On est d’accord qu’il faudrait rajouter plus de contrôles mais c’est pour montrer le fonctionnement.
Tout d’abord il faut créer la commande en précisant le mot clé KEYPARM(*YES) sur les paramètres clé.
Ecrire ensuite le programme de récupération des données du client (CHGCLIENTO). Dans mon exemple c’est un programme RPG mais vous pouvez faire un programme CL.
Il doit recevoir en paramètres : 1. Le nom de la commande (alpha de 10) 2. Les paramètres clés (numéro client pour moi) 3. La suite des paramètres de la commande (LIBELLE et PAYS). Il faudra préciser la taille du paramètre en hexa en début de variable.
Ecrire le programme de traitement de la commande (CHGCLIENT).
Il ne vous restera plus qu’à créer votre commande en précisant le paramètre PMTOVRPGM
Exemple : CRTCMD CMD(CURLIB/CHGCLIENT) PGM(CURLIB/CHGCLIENT) TEXT(‘Modification client’) PMTOVRPGM(*CURLIB/CHGCLIENTO)
Au lancement de la commande, vous saisissez le numéro du client et les autres informations seront chargées.
il faut savoir qu’un fichier SAVF est un fichier PF de 528 de long.
Vous pouvez avoir besoin pour différentes raisons de convertir SAVF en PF pour manipuler plus simplement par SQL, pour contourner des restrictions d’utilisations etc ..
Vous trouverez ici 2 commandes qui vont vous permettent de réaliser cette opération : https://github.com/Plberthoin/PLB/tree/master/CPYSAVF
Copier un SAVF dans un PF
Voir le PF
Copier un PF dans un SAVF
Voir le Résultat
Pour voir ce résultat taper la commande DSPSAVF , Voir WRKSAVF si vous avez installez notre outil
Remarque :
Outil simple mais efficace qui peut rendre des services à des administrateurs
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2024-05-03 09:10:562024-05-03 09:10:58Convertir un SAVF en PF
L’astuce consiste à indiquer une valeur à renvoyer dans la commande ici on se borne à ‘0’ et ‘1’ ce qui peut être interprété par votre programme comme un booléen
L’intérêt d’utiliser un booléen c’est d’avoir un code simplifier , un peu comme les indicateurs qui simplifient la lecture d’un code RPGLE ou CLLE
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2024-04-27 17:42:462024-04-27 17:42:48Utilisez un booléen dans une commande
Vous avez tous trop de SAVF sur vos systèmes voici une commande qui va vous aider à les manager : WRKSAVFD. Bibliothèque : Confirmer si suppression : Une option 5 : Gérer vous envoi sur la commande précédemment expliquée ici . Vous trouverez les sources sur le GitHub Gaia-Mini-Systemes .
/wp-content/uploads/2017/05/logogaia.png00Habib Saad/wp-content/uploads/2017/05/logogaia.pngHabib Saad2024-03-26 09:02:062025-09-01 13:50:03Simplifiez vous la gestion de vos SAVF
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 […]
Il est possible d’effectuer un contrôle sur les paramètres passés dans une commande avant que le programme de traitement ne soit exécuté et d’envoyer un message de diagnostic au sein même de la commande en cas d’erreur.
Pour ajouter des contrôles sur les paramètres d’une commande (en plus des contrôles inclus dans celle-ci), on peut lui affecter un programme de contrôle de validité créé en amont.
Ce programme recevra tous les paramètres de la commande et on pourra y réaliser divers contrôles/tests avant l’exécution du programme de traitement. Il permet également d’envoyer des messages de diagnostic pour que l’utilisateur puisse ajuster la saisie de ses paramètres.
Pour assigner le programme de contrôle de validité à la commande, on indique son nom dans le paramètre VLDCKR de la commande CRTCMD (lors de la compilation de la commande).
Cas d’exemple
Prenons le cas où nous souhaitons créer une commande simple qui permettrait de récupérer une extraction CSV des ventes réalisées par un utilisateur sur une année donnée.
On souhaitera donc vérifier deux choses :
L’utilisateur doit exister sur la machine
L’année choisie doit être comprise dans une période de 10 ans avant l’année en cours
On commence donc par créer la commande GETUSRVEN qui recevra ces deux paramètres :
Une fois la commande prête on peut préparer le programme de contrôle de validité. Pour cet exemple on créera un programme VGETUSRVEN (CLLE) :
Dans ce programme, on récupère les différents paramètres de la commande GETUSRVEN et la date actuelle en décimal.
On procède ensuite aux contrôles :
De l’utilisateur
Ici on utilise une suite de requêtes SQL pour vérifier que l’utilisateur existe sur la machine.
En cas d’absence d’utilisateur correspondant au paramètre de notre commande, on utilise la commande SNDPGMMSG (MSGTYPE *DIAG) avec le code message CPD0006 (conçu pour être utilisé dans des programmes de contrôle de validité).
On peut indiquer le message de notre choix dans le paramètre MSGDATA, mais attention, les quatre premiers caractères étant réservés il faut commencer son message par ‘0000’.
Une fois le message de diagnostic indiqué on réutilise la commande SNDPGMMSG (MSGTYPE *ESCAPE) avec le code message CPF0002 ce qui permettra d’indiquer à l’appelant que des erreurs ont été trouvées et de suspendre l’exécution de la commande.
De l’année choisie
On applique ici la même méthode que précédemment, en vérifiant que l’année n’est pas antérieure de 10 ans par rapport à l’année en cours, et qu’elle n’est pas supérieure.
On peut maintenant compiler le programme VGETUSRVEN (commande CRTBNDCL).
Enfin on compile la commande GETUSRVEN en spécifiant VGETUSRVEN dans le paramètre VLDCKR de la commande CRTCMD.
On peut maintenant essayer la commande, et constater les messages de diagnostic en cas de mauvaise saisie :
Il est également possible de voir quel programme de contrôle de validité est utilisé pour une commande (s’il y en a un) avec la commande DSPCMD CMD(nom de la commande) :
/wp-content/uploads/2017/05/logogaia.png00Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2024-01-18 11:36:322024-01-18 12:22:27Les programmes de contrôle de validité sur IBM i