Code Monkey home page Code Monkey logo

transcop's Introduction

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.        ✅

transcop's People

Contributors

chrisdeparis avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.