SVBATCH

Icône du lien vers le conceptVoir également Icône du lien vers le conceptSpécificités

SVBATCH fournit un enregistrement configurable par l'utilisateur du début et de la fin d'une phase de production dans un format approchant celui d'une base de données. En plus de l'horodate de début et de fin, chaque enregistrement contient un attribut LONG (qui peut être également interprété comme 32 octets indépendants), ainsi que 32 attributs texte. Vous pouvez avoir une ou plusieurs bases de données qui seront chargées en mémoire pour un accès plus rapide.

Les modes disponibles permettent de créer, supprimer, modifier et sauvegarder les enregistrements. Les attributs chaînes peuvent être configurés comme des clés d'index (comme dans une base de données de type Microsoft Access) et utilisées comme filtre pour effectuer une recherche rapide sur un grand nombre d'enregistrements.

Avant d'utiliser SVBATCH, il est essentiel de lire la rubrique de référence Structure des données SVBATCH.

Pour le mode réseau, voir la rubrique Mode réseau de SVBATCH.

Support WebVue - Oui.

Mode

Mnémonique

Syntaxe

1 CREATEBASE 1
2 SELECTBASE 2
3 BASELIST 3, 9
4 CREATE 4
5 UPDATE 5, 10
6 EXIST 6, 11
7 GETVALUE 7, 12
8 DELETE 3, 13
9 SELECT 8, 16
10 SAVEBASE 2
11 LOADBASE 2
12 GETNEXTBUFFER 3
13 CANCEL 3
14 ARCHIVE 13
15 ARCHIVELIST 3
16 BATCHLIST 3
17 NETWORKBROADCAST 14
18 NEXTCOMMAND 15

L'exécution de SVBATCH n'est pas protégée au niveau de la session. De plus, seules les variables à portée 'Partagée' sont supportées.

Toutes Syntaxes

Argument

Définition

Basename

Nom de la base de données. Type STR

Handle

Handle représentation une localisation mémoire. Type LONG.

Type

Mnémonique pour un des champs formant un lot.

 

#I1 IdName

 

#I2 StartDate

 

#I3 EndDate

 

