Archive pour l’année : 2017
Ce court billet est issu de nos retours d’expérience.
Vous êtes nombreux ces derniers mois à avoir migré vos anciens systèmes, parfois antédiluviens, vers des machines à jour (Power 8 en 7.2 par exemple). Mais nous observons nombre de programmes de démarrage, les fameux QSTRUP, personnalisés et pris en l’état.
Or, certaines fonctions du système, et certaines commandes usuelles ont évoluées depuis la V5R2 ! Il est donc très opportun de faire également évoluer votre programme de démarrage.
Pour rappel, il est conseillé lors d’une migration vers un nouveau système, de ne pas restaurer votre programme QSTRUP mais d’extraire les sources du programme existant (fourni par IBM dans le cas d’une nouvelle machine) et de le ré-adapter à votre environnement.
Voici les cas les plus usuels que nous observons :
STRTCP : n’est plus nécessaire dans le QSTRUP depuis la V5R1 !
Le démarrage de TCP/IP se fait généralement par les attributs d’IPL : CHGIPLA … STRTCP(*YES)
Le sous-système QSVCDRCTR : n’est plus utilisé depuis la V5R3 (ancien Service Agent).
Il n’existe plus sur les machines récentes et la commande tombe en erreur.
Démarrage des imprimantes par STRPRTWTR DEV(*ALL)
A remplacer aujourd’hui par CALL PGM(QSYS/QWCSWTRS)
STRHOSTSVR SERVER(*ALL) : à ne pas utiliser !
Vous pouvez indiquer pour chaque service s’il doit démarrer avec TCP/IP, par exemple CHGTELNA AUTOSTART(*YES)
…
Vérifiez votre QSTRUP, tenez le à jour. L’effort n’est pas immense, le modèle fourni par IBM n’ayant pas changé depuis la 7.1.
Vous serez alors en capacité d’aller plus loin dans la personnalisation de votre QSTRUP, comme par exemple la prise en compte des solutions de HA (haute disponibilité via réplication) avec rôle source ou cible associé au serveur, etc …
Bon démarrage !
Références IBM :
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rzal2/rzal2chgiplstartup.htm
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rzal2/rzal2sourceclstartupprog.htm
L’utilisation toujours plus importante de web services nous amène à devoir manipuler en RPG des données sous forme XML et JSON, pouvant représenter différents types de données, simples ou complexes.
Mais lorsqu’il s’agit de données binaires (image ou document pdf par exemple), ces informations doivent être converties en Base64 qui procure une représentation alphabétique de données binaires.
Voir la définition Wikipédia : https://fr.wikipedia.org/wiki/Base64
Afin de pouvoir encoder ou décoder ces valeurs depuis un programme RPG, nous devons nous appuyer sur des outils, chacun ayant ses avantages ou limitations :
- Les fonctions SQL SYSTOOLS.BASE64ENCODE et SYSTOOLS.BASE64DECODE sont limitées à 4Ko de données, bien souvent trop court
- Un projet de Scott Klement : http://www.scottklement.com/base64/
- Open Source ILE : https://github.com/RelicPackages/base64
- Fonctionnalité issue des différents langages supportés : PHP, Ruby, Node …
Nous proposons de voir ici une méthode avec Java, qui a la particularité de pouvoir être piloté directement par RPG.
Depuis Java 8, le runtime fournit les fonctions Base64 : https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html
Toutefois, cette classe utilise des classes internes Java (classe dans la classe), dont le prototypage n’est pas documenté pour le RPG.
Voici un exemple d’utilisation simple en Java :
Produit la sortie suivante :
Ici, Base64.Encoder et Base64.Decoder sont les classes internes.
Voir la définition Wikipédia : https://fr.wikipedia.org/wiki/Classe_interne
Voici un programme RPG qui implémente l’utilisation de ces mêmes classes :
Produit le résultat suivant :
En RPG, les classes Java internes se déclarent avec $ et ne sont utilisables que via la classe mère.
Pour utiliser cette fonctionnalité Base64, il vous suffit d’avoir une JVM 8 :
- vérifier la disponibilité sur votre système par GO LICPGM, produit JV1
- java *version en ligne de commande pour connaitre la JVM par défaut
- regarder la variable d’environnement JAVA_HOME si existante
L’utilisation de Java permet de dépasser la limite des 4Ko facilement. La nouvelle limite est maintenant la taille maximale d’une variable RPG (16Mo), qui s’avère suffisante dans les situations classiques.
Bon développement !
La dernière version de Access Client Solutions est disponible depuis le 20 juillet. Elle apporte des modifications et des évolutions, bien qu’étant une version mineure.
Le tour des nouveautés en image !
Liste des fonctionnalités
Gestionnaire de sessions
Copie de configuration système
Raccourci sur le bureau
Screen History Archive Viewer
Vous pouvez désormais enregistrer vos historiques écran et les relire en off !
Au niveau des sessions :
Pour les relire :
Des nouveautés SQL !
Accès au centre de santé
Insertion de code SQL généré dans un script
Gestion des droits
Accès aux journaux
On avait déjà accès, mais maintenant l’enregistrement est en clair