Présentation du langage RPG 4

BoTTom |    Changer de couleur
 
Le langage RPG est un langage ancien ayant vécu de nombreuses modifications:
 
 GAP II sur IBM 34/36
 
les lignes sont colonnées et il existe différents découpages, reconnus grâce
à une lettre en position 6 (on appelle cela des spécifications ou  spécifs)
 
 
H pour les paramètres généraux (l'entète)
 
F pour décrire les fichiers lus
 
E pour déclarer les tableaux (tout ce qui est à occurences)
 
I  pour indiquer la structure (comment découper) les enregistrements lus
 
C  ce sont les lignes de traitement
 
O  pour indiquer la structure des enregistrements écrits
 
 


|    Changer de couleur
 Puis sur l'IBM 38, la version du RPG (on dit aussi GAP) passe à 3
 
  Quelques différences :
 
   le 38 implémente une base de données, la structure des fichiers est
    connue et répercutée automatiquement dans les programmes
 
   ==> les spécif I et O disparraissent  (sauf quelques exeptions)
 
   ==> les ordres structurés IF, DOW/DOU sont implémentés à ce moment là
 
   ==> on peut remplacer les ordres d'entrée/sortie par du SQL.
 
   Les traitemenst sont toujours en Spécif C (colonnées)
 
 
 
Enfin le GAP4 est proposé avec la version 3 du l'OS/00, puis la version 5
 
 en version 3, la spécif C est assouplie, en version 5 elle est abandonée.
 
 


|    Changer de couleur
Exemple : remplacement des départements à 0 par la valeur 75
 
  FCLIENT    IF   E           K DISK
 
 La spécification F(déclaration du fichier) sera commune à tous les exemples
 
  ici IF signifie un fichier en lecture, traité par le programme
      K  indique que l'on utilise l'index (traitement sur le N° de client)
      DISK qu'il s'agit dun fichier Base de donnée (pas un état ni un écran)
 
 A la GAP 3 (ou RPG 3) 
  (En RPG on manipule les formats , plutôt que les noms de fichier)
  C                   read      clientF                                90
  C     *in90         doweq     *off
  C     dept          ifeq      0
  C                   z-add     75            dept
  C                   update    clientF
  C                   endif
  C                   read      clientF                                90
   * fin du pgm
  C                   move      *on           *inlr
 


|    Changer de couleur
 RPG 4 (OS version 3 et 4) 
  C                   read      clientF
  C                   dow       not %eof
  C                   if        dept = 0
  C                   eval      dept = 75
  C                   update    clientF
  C                   endif
  C                   read      clientF
  C                   enddo
  C                   eval      *inlr = *on
 RPG 4 (OS version 5) 
   /free
      read clientF ;
      dow  not %eof;
         if dept = 0 ;
           dept = 75 ;
           update clientF;
         endif ;
         read clientF ;
      enddo;
      *inlr = *on
   /end-free





©AF400