> Tech > Le programme RPG

Le programme RPG

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

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

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis, conseils d'experts, témoignages clients, ainsi que les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et Collaboration, Impression et Infrastructure.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010