[#A1 à #A32] Modification d’un attribut texte.

 

[#B] Modification de l’attribut LONG.

 

[#B1 à #B32] (Attributs binaires 1 à 32)

Value

Nouvelle valeur pour le champ sélectionné :

 

STR si Type = [#I1 à #I3] ou [#A1 à #A32]

 

DOUBLE si Type= [#I2 à #I3]

 

LONG si Type = [#B]

 

INTEGER si Type = [#B1 à #B32]

Table

Nom du fichier. Type STR.

StartDate

Date de début du lot. Type DOUBLE ou STR.

EndDate

Date de fin du lot. Type DOUBLE ou STR.

Si les paramètres StartDate et EndDate sont de type DOUBLE, ils peuvent être calculés en utilisant l'instruction DateTimeValue qui retournera une date et une heure sous forme DOUBLE. Si la date est fournie comme une chaîne, sa syntaxe doit être la suivante : DD/MM/YYYY hh:mm:ss.lll Par exemple : 12/05/2001 21:49:01.100.

L'instruction DateTimeString peut être utilisée pour convertir une date sauvegardée en format DOUBLE dans un format texte.

Syntaxe 1

IntVal = SVBATCH (Mode, Basename , Unused, [NbAttribute, NbBackup])

Type de retour : INTEGER.

Argument

Définition

Unused

Ce champ est inutilisé et doit rester vide. Type STR.

NbAttribute

Nombre d'attributs. Par défaut 4. Type INTEGER. Valeur 1 à 32

NbBackup

Nombre de sauvegarde de la base de données. Par défaut 3. Type INTEGER Valeur 3 à 9

Exécution

Mode

Mnémonique

Action

1

CREATEBASE

Création de la base de données. La base est créée en mémoire.

Retour : 0 Erreur de sauvegarde, 1 Sauvegarde réussie.

La base est sauvegardée dans le répertoire PER du projet lors du logiciel PcVue.

L'argument Unused doit être inclus dans la syntaxe comme une chaîne vide.
Exemple : SVBATCH ("CREATEBASE, "MyDatabase", "");

Syntaxe 2

IntVal = SVBATCH (Mode, Basename);

Type de retour : INTEGER.

Exécution

Mode

Mnémonique

Action

2

SELECTBASE

Sélection d’une base de données de travail. La base doit être en mémoire.

Retour :

0 Base non trouvée
1 Base sélectionnée
-100 Erreur d’argument

10

SAVEBASE

Sauvegarde d’une base de données. Enregistrement de la base de données vers le répertoire \PER\basename.

Retour : 0 Erreur de sauvegarde. 1 Sauvegarde réussie.

11

LOADBASE

Chargement d’une base de données. Chargement en mémoire depuis le répertoire \PER\basename.

Retour :

0 Erreur de chargement
1 Chargement réussi
-100 Erreur d’argument

Syntaxe 3

IntVal = SVBATCH (Mode, Handle)

Type de retour : INTEGER.

Exécution

Mode

Définition

Action

3

BASELIST

Liste les bases de données chargées en mémoire. La liste est sauvegardée dans un buffer mémoire en utilisant l'emplacement de la mémoire fournie.

Retour :

Le nombre de bases de données.

-100 Erreur d’argument

8

DELETE

Suppression d’un enregistrement en mémoire.

Retour :

0 Enregistrement non trouvé
1 Enregistrement supprimé

12

GETNEXTBUFFER

Récupération dans le buffer passé en argument de la suite des enregistrements correspondant à une requête de type SELECT.

Il est impératif que le buffer ResultHandle soit le même que celui utilisé lors du SELECT.

Dans le cas où la taille du buffer est insuffisante, le mode GETNEXTBUFFER permet d’obtenir la suite.

Dans ce cas, la mémoire de stockage interne utilisée par le mode SELECT est désallouée sur le dernier GETNEXTBUFFER ou lorsque toutes les données ont été récupérées. Vous devez quand même utiliser l'instruction FREE_BUFFER pour libérer le buffer utiliser par le mode SELECT.

Retour : type INTEGER:

0 Dernier buffer
1 Il reste un ou plusieurs buffers de données à récupérer
-100 Erreur d’argument

13

CANCEL

Le mode CANCEL permet de désallouer la mémoire correspondant à une requête. Il peut être utilisé pour annuler une sélection avant le dernier GETNEXTBUFFER.

Il est impératif que le buffer ResultHandle soit le même que celui utilisé lors du SELECT.

Le mode CANCEL permet de désallouer la mémoire correspondant à une requête. Il peut être utilisé pour annuler une sélection avant le dernier GETNEXTBUFFER.

Retour :

0 La requête SELECT à annuler n’existe plus.
1 Requête annulée.
-100 Erreur d’argument.

15

ARCHIVELIST

Récupération dans un buffer de la liste des dates de début/fin des enregistrements archivés.

Retour :

0 Pas d'enregistrements à retourner
-100 Erreur d’argument

Sinon le nombre de noms de tables retournés.

Le mode GETNEXTBUFFER peut être utilisé si le buffer HandleList ne peut contenir la totalité des données d’archives.

16

BATCHLIST

Récupération dans un buffer de la liste des lots d’une base de données. Les lots sont séparés par des virgules.

Retour :

0 Pas de noms de tables à retourner
-100 Erreur d’argument.

Sinon le nombre de noms de tables retournés.

Lors de l'utilisation de BASELIST (mode 3) le format de retour des données est le suivant :

Nom du lot, nombre d'enregistrements \n
nom du lot, nombre d'enregistrements \n
(où \n = Chr(10) ou LF, saut de ligne)

Pour GETNEXTBUFFER (mode 12) et CANCEL (mode 13), le buffer Handle doit être le même que celui utilisé par la commande SELECT.

Exemple de liste de buffer

Le contenu du buffer Handle peut être le suivant :

14/10/1997 10:17:55:870 14/10/1998 11:46:09:100\n

14/10/1997 10:17:55:870 14/10/1998 12:40:40:574\n

14/10/1998 10:17:55:870 14/10/1998 11:18:05:870\n

14/10/1998 11:03:11:678 14/10/1998 11:03:21:678\n

14/10/1998 11:15:34:066 14/10/1998 11:15:44:066\n

14/10/1998 11:17:55:870 14/10/1998 11:18:05:870\n

14/10/1998 11:47:36:901 14/10/1998 12:43:19:052\n

14/10/1998 12:43:09:242 14/10/1998 12:43:24:249\n

Syntaxe 4

IntVal =SVBATCH (Mode, Table, StartDate [, EndDate])

Type de retour : LONG

Exécution

Mode

Mnémonique

Action

4

CREATE

Création d’un enregistrement dans la base de données de travail (mode SELECTBASE). Si la table n'existe pas, elle sera créée.

Retour : Handle sur l’enregistrement, ou 0 si création impossible.

 

 

 

Le handle retourné permet l’utilisation des modes UPDATE , EXIST , et DELETE.

La date de début doit être unique. Une création avec une date déjà présente dans la base de donnée échouera. La date de fin peut être mise à jour de manière différée avec le mode UPDATE.

Syntaxe 5

IntVal = SVBATCH (Mode, Handle, Type, Value)

Type de retour : INTEGER

Exécution

Mode

Mnémonique

Action

5

UPDATE

Récupération de la valeur d’un champ de l’enregistrement.

Retour :

0 Mise à jour de l’enregistrement impossible
1 Mise à jour effectuée.

La mise à jour d’un enregistrement peut s’effectuer soit par l’intermédiaire du handle retourné par le mode CREATE ou SELECT, soit par le couple Table et StartDate qui identifie de manière unique un enregistrement. La date de fin EndDate n’est pas obligatoire pour retrouver l’enregistrement (vous pouvez utiliser 0.0 pour le paramètre EndDate).

Syntaxe 6

IntVal = SVBATCH (Mode, Handle)

Type de retour : LONG

Exécution

Mode

Mnémonique

Action

6

EXIST

Teste l’existence d’un enregistrement en mémoire.

Retour : 0 Enregistrement non trouvé, Sinon "handle" de l’enregistrement.

Syntaxe 7

IntVal = SVBATCH (Mode, Handle, Type)

Exécution

Mode

Mnémonique

Action

7

GETVALUE

Récupération de la valeur d’un champ de l’enregistrement.

Retour : dépend du type de champ.

Syntaxe 8

IntVal = SVBATCH (Mode, Table, StartDate, EndDate, FormatHandle, ResultHandle [, ExpHandle [, LogVarName]]);

Type de retour : INTEGER

Argument

Définition

FormatHandle

Handle d'un emplacement en mémoire contenant une chaîne de mnémoniques séparés par des virgules qui spécifie les données à récupérer. Les mnémoniques possibles sont :

[#I1 à #I3] (Table name, Start date et End date)
[#A1 à #A32] (Attributs texte 1 à 32)
[#B] (Attribut Long)
[#B1 à #B32] (Attributs binaires 1 à 32)

ResultHandle

Buffer résultat de la sélection. Chaque enregistrement formaté est terminé par un retour chariot. Type LONG.

ExpHandle

Buffer contenant une expression de filtrage. Voir l'instruction SVALA pour des informations sur les expressions de filtre. Type LONG.

LogVarName

Nom de la variable état positionnée à 1 après que l'exécution de l'instruction soit terminée ou que le buffer résultat soit plein. Type STR

Exécution

Mode

Mnémonique

Action

9

SELECT

Sélection d’enregistrements en mémoire entre deux dates.

Retour :

100 Erreur de type d’argument
-1 Pas de base de données sélectionnée
-2 Identifiant de lot inconnu

Sinon le nombre de noms de tables retournés.

L'exécution du mode 9 est asynchrone. Ceci dit, une fois que l'instruction est lancée, le thread de programme continue de s'exécuter. Lors de la récupération d'un grand nombre d'enregistrements, le remplissage du buffer résultat peut prendre plusieurs secondes.

Pour gérer cela, créer un évenement qui se déclenchera lorsque LogVarName passera à 1.

L'évenement pourra alors exécuter une fonction qui traitera le résultat ou lancera une autre instruction SVBATCH avec le mode GETNEXTBUFFER.

Syntaxe 9

IntVal = SVBATCH (Mode, FileName)

Type de retour : INTEGER

Argument

Définition

FileName

Identifiant du lot. Type STR.

Exécution

Mode

Mnémonique

Action

3

BASELIST

Crée un fichier contenant la liste des noms des lots (bases de données) chargées en mémoire.

Retour :

Nombre de base de données.
-100 Erreur d’argument

Lors de l'utilisation de BASELIST (mode 3) le format de retour des données est le suivant :

nom du lot, nombre d'enregistrements \n
nom du lot, nombre d'enregistrements \n

Où \n = Chr(10) ou LF, saut de ligne

Syntaxe 10

IntVal = SVBATCH (Mode, Table, StartDate, EndDate, Type, Value)

Type de retour : INTEGER

Exécution

Mode

Mnémonique

Action

5

UPDATE

Mise à jour d’un enregistrement en mémoire (modification).

Retour :

0 Mise à jour de l’enregistrement impossible
1 Mise à jour effectuée

La mise à jour d’un enregistrement peut s’effectuer soit par l’intermédiaire du handle (retourné par le mode CREATE ou SELECT ), soit par le couple Table et StartDatqui identifie de manière unique un enregistrement. La date de fin EndDate n’est pas obligatoire pour retrouver l’enregistrement (vous pouvez utiliser 0.0 pour le paramètre EndDate).

Syntaxe 11

IntVal = SVBATCH (Mode, Table, StartDate, EndDate)

Type de retour : LONG

Exécution

Mode

Mnémonique

Action

6

EXIST

Mise à jour d’un enregistrement en mémoire (modification).

Retour : 0 Enregistrement non trouvé, Sinon "handle" de l’enregistrement.

Syntaxe 12

IntVal = SVBATCH (Mode, Table, StartDate, EndDate, Type)

Exécution

Mode

Mnémonique

Action

7

GETVALUE

Récupération de la valeur d’un champ de l’enregistrement.

Retour : dépend du type de champ.

Syntaxe 13

IntVal = SVBATCH (Mode, Table, StartDate, EndDate)

Type de retour : INTEGER

Exécution

Mode

Mnémonique

Action

8

DELETE

Suppression d’un enregistrement en mémoire.

Retour :

0 Enregistrement non trouvé.
1 Enregistrement supprimé.

14

ARCHIVE

Archivage d’un ensemble d’enregistrements entre deux dates. Les données sont déplacées de la database vers un fichier nommé startdate_enddate. Ce fichier se trouve dans le repertoire PER\ BaseName\AR\Table où BaseName est le nom de la Base de données et Table, le nom de la table. Si on ne précise pas de nom de Table, toutes les tables de la base de données concernée sont archivées.

Retour :

0 Archivage non réalisé.
1 Archivage effectué.

Sinon :

-1 Aucune base sélectionnée.
-2 La conversion de la date de début a échoué
-3 La conversion de la date de fin a échoué
-100 Erreur de paramètre.

Effets de l'archivage

L’archivage effectue une purge automatique des lots archivés dans la base courante.

L’archivage effectue une purge automatique des lots archivés dans la base courante.

Les fichiers d’archive sont créés comme suit dans le répertoire PER du projet.

Répertoire : BatchName

Fichier : StartDate EndDate

Syntaxe 14

IntVal = SVBATCH (Mode, StationList, StatusHandle, EventVarName)

Argument

Définition

StationList

Nom de la liste des postes destinataires des modifications (Configuration.Communication.Multipostes). Type STR.

StatusHandle

Buffer recevant les informations de statut d'avancement des requêtes SVBATCH. Type LONG.

EventVarName

Nom de la variable état positionnée à 1 après que l'exécution de l'instruction soit terminée ou que le buffer résultat soit plein. Type STR

Exécution

Mode

Mnémonique

Action

17

NETWORKBROADCAST

Propage les commandes SVBATCH dans tous les postes contenus dans la liste des postes.

Les commandes sont placées dans une file d'attente et exécutées chaque fois que la commande NEXTCOMMAND est appelée. Lorsque la commande est traitée et le résultat disponible, la variable spécifiée par l'argument EventVarName est positionnée à 1. L'état de chaque commande est reporté dans le buffer pointé par StatusHandle au format suivant : Mode, Station Number, Result.

Toutes les requêtes sont asynchrones. Le résultat des requêtes est disponible lorsque EventVarName passe à 1.

A ce moment, le résultat peut être traité et le mode NEXTCOMMAND relancé.

NETWORKBROADCAST peut être utilisé avec les modes :

SELECT, UPDATE, DELETE, CANCEL, ARCHIVE, BATCHLIST, ARCHIVELIST and GETNEXTBUFFER.

Formats du buffer

En fin de requête, on trouve dans le buffer Status, les informations suivantes :

Mode,StationName,Result

Champ

Définition

Mode

Numéro de la commande SELECT (par exemple 9 pour SELECT).

StationName

Nom du poste (comme spécifié dans la rubrique Communications.Multipostes).

Result

Code de retour de la mise-à-jour (ou non) du poste.

Syntaxe 15

IntVal = SVBATCH (Mode);

Exécution

Mode

Mnémonique

Action

18

NEXTCOMMAND

Permet de passer à l’exécution de la prochaine requête SVBATCH en attente lors de l'utilisation de NETWORKBROADCAST.

Syntaxe 16

IntVal = SVBATCH (Mode, IdName, StartDate, EndDate, FormatHandle, ResultHandle, [, ExpHandle [, LogVarName]]);

Argument

Définition

ExpHandle

Buffer contenant une expression de filtrage. Voir l'instruction SVALA pour plus d'informations sur les filtres. Type LONG.

LogVarName

Nom de la variable état positionnée à 1 après que l'exécution de l'instruction soit terminée ou que le buffer résultat soit plein. Type STR.

Exécution

Mode

Mnémonique

Action

16

SELECT

Sélection d'enregistrements entre deux dates.

La sélection se fait si les entrées ont été archivées ou non.

Lorsque les enregistrements de la requête sont récupérés, LogName est positionné à 1. Le buffer ResultHandle contient les enregistrements dans la limite de sa taille.

Dans ce mode, vous pouvez créer un événement sur LogVarName. La requête est réalisée de façon asynchrone, le buffer ResultHandle est donc renseigné au moment où LogName passe à 1. Pour plus de détails, voir la Syntaxe 8 ci-dessus.

L'événement peut être créé par le menu Actions ou dynamiquement par le verbe EVENT.