Vous savez peut-être déjà comment créer un point d’arrêt conditionné en Débogage RPG 5250 (commande STRDBG).
Le mode Débogage RDi offre la même possibilité.
Cette fonctionnalité est particulièrement intéressante pour réaliser un Débogage ciblé dans un programme batch qui traite un gros volume de données.
Nous allons le vérifier avec l’exemple ci-dessous :
Considérons une table CLIENTS contenant les colonnes et lignes suivantes :
Le programme PROGTEST lit la tables CLIENTS et exécute la procédure traitement_CLIENTS pour chacun des clients de la table :
Nous allons utiliser le Débogage pour créer un point d’arrêt conditionné sur la ligne d’exécution de la procédure traitement_CLIENTS, afin de pouvoir déboguer ce traitement uniquement pour le client dont le code est 69002.
Point d’arrêt conditionné en Débogage 5250
On crée un point d’arrêt conditionné par une commande BREAK n°ligne WHEN condition
La condition peut utiliser toutes les variables connues du programme, ici le code client = variable CODE
On exécute le programme :
Point d’arrêt juste avant le traitement du client souhaité :
Si on demande la reprise par F12, le programme se poursuit et se termine sans autre point d’arrêt
Point d’arrêt conditionné en Débogage RDi
On crée notre point d’entrée de service pour le programme PROGTEST
On ouvre la perspective Débogage sous RDi puis on exécute le programme en 5250 :
On crée tout d’abord notre point d’arrêt :
Clic droit sur le point d’arrêt + Editer le point d’arrêt :
La condition d’arrêt doit être indiquée sur la ligne « Expression » :
On reprend ensuite l’exécution du programme :
Le programme s’arrête sur notre point d’arrêt pour le client 69002 :
F8=Reprendre –> le programme s’exécute jusqu’à la fin sans nouveau point d’arrêt
On se demande souvent comment gérer les paramètres de compile sur les PRTF et les DSPF, il existe plusieurs solutions comme créer des CL de compile par exemple, ou utiliser des ALM qui intègrent cette possibilité. Mais comment faire pour que ca marche tout le temps sans avoir à modifier les commandes de compile
Voici une solution qui a été mise au point pour nos clients du centre de service.
On va utiliser le programme d’exit QIBM_QCA_CHG_COMMAND qui, à chaque fois qu’il verra un CRTPRTF l’interceptera.
Pour éviter que cela ne boucle on devra dupliquer la commande CRTPRTF dans une autre bibliothèque et renvoyer sur celle de QSYS quand on aura fait le paramétrage complémentaire.
Cette bibliothèque devra donc être devant QSYS dans la liste des bibliothèques, imaginons que cette bibliothèque s’appelle GDDS.
CHGSYSLIBL LIB(GDDS)
soit DSPLIBL
dans le source de votre PRTF vous allez indiquer des lignes commençant par A*<COMP> et terminées par </COMP>
+ votre mot clé exempleSAVE(*YES) Vous pouvez indiquer plusieurs paramètres sur une seule ligne.
Nous avons 2 programmes que vous pouvez retrouver ici, il vous suffit des les compiler et de les ajouter à la bibliothèque GDDS que vous avez placée en tête de liste
Vous avez donc dans votre bibliothèque 2 programmes et une duplication de la commande CRTPRTF et (du CRTDSPF si vous l’ajoutez)
RTVMBRSRC qui va retrouver à partir de la commande le membre source à compiler GDDS qui prendra la commande et qui lui ajoutera les informations lues dans le fichier source c’est ce programme qu’on devra ajouter au programme d’exit comme ceci : ADDEXITPGM EXITPNT(QIBM_QCA_CHG_COMMAND) FORMAT(CHGC0100) PGMNBR(92) PGM(GDDS/GDDS) TEXT(‘Paramétrage GDDS’) PGMDTA(*JOB 20 ‘CRTPRTF GDDS ‘)
Attention au paramètre PGMDTA, la commande fois faire 10 de long pour que le système la trouve
Vous avez un programme CLLE INITGDDS qui peut vous aider dans le répertoire CLP
==>WRKREGINF QIBM_QCA_CHG_COMMAND puis option 8
Avec cette commande, on prendra en compte désormais les CRTPRTF. A partir de ce moment là, quand vous passerez la commande CRTPRTF, vos paramètres indiqués dans le sources seront ajoutés à la commande.
Par exemple en demandant l’invite sur la commande : CRTPRTF FILE(GDATA/PRTF198) SRCFILE(GDATA/QDDSSRC) SRCMBR(*FILE) Vous aurez vos paramètres
Remarque : Vous pouvez indiquer un programme d’exit pour les DSPF (CRTDSPF), et même si vous avez encore quelque PF (CRTPF), les LF (CRTLF) Bien sûr, tous les mots clés que vous indiquez doivent syntaxiquement être justes et correspondre au type de fichier que vous créez. Cette solution marche en interactif, en batch, par RDI et par Vs Code, dans vos CL de compile etc …
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-03-07 05:34:002023-03-07 14:28:16Comment gérer les options de compile des PRTF
Vous connaissez tous, au moins de nom l’extension « code for i » qui vous permet d’éditer vos sources RPGLE dans votre éditeur favori qui est publié par notre Ami Liam Allan
Si voulez en savoir plus une vidéo très bien faite de notre ami de Yvon est disponible sur la chaine youtube de Volubis ici
Mais il existe également des extensions créé par d’autres contributeurs en voici une qui est apparu en 2022 « IBM i Snippets », elle a été créée par Andy Youens.
L’installation est très simple à partir de la gestion des extensions
Le principe de cette extension est de vous proposer des exemples de codes (par exemple des squelettes pour du RPGLE ou CLLE).
Son usage est très simple vous devez saisir « !i » dans votre éditeur favori .
Cette extension bouge beaucoup depuis sa sortie et les dernières contributions sont récentes, n’hésitez pas à proposer des exemples de codes si vous en avez qui soit présentable
Nous pensons qu’il y aura de plus en plus de extensions disponibles pour l’IBMI et une amélioration de celle exitantes extensions existantes, il est donc important d’avoir un œil ce mode de développement , en sachant que les « JEUNNNNES » connaissent déjà cet interface
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2022-11-01 09:31:152022-11-01 09:31:16Visual studio code IBM i Snippets
Développement, RDIRDi : configurer et déployer les Actions de l’utilisateur
Les actions utilisateur vous permettent d’exécuter des commandes préformatées sur les objets ou sur les membres de vos filtres, en utilisant le clic droit pour exécuter l’action.
Elles sont équivalentes aux options définies par l’utilisateur que l’on peut gérer par F16 sous PDM.
Gérer les actions de l’utilisateur
La gestion des actions utilisateur est accessible par clic droit sur les objets ou membres des filtres.
Créer une action objet
Nous allons créer une action pour exporter une table vers l’IFS au format CSV.
L’action utilisera la commande CPYTOIMPF que nous allons préformater.
Le bouton « Insérer une variable » affiche la liste des variables que nous allons pouvoir utiliser dans les paramètres de la commande pour substituer les attributs de l’objet sur lequel l’action s’exécute :
Le bouton « Invite » permet d’afficher l’invite de commande pour compléter les paramètres :
La case « Interroger d’abord » permettra d’afficher l’invite de commande lors de l’utilisation de l’action.
Enfin, il est conseillé d’indiquer les types de ressources pour lesquelles cette action sera proposée dans le clic droit :
Une fois créée, l’action apparait dans le catalogue des actions Objet :
Elle peut être utilisée par clic droit sur un objet de type fichier :
L’invite de commande est affichée avec les valeurs de substitution des variables utilisées :
Le message d’exécution de l’action s’affiche dans l’historique des commandes de RDI :
Le fichier CSV est créé dans l’IFS :
Créer une action membre
Nous allons créer une action permettant de convertir un membre source RPG 4 en RPG FREE.
Pour cela, nous avons créé une commande CVTRPGFREE basée sur un convertisseur Open Source auquel GAIA contribue.
Pour limiter l’action au membres sources de type RPGLE et SQLRPGLE, nous allons Editer la liste des Types définis et créer un Type défini que nous nommerons RPGLE et qui rassemblera les types de membre RPGLE et SQLRPGLE :
Le fenêtre « Gérer les types nommés » s’ouvre :
Le bouton « Parcourir » permet de choisir les types de membre existants pour les ajouter à la liste :
Le nouveau Type défini « RPGLE » s’affiche dans la liste des types de membres définis :On peut maintenant l’utiliser pour notre action :
Une fois créée, l’action apparait dans le catalogue des actions Membre :
Elle peut être utilisée par clic droit sur un membre de type RPGLE ou SQLRPGLE pour le convertir en RPG FREE :
Le message d’exécution de l’action s’affiche dans l’historique des commandes de RDI :Le membre PGMRPGFREE a été créé avec la conversion en RPG FREE du membre initial PGMRPG4 :
Notons qu’en effectuant une sélection de plusieurs ressources dans un filtre, on peut exécuter une action utilisateur sur toutes ces ressources par un seul clic droit.
Exemple ci-dessous : on peut exporter 4 fichiers vers l’IFS au format CSV en un seul clic
Exporter/Importer les actions utilisateur
Les actions utilisateur peuvent être exportées vers un fichier de configuration à partir du menu
Fichier > Exporter > Rational Developer for i :
2 modes d’exportation sont possibles :
l’export « Fichier de configuration » permet d’exporter la configuration vers un fichier local, qui pourra si on le souhaite être partagé et importé par d’autres utilisateurs vers leur Workspace.
l’export « Fichier de configuration pour distribution automatique » permet d’exporter la configuration pour la distribuer automatiquement aux autres utilisateurs
Exporter Fichier de configuration pour distribution automatique
Pour exporter les actions utilisateur, décocher toutes les cases et ne conservez que la configuration « Artefacts de systèmes distants ».
Les filtres sont exportés, lors de l’import vous perdrez donc les filtres de votre Workspace.
Ca peut être gênant, mais ça peut aussi être l’occasion de faire du ménage dans vos filtres….
Le fichier de configuration sera généré dans le répertoire suivant de l’IFS :
/QIBM/ProdData/Devtools/clientconfig
Choisissez un numéro de version pour identifier le fichier de configuration :
Avant de Terminer, assurez-vous d’avoir les droits d’écriture dans le répertoire de destination.
Le fichier de configuration est généré dans l’IFS pour une distribution automatique de cette configuration :
Lorsque les utilisateurs se connecteront à l’IBM i, une fenêtre d’importation leur sera automatiquement proposée :
L’import peut être accepté (OK) ou pas (Annuler) mais tant qu’il n’aura pas été accepté, il sera reproposé à chaque connexion à l’IBM i par RDI.
C’est terminé !
PS :
Si le fichier de configuration a été exporté vers un fichier local par l’export Fichier de configuration au lieu de Fichier de configuration pour distribution automatique, il peut être importé de la même manière par le menu Fichier > Importation > Rational Developer for i > Fichiers de configuration. Il suffit d’indiquer l’emplacement du fichier de configuration, ensuite la procédure est identique à celle de la distribution automatique :
https://www.gaia.fr/wp-content/uploads/2022/10/RDi_512x512-3.png512512Laurent Chavanel/wp-content/uploads/2017/05/logogaia.pngLaurent Chavanel2022-10-03 17:57:282022-10-04 09:39:11RDi : configurer et déployer les Actions de l’utilisateur
L’International Bank Account Number, généralement nommé sous l’acronyme IBAN, est un système international de numérotationLe numéro IBAN, ou code IBAN, est affiché sur votre Relevé d’Identité Bancaire (RIB). Formalisé par une suite de chiffres et de lettres pas toujours compréhensibles pour les usagers bancaires, l’IBAN est une norme internationale ISO qui a été mise en place pour sécuriser et faciliter les échanges et transferts bancaires internationaux sur tous les continents.
Dans cet article nous allons voir comment vérifier si la clé d’un IBAN est correcte. Ensuite nous effectuerons la vérification de la clé d’un RIB. Les exemples sont basés sur un compte bancaire français.
Contrôler la clé IBAN
Structure de l’IBAN
FRKK BBBB BGGG GGCC CCCC CCCC CKK
B = code banque G = code guichet C = numéro de compte K = clef
Le RIB (ou BBAN) comprend les informations suivantes :
– Le nom de la banque et de l’agence; – Le code banque à 5 chiffres; – Le code guichet à 5 chiffres ; – Le numéro du compte à 11 chiffres ou lettres au maximum; – La clé RIB, à 2 chiffres.
Le calcul de la clé IBAN est fonction de l’enchaînement entre le BBAN, le code pays (transformé en données chiffrées) et 00. Concernant la conversion du code pays, il faut savoir que la lettre A équivaut au nombre 10, B = 11, C = 12, D = 13… jusqu’à la dernière lettre de l’alphabet Z qui vaut 35.
La formule arithmétique pour résoudre l’équation et déterminer une clé IBAN est :
Clé IBAN = 98 – ((Valeur numérique) modulo 97).
Il faut donc procéder en deux étapes :
Reconstituer l’IBAN sous la forme BBAN + [Code Pays ISO2] + « 00 »
Remplacer toutes les lettres de l’IBAN par le nombre qui leur correspond (entre 10 et 35)
Voici une procédure, écrite dans un programme de service, qui permet la vérification de la clé d’un IBAN.
Structure du RIB (voir paragraphe précédent, c’est un composant de l’IBAN)
Le numéro de RIB permet l’identification du compte pour une utilisation Nationale. C’est le numéro à transmettre pour effectuer un virement en France.
La clé RIB est une formule mathématique, qui ne peut s’appliquer que sur des valeurs numériques. Il convient donc de remplacer les éventuelles lettres présentes dans les données du RIB avant de pouvoir en calculer la clé.
Chaque lettre est remplacée par son équivalent numérique :
A,J = 1
B,K,S = 2
C,L,T = 3
D,M,U = 4
E,N,V = 5
F,O,W = 6
G,P,X = 7
H,Q,Y = 8
I,R,Z = 9
La clé peut alors être calculée avec la formule suivante :
Clé RIB = 97 – ( ( 89 x Code banque + 15 x Code guichet + 3 x Numéro de compte ) modulo 97 )
Voici une procédure, écrite dans un programme de service, qui permet la vérification de la clé d’un RIB.
dcl-proc checkRib export;
dcl-pi *n ind;
numRib char(23) const ;
end-pi;
dcl-s count int(3) ;
dcl-s index int(3) ;
dcl-s posit int(3) ;
dcl-s stringToCalculate varchar(23) ;
dcl-c letters 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ;
stringToCalculate = numRib ;
for count = 1 to %len(%trim(stringToCalculate)) ;
index = %scan(%subst(stringToCalculate:count:1) : letters) ;
if index > 0;
posit = count - 1 ;
select ;
when index >= 10 and index <= 18 ;
index -= 9 ;
when index >= 19 ;
index -= 17 ;
endsl ;
stringToCalculate = %subst(stringToCalculate : 1 : posit)
+ %trim(%char(index))
+ %subst(stringToCalculate : posit + 2) ;
endif ;
endfor ;
return (97 - %rem(
(%DEC(%subst(stringToCalculate:1:5) : 5 : 0)*89
+ %DEC(%subst(stringToCalculate:6:5) : 5 : 0)*15
+ %DEC(%subst(stringToCalculate:11:11) : 11 : 0)*3)
:97)
= %DEC(%SUBST(stringToCalculate : 22 : 2) : 2 : 0)) ;
end-proc;
On entend beaucoup de choses, je vais essayer de vous clarifier un peu les choses
Les directives /COPY et /INCLUDE sont identiques sauf qu’elles sont gérées différemment par le précompilateur SQL, en gros si vous codez avec un Source en SQLRPGLE.
Sur la commande CRTSQLRPGI vous avez le paramètre RPGPPOPT Permet d’indiquer si le compilateur ILE RPG va être appelé pour prétraiter le membre source avant lancement de la précompilation SQL. Cette étape sur le membre source SQL permet de traiter certaines instructions de compilation avant la précompilation SQL. Le source prétraité est placé dans le fichier QSQLPRE de la bibliothèque QTEMP. Il servira à la précompilation SQL. puis à la complilation RPGLE
3 valeurs possibles sont : *NONE Le compilateur n’est pas appelé pour le prétraitement. *LVL1 Le compilateur est appelé pour le prétraitement afin de développer /COPY et traiter les instructions de compilation conditionnelles à l’exception de /INCLUDE. *LVL2 Le compilateur est appelé pour le prétraitement afin de développer /COPY et /INCLUDE et traiter les instructions de compilation conditionnelles
voici un exemple Un module utilise la description d’un fichier qui est dans un include
le source à inclure
sa déclaration dans le programme ou le module
.
Compile avec *NONE
Compile avec *LVL2
Remarque Si vous faites du SQLRPGLE, ce qui est fortement recommandé à ce jour forcer cette valeur *LVL2 comme ca pas de doute !
Une des difficultés, quand on développe avec VSCE sur IBMi , C’est que si on est 2 deux à modifier le même source, c’est le dernier qui a raison avec perte de modification du premier même s’il a sauvegardé
Voici comment on peut améliorer les choses. On va créer un fichier base de données qui liste les sources qui sont en cours de maintenance, un peu comme un ALM.
Avec GIT on peut arriver à des mécanismes identiques, et surtout, il faut commencer à mettre vos sources dans l’IFS directement
Voila comment, vous pouvez faire pour améliorer les choses
CREATE TABLE DB_OPENLCK (FICHIER CHAR ( 10) NOT NULL WITH DEFAULT, BIBLIO CHAR ( 10) NOT NULL WITH DEFAULT, MEMBRE CHAR ( 10) NOT NULL WITH DEFAULT, PARTAGE CHAR ( 3) NOT NULL WITH DEFAULT, PUSER CHAR ( 10) NOT NULL WITH DEFAULT, PDATE DATE NOT NULL WITH DEFAULT, PTIME TIME NOT NULL WITH DEFAULT)
Pour ajouter un source à verrouiller
INSERT INTO DB_OPENLCK VALUES(‘QRPGLESRC’, ‘GDATA’, ‘AAAA’, ‘NON’, ‘PLB’, current date, current time)
Et parmi les programmes d’exit il en a un qui va nous permettre de mettre en œuvre ce contrôle C’est le QIBM_QDB_OPEN
On va donc écrire un programme, ici en SQLRPGLE
**free
//
// ce programme permet d'éviter de travailler à 2 sur un même source
//
Dcl-Pi *N;
DS_parm likeds(ds_parm_t) ;
reponse int(10);
End-Pi;
// dsprogramme
dcl-ds *N PSDS ;
nom_du_pgm CHAR(10) POS(1);
init_user CHAR(10) POS(254);
enc_user CHAR(10) POS(358);
End-ds ;
// ds format DBOP0100
Dcl-DS ds_parm_t qualified template ;
taille_entete Int(10);
format Char(8);
offset_liste Int(10);
nbr_fichiers Int(10);
taille_liste Int(10);
job Char(10);
profil Char(10);
jobnbr Char(6);
cur_profil Char(10);
reste Char(1024);
End-DS;
// liste des fichiers dans notre cas un seul
Dcl-DS liste ;
fichier Char(10);
biblio Char(10);
membre Char(10);
filler Char(2);
typefichier Int(10);
sous_jacent Int(10);
access Char(4);
End-DS;
// variable de travail
Dcl-S partage char(4);
Dcl-S puser char(10);
ds_parm.offset_liste += 1;
dsply enc_user ;
liste = %subst(ds_parm : ds_parm.offset_liste :
ds_parm.taille_liste);
ds_parm.offset_liste += ds_parm.taille_liste;
// lecture des informations dans le fichier de verrouillage explicite
// le verrouillage est donc par utilisateur
exec sql
SELECT PARTAGE, PUSER into :partage , :puser
FROM DB_OPENLCK WHERE FICHIER = :FICHIER and BIBLIO
= :BIBLIO and MEMBRE = :MEMBRE ;
//
// La régle mise en oeuvre ici
// on autorise
// si même utilisateur
// si non trouvé en modification
// Si on on a dit partage à oui
//
if (sqlcode = 100 or partage = 'OUI' or puser = enc_user) ;
reponse = 1 ;
else ;
reponse = 0 ;
endif ;
// fin de programme
*inlr = *on;
ici notre règle est la suivante on autorise Si le source n’est pas présent dans le fichier Si l’utilisateur est le même que celui en cours Si on a accepté le partage et donc le risque
Quand on essaye d’accéder par VSCDE à notre source
Remarque
Le contrôle marche aussi avec RDI Il marche également pour SEU, parfois on préfère un contrôle spécifique SEU, vous devrez utiliser le programme d’exit QIBM_QSU_ALW_EDIT en utilisant le même fichier par exemple !
**free
//
// Ce programme eviter de travailler à 2 sur un même source
//
Dcl-Pi *N;
biblio char(10);
fichier char(10);
membre char(10);
reponse char(1);
End-Pi;
// dsprogramme
dcl-ds *N PSDS ;
nom_du_pgm CHAR(10) POS(1);
init_user CHAR(10) POS(254);
enc_user CHAR(10) POS(358);
End-ds ;
Dcl-S partage char(4);
Dcl-S puser char(10);
// lecture des informations dans le fichier de verrouillage explicite
// le verrouillage est donc par utilisateur
exec sql
SELECT PARTAGE, PUSER into :partage , :puser
FROM DB_OPENLCK WHERE FICHIER = :FICHIER and BIBLIO
= :BIBLIO and MEMBRE = :MEMBRE ;
//
// La règle mise en œuvre ici
// on autorise
// si même utilisateur
// si non trouvé en modification
// Si on on adit partage à oui
//
if (sqlcode = 100 or partage = 'OUI' or puser = enc_user) ;
reponse = '1' ;
else ;
reponse = '0' ;
endif ;
// fin de programme
*inlr = *on;
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2022-07-21 17:51:502024-03-26 15:58:28Verrouiller vos sources pour VSCODE
Si vous êtes en convention de nommage *SYS, vous pouvez utiliser la liste de bibliothèques
exec sql call qcmdexc( ‘addlible ‘ concat :votre_lib) ; // select sans bibliothèque exec sql select mazone into : wmazone from matable ;
Si vous êtes en convention de nommage *SQL, vous devez préciser le schéma courant – par défaut c’est le profil utilisateur. // select sans bibliothèque exec sql set schema :votre_lib ;
exec sql select mazone into : wmazone from matable ;
A noter que dans la cas d’une convention de nommage *SQL, toutes vos tables doivent être dans la même bibliothèque, en cas de jointure par exemple
Il existe effectivement une autre alternative avec dynamic SQL,
Merci Birgitta pour cette précision .
Avec dynamic SQL et VALUES … INTO: Exemple: CmdSQL = ‘Values( Select Count(*) from ‘ + %Trim(YourSchema) + ‘.YourTable ‘ + ‘ ) into ?’;
Exec SQL Prepare DynSQL from :CmdSQL; Exec SQL Execute DynSQL using :YourResult;
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2022-02-01 18:12:542022-04-06 10:15:38Préciser la bibliothèque dans un SELECT INTO
Vous installez de nouveaux PCs et vous désirez savoir les ports à ouvrir pour pouvoir accéder à vos partitions IBMi.
Voici une liste de ports à ouvrir en priorité
Pour ACS :
23 requis TELNET 449 requis arborescence du serveur IBM i 8470 à 8476 (voir RDI)
Pour RDi :
446 Requis (DRDA : connecteur base de données entre serveurs) 449 (as-srvmap) requis arborescence du serveur IBM i 3825 (Debugger) : débogage RDi 4300 (STRRSESVR) débogage via RDi (permet le rappel par l’IBM i du client RDi) 8470 (as-central) requis : Gestion des licences 8471 (as-database) requis base de données 8472 (as-dtaq) requis : serveur de file d’attente de données 8473 (as-file) requis : serveur de fichiers 8474 (as-netprt) serveur d’impression réseau 8475 (as-rmtcmd) requis : envoi de commandes 8476 (as-signon) requis : serveur ouverture de session
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2021-12-10 09:42:312022-04-12 09:57:53Ports à ouvrir pour ACS et RDi
On a vu comment générer une structure d’aide à partir d’une commande, comment générer un menu en UIM, cette troisième partie vous fournira un outil (CVTMNUUIM) pour migrer un menu SDA classique en UIM. il est disponible ici https://github.com/Plberthoin/PLB/tree/master/GTOOLS/ Pour standardiser vos menus et les faire bénéficier de la puissance du langage UIM !
1) Génération du source UIM
On part du fichier message pour régénérer les commandes associées aux options On ne sait pas récupérer de manière simple le texte de l’option, celle ci étant dans un source DDS (si vous l’avez…)
On met donc comme texte la commande à exécuter, vous pourrez donc éditer le source pour changer le texte affiché
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2021-11-22 10:15:542022-04-12 10:05:43Convertir un menu SDA en UIM