INSA |
Insapermet d'insérer des éléments 'vides' dans des tableaux mono-dimensionnés, àpartir d'un indice donné.
Insadébut [ ,nombre [ , borne ] ] liste_nom_var
Elément | Description | Restrictions |
Expression numérique entière de l'indicedans les tableaux à partir duquel se fait l'insertion | Le début doit : | |
Expression numérique entière du nombred'éléments à insérer. | nombre > 0 | |
Expression numérique entière de l'indicedans les tableaux où se termine l'insertion. | La borne ne doit pas dépasser la pluspetite des bornes supérieures des tableaux. | |
Liste de | Aucune. | |
nom_de_variable désignant le tableaudans lequel s'effectue l'insertion. Dans le cas d'un tableau déroulant, ils'agit de la variable de bas de tableau. | Aucune. |
# Lecture des N premiersenregistrements du fichier CLIENT et
# insertion des noms et clés (dansl'ordre des noms) dans 2 tableaux.
# La variable MAX désigne la position dudernier é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
Endif
NOM(I) = [F]NOM
CLE(I) = [F]CLE
MAX += 1
Read[CLI]CODCLE Next
Wend
# Insertion de lignes dans un tableaudéroulant (dont la variable de
# bas de tableau a pour nom NLI) selondes paramètres variables
# 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érer2 éléments en 3ème position
# (donc en rang 2) :
# Le résultat de cette instructionsera :
0
1
2
3
4
5
6
7
...
CAR
A
A
H
I
V
V
...
NOM | ansi | at386 | hp | ibm3151 | vt200 | vt220 | ... |
# Supposons maintenant que la borneait une valeur inférieure au
# nombre d'éléments des tableaux :
0
1
2
3
4
5
...
CAR
A
A
H
V
...
NOM | ansi | at386 | hp | vt220 | ... |
# on"perd" les éléments I, ibm3151 et V, vt200
# et l'on garde ceux au-delà de la borne : V, vt220
Insapermet d'insérer des éléments 'vides' (1 par défaut) dans un ensemble detableaux monodimensionnés. Ces éléments valent zéro (valeur 0, date nulle ouchaîne vide) et sont non initialisés dans le cas d'un tableau déroulant. Dansla syntaxe de l'instruction, début détermine l'indice (commun à tous lestableaux) 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 nombrede positions égal à 'nombre'. Les 'nombre' derniers éléments du tableau sontmis à zéro (la 'borne' par défaut est la fin du tableau).
Donner une valeur à 'borne' qui soit inférieure à la plus petite des bornesinférieures des tableaux (une valeur supérieure n'aurait pas de sens), signifieque 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' etaprè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 | 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 detableau ; elle désigne alors l'ensemble des variables du tableau déroulant.
Dans le cas d'une insertion de lignes dans un tableaudéroulant, la variable de bas de tableau n'est pas mise à jour.
ERMODE(10) | début,nombre ou borne n'est pas numérique. |
ERINDI( 8) | L'undes indices sort des bornes de l'un des tableaux. |
ERDOM(50) | nombre<= 0. |
ERDIM(55) | L'unedes variables n'est pas mono-dimensionnée. |
Adonix X3(r) L4G |