Désormais en possession des informa-tions sur les fichiers, nous pouvons créer le programme RPG. J'ai pris comme exemple un programme RPG III qui ne lit des enregistrements dans un fichier maître employés que si l'employé appar-tient au service ventes (sales department). Nous devons indiquer en cartes F du pro-gramme que
Le programme RPG
le fichier maître (EMPLF1) est un fichier avec clé. Nous mettons donc un K en position 31 de la carte F pour indiquer le type d’adressage de l’enregistrement (voir figure 5).
La figure 6 contient le code de la première boucle de lecture. Après avoir déplacé le texte SALES dans la zone
DEPT, j’utilise le code opération SETLL (Set Lower Limits) pour voir s’il existe des enregistrements pour le service ventes (sales department) et, si oui, pour définir le pointeur d’enregistrement pour les instructions de lecture. (*IN80 est à on si les commandes SETLL trouvent un enregistrement dont la valeur de clé est égale à la clé de recherche.) Je compare ensuite le résultat de l’opération SETLL en utilisant *IN80 pour voir s’il est néces-saire ou non de faire une lecture. (Pour-quoi entrer dans une boucle de lecture s’il n’y a pas d’enregistrement à lire ?)
Ligne 4, j’ai ma première opération READE (Read Equal), qui tente de lire un enregistrement dont les zones de clé correspondent à la liste des champs ou des clés en facteur 1. L’opération READE active *IN81 quand elle ne trouve pas un tel enregistrement. A la ligne 5, je crée une boucle DOW en utilisant l’opération DOWEQ (Do While Equal) pour vérifier le résultat de l’opération READE. Si *IN81 est à *OFF (c’est-à -dire si READE a trou-vé un enregistrement), le programme traite le code entre les instructions DOW et ENDDO. Si le READE ne parvient pas à trouver un enregistrement, la condition DOWEQ échoue au premier passage et la boucle DO n’est jamais exécutée.
Si la boucle DO est traitée, je dois avoir un enregistrement en provenance du fichier AS/400, correspondant à ma condi-tion de lecture (c’est-à -dire, un enregis-trement où DEPT = SALES). Le moment est venu d’effectuer les éventuels traite-ments concernant l’enregistrement de l’employé. Ligne 6, j’imprime une ligne détail pour un rapport d’employés.
Il faut à présent lire l’enregistrement de l’employé suivant du service ventes.
Ligne 7, il y a une seconde instruction READE dans la boucle DOWEQ, qui tente de lire un autre enregistrement avec une valeur de zone de clé spécifique. Si un enregistrement est trouvé, *IN81 reste à *OFF et le programme reste dans la boucle DOW. Si *IN81 est à *ON, c’est que le READE n’a pas trouvé d’enregistre-ment avec une ou plusieurs clés corres-pondant à mes critères et le programme quitte la boucle DOW, arrêtant du même coup la lecture.
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Les marchés publics peuvent-ils encore faire émerger des champions numériques français ?
- ESET accélère en France et mise sur l’IA face à la montée des cybermenaces
- Souveraineté des données : cessons de traiter le symptôme, attaquons-nous aux causes
- Asys accélère sur la planification intelligente avec l’acquisition de m-work
Articles les + lus
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
À la une de la chaîne Tech
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
