Exercice de transcodage :
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 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
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);
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 |
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). ✅
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.sql ✅ Application/Adhesion/TU/ChargeDB2/t_transco/transco03.sql ✅
- 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 ✅
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. ✅