L4G >  Insa  

Afficher tout Masquer tout

Insa permet d'insérer des éléments 'vides' dans des tableaux mono-dimensionnés, à partir d'un indice donné.

 

Syntaxe

   Insa début [ , nombre [ , borne ] ] liste_nom_var

 

Paramètres

Elément

Description

Restrictions

début

Expression numérique entière de l'indice dans les tableaux à partir duquel se fait l'insertion

Le début doit :
- être au moins égal à la plus grande des bornes inférieures des tableaux ;
-  ne pas dépasser la plus petite des bornes supérieures des tableaux.

nombre

Expression numérique entière du nombre d'éléments à insérer.

nombre > 0

borne

Expression numérique entière de l'indice dans les tableaux où se termine l'insertion.

La borne ne doit pas dépasser la plus petite des bornes supérieures des tableaux.

liste_nom_var

Liste de nom_var séparées par le caractère ','.

Aucune.

nom_var

nom_de_variable désignant le tableau dans lequel s'effectue l'insertion. Dans le cas d'un tableau déroulant, il s'agit de la variable de bas de tableau.

Aucune.

 

Exemples

   # Lecture des N premiers enregistrements du fichier CLIENT et
   # insertion des noms et clés (dans l'ordre des noms) dans 2 tableaux.
   # La variable MAX désigne la position du dernier élément des tableaux
    Local File CLIENT
    Char NOM (20) (N), CLE (4) (N)
    Local Shortint I, MAX : MAX = 0

   # (Suite de l'exemple précédent)
    Read [CLI]CODCLE First
    While MAX < dim(NOM) & fstat = 0       :# fin de tableau ou de fichier
        I = 0
        While NOM(I) <> "" & [F]NOM > NOM(I) : I += 1 : Wend
        If NOM(I) <> ""
          
Insa I, 1 NOM, CLE
        Endif
        NOM(I) = [F]NOM
        CLE(I) = [F]CLE
        MAX   += 1
        Read [CLI]CODCLE Next
    Wend

   # Insertion de lignes dans un tableau déroulant (dont la variable de
   # bas de tableau a pour nom NLI) selon des paramètres variables
    Insa [V]DEB, [V]NB, [V]FIN   [M]NLI

   # On dispose de 2 tableaux d'éléments (issus d'un jeu de libellés sur
   # des noms de pilotes de terminaux). L'un (NOM) comporte les noms des
   # fichiers, l'autre (CAR) les caractères "associés" :

 

0

1

2

3

4

5

...

CAR

A

A

H

I

V

V

...

NOM

ansi

at386

hp

ibm3151

vt200

vt220

...

 

   # Supposons que l'on veuille y insérer 2 éléments en 3ème position
   # (donc en rang 2) :

    Insa 2, 2 CAR, NOM

   # Le résultat de cette instruction sera :

 

0

1

2

3

4

5

6

7

...

CAR

A

A

spacer.gif (822 octets)

spacer.gif (822 octets)

H

I

V

V

...

NOM

ansi

at386

spacer.gif (822 octets)

spacer.gif (822 octets)

hp

ibm3151

vt200

vt220

...

 

   # Supposons maintenant que la borne ait une valeur inférieure au
   # nombre d'éléments des tableaux :

 

0

1

2

3

4

5

...

CAR

A

A

spacer.gif (822 octets)

spacer.gif (822 octets)

H

V

...

NOM

ansi

at386

spacer.gif (822 octets)

spacer.gif (822 octets)

hp

vt220

...

   #              on "perd" les éléments I, ibm3151 et V, vt200
   #             et l'on garde ceux au-delà de la borne : V, vt220

 

Description

Insa permet d'insérer des éléments 'vides' (1 par défaut) dans un ensemble de tableaux monodimensionnés. Ces éléments valent zéro (valeur 0, date nulle ou chaîne vide) et sont non initialisés dans le cas d'un tableau déroulant. Dans la syntaxe de l'instruction, début détermine l'indice (commun à tous les tableaux) où commence l'insertion et nombre désigne le nombre d'éléments à insérer.

Dans chaque tableau, les éléments sont décalés depuis 'début', d'un nombre de positions égal à 'nombre'. Les 'nombre' derniers éléments du tableau sont mis à zéro (la 'borne' par défaut est la fin du tableau).

Donner une valeur à 'borne' qui soit inférieure à la plus petite des bornes inférieures des tableaux (une valeur supérieure n'aurait pas de sens), signifie que l'on s'intéresse à une restriction du tableau. Dans ce cas on perd les 'nombre' éléments placés juste avant 'borne', les éléments avant 'début' et après 'borne' étant inchangés. Le dessin qui suit simule l'insertion de 'nombre' positions dans un tableau d'éléments, D désignant le 'début' et B la 'borne' (notons que l'élément d'indice 'borne' est perdu) :

 

 

 

D

Perdus B

 

Avant

I

I

...

I

D

D

...

D

D

P

P

...

P

I

I

...

I

Après

I

I

...

I

 

 

...

 

D

D

...

D

spacer.gif (822 octets)D

I

I

...

I

 

Inchangés

Nombre

Décalés

Inchangés

Dans le cas  d'une insertion dans un tableau déroulant, le nom de la   variable  à  indiquer est celui de la variable de bas de tableau ; elle désigne alors l'ensemble des variables du tableau déroulant.

 

Remarques

insertion de lignes dans un tableau déroulant

début détermine la ligne où commence l'insertion. le numéro de ligne commence à 0.
nombre
désigne le nombre de ligne à insérer.
Pour que la ligne complète du tableau soit insérée, on renseigne dans Liste_nom_var, la variable de bas de tableau.
Borne n'est pas à renseigner.

Attention, la variable de bas de tableau n'est pas mise à jour automatiquement par le moteur.

 

Erreurs associées

Erreur

Description

ERMODE (10)

début, nombre ou borne n'est pas numérique.

ERINDI ( 8)

L'un des indices sort des bornes de l'un des tableaux.

ERDOM (50)

nombre <= 0.

ERDIM (55)

L'une des variables n'est pas mono-dimensionnée.

 

Mots-clés associés

SORTA - DELA