Lire la structure des zones d’un fichier via l’API QUSLFLD

Installation

  • Le programme exemple EXPSCAN001 utilisent les programmes de services SRVPFILFLD et SRVPCONVERT et les clauses COPY relatives qui doivent êtres installés. Ils sont décrits dans cet article :
  • Installation du programme fournit :
    • Indiquer MYBIB comme bibliothèque par défaut (le répertoire de liage MYBNDDIR est normalement dedans, si vous avez installé les programmes de services).
    • Copie du source QRPGLESRC_SQLRPGLE_EXPSCAN001.txt dans MYBIB/QRPGLESRC sous le nom EXPSCAN001 et le type SQLRPGLE.
    • Compilation via la commande CRTSQLRPGI OBJ(MYBIB/EXPSCAN001) SRCFILE(MYBIB/QRPGLESRC) SRCMBR(EXPSCAN001) OBJTYPE(*PGM) TGTRLS(V5R4M0) REPLACE(*YES) DBGVIEW(*SOURCE)

Principes du programme

  • Lecture sql via un curseur : select * from table (cela fonctionnerai aussi sur une lecture native).
  • associer une ds au fichier table.
  • utiliser l’API QUSLFLD pour déterminer pour une zone, son type, sa position pour obtenir sa valeur sous forme de chaîne de caractères et/ou numérique (l’exemple ne traite que les packés, décimales et chaîne de caractères).
  • Pour bien comprendre l’exemple :
    • Exécutez le en mode debug les valeurs obtenues pour bien comprendre comment il fonctionne.
    • Lancez le programme test avec un fichier QCLSRC en ligne. Le programme test les trois zones SRCSEQ, SRCDAT et SRCDTA.

Utilisations possibles

  • Sur certains progiciels, il arrive qu’un fichier soit paramétrable au point que diffisé chez plusieurs clients, les zone n’accueillent pas les mêmes notions. Lorsqu’il s’agit d’effectuer des extractions, les chôses se compliquent. Par ce moyen, il est possible de paramétrer les zones à  extraires pour que le traitement soit générique.
  • Mettre en oeuvre un paramétrage permettant de stocker des formules de calculs sans avoir à  coder les zones elles mêmes dans les programmes (par exemple : VAL01 + VAL03 + VAL05). C’est le programme générique qui analysera la DS pour récupérer les valeurs de VAL01, VAL03 et VAL05 au bon endroit dans la DS correspondant au fetch).

Contrainte

  • Il faut que le curseur corresponde à  une structure de fichier existant sur l’AS400.
Print Friendly, PDF & Email