Introduction

Les types de données au format chaîne de caractères appartiennent à la famille EDT (Elementary data type, type de données élémentaires), qui contient des types de données simples et non dérivés (tableaux, structures, blocs fonction).

Type chaîne de caractères

Le format chaîne de caractères est utilisé pour représenter une chaîne de caractères ASCII dans laquelle chaque caractère est codé au format 8 bits.

Caractéristiques des types chaîne de caractères :

  • Par défaut, une chaîne contient 16 caractères (sans compter les caractères de fin de chaîne).

  • Une chaîne contient des caractères ASCII compris entre 16#20 et 16#FF (représentation hexadécimale).

  • Dans une chaîne vide, le caractère de fin de chaîne (code ASCII "ZERO") est en première position.

  • Une chaîne de caractères peut contenir un maximum de 65535 caractères.

La taille de la chaîne de caractères peut être optimisée lors de la définition du type à l'aide de la commande STRING[<taille>], où <taille> est un entier non signé (UINT) capable de définir une chaîne de 1 à 65535 caractères ASCII.

NOTE : Les caractères ASCII 0 à 127 sont les mêmes dans toutes les langues, alors que les caractères 128 à 255 sont propres à chaque langue. Soyez vigilant lorsque la langue d'affichage dans Control Expert est différente de celle du système d'exploitation. Deux langues différentes peuvent perturber la communication CHAR MODE et ne permettent pas de garantir la correction de l'envoi des caractères au-delà de 127. C'est notamment le cas du caractère « Arrêt sur réception » qui n'est pas pris en compte lorsqu'il est supérieur à 127.

Règles syntaxiques

Un guillemet simple « » (code ASCII 16#27) précède et termine l'entrée.

Le symbole $ (dollar) et un caractère spécial dont la signification est la suivante lorsqu'il est suivi de ces lettres :

  • $L ou $l, aller à la ligne suivante (retour à la ligne)

  • $N ou $n, aller au début de la ligne suivante (nouvelle ligne)

  • $P ou $p, aller à la page suivante

  • $R ou $r, retour chariot

  • $T ou $t, tabulation (Tab)

  • $$, représente le caractère $ dans une chaîne

  • $’, représente le guillemet dans une chaîne

La syntaxe $nn permet à l'utilisateur d'afficher, dans une variable STRING, des caractères qui ne sont pas destinés à l'impression, comme un retour chariot (code ASCII 16#0D), par exemple.

Exemples

Exemples de saisies :

Type

Saisie

Contenu de la chaîne

• représente le caractère de fin de chaîne

* représente des octets vides

STRING

‘ABCD’

ABCD•************ (16 caractères)

STRING[4]

‘jean’

jean•

STRING[10]

‘It$’ jean’

It$’ jean•*

STRING[5]

’’

•*****

STRING[5]

’$’’

’•****

STRING[5]

‘Le nombre’

Le no•

STRING[13]

’0123456789’

0123456789•***

STRING[5]

‘$R$L’

<cr><lf>•***

STRING[5]

’$$1,00’

$1,00•

Déclaration de variable de type STRING

Une variable de type STRING peut être déclarée de deux façons différentes :

  • STRING et

  • STRING[<Nombre d'éléments>]

Le comportement n'est pas le même suivant l'utilisation :

Type

Déclaration de variable

Paramètres d'entrée FFB

Paramètres de sortie EF

Paramètres de sortie FB

STRING

Longueur fixe : 16 caractères

La longueur correspond exactement à la longueur du paramètre d'entrée.

La longueur correspond exactement à la longueur du paramètre d'entrée.

Longueur fixe de 16 caractères

STRING[<n>]

Longueur fixe : n caractères

La longueur correspond à la longueur du paramètre d'entrée, avec une limite de n caractères.

L'EF écrit n caractères maximum.

Le FB écrit n caractères maximum.

Chaîne et le paramètre ANY

Lorsque vous utilisez une variable de type STRING en tant que paramètre de type ANY, il est vivement recommandé de vérifier que la longueur de la variable est inférieure à la longueur maximale déclarée.

Exemple :

Utilisation de STRING sur la fonction SEL (Sélecteur).
String1: STRING[8]
String2: STRING[4]
String3: STRING[4]
String1:= 'AAAAAAAA';
String3:= 'CC';
Cas 1 : 
String2:= 'BBBB'; 
(* la taille de la chaîne est égale à la taille maximum déclarée *)
String1:= SEL(FALSE, String2, String3);
(* le résultat sera : 'BBBBAAAA' *) 
Cas 2 : 
String2:= 'BBB'; 
(* la taille de la chaîne est inférieure à la taille maximum déclarée *)
String1:= SEL(FALSE, String2, String3);
(* Le résultat sera : 'BBB' *)