Moderniser votre code RPG avec Agilité – Partie 1
lun 30 décembre 2019Du RPG III au RPG IV – CVTRPGSRC
Vous savez que plusieurs versions de langages RPG peuvent cohabiter sur IBM i et qui sont présent depuis OS400 (Voir IBM 36, mais ici nous n’irons pas si loin). C’est pourquoi sur ces OS, vous trouvez du RPG III, RPG IV, RPG Ile, RPG Free-form ou du RPG Full-free.
Aujourd’hui, il n’existe pas encore de produit gratuit qui va vous convertir un source de RPG III à RPG Full-free. Il va falloir monter progressivement de version.
Les difficultés sont multiples, la structure de codage diffère, monobloc sur les plus vieilles versions vers du refactoring de plus en plus fin avec les plus modernes. L’usage de sous-routines est remplacé par celui de sous-procédure par exemple qui seront externalisées dans d’autres membres sources ou fichiers texte hébergés sur l’IFS. Les mots-clefs des anciennes versions de RPG n’auront pas toujours d’équivalent dans les plus récentes. Et il y a bien sûr d’autres raisons.
Le premier niveau que nous allons voir est le plus simple, passer de RPG III à RPG IV. Par chance, IBM a fourni une commande CL pour le faire simplement :
CVTRPGSRC
Voici une exemple d’utilisation de cette commande sur le source ci-dessous.
CVTRPGSRC FROMFILE(BIBORI/QRPGSRC) FROMMBR(PGM0001R) TOFILE(BIBDEST/QRPGLESRC)
H * FICHIER CLIENT *--------------- FBNCLTL01IF E K DISK * * ADRESSE CLIENT *--------------- FBACLTL02IF E K DISK *----------------------------------------------------* * PARAMETRES *----------------------------------------------------* C *ENTRY PLIST C PARM $ODCLI 8 C MOVE $ODCLI CODCLI *---------------------------------------------------- * CLES *---------------------------------------------------- C CLTL02 KLIST C KFLD CODCLI C KFLD ACATEG * *---------------------------------------------------- * INITIALISATIONS *---------------------------------------------------- C Z-ADD20 SATJOU C Z-ADDUYEAR AATJOU C Z-ADDUMONTH MATJOU C Z-ADDUDAY JATJOU C MOVE '/' SLASH1 C MOVE '/' SLASH2 C MOVE '-' TIRET1 C MOVE '/' SLASH3 * RECHERCHE CLIENT C CODCLI CHAINBNCLTL01 60 * RECHERCHE ADRESSE CLI C MOVE 'CLI' ACATEG C CLTL02 CHAINBACLTL02 60 C N60 NIDEAD CHAINBACISL01 60 C *IN60 IFEQ '0' C MOVE ALIGN3 CLIGN3 C MOVE ALIGN4 CLIGN4 C MOVE ALIGN5 CLIGN5 C MOVE ALIGN6 CLIGN6 C ENDIF
Voici la version RPG IV résultante, vous remarquerez assez peu de différence car les mots du RPG III ont leurs équivalents en RPG IV.
La position des colonnes aura changé, les mot-clefs seront un peu différents mais vous ne serez pas « encore » dépaysé. Vous retrouvez les colonnes, les indicateurs, le cycle etc…
H * FICHIER CLIENT *--------------- FBNCLTL01 IF E K DISK * * ADRESSE CLIENT *--------------- FBACLTL02 IF E K DISK *----------------------------------------------------* * PARAMETRES *----------------------------------------------------* C *ENTRY PLIST C PARM $ODCLI 8 C MOVE $ODCLI CODCLI *---------------------------------------------------- * CLES *---------------------------------------------------- * C CLTL02 KLIST C KFLD CODCLI C KFLD ACATEG *---------------------------------------------------- * INITIALISATIONS *---------------------------------------------------- C Z-ADD 20 SATJOU C Z-ADD UYEAR AATJOU C Z-ADD UMONTH MATJOU C Z-ADD UDAY JATJOU C MOVE '/' SLASH1 C MOVE '/' SLASH2 C MOVE '-' TIRET1 C MOVE '/' SLASH3 * RECHERCHE CLIENT I C CODCLI CHAIN BNCLTL01 60 * RECHERCHE ADRESSE CLI I C MOVE 'CLI' ACATEG C CLTL02 CHAIN BACLTL02 60 C N60NIDEAD CHAIN BACISL01 60 C *IN60 IFEQ '0' C MOVE ALIGN3 CLIGN3 C MOVE ALIGN4 CLIGN4 C MOVE ALIGN5 CLIGN5 C MOVE ALIGN6 CLIGN6 C ENDIF
Il n’y a plus qu’à…
[…] Moderniser votre code RPG avec Agilité – Partie 1 […]
[…] Moderniser votre code RPG avec Agilité – Partie 1 […]
[…] Moderniser votre code RPG avec Agilité – Partie 1 […]
[…] Moderniser votre code RPG avec Agilité – Partie 1 […]