From armonie-ibmi-skills
Expert RPG III (RPG/400) sur IBM i en format colonnes. Genere du code RPG III avec specifications positionnelles (H/F/E/I/C/O), indicateurs, conditions IFxx, boucles DOWxx/DOUxx/DO, acces fichiers (READ, CHAIN, SETLL, WRITE, UPDAT, DELET), sous-programmes (EXSR/BEGSR/ENDSR), appels externes (CALL/PARM), ecrans 5250 (EXFMT/DSPF), sous-fichiers, KLIST/KFLD, tableaux, CAT, GOTO/TAG, REDPE, COMP, verrouillage N. Base sur la documentation officielle IBM RPG/400 Help. Use when user asks to write RPG III code, understand legacy RPG/400 programs, convert RPG III to RPG ILE, create DSPF screens for RPG III, explain column-based RPG syntax, or troubleshoot RPG III compilation errors. Trigger phrases - RPG III, RPG/400, RPG 3, GAP, programme RPG colonnes, format fixe RPG, indicateurs RPG, SETON LR, CRTRPGPGM, code RPG ancien, legacy RPG, programme GAP, migrer RPG III, convertir RPG III. Do NOT use for RPG ILE full free (use rpg-ile-expert instead), SQLRPGLE, or modern RPG with ctl-opt and dcl-s.
How this skill is triggered — by the user, by Claude, or both
Slash command
/armonie-ibmi-skills:rpg3-expertThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Skill de reference pour le developpement et la maintenance de programmes RPG III (RPG/400) sur IBM i.
Skill de reference pour le developpement et la maintenance de programmes RPG III (RPG/400) sur IBM i. Enrichi avec la documentation officielle IBM RPG/400 Help (Copyright IBM Corporation 1992, 2006).
Analyser la demande et classifier :
| Type de besoin | Reference a lire EN PREMIER | Exemple de script |
|---|---|---|
| Syntaxe RPG III, specifications, structure programme | references/syntaxe-specifications.md | scripts/syntaxrpg3.rpg |
| Acces fichiers, CRUD base de donnees | references/acces-fichiers.md | scripts/rpg3.rpg |
| Ecrans 5250, DSPF, sous-fichiers en RPG III | references/ecrans-dspf.md | scripts/psoldat.rpg, scripts/esoldat.dspf |
| Sous-programmes, appels externes, CALL/PARM | references/sous-programmes.md | scripts/arm400.rpg |
| Calculs, conditions, boucles, tableaux, CAT, GOTO | references/syntaxe-specifications.md | scripts/rimpots.rpg, scripts/tableau.rpg |
| Comprendre/analyser un programme RPG III existant | references/syntaxe-specifications.md + references/acces-fichiers.md | — |
| Migrer RPG III vers RPG ILE | references/migration-ile.md | — |
CRITICAL: Toujours lire le guide de reference correspondant AVANT de generer du code RPG III. Si le besoin couvre plusieurs domaines (ex: ecran + fichiers + calculs), lire TOUS les guides concernes.
Fichiers de reference disponibles :
references/syntaxe-specifications.md — Specifications H/F/E/L/I/C/O, indicateurs, conditions, boucles, arithmetique, tableaux, data structures, CAT (concatenation), GOTO/TAG, LEAVE/ITER, COMP, MOVE/MOVEL avec paddingreferences/acces-fichiers.md — SETLL, SETGT, READ, READE, READP, REDPE, READC, CHAIN, WRITE, UPDAT, DELET, KLIST/KFLD, option N (no-lock), indicateur EQ sur SETLL, constantes figurativesreferences/ecrans-dspf.md — DSPF pour RPG III, EXFMT, WORKSTN, CF/CA, couleurs, formats multiples, sous-fichiersreferences/sous-programmes.md — EXSR, BEGSR/ENDSR, *PSSR, *INZSR, CALL, PARM, PLIST, RETRN, FREE, CAS/ENDCS, EXFMT, groupement des references programmereferences/migration-ile.md — Guide de migration RPG III vers RPG ILE full freeRegles OBLIGATOIRES dans tout code RPG III genere :
* en position 7 indique un commentaire.* en colonne 7, ou par * apres la specification C pour les commentaires en ligne.dcl-s dim().** — Les donnees de tables/tableaux charges a la compilation sont placees apres ** en fin de source.Positions : 7-8 = Indicateur de controle (niveau L1-L9, LR, SR)
9-17 = Indicateurs de condition (N01-N99)
18-27 = Factor 1
28-32 = Code operation (ADD, SUB, IFEQ, READ, etc.)
33-42 = Factor 2
43-48 = Zone resultat
49-51 = Longueur zone resultat
52 = Decimales
53 = H (half-adjust), P (padding), N (no-lock)
54-55 = Indicateur Hi/NR (positif, non trouve)
56-57 = Indicateur Lo/ER (negatif, erreur)
58-59 = Indicateur Eq/EOF/BOF (egal, fin/debut fichier)
60-74 = Commentaires
Checklist de qualite :
* en colonne 7** en fin de source pour les tableaux a la compilationUtilisateur dit : "Fais-moi un Hello World en RPG III"
Actions :
references/syntaxe-specifications.md pour MOVEL, MOVE, DSPLY, SETONResultat :
C MOVEL'Hello' HELLO 13
C MOVE 'World !' HELLO
C HELLO DSPLY
C SETON LR
Compilation : CRTRPGPGM PGM(MABIB/MONPGM) SRCFILE(MABIB/QRPGSRC)
Utilisateur dit : "Je veux lire tout le fichier CLIENT et afficher les prenoms"
Actions :
references/acces-fichiers.md pour SETLL, READ, DOWEQscripts/rpg3.rpg pour l'exemple completResultat : Programme RPG III compilable avec boucle DOWEQ et indicateur 90.
Utilisateur dit : "Je veux un ecran de gestion avec creation, modification et suppression"
Actions :
references/ecrans-dspf.md pour la structure DSPF et les formatsreferences/acces-fichiers.md pour CHAIN, WRITE, UPDAT, DELETscripts/psoldat.rpg et scripts/esoldat.dspf pour un exemple completResultat : Application 5250 complete avec CRUD et messages utilisateur.
Utilisateur dit : "Je veux un ecran avec une liste paginee (sous-fichier)"
Actions :
references/ecrans-dspf.md section sous-fichiers RPG IIIscripts/arm400.rpg pour l'exemple completUtilisateur dit : "Je veux concatener un nom et un prenom"
Actions :
references/syntaxe-specifications.md section CATResultat :
C NOM CAT PRENOM:1 NOMCPT 30P
Utilisateur dit : "Je veux juste verifier si un client existe, sans lire le record"
Actions :
references/acces-fichiers.md section SETLL avec indicateur EQResultat :
C NUMCLI SETLLCLIENT 55
C *IN55 IFEQ '1'
C 'EXISTE' DSPLY
C ENDIF
Cause : Les specifications ne sont pas dans l'ordre H, F, E, L, I, C, O. Solution : Reorganiser le source dans le bon ordre.
Cause : Pas de SETON LR en fin de programme.
Solution : Ajouter C SETON LR avant la fin du source.
Cause : Pas de SETLL avant le premier READ.
Solution : Utiliser SETLL *LOVAL fichier pour positionner au debut du fichier.
Cause : Un UPDAT ou DELET est execute sans avoir fait un READ ou CHAIN avant, OU la lecture a ete faite avec N (no-lock) en position 53. Solution : Toujours lire l'enregistrement (READ ou CHAIN) sans N en position 53 avant de le modifier (UPDAT) ou le supprimer (DELET). Le verrouillage est necessaire.
Cause : La zone resultat est plus petite que le facteur 2. Solution : MOVE aligne a droite (tronque a gauche), MOVEL aligne a gauche (tronque a droite). Ajuster la longueur de la zone resultat. Utiliser P en position 53 pour padder avec des blancs/zeros.
Cause : Donnees ** manquantes en fin de source pour les tableaux charges a la compilation.
Solution : Ajouter les lignes ** suivies des donnees du tableau apres la derniere ligne de code.
Cause : Indicateur de non-trouve place en col 58-59 au lieu de col 54-55. Solution : Pour CHAIN, l'indicateur non-trouve va en col 54-55 (NR). Les col 58-59 doivent etre vides. Pour READ/READE, l'indicateur EOF va bien en col 58-59.
Cause : Cle packed avec format interne different. Si le fichier utilise X'123C' (packed +123) et que l'argument est 123, le RPG utilise X'123F'. Solution : S'assurer que l'argument de recherche correspond exactement au format interne de la cle. Verifier le type de cle dans le DDS.
Cause : SETGT positionne apres la cle specifiee. Le record precedent n'a jamais la meme cle que le record courant apres SETGT. Solution : Utiliser CHAIN, SETLL, READ, READP ou READE (avec Factor 1) pour positionner avant un REDPE.
Cause : Le nom du programme contient des blancs, des minuscules ou des guillemets inattendus.
Solution : Verifier que le litterral dans CALL ne contient pas de blancs autour du /. Les minuscules ne sont PAS converties en majuscules. Les guillemets font partie du nom.
Cause : Les blancs de fin de Factor 1 sont inclus dans le resultat quand le nombre de blancs n'est pas specifie.
Solution : Toujours specifier le nombre de blancs apres : (ex: CAT FLD:1) pour controler les espaces. Utiliser P en position 53 pour padder le resultat.
Cause : Quand SETLL ou SETGT ne trouve aucun record correspondant, le fichier est positionne en fin de fichier. Solution : Verifier l'indicateur NR (col 54-55) apres SETLL/SETGT avant de faire un READ.
CRTRPGPGMnpx claudepluginhub sylvainarmonie/armonie-group-armonie-ibmi-skills --plugin armonie-ibmi-skillsAssists with ABAP code for SAP systems: internal tables, structures, ABAP SQL, OOP, RAP, CDS views, EML statements, ABAP Cloud, strings, dynamic programming, RTTI/RTTC, field symbols, data references, exceptions, unit testing.
Creates new ABAP programs (Report, CRUD, ALV, Batch) with Main+Include structure supporting OOP or Procedural paradigms using a multi-phase coding and QA pipeline.
Queries a plugadvpl index to look up ADVPL metadata (functions, callers/callees, table usage, MV_ params, SX3 fields, SX7 chains) before reading full source files, reducing token usage 10-50x.