Skip to content

Transcodage, CheckParm, RechercheCodeSortie, Ds Parms, CLLE, Unit Testing, SRVPGM, SAVRSTOBJ, RPGUnit, TDD, ChargeDB2, SQL

Notifications You must be signed in to change notification settings

Chrisdeparis/TRANSCOP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RPG : TRANSCOP

Exercice de transcodage :

Les DS en paramètres

TRANSCODS en entrée

Ce programme a pour fonction de recevoir en PARAMETRE un code long 20 alpha, exemple type client : 'code_entree'.

Le programme TRANSCOP

TRANSCODS en sortie

Le programme TRANSCOP retourne 2 paramètres le code_sortie et le returncode. ✅

+  > call transcop parm('christian')                ✅          
+  DSPLY  sqlcode 0 code_sortie 12345 trouvé     ✅  
+  DSPLY  returnCode = 0                         ✅   

le comportement attendu : ⚠ si le code d'entrée est à blanc -> erreur : return code = 1

+  > call transcop parm('')                           
+  DSPLY  Veuillez renseigner le code entree 
+  DSPLY  returnCode = 1      

si le code d'entrée n'est pas trouvé dans la table -> erreur : return code = 1

La table DB2/SQL

TRANSCOF

Il devra contrôler que le code en entrée est renseigné, si le code est renseigné alors il faudra chercher la correspondance de code dans une table (à créer).

Si le code est trouvé dans la table, alors le programme renvoie la valeur de correspondance dans le paramètre en sortie. Le code de sortie (trouvé dans la table) sera de type numérique (packed(5:0)).

Exemple de correspondance : dans la table TRANSCOF

    // chercher la correspondance entre la table et le paramètre
    exec sql
    select  code_sortie
    into :w_codesortie
    from transcof
    where code_entree = upper(:w_codeentree);

Les variables de travail

Intéret des variables de travail pour simplifier le code et manipuler les paramètres dans TRANSCOP.

      w_codeEntree = %char(transcoDs.inDs.code_entree);
      w_codeSortie = %dec(transcoDs.ouDs.code_sortie);
      w_returnCode = %dec(transcoDs.ouDs.returnCode);

La table TRANSCOF a 2 colonnes code_entree char(20), code_sortie packed(5:0).

code_entree code_sortie
CHRISTIAN 12345
JAMES 7000

Le TDD avec RPGUnit

Il s'agit dans cet exercice de se mettre en mode TDD (test driven development) ⚠⚠⚠ d'écrire une fonctionnalité dans transcop et d'écrire le cas de test (progamme de tu) correspondant (ex : contrôle paramètre entrant), d'écrire la fonctionnalité suivante (recherche code sortie dans la table) et de coder le cas de test correspondant.

Je pense à 3 cas de tests :

  • cas 01 (non passant) : paramètre à blanc -> return code = 1 ✅
  • cas 02 (non passant) : paramètre valide ( code_entrée = 'TOTO' ) mais code non trouvé dans la table -> return code = 1 ✅
  • cas 03 (cas passant) : paramètre valide ( code_entrée = 'JAMES' ) et code trouvé dans la table -> return code = 0, et code_sortie = 7000 ✅

Dans le SETUP il faudra créer la table transcoF dans la bibliothèque transcoTU (et la supprimer dans TEAR DOWN). ✅

ChargeDB2 en test unitaire

Pour les cas 02 et 03 il faudra utiliser chargeDB2 pour insérer des lignes dans la table transcoF, donc créer créer un script sql transco02.sql et transco03.sql ✅

  • Comment bien créer les script de test avec les data ? pour les cas 2 et 3

Les scripts de tests sont à ajouter en intégration dans l'IFS : ⚠

Application/Adhesion/TU/ChargeDB2/t_transco/transco02.sqlApplication/Adhesion/TU/ChargeDB2/t_transco/transco03.sql

Les modules et programme de service

T_TRANSCO pour tout regrouper ensemble

  • Le CLLE de Test Unitaire T_TRANSCO : gère la création des modules de TU et du programme de service de test avec l'envoi en intégration.
+  > CALL T_TRANSCO    ✅

Nota Bene

Ne pas oublier de compiler le programme TRANSCOP après toute modification sur ASDEV : ⚠

+  CRTSQLRPGI OBJ(MILFORT/TRANSCOP)    ✅

Et d'envoyer les modifications en intégration : ⚠⚠⚠

+  SAVRSTOBJ OBJ(TRANSCOP) LIB(MILFORT) RMTLOCNAME(SRV0803)  ✅
  • En Dev :
+  ADDLIBLE MILFORT 
+  > CALL TRANSCOP PARM('CHRISTIAN')
+  DSPLY  sqlcode 0 code_sortie 12345 trouvé     ✅  
+  DSPLY  returnCode = 0                         ✅  
  • En intégration : Bien ajouter toutes les LIB SRV0803 lancer les tests...
+  ADDLIBLE MILFORT 
+  ADDLIBLE RPGUNIT
+  ADDLIBLE ADHTU
+  > RUCALLTST T_TRANSCO  ✅
+  Success. 3 test cases, 30 assertions, 0 failure, 0 error.        ✅

About

Transcodage, CheckParm, RechercheCodeSortie, Ds Parms, CLLE, Unit Testing, SRVPGM, SAVRSTOBJ, RPGUnit, TDD, ChargeDB2, SQL

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published