Fonctions et procédures relatives aux chaînes de caractères
fonction longueur(val chaîne_source : chaîne) : entier;

fonction morceau(val var_chaîne : chaîne, 
                                 pos_début, pos_fin : entier) : chaîne;

fonction index(val chaîne_source, 
                          chaîne_recherchée : chaîne) : entier;

proc insérer(val chaîne_inseree : chaîne, position : entier, 
                    valres chaîne_source : chaîne);

proc effacer(val pos_début, pos_fin : entier, 
                   valres chaîne_source : chaîne);

# Exemples #
chaîne_source : chaîne := "Microsoft ajoutera un outil "
                                     + "XML à sa suite Office en 2003.";
taille : entier := longueur(chaîne_source);
taille := 58;

insérer("peut-être ", 19, chaîne_source);
chaîne_source : chaîne := "Microsoft ajoutera peut-être un outil "
                                    + "XML à sa suite Office en 2003.";
Fonctions et procédures relatives aux tableaux
  TABLEAU symbolisant la relation PERSONNEL
  id NOM PRENOM
L   T 001357 LECLERC Aurore
I   U 1013056 CONTINE Magalie
G o p 1036412 ASUR Aurianne
N u L 1055848 ALHEUR Jean-Christophe
E   E 1103256 PATTRON Delphine
S   S 1123480 MILLAUD Marc
  C O L O N N E S ou C H A M P S
fonction compter_ligne(val rel : relation) : entier;

fonction énumérer_ligne(val rel : relation) : entier;

fonction énumération_terminée(val numéro_énumération : entier) 
                                                                                      : booléen;

proc fermer_énumération(val numéro_énumération : entier);

fonction ligne_suivante(val numéro_énumération : entier) : ligne;

proc ajouter_ligne(val rel : relation, ligne : t_ligne, 
                           res ok : booléen);

proc supprimer_ligne(val rel : relation, clé : t_clé, 
                            res ok: booléen);

proc modifier_ligne(val rel : relation, ligne : t_ligne, 
                         res ok booléen);

proc rechercher_ligne(val rel : relation, clé : t_clé, 
                          res ligne : t_ligne, trouvé : booléen);

# Exemples #
var num_lignes : entier := compter_ligne(PERSONNEL);

ajouter_ligne(PERSONNEL, "1032578 MOULET Isabelle", reussi);

rechercher_ligne(PERSONNEL, 1036412, enregistrement, existe);

algorithme
  type opération : (1, 2, 3);
  type tuple : struct
  ID : entier,
  NOM : chaîne,
  PRENOM : chaîne
  fstruct;

  var action : opération;
        tableau : relation;
        ligne : tuple;
        ident : entier;
        nom, prénom : chaîne;

  proc affichage(val rel : relation);
  var i : entier := 0;

  début
  i := énumérer_ligne(rel);
  écrire("\tID \tNom \tPrénom");
  tant que non(énumération_terminée(i))
      ligne := tuple_suivant(i);
      avec ligne faire
        écrire("\t", ID, "\t", NOM, "\t", PRENOM);
      favec;
  fin tant que;
  fin

  proc modification(rel : relation);
  var réussi : boolean;

  début
  choix
      action = 1 -> cas
        écrire("fournissez les données (ID, NOM, PRENOM) :");
        lire(ident, nom, prénom);
        avec ligne faire
        lire(ID, NOM, PRENOM);
        favec;
        ajouter_ligne(rel, ligne, réussi);
        si réussi alors écrire("Ajout réussi !");
        sinon écrire("Echec de l'ajout !");
        fsi
      fcas
      action = 2 -> cas
        écrire("fournissez la clé de l'enregistrement (ID) :");
        lire(ident);
        supprimer_ligne(rel, ident, réussi);
        si réussi alors écrire("Suppression réussie !");
        sinon écrire("Echec de la suppression !");
        fsi
      fcas
      action = 3 -> cas
        écrire("fournissez les données (ID, NOM, PRENOM) :");
        avec ligne faire
        lire(ID, NOM, PRENOM);
        favec;
        modifier_ligne(rel, ligne, réussi);
        si réussi alors écrire("Modification réussie !");
        sinon écrire("Echec de la modification !");
        fsi
      fcas
  fchoix
  fin

  proc recherche(val rel : relation)
  var réussi : boolean;

  début
  écrire("fournissez la clé de l'enregistrement (ID):");
  lire(ident);
  rechercher_ligne(rel, ident, ligne, reussi);
  si réussi alors
      écrire("La recherche a réussi :\n");
      écrire(ligne);
  sinon écrire("La recherche a échoué !");
  fsi
  fin

début
  tableau := PERSONNEL;
  écrire("1 - Ajout d'un enregistrement,\n",
         "2 - Modification du tableau,\n",
         "3 - Recherche d'un enregistrement.\",
         "choix : ");
  lire(action);
  choix
  action = 1 -> cas
      affichage(tableau);
  fcas
  action = 2 -> cas
      modification(tableau);
  fcas
  action = 3 -> cas
      recherche(tableau);
  fcas
  fchoix
fin