Les nouveaux calculs RPG en format libre ont éliminé virtuellement toutes les restrictions liées aux colonnes dans les versions Factor 2 traditionnelles et étendues de la carte C. La figure 1 montre un exemple de code en format libre. En le lisant, on s'aperçoit que malgré son format libre, c'est
Parce que je suis libre (/FREE)
encore du RPG IV, donc pas difficile à comprendre. Tout le coding en format libre apparaît dans un bloc situé entre une directive /FREE au début et une directive /END-FREE à la fin. A l’intérieur du bloc Free, on peut coder des spécifications en format libre en un point quelconque des colonnes 8 à 80 ; aucun identificateur de spécification n’est requis en colonne 6.
Tout le code qui existe à l’extérieur des blocs Free doit se conformer aux restrictions de colonnes standard. Quand le compilateur rencontre une directive /COPY dans un bloc Free, il revient implicitement au format fixe pour le code copié, puis reprend le mode en format libre après la copie. Si le membre /COPY inclut également du code en format libre, il doit placer le code dans son propre bloc Free avec ses propres directives.
On ne peut avoir qu’une instruction par ligne, mais une instruction peut s’étendre sur plusieurs lignes de code (bien que les littéraux numériques ne puissent pas se poursuivre sur de multiples lignes). Les instructions peuvent commencer n’importe où des colonnes 8 à 80n, et on peut décaler (mettre en retrait) les instructions pour bien montrer la structure du code. L’instruction en format libre finit toujours par un point-virgule. La nouvelle syntaxe accepte des commentaires dans la ligne en commençant par une double barre oblique n’importe où dans la ligne.
Généralement, une instruction commence par un code opération ; si ce n’est pas le cas, le compilateur évalue l’instruction comme si un code opération EVAL ou CALLP était présent. Si une instruction est constituée d’une expression d’assignation (avec opérateur = assignment), le compilateur suppose qu’il s’agit de EVAL (A en figure 1). Sinon, il suppose qu’il s’agit de CALLP (B en figure 1).
Notons également en B de la figure 1 que l’on peut désormais faire référence à des procédures qui n’ont aucun paramètre, en codant des parenthèses vides. En utilisant des parenthèses pour coder toutes les procédures, qu’elles aient ou non des paramètres associés, on peut facilement identifier les procédures dans le code et donner aux appels de procédures RPG la même apparence qu’aux appels de méthodes en Java ou C.
On peut inclure des extensions de code opération avec n’importe quel code opération, immédiatement après ce dernier, entre parenthèses. Un blanc au moins doit suivre le code opération (et l’extension éventuelle).
En général, la nouvelle syntaxe supportera les codes opérations RPG traditionnels, mais avec le Factor 1 suivant le code opération au lieu de le précéder :
Code opération Factor 1 Factor 2 Résultat
Il faut séparer chaque élément d’une instruction par au moins un blanc. La figure 2 résume la syntaxe en format libre de chaque code opération RPG IV. Seule la partie soulignée est obligatoire.
La syntaxe en format libre ne permet pas de définir les champs de travail dans des calculs et elle n’autorise pas non plus d’indicateurs résultants. Au lieu d’indicateurs résultants, on utilise des fonctions intégrées (%EOF, %EQUAL, %FOUND) pour consulter les résultats d’une opération. On utilise également les fonctions %ERROR et %STATUS conjointement à l’extension (E) pour détecter des conditions d’erreur. En cas d’erreur, certaines des autres fonctions risquent de n’être pas correctement définies, c’est pourquoi il faut vérifier la condition de %ERROR ou %STATUS avant d’utiliser %EOF, %EQUAL et %FOUND.
La figure 3, qui donne la liste des codes opérations non supportés par la syntaxe en format libre, raconte une toute autre histoire que la figure 2. De nombreux codes opérations anciens comme ADD, Z-ADD, MOVE et SETON, ont été retirés pour céder la place à des remplaçants en format libre, plus jeunes. La plupart des codes opérations enlevés étaient soit obsolètes, soit peu utilisés. Un bon style RPG passe par l’utilisation des structures de remplacement suggérées. Pour les rares cas qui exigent l’un des codes opérations en format fixe (aucune autre opération n’a la force d’un TESTB placé au bon endroit !), on peut bloquer le code entre des directives /END-FREE et /FREE.
Téléchargez cette ressource
SIEM & PME : Comment construire la boîte noire de votre SI ?
Passez à la cybersécurité proactive, transformez la collecte et l’analyse des logs en un bouclier dynamique contre les cybermenaces. Découvrez comment mettre en place une approche SIEM modulaire, évolutive et accessible, pour anticiper, détecter et réagir efficacement aux attaques.
Les articles les plus consultés
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Cybersécurité Active Directory et les attaques de nouvelle génération
- Afficher les icônes cachées dans la barre de notification
- Les 6 étapes vers un diagnostic réussi
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
Les plus consultés sur iTPro.fr
- Souveraineté numérique : la résilience l’emporte sur l’indépendance totale
- IA de confiance : le facteur clé pour rentabiliser les projets d’entreprise
- Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
- Hôpitaux virtuels : renforcer le système de santé français grâce au numérique
Articles les + lus
Guide Ultime des Raccourcis Clavier Windows 11 pour les Professionnels IT
Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
Model Context Protocol : le contexte, grand oublié du débat
Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
À la une de la chaîne Tech
- Guide Ultime des Raccourcis Clavier Windows 11 pour les Professionnels IT
- Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
- Model Context Protocol : le contexte, grand oublié du débat
- Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
