Tag Archives: RPG

RÉINGÉNIERIE DE CODE RPG 5e étape – Indicateurs DSPF

Dans ce cadre, une  autre modernisation possible est d’utilisé le mot clé INDARA au niveau fichier dans le DDS.

     A                                      DSPSIZ(27 132 *DS4)
     A                                      MSGLOC(27)
     A                                      PRINT
     A                                      HELP
     A                                      HLPPNLGRP('PGMF01' PGMF01)
     A                                      HLPTITLE('Aide générale -
     A                                      sur PGMF01')
     A                                      ALTHELP(CA01)
     A                                      INDARA
     A                                      REF(LOTS)     

Cela permet de lier une DS utilisable dans le source RPG ILE qui contiendra une version plus explicite des indicateurs utilisés dans le DSPF.

Dans le source RPG ILE, nous déclarerons cette DS au niveau du fichier DSPF avec le mot clé Indds.

       dcl-f PGMF01FM workstn sfile(sfl01 :wran01) infds(dssfl1) indds(IndDs);

Exemple de déclaration de la DS en elle-même:

       Dcl-ds IndDs;
        Rollup Ind Pos(2);
        Sflnxtchg Ind Pos(8);
        Zoptpr Ind Pos(20);
        Znomred Ind Pos(30);
        Sflend Ind Pos(7);
        Sfldsp Ind Pos(4);
        Sfldspctl Ind Pos(5);
        Sflclr Ind Pos(6);
        Sflend_no_rollup Ind Pos(7);
        Sflinz_Msgf Ind Pos(10);
        Sflend_Msgf Ind Pos(09);
       End-ds;     

RÉINGÉNIERIE DE CODE RPG 1re étape RPG III vers RPG ILE
RÉINGÉNIERIE DE CODE RPG 2e étape – Code en commentaire
RÉINGÉNIERIE DE CODE RPG 3e étape Indicateurs Fichier
RÉINGÉNIERIE DE CODE RPG 4e étape – Touches de fonction

RÉINGÉNIERIE DE CODE RPG 3e étape Indicateurs Fichier

3ème étape : Convertir les indicateurs des opérations sur fichiers par l’usage du BIF correspondant:

  • CHAIN
    • Indicateur HI correspond à %Found,
    • Indicateur LO correspond à %Error,

Exemple:

     C     CLNFC2        CHAIN     TNFCP                              60

Devient:

         CHAIN CLNFC2 TNFCP;

         If not %found(TNFCP);
  • SETLL
    • Indicateur HI correspond à %Found,
    • Indicateur LO correspond à %Error,
    • Indicateur EQ correspond à %Qual,

Exemple:

 C     CLNFC         SETLL     TNFCP                              
    60
    

Devient

         SETLL CLNFC2 TNFCP;

         If %Equal(TNFCP);
  • UPDATE
    • Indicateur LO correspond à %Error,
  • DELETE
    • Indicateur HI correspond à %Found,
    • Indicateur LO correspond à %Error,

Exemple

     C     CLNFC2        DELETE    TNFCF                              70
     C   70              MOVE      '1'           *IN72

Devient

                 DELETE CLNFC2 TNFCF;
                 If Not %found(TNFCF);
     C                   MOVE      '1'           *IN72
                 Endif; 

 

L’usage de la fonction de transformation en format libre de RDI peut vous y aider. Les indicateurs seront alimentés par les BIF correspondants.

 

     C     CLNFC         CHAIN     TUCHF                              78      

Sera remplacé par:

CHAIN CLNFC TUCHF;
*In78 = not %Found(TUCHF);      

Ensuite vous pourrez changer l’indicateur par le BIF correspondant.

RÉINGÉNIERIE DE CODE RPG 1re étape RPG III vers RPG ILE
RÉINGÉNIERIE DE CODE RPG 2e étape – Code en commentaire
RÉINGÉNIERIE DE CODE RPG 4e étape – Touches de fonction
RÉINGÉNIERIE DE CODE RPG 5e étape – Indicateurs DSPF

RÉINGÉNIERIE DE CODE RPG 2e étape – Suppression code en commentaire

La deuxième étape est de supprimer les lignes de code mises en commentaire, il y a des chances pour que la raison de cette mis en commentaire ne soit plus connue.

De plus, dans une entreprise bien organisée, des sauvegardes de sources ont lieu régulièrement sur bande.

Et supprimer les tag mis par les programmeur dans les colonnes 1 à 5, un commentaire bien explicite sera plus efficace.

RÉINGÉNIERIE DE CODE RPG 1re étape RPG III vers RPG ILE
RÉINGÉNIERIE DE CODE RPG 3e étape Indicateurs Fichier
RÉINGÉNIERIE DE CODE RPG 4e étape – Touches de fonction
RÉINGÉNIERIE DE CODE RPG 5e étape – Indicateurs DSPF

RÉINGÉNIERIE DE CODE RPG 1re étape RPG III vers RPG ILE

Face à un vieux sources OPM en RPG III, il est nécessaire d’y faire de la réingénierie , en d’autre terme réorganiser et moderniser le source pour qu’il devienne plus lisible et plus facile  à maintenir.

La première étape est de convertir le source RPG III en RPG IV. La commande native utilisée est CVTSRCPF. (ou avec UPGRPGSRC  de https://software.projex.com/ , je n’ai pas essayé, si vous l’avez fait, n’hésiter pas à nous faire un retour dans les commentaires).

CVTRPGSRC FROMFILE(MABIB/QRPGSRC)
          FROMMBR(SOURCEMBR)     
          TOFILE(MABIB/QRPGLESRC)
          TOMBR(SOURCEMBR)       

RÉINGÉNIERIE DE CODE RPG 2e étape – Code en commentaire
RÉINGÉNIERIE DE CODE RPG 3e étape Indicateurs Fichier
RÉINGÉNIERIE DE CODE RPG 4e étape – Touches de fonction
RÉINGÉNIERIE DE CODE RPG 5e étape – Indicateurs DSPF