SVBATCH
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 |
|
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 |
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é |
|
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 |
|
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. |
|
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 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 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 |
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) |
|
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 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. |
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 |
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é. |
|
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é. Sinon : -1 Aucune base sélectionnée. |
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.