Bien entendu cela favorise la capacité à proposer des offres Cloud !
De ce point de vue c’est une opportunité importante dans la modernisation des infrastructures, et surtout la perspective d’avoir à terme un parc (plus) à jour.
D’autres raisons peuvent être sous-jacentes : la capacité à planifier et prédire un chiffre d’affaire par exemple. Du côté du client cela impacté également les budgets IT (amortissement vs consommation). Laissons cela de côté pour l’instant.
Comment
En synthèse, IBM travaille sur la proposition d’un abonnement IBM i + SWMA (maintenance logicielle). Le parti-pris est une équivalence de budget à 4 ans.
Ainsi, si vous conservez vos machines 4 ans ou moins : pas de budget supplémentaire. Si vous conservez vos systèmes plus longtemps, le coût augmente. De même, il deviendra difficile de conserver des systèmes hors maintenance (mais quel intérêt ?).
D’un autre côté, IBM rend gratuit un grand nombre de produits sous licence : pour les clients les utilisant c’est également une source d’économie. Pour les autres, c’est l’opportunité de disposer de fonctions supplémentaires.
Logiciels sous licence désormais inclus avec la licence IBM i
Administration Runtime Expert, also called Application Runtime Expert (5733-ARE)
CICS Transaction Server (5770-DFH)
HTTP Server (5770-DG1)
Facsimile Support for i (5798-FAX)
Developer Kit for Java (5770-JV1)
Managed System Services (5770-MG1)
Network Authentication Enablement (5770-NAE)
System Manager (5770-SM1)
TCP/IP Connectivity Utilities (5770-TC1)
Transform Services (5770-TS1)
Universal Manageability Enablement (5770-UME)
Logiciels sous licence gratuit (à commander à part)
Web Enablement: includes selected versions of WebSphere Application Server (5733-WE3, 5722-WE2)
Cryptographic Device Manager (5733-CY3)
OmniFind Text Search Server for DB2 for I (5733-OMF)
Logiciels sous licence payants
BRMS (5770-BR1)
Rational Development Studio (5770-WDS)
PowerHA SystemMirror for i (5770-HAS)
Cloud Storage Solutions (5733-ICC)
Db2 Mirror (5770-DBM)
Rational Developer for i
ARCAD Observer for IBM i (5733-AO1)
ARCAD RPG Converter for IBM i (5733-AC1)
IBM i Modernization Engine for Lifecycle Integration (“Merlin” via Passport Advantage)
IBM i Optional Features: Db2 Data Mirroring – Opt 48
Malheureusement, ce sont les utilisateurs de DB2 Web Query qui en pâtissent, IBM ne proposant pas de produit aux fonctionnalités équivalentes.
Ce sera également un manque aux possibilités de l’IBM i : DB2 Web Query est la solution de BI, d’exploitation des données métier. Or les plus fortes valeurs ajoutées de l’IBM i sont aujourd’hui sa base de donnée DB2 et la capacité à traiter des workload business.
Même si le nombre d’utilisateurs de DB2 Web Query était limitée, c’est assurément une mauvaise nouvelle.
A* Case à cocher
A* Bouton à choix unique
A DSPSIZ(24 80 *DS3)
A CA03(03)
A R FMT01
A 1 20'Zone choix simple'
A 3 2'Sexe :'
A F1 2Y 0B 3 20SNGCHCFLD(*AUTOSLT (*NUMCOL 3))
A CHOICE(1 '>Homme ')
A CHOICE(2 '>Femme ')
A CHOICE(3 '>Inconnu')
A 23 02'F3=Exit'
A* Case à cocher
A* Bouton à choix multiple
A DSPSIZ(24 80 *DS3)
A CA03(03)
A R FMT01
A 1 20'Zone choix multiple'
A 3 2'Plat :'
A F1 2Y 0B 3 20MLTCHCFLD((*NUMCOL 3))
A CHOICE(1 'Entrée ')
A CHOICE(2 'Plat ')
A CHOICE(3 'Dessert ')
A CHCCTL(1 &CHOIX1 )
A CHCCTL(2 &CHOIX2 )
A CHCCTL(3 &CHOIX3 )
A CHOIX1 1Y 0H
A CHOIX2 1Y 0H
A CHOIX3 1Y 0H
A 23 02'F3=Exit'
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-10-24 02:43:162023-10-24 02:43:17Utilisation de cases à cocher
Suivez la procédure pour paramétrer le plugin dans RDI et l’installation de la bibliothèque JCRCMDS s’il elle n’existe pas sur votre partition, c’est la commande JCRHDF qui sera utilisée, vous pouvez également l’utiliser en 5250, si vous le désirez
L’utilisation est très simple dans un source de type RPGLE ou SQLRPGLE , vous avez une nouvelle option sur le clic droit, JCRCMDS.
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-10-14 15:37:492023-10-17 14:43:59Convertir les carte H, D et F sous RDI
Concernant les fichiers JSON, on observe plusieurs types de géométries, principalement POLYGON et MULTIPOLYGON. C’est pourquoi il nous faut définir dans nos fichiers, une colonne qui puisse englober plusieurs types de géométries. Pour ce faire, le document Database Geospatial Analytics nous fournit quelques informations …
Nous choisirons donc, pour nos fichiers, une colonne basée sur la fonction ST_GEOMETRY, qui nous permet d’englober les deux type nommés ci-dessus. Voici donc comment nous constituerons nos tables.
-- Table des états américains
CREATE TABLE GGEOLOC.US_STATES (
STATE_ID CHAR(2) PRIMARY KEY,
STATE_FULL_NAME VARCHAR(50),
STATE_GEO QSYS2.ST_GEOMETRY);
-- Table des pays
CREATE TABLE GGEOLOC.COUNTRIES (
CODE_ISO VARCHAR(3) PRIMARY KEY,
NAME VARCHAR(50),
CNTRY_GEO QSYS2.ST_GEOMETRY);
-- Table des villes
CREATE TABLE GGEOLOC.MYCITIES (
CTY_NAME VARCHAR(50) ,
CTY_GEO QSYS2.ST_GEOMETRY);
Cet article étant dédié aux fonctions géospatiales, nous n’expliciterons pas la récupération des données.
Bienvenue à bord
ST_ISSIMPLE & ST_GEOMETRYTYPE …
… attachez vos ceintures
ST_ISSIMPLE nous permet de savoir si la géométrie de la figure sélectionnée est simple (valeur 1) ou bon (valeur 0).
SELECT STATE_FULL_NAME,
CASE QSYS2.ST_ISSIMPLE(STATE_GEO)
WHEN 0 THEN 'Geometry is not simple'
WHEN 1 THEN 'Geometry is simple'
END
FROM GGEOLOC.US_STATES where STATE_ID in ('WI', 'IL', 'IN', 'HI', 'AK');
Alaska
Geometry is not simple
Hawaii
Geometry is simple
Illinois
Geometry is simple
Indiana
Geometry is simple
Wisconsin
Geometry is simple
ST_GEOMETRYTYPE nous permet de savoir de quel type de géométrie nous parlons, et nous pouvons donc constater que la simplicité de la géométrie n’a pas de lien avec le caractère « MULTI » de la figure.
SELECT STATE_FULL_NAME, QSYS2.ST_GEOMETRYTYPE(STATE_GEO)
FROM GGEOLOC.US_STATES where STATE_ID in ('WI', 'IL', 'IN', 'HI', 'AK');
Alaska
ST_MULTIPOLYGON
Hawaii
ST_MULTIPOLYGON
Illinois
ST_POLYGON
Indiana
ST_POLYGON
Wisconsin
ST_POLYGON
ST_ASTEXT & ST_ASBINARY …
… briefing avant décollage
Si nous exécutons une extraction brute de nos données, on ne comprend pas immédiatement
select STATE_ID, STATE_FULL_NAME, STATE_GEO
from GGEOLOC.US_STATES where STATE_ID in ('OK', 'TX', 'AL', 'AR', 'CO');
ST_AREA nous donne la surface en m² d’une aire géographique (POLYGON ou MULTIPOLYGON)
on ajoute une colonne ici pour avoir une idée de l’aire en km²
select STATE_ID, STATE_FULL_NAME, QSYS2.ST_AREA(STATE_GEO), integer(QSYS2.ST_AREA(STATE_GEO)/1000000)
from GGEOLOC.US_STATES
where STATE_ID in ('OK', 'TX', 'AL', 'AR', 'HI');
AL
Alabama
1.3409800288446873E11
134098
AR
Arkansas
1.3838751120399905E11
138387
HI
Hawaii
1.4748657954505682E10
14748
OK
Oklahoma
1.8250255202012402E11
182502
TX
Texas
6.886199875225208E11
688619
ST_BUFFER nous donne les coordonnées d’une surface élargie du nombre de mètres voulus
voici un exemple de calcul de surfaces en élargissant de 1000 m les frontières de deux états
select STATE_ID, STATE_FULL_NAME, integer(QSYS2.ST_AREA(STATE_GEO)/1000000), integer(QSYS2.ST_AREA(QSYS2.ST_BUFFER(STATE_GEO, 1000))/1000000)
from GGEOLOC.US_STATES
where STATE_ID in ('OK', 'AL');
AL
Alabama
134098
135822
OK
Oklahoma
182502
184806
ST_DISJOINT & ST_WITHIN …
… garder le cap
ST_DISJOINT retourne 1 si deux figures n’ont rien en commun.
select CTY_NAME, CODE_ISO
from GGEOLOC.MYCITIES, GGEOLOC.COUNTRIES
where QSYS2.ST_DISJOINT(CTY_GEO, CNTRY_GEO) = 0 ;
HELSINKI
FIN
TEGUCIGALPA
HND
NAIROBI
KEN
GUADALAJARA
MEX
COPENHAGEN
DNK
LYON
FRA
NANTES
FRA
OSLO
NOR
ROCHESTER
USA
ST_WITHIN retourne 1 si la première figure est complètement dans la seconde.
Exemple : Une ville est-elle contenue dans un pays ? Un pays est-il contenu dans une ville ?
select CTY_NAME, CODE_ISO, QSYS2.ST_WITHIN(CTY_GEO, CNTRY_GEO), QSYS2.ST_WITHIN(CNTRY_GEO, CTY_GEO)
from GGEOLOC.MYCITIES, GGEOLOC.COUNTRIES
where CTY_NAME in ('LYON', 'ROCHESTER') and CODE_ISO in ('FRA', 'USA') ;
LYON
FRA
1
0
ROCHESTER
FRA
0
0
LYON
USA
0
0
ROCHESTER
USA
1
0
ST_INTERSECTS & ST_INTERSECTION …
… passer la frontière
ST_INTERSECTS nous permet de savoir si deux figures ont une intersection (la fonction retourne 1 si tel est le cas)
Dans l’exemple suivant, on cherche parmi une liste d’états, à savoir si ceux-ci sont directement voisins du Michigan
select t1.STATE_FULL_NAME, t2.STATE_FULL_NAME,
CASE WHEN QSYS2.ST_INTERSECTS(t1.STATE_GEO, t2.STATE_GEO) = 1
THEN 'Etats Voisins'
ELSE 'Etats éloignés'
END as config
from GGEOLOC.US_STATES t1, GGEOLOC.US_STATES t2
where t1.STATE_ID = 'MI'
and t2.STATE_ID in('WI', 'IL', 'IN', 'OH', 'PA', 'MN') ;
Michigan
Illinois
Etats éloignés
Michigan
Indiana
Etats Voisins
Michigan
Minnesota
Etats éloignés
Michigan
Ohio
Etats Voisins
Michigan
Pennsylvania
Etats éloignés
Michigan
Wisconsin
Etats Voisins
Il suffisait de voir la carte pour s’en rendre compte !! Heureusement, ST_INTERSECTION nous en dit beaucoup plus puisqu’elle nous indique la forme de l’intersection entre deux figures géométriques.
select t1.STATE_FULL_NAME, t2.STATE_FULL_NAME,
QSYS2.ST_ASTEXT(QSYS2.ST_INTERSECTION(t1.STATE_GEO, t2.STATE_GEO)),
CASE WHEN QSYS2.ST_INTERSECTS(t1.STATE_GEO, t2.STATE_GEO) = 1
THEN 'Etats Voisins'
ELSE 'Etats éloignés'
END as config
from GGEOLOC.US_STATES t1, GGEOLOC.US_STATES t2
where t1.STATE_ID = 'MI'
and t2.STATE_ID in('WI', 'IL', 'IN', 'OH', 'PA', 'MN');
ST_DISTANCE va retourner la distance entre deux points, mais il est intéressant de l’utiliser sur des figures de type POLYGON …
select t1.STATE_FULL_NAME, t2.STATE_FULL_NAME,
QSYS2.ST_DISTANCE(t1.STATE_GEO, t2.STATE_GEO)/1000
CASE WHEN QSYS2.ST_INTERSECTS(t1.STATE_GEO, t2.STATE_GEO) = 1
THEN 'Etats Voisins'
ELSE 'Etats éloignés'
END as config
from GGEOLOC.US_STATES t1, GGEOLOC.US_STATES t2
where t1.STATE_ID = 'MI'
and t2.STATE_ID in('WI', 'IL', 'IN', 'OH', 'PA', 'MN');
Michigan
Illinois
58.493941547601004
Michigan
Indiana
0.0
Michigan
Minnesota
33.60195301382611
Michigan
Ohio
0.0
Michigan
Pennsylvania
179.1488383130458
Michigan
Wisconsin
0.0
… pour lesquelles on se rend compte que la fonction retourne la distance (ramenées en km ici) entre les points les plus proches des deux figures comparées.
Atterrissage
Nous n’avons exploré ici qu’une partie des fonctions géospatiales disponibles. Il en existe bien d’autres fonctions pour savoir si une figure recouvre complètement une autre, si une figure est contenue dans une autre si une figure en traverse une autre, … Il existe également des fonctions de manipulation des GEOHASHES (système de géocodage basé sur la division d’une zone géographique en cellules).
Bref, tout une panoplie de fonctions que l’on peut combiner à l’infini et au-delà !
https://www.gaia.fr/wp-content/uploads/2021/07/GG-2.jpg343343Guillaume GERMAN/wp-content/uploads/2017/05/logogaia.pngGuillaume GERMAN2023-10-09 18:03:122023-10-09 18:03:14LE TOUR DU MONDE EN 10 (+1) FONCTIONS GEOSPATIALES
Vous connaissez tous le mot clé WINDOW dans les DDS qui vous permet d’afficher une fenêtre.
Cette solution a certaine contraintes comme les réaffichages par exemple.
Voici une alternative qui permet d’afficher une fenêtre sans utiliser ce mot clé
Le code l’écran
A*%%TS SD 20231003 225454 PLB REL-V7R4M0 5770-WDS
A* EXEMPLE DE FENETRE SANS WINDOW
A*
A*%%EC
A DSPSIZ(24 80 *DS3)
A USRDSPMGT
A INDARA
A R FMT01
A*%%TS SD 20231003 225454 PLB REL-V7R4M0 5770-WDS
A CA03(03)
A CA12(12)
A SLNO(01)
A CLRL(*NO)
A TITRE 25A O 15 45DSPATR(HI)
A DSPATR(RI)
A 16 45' '
A DSPATR(HI)
A DSPATR(RI)
A TEXTE01 21A O 16 47
A 16 69' '
A DSPATR(HI)
A DSPATR(RI)
A 17 45' '
A DSPATR(HI)
A DSPATR(RI)
A TEXTE02 21A O 17 47
A 17 69' '
A DSPATR(RI)
A DSPATR(HI)
A 18 45' '
A DSPATR(HI)
A DSPATR(RI)
A TEXTE03 21A O 18 47
A 18 69' '
A DSPATR(HI)
A DSPATR(RI)
A 19 45' F2=Valider F3=Fin '
A DSPATR(HI)
A DSPATR(RI)
Le programme RPGLE
**free
// Affiche une fenêtre sans window
// renvoi OK si vous appuyez sur <ENTER>
// renvoi KO si vous appuyez sur F3 ou F12
// call fenetre ('Titre' 'texte01' 'texte02' 'texte03' ' ')
dcl-f fenetre workstn ;
dcl-pi *N ;
Titre char(25); // Titre fenêtre
Texte01 char(21); // texte première ligne
Texte02 char(21); // texte deuxiéme ligne
Texte03 char(21); // texte troisième ligne
Retour char(2); // code retours
end-pi ;
if %parms = 0 ;
dsply ('Ce programme nécessite 6 paramètres') ;
else ;
// Affichage format
Exfmt FMT01 ;
if *in03 or *in12 ;
Retour = 'KO' ;
else ;
Retour = 'OK' ;
endif ;
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 BERTHOIN2023-10-04 06:08:522023-10-04 06:08:54Fenêtre sans le mot clé WINDOW
Vous faites le l’administration, le plus souvent en 5250 sous l’écran de commandes IBMI ==> call QCMD
Vous voulez effacer la log que vous voyez par la commande DSPJOBLOG.
La première solution consiste à vous déconnecter, du coup la log est effacée ou transformée en spool.
Cette méthode efface tout le contexte mis en place, liste de bibliothèques , variables d’environnement, objets dans QTEMP que vous avez peut être mis beaucoup de temps à construire dans vos tests.
L’idée c’est d’avoir une solution moins radicale qui permette de n’effacer que la log de votre travail, c’est pourquoi vous devriez avoir dans vos tools un outil comme celui la
Une commande qu’on a appelé astucieusement CLRLOG que vous pouvez trouver ici
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-09-17 16:31:212023-09-17 16:42:33Effacer la log de votre travail
Vous avez encore des développements en 5250 avec des DSPF et vous vous posez la question : dois je utiliser une touche CA ou CF ?
Nous allons essayer de vous apporter quelques éclaircissements sur les usages et les bonnes pratiques
Première chose, vous pouvez utiliser une touche de fonction de 2 manières
CA03(03) ou CA03 uniquement
Avec CA03(03), vous testerez *IN03 dans vos programmes RPGLE et &IN03 en CLLE. Avec CA03, vous testerez *INKC dans vos programmes RPGLE et c’est plus compliqué à gérer en CLLE.
Jusque la on utilisait les indicateurs *inka … pour économiser les indicateurs de 01 à 24 (99 disponibles), sur les nouveaux développement on utilise moins d’indicateurs et plus de fonctions intégrées comme %EOF(). Il est donc conseillé d’utiliser les indicateurs *IN01 à *IN24 ; de plus vous pouvez les renommer pour rendre plus lisible dans les programmes !
Pour ce faire, vous devez déclarer votre écran en INDARA pour indiquer que les indicateurs sont séparés du flux des données.
A* Niveau fichier dans le dds : A INDARA
Dans le source du programme RPG : dcl-f MONECR WORKSTN indds(DS_Ind) ; Dans les déclaration :
Dcl-DS DS_Ind len(99); // Touches de fonctions Sortie ind pos(3); Liste ind pos(4); Reaffichage ind pos(5); Creer ind pos(6); Valider ind pos(10); Annuler ind pos(12); … End-DS;
Conseil
Comme vous devez vous baser sur la NORME AUA , vous pouvez faire un include avec ces touches de fonction.
dans le code vous pouvez indiquer :
IF SORTIE ;
Comment déclarer les touches dans vos DDS ? Vous pouvez les déclarer
au niveau du fichier, votre touche sera utilisable dans tous les formats. C’est le cas par exemple de CA03 pour sortir.
au niveau du format, on ne peut pas redéclarer une touche déjà décrite au niveau fichier
Exemple :
A* niveau fichier A CA03(03) A R PREMIER A A R DEUXIEME A* niveau du format A CA12(12)
vous pourrez utiliser : CA03 sur le format PREMIER CA03 et CA12 sur le DEUXIEME
Plus vous serez précis dans vos déclarations, plus vos programmes serons clairs et précis. Toutes les touches déclarées dans les formats doivent être traitées dans le code. Si vous utilisez une touche dans un programme et qu’elle n’est pas traitée … ça peut poser problème, du genre mise à jour sans lecture de l’écran.
Pourquoi CA et pas CF !?
Pour vous expliquer nous avons choisi de faire ce petit exemple (écran + programme RGPLE)
A*%%TS SD 20230914 164942 PLB REL-V7R4M0 5770-WDS
A*%%EC
A DSPSIZ(24 80 *DS3)
A R FMT01
A*%%TS SD 20230914 164942 PLB REL-V7R4M0 5770-WDS
A CA07(07)
A CF08(08)
A 4 10'Test pour comprendre la différence-
A entre une touche CA et CF'
A DSPATR(HI)
A 9 10'Saisir une valeur ici '
A 9 33':'
A ZONE 1A B 9 35VALUES('1' '2')
A 9 38'Veuillez saisir 1 ou 2'
A DSPATR(HI)
A 20 10'CA07==> Sortir sans lecture'
A 21 10'CF08==> Sortir avec lecture'
Où il est possible d’utiliser les touches de fonction 07 déclarée CA et 08 déclarée CF.
f
Premier test
Vous tapez directement F7 ou F8, le comportement est le même si votre buffer n’a pas été modifié, il n’y a pas de lecture. Pour déterminer si le buffer est modifié le système se sert d’un octet attribut (dans le format ou dans la zone) dans le quel on un MDT qui sera à *ON. Si le buffer ou la zone à été modifiée. vous devrez forcer ce tag dans le cas ou contrôlez des données.
C’est le mot clé DSPATR(MDT) dans les DDS qui permet ça, vous pouvez le conditionner par un indicateur.
Deuxième test
Vous saisissez 9 dans l’écran. F7 sort directement et tient pas compte de la saisie, c’est ce qui convient pour les touches F3 ou F12. F8 déclenche une lecture avant de sortir et comme on a fait le choix de contrôler la valeur saisie à 1 ou 2, on est bloqué jusqu’à ce qu’on ait renseigné la zone à la bonne valeur, C’est ce qui convient pour les touches F6 ou F10. On imagine bien que si vous avez 10 zones avec contrôles, ça poser problèmes quel que soit le contrôle
Rappel sur l’ordre à faire sur vos contrôles
1) Contrôle de valeurs, gérer par VALUES() ou CHECK() dans le DDS, aucun code à traiter côté programme.
2) Contrôles de dépendance exemple borne début < borne de fin (toutes les informations de l’écran sont suffisantes pour le contrôle).
3) Contrôles nécessitants une ressource externe, le plus souvent en base de données (saisie d’un numéro de client à contrôler).
La règle si la valeur saisie n’est pas bonne ce n’est pas la peine de faire le contrôle suivant !
Conseil : Soyez précis dans vos déclarations dans le niveau format ou tous les format au fichier. et n’utilisez les touches CF que quand vous devrez traiter les données de l’écran.
Comment gérer simplement les informations de modifications sur les enregistrements utilisateur + date de création ou de modification
Vous connaissez la méthode applicative par sql ou update
Vous connaissez la méthode par trigger after, vous modifiez les zones dans le buffer après avec les informations en cours.
Voici un solution ou vous n’avez rien à faire, vous laissez faire SQL
Soit la table suivante des applications :
CREATE TABLE APPLICATION1 FOR SYSTEM NAME APPLICAT1 ( DESCRIPTION_APPLICATION FOR COLUMN DES_APP CHAR(50) NOT NULL WITH DEFAULT, APPLICATION_CODE FOR COLUMN APP_COD CHAR(8) NOT NULL WITH DEFAULT,
/* Informations de mise à jour */ APPAUSRCHG VARCHAR(18) GENERATED ALWAYS AS (USER), APPATMPCHG TIMESTAMP FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL, APPAUSRCRT CHAR(18) NOT NULL DEFAULT USER IMPLICITLY HIDDEN, APPATMPCRT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN ) Explications :
GENERATED ALWAYS AS (USER), indique que la zone est systématiquement forcée avec l’utilisateur en cours FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP indique qu’a chaque modification, vous aurez la date en cours DEFAULT USER indique valeur par défaut utilisateur en cours DEFAULT CURRENT_TIMESTAMP indique valeur par défaut date en cours HIDDEN indique que la zone n’apparaitra pas dans un select *
UPDATE GDATA.APPLICATION1 SET DESCRIPTION_APPLICATION = ‘TEST2’, APPLICATION_CODE = ‘test2’ WHERE DESCRIPTION_APPLICATION = ‘TEST’
Visualisation du résultat
Sauf zones cachées
SELECT * ROM GDATA.APPLICATION1
Avec les zones cachés
SELECT DESCRIPTION_APPLICATION, APPLICATION_CODE, APPAUSRCHG, APPATMPCHG, APPAUSRCRT, APPATMPCRT FROM GDATA.APPLICATION1
Remarques : Les zones user devront être sur 18 en varchar Vous devez utiliser le format explicite pour la création Voila , Simple et efficace Merci à Patrick pour son exemple de code
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-09-07 21:19:252023-09-12 11:35:57Tables avec informations de création et modification
Vous devez coder un source en UIM, qui correspond aux déclarations que vous avez indiqué dans votre DSPF :
:PNLGRP.
:HELP NAME = 'GPARAME' .AIDE (GPARAME).
:XH3. AIDE GPARAME.
:P.
Ce programme vous permet de (ici descriptif général du programme)
:EHELP.
:HELP NAME = 'GPARAME/GLOG' .AIDE (GLOG).
:XH3. AIDE GLOG.
:P.
Cette zone (ici descriptif de la zone)
:EHELP.
...
:EPNLGRP.
C’est relativement simple à faire, vous pouvez utiliser tout le langage UIM.
Pour en savoir plus sur UIM : https://www.ibm.com/docs/en/i/7.4?topic=interfaces-user-interface-manager
Voici un exemple de ce que cala donne en faisant <F1> sur une Zone ici numéro de série
Pour vous aider, nous proposons un outil qui vous permet de générer les mots clés nécessaires pour le DSPF et le squelette de votre panel de groupe. Vous pouvez trouver l’outil ICI il s’appelle GENUIMDSP :
Vous devez indiquer le fichier écran , le source avec les mots clés ici QDDSSRC, le squelette du panel ici dan QPNLSRC.
Remarque :
L’outil n’est pas parfait mais, il vous aide bien, si vous voulez contribuer, n’hésitez pas !
L’ajout des mots clés dans le DSPF ne change pas la commande de compile, ni les niveaux des formats dans lesquels vous ajoutez des aides.
La liaison est dynamique et si l’aide n’est pas trouvée, il n’y a pas de plantage donc pas de régression applicative, vous aurez « juste » le message suivant :
Ça peut être intéressant quand vous faites de la maintenance d’ajouter des aides, et avec notre méthode c’est rapide, simple et efficace.
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-09-04 12:49:122023-09-05 17:42:35Ajouter de l’aide à vos DSPF
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-08-11 10:18:442023-08-16 07:26:46IA et développement IBMI