Utilisation du Gestionnaire de dialogue

Dans cette section :

Référence :

Le Gestionnaire de Dialogue fait partie de langage WebFOCUS permettant de contrôler l'exécution des composants de votre application et son flux en utilisant des variables et des commandes. Vous pouvez contrôler dynamiquement l'exécution de procédures, ce qui vous donne plus de flexibilité dans la conception d'applications. Le Gestionnaire de Dialogue vous permet aussi d'utiliser des variables dans vos procédures et fournit des valeurs au moment de l'exécution.

Les méthodes suivantes sont des exemples d'utilisation du Gestionnaire de Dialogue :

Pour le Gestionnaire de dialogue, vous pouvez créer des IF, GOTO, étiquettes, et répétitions. Vous pouvez aussi ouvrir la zone de dessin du Gestionnaire de dialogue et créer n'importe quel autre élément manuellement.


Haut de page

x
Référence : Résumé des commandes du gestionnaire de dialogue

Pour les descriptions et la syntaxe, consultez Référence de la syntaxe du gestionnaire de dialogue.

Commande

Description

-*

est une ligne de commentaire sans action associée.

‑CLOSE ddname

Ferme le fichier ‑READ ou ‑WRITE.

-CLOSE *

Ferme tous les fichiers -READ et -WRITE ouverts.

-DEFAULT
-DEFAULTS

Pré-configure les valeurs initiales pour la substitution de variable.

-EXIT

Exécute des commandes empilées et renvoie à l'invite WebFOCUS.

-GOTO

Établit une branche inconditionnelle.

-HTMLFORM

Pour utilisation avec l'interface Web de WebFOCUS.

-IF

Contrôle brancheS et tests en fonction des résultats des tests.

-INCLUDE

Incorpore dynamiquement une procédure dans une autre.

-label

Nom fourni par l'utilisateur identifiant la cible de -GOTO ou -IF.

-PASS

Renseigne le mot de passe directement.

-READ

Lit les enregistrements d'un fichier séquentiel.

-READFILE

Lit les champs basés sur le Fichier Maître dans les variables du gestionnaire de dialogue.

-REPEAT

Exécuter une boucle.

-RUN

Exécute toutes les commandes empilées WebFOCUS et retourne à la procédure pour les traitements suivants.

-SET

Affecte une valeur à une variable.

-TYPE

Entre un message d'information à l'écran ou un autre appareil de sortie.

-WRITE

Écrit un enregistrement dans un fichier séquentiel.

-? SET parameter 
&myvar

Capture la valeur d'un paramètre configurable dans &myvar.

-? &[variablename]

Affiche les valeurs de variables amper actuellement définies.



x
Présentation des Variables du Gestionnaire de Dialogue

Vous pouvez écrire des procédures contenant des variables dont les valeurs ne sont connues qu'au moment de l'exécution, permettant ainsi à l'utilisateur de personnaliser la procédure en fournissant des valeurs différentes à chaque exécution. Les variables se répartissent entre deux catégories :


Haut de page

x
Traitement Gestionnaire de Dialogue

Vous pouvez modifier votre application au moment de l'exécution avec entrée utilisateur et conditions d'environnement en utilisant les procédures du Gestionnaire de Dialogue, qui incluent les commandes et les variables.

Dans App Studio, les procédures stockées sont référées en tant que procédures.

  1. Le traitement commence à partir du processeur de commandes lorsqu'une procédure est invoquée pour exécution.
  2. Le processeur FOCEXEC lit chaque ligne de la procédure. Toutes les variables sur la ligne sont affectées aux valeurs en cours.
  3. Toutes les commandes du gestionnaire de dialogue s'exécutent dès que le gestionnaire de dialogue les lit.
  4. Lorsqu'une ligne de commande ne contenant pas de commandes du gestionnaire de dialogue est complètement déployée avec d'autres variables renseignées (via une commande -SET ou une invite), elle est placée dans la pile exécution de commandes (FOCSTACK).
  5. Les commandes d'exécution du gestionnaire de dialogue (par exemple, -RUN) et les variables statistiques purgent la pile FOCSTACK et redirigent toutes les commandes empilées vers le processeur de commandes WebFOCUS.

Au moment où votre pile FOCSTACK est prête à être exécutée, les événements suivants sont survenus :

Remarque : toute commande FOCUS peut être placée dans une procédure, incluant la commande EXEC. Lorsqu'une commande EXEC est traitée dans une procédure, les commandes venant de la nouvelle procédure sont placées en haut de la pile puis exécutées.


Haut de page

x
Créer une procédure de démarrage

Dans cette section :

Référence :

Vous pouvez utiliser l'éditeur de texte intégré WebFOCUS, TED, ou invoquer votre éditeur système depuis WebFOCUS avec la commande IEDIT pour créer des procédures contenant la fonctionnalité du gestionnaire de dialogue. IEDIT est particulièrement utile avec des fichiers à longueur variable ou des fichiers dont les longueurs d'enregistrements sont supérieures à 80 caractères.

TED et IEDIT possède deux fonctionnalités très utiles pour la création et l'édition des procédures :

Ces options représentent un complément pour les options FILE et SAVE qui sont communes aux autres éditeurs.

En plus des commandes et des variables du gestionnaire de dialogue qui affectent directement le flux du contrôle dans une application, vous pouvez aussi utiliser des commandes pour :

Vous pouvez aussi créer une procédure de profil qui définit les conditions de démarrage et peut inclure des commandes du gestionnaire de dialogue.



x
Référence : Règles pour la Création de Procédures

création de procédures



x
Voir Inclure des commentaires dans une procédure

En particulier, il est recommandé d'utiliser des commentaires dans un en-tête de procédure pour fournir la date, la version, et toute autre information importante. Un tiret suivi d'un astérisque (-*) marquent le début d'un commentaire.

Ils ne sont visibles que lors de la visualisation des contenus de la procédure via l'éditeur et sont strictement réservés aux développeurs.



x
Syntaxe : Ajouter un commentaire dans une procédure
  1. Commencez la ligne de commentaire avec la commande :
    -*
  2. Entrez votre commentaire après après la commande, optionnellement avec un espace avant le texte.

Vous pouvez placer un commentaire au début ou à la fin d'une procédure, ou encore entre deux commandes. Un commentaire ne peut pas être placé sur la même ligne que une commande.

L'entrée suivante est valide :

.
.
.
-*Version 2 06/10/00
-RUN

L'expression suivante invalide :

-RUN -*Version 2 06/10/00


Exemple : Placer un commentaire dans une procédure

L'exemple suivant place un commentaire au début d'une procédure.

-* Version 1  08/26/02  HRINFO  Procedure
TABLE FILE CENTHR
   .
   .
   .


x
Consultez Envoyer un message à l'utilisateur

Vous pouvez utiliser la commande -TYPE pour envoyer un message à l'affichage pendant le traitement d'une procédure. Typiquement, le message remplit les besoins suivants :



x
Syntaxe : Consultez Envoyer un message à l'utilisateur

-TYPE envoie le message vers l'affichage dès qu'il est rencontré en cours de traitement de la procédure. La syntaxe est :

-TYPE[+|0|1] text						

ou

-label TYPE text						

où :

texte

Il s'agit du message qui doit être envoyé. Le message est envoyé vers l'écran, suivi d'un champ ligne. Il reste à l'écran jusqu'à ce qu'il soit entièrement défilé ou remplacé par un nouvel écran.

Si vous incluez des guillemets autour du texte, ils seront affichés comme faisant parti du message. (Ceci diffère de l'utilisation de TYPE ou MODIFY, ou les guillemets sont utilisés en tant que délimiteurs et doivent obligatoirement entourer le texte informatif.)

-label

Il s'agit de la cible de -GOTO ou de -IF.

+|0|1

Il s'agit d'entrées optionnelles qui transmettent des caractères de contrôle d'imprimante à l'appareil de sortie. Elles sont particulièrement utiles pour les imprimantes à caractères. Les options + et 1 ne fonctionnent pas sur des terminaux de type IBM 3270.

+ supprime le champ de lignes qui suit l'impression du texte.

0 force un champ ligne avant que le texte du message ne soit affiché.

1 force l'éjection d'une page avant que le texte du message ne soit imprimé.

Si elles sont fournies, ces valeurs doivent suivre -TYPE sans espace.



Exemple : Envoyer un message

L'exemple suivant illustre l'utilisation de -TYPE pour informer une application cliente sur les contenus d'un rapport :

-* Version 1  06/26/00  SLRPT  Procedure
-* Component of Retail Sales Reporting Module
-TYPE This report calculates percentage of returns.
TABLE FILE SALES
 .
 .
 .
END


x
Voir Contrôler l'accès de l'utilisateur aux données

Vous pouvez fournir et contrôler les mots de passe avec la commande –PASS. Ceci est particulièrement utile pour spécifier un fichier en particulier ou un jeu de fichier qu'un utilisateur donné peut lire ou écrire en l'utilisant. Les mots de passe ont des jeux de fonctions associés via l'utilitaire DBA.

La procédure qui renseigne les mots de passe peut être cryptée de façon à ce que les mots de passe et cette procédure ne puisse pas être entrés et révélés.

Une variable peut aussi être associée avec -PASS de façon à ce que vous soyez invités à renseigner une valeur de mot de passe. Vous pouvez aussi vérifier la valeur du mot de passe et passé ou exécuter une portion de la procédure en fonction de la valeur.



x
Syntaxe : Renseigner un mot de passe dans une Procédure
-PASS password						

où :

password

Est un mot de passe ou une variable contenant un mot de passe.

-PASS étant une commande du gestionnaire de dialogue, elle s'exécute immédiatement et elle n'est pas envoyée vers la FOCSTACK. Ceci implique que l'utilisateur n'a pas à entrer le mot de passe avec la commande SET PASS ou SET USER.


Haut de page

x
Naviguer dans une procédure

Dans cette section :

Vous pouvez naviguer vers une procédure des manières suivantes :



x
Branchement Inconditionnel

Vous pouvez effectuer un branchement sans condition qui va transférer le contrôle à un label avec la commande -GOTO.

La première fois via une procédure, le gestionnaire de dialogue note les adresses de tous les labels qu'ils rencontrent de façon à ce qu'ils puissent être trouvé immédiatement si nécessaire. Si le Gestionnaire de dialogue n'a pas stocké l'adresse de l'étiquette dans la commande -GOTO, il continue la recherche de l'étiquette cible dans la procédure. Si aucune étiquette n'est trouvée, il commence la recherche au début de la procédure.

Gestionnaire de dialogue n'effectue aucune action sur le label n'ayant pas un -GOTO correspondant. Si un -GOTO n'a pas un label correspondant, l'exécution s'arrête et un message d'erreur est affiché.



x
Syntaxe : Branchement Inconditionnel
-GOTO label 
  .
  .
  .
-label [TYPE text]

où :

-label

Est un nom défini par utilisateur jusqu'à une longueur de 12 caractères. N'utilisez pas d'espaces insérés, ni le nom d'une autre commande gestionnaire de dialogue, à l'exception de -QUIT ou -EXIT. N'utilisez pas d'opérations logiques ou arithmétiques, des mots qui peuvent être confondus avec des fonctions, ou des mots réservés tels que CONTINUE.

Le texte label peut précéder ou suivre la commande -GOTO dans la procédure.

Remarque : quand le label fait suite à la commande -GOTO, il n'est pas précédé d'un tiret.

TYPE text

Envoie un message à l'application cliente.



Exemple : Branchement Inconditionnel

L'exemple suivant commente l'ensemble du code WebFOCUS en utilisant une branche inconditionnelle, sans que l'utilisateur n'ait à entrer -* au début de chaque ligne :

-GOTO DONE
TABLE FILE SALES
PRINT UNIT_SOLD RETURNS
BY PROD_CODE,CITY
END 
-RUN 
-DONE


x
Branchement Conditionnel

Un branchement conditionnel effectué un test des valeurs de variables et en fonction du test, transfert le contrôle à un label dans la procédure avec la commande -IF... GOTO. Ceci aide le contrôle de l'exécution des requêtes et construites une procédure dynamique en choisissant d'exécuter ou pas des parties de la procédure.

Par exemple, vous pouvez vérifier si un fichier d'extraction a été créé à partir d'une source de données en production. Si un tel fichier d'extraction existe, le programme exécute un jeu de rapports vers le processus d'extraction. Signe existe pas, le programme effectuait un branchement autour des rapports et écrit un message dans le fichier journal.

Note: un test IF ne requiert pas que chaque test spécifie un label cible. Cependant, dans un test IF composé, ou une série de tests sont incorporés les uns dans les autres, une étiquette cible spécifiée est requise pour chaque test.



x
Syntaxe : Branche Conditionnelle
-IF expression [THEN] {GOTO label1|CONTINUE} [ELSE IF...] [ELSE {GOTO label2|CONTINUE}] ;

où :

expression

est une expression valide. Les littéraux n'ont pas besoin d'être entourés avec des guillemets simples à moins qu'ils ne contiennent des virgules espaces vides incorporés.

THEN

Est une commande optionnelle qui améliore la lisibilité d'une commande.

label1

Est un nom défini par utilisateur jusqu'à 12 caractères auquel transmettre le contrôle si le test -IF est vrai, N'utilisez pas d'espaces insérés, ni le nom d'une autre commande gestionnaire de dialogue, à l'exception de -QUIT ou -EXIT. N'utilisez pas d'opérations logiques ou arithmétiques, des mots qui peuvent être confondus avec des fonctions, ou des mots réservés tels que CONTINUE.

Le texte label peut précéder ou suivre le critère -IF dans la procédure.

CONTINUE

Continue vers la commande faisant suite au point-virgule de la commande -IF.

Remarque : CONTINUE ne peut pas être utilisée en tant que label dans une instruction -IF.

ELSE IF

Spécifie un test composé -IF La commande-IF doit obligatoirement se terminer avec un point-virgule pour signaler que toute la logique a été spécifiée.

ELSE GOTO label2

Passe le contrôle sur label2 quand le test -IF échoue.

Signe commande déploie plus d'une ligne, l'ligne de continuation doit obligatoirement commencer avec un trait d'union et un ou plusieurs espaces.



Exemple : Branchement Conditionnel basé sur Entrée Utilisateur

Dans l'exemple suivant, la requête du premier rapport ou la requête du second rapport seront exécutées, mais pas toutes les deux. Supposons que l'exécution d'une procédure requiert qu'un utilisateur doive soumettre une valeur pour une variable appelée &PROC. L'utilisateur peut saisir SALES ou EMPLOYEE.

1. -IF &PROC EQ 'EMPLOYEE' GOTO EMPLOYEE; 
2. -SALES
   TABLE FILE SALES
   SUM UNIT_SOLD
    BY PROD_CODE
   END 
3. -EXIT
   -EMPLOYEE
   TABLE FILE EMPLOYEE
   PRINT PLANT_NAME
    BY DEPARTMENT
   END

La procédure est la suivante :

  1. L'utilisateur entre la valeur SALES pour &PROC. Un test -IF est effectué, et puisque la valeur pour &PROC n'est pas EMPLOYEE, le test échoue et le contrôle est passé suivante, en l'occurrence -SALES

    Si la valeur de &PROC avait été EMPLOYEE, le contrôle serait passé à -EMPLOYEE.

  2. Le code FOCUS est traité, et empilé pour être exécuté plus tard.
  3. -EXIT exécute les commandes empilées. La sortie est envoyée à l'application client WebFOCUS et la procédure est terminée.

    La requête sous le label -EMPLOYEE n'est pas exécutée.



x
Procédure en boucle

Vous pouvez exécuter une fonction la répétition en utilisant cette répétition dans votre procédure via la commande -REPEAT. L'utilisation des boucles peut servir plusieurs tâches. Par exemple, vous pouvez remplir une variable indexée en utilisant une boucle ou bien vous pouvez utiliser la sortie de la requête dans une seconde.

Un processus en boucle peut être exécuté un certain nombre de fois où jusqu'à ce qu'une condition soit vérifiée. Une boucle s'achève quand l'un des événements suivants survient :

Remarquez que la commande -SET fournit une autre méthode implémentation des boucles.

Conseil : pendant le traitement de la boucle, la recherche d'étiquette qui indique la cible d'une commande -GOTO ou -REPEAT dure plus longtemps dans une procédure avec variable qu'avec des longueurs d'enregistrements fixés (80 caractères). Pour accélérer l'exécution dans cette situation, considéré le remplacement des boucles par des commandes EX ou -INCLUDE.



x
Syntaxe : Spécifier une boucle.
-REPEAT label n TIMES

ou

-REPEAT label WHILE condition;

ou

-REPEAT label FOR &variable [FROM fromval] [TO toval] [STEP s]

où :

label

Identifie le code qui doit être répété (la boucle). Annabelle peut inclure une autre boucle si le label pour la seconde boucle a un nom différent que le premier.

n TIMES

Spécifie le nombre d'exécutions de la boucle. La valeur de n peut être une variable locale, une variable globale, ou une constante. S'il s'agit d'une variable, elle n'est évaluée qu'une seule fois, vous n'avez donc pas à changer le nombre d'exécutions de la boucle. La boucle ne peut être arrêtée qu'en utilisant -QUIT ou -EXIT.

condition WHILE;

Spécifie la condition qui doit être vérifiée pour l'exécution de la boucle. Cette condition peut consister en n'importe quelle expression logique, qui peut être vrai ou faux. La boucle s'exécutait la condition est vrai.

Remarque : la condition doit obligatoirement être suivie par un point-virgule.

&variable

Est la variable qui est testée au démarrage de chaque exécution de la boucle et incrémentée de s à chaque exécution. Elle est comparée aux valeurs fromval et toval, si elles ont été fournies. La boucle est exécutée seulement si &variable est supérieure ou égale à fromval ou inférieure ou égale à toval.

fromval

Est une constante qui est comparée avec &variable au départ de chaque exécution de la boucle. La valeur par défaut est 1.

toval

Est une valeur qui est comparée avec &variable au départ de chaque exécution de la boucle. La valeur par défaut est 1,000,000.

STEP s

Est une constante utiliser pour incrémenté &variable à la fin de chaque exécution de la boucle. Elle peut être positive ou négative. L'incrément par défaut est 1.

Remarque : les paramètres FROM, TO, et STEP peuvent apparaître dans n'importe quel ordre.



Exemple : Répétez une boucle.

Ces exemples illustrent chaque élément syntaxique de -REPEAT.

-REPEAT label n TIMES

Par exemple :

-REPEAT LAB1 2 TIMES
-TYPE INSIDE
-LAB1 TYPE OUTSIDE

La sortie est :

INSIDE
INSIDE
OUTSIDE
-REPEAT label WHILE condition;

Par exemple :

-SET &A = 1;
-REPEAT LABEL WHILE &A LE 2;
-TYPE &A
-SET &A = &A + 1;
-LABEL TYPE END: &A

La sortie est :

1
2
END: 3
-REPEAT label FOR &variable FROM fromval TO toval STEP s						

Par exemple :

-REPEAT LABEL FOR &A STEP 2 TO 4
-TYPE INSIDE &A
-LABEL TYPE OUTSIDE &A

La sortie est :

INSIDE 1
INSIDE 3
OUTSIDE 5


Exemple : Contrôler les boucles Avec -SET

L'exemple suivant illustre l'utilisation de -SET pour contrôler une boucle :

1. -DEFAULT &N=0 
2. -START 
3. -SET &N=&N+1; 
4.   EX SLRPT
   -RUN 
5. -IF &N GT 5 GOTO NOMORE; 
6. -GOTO START 
5. -NOMORE TYPE EXCEEDING REPETITION LIMIT
   -EXIT

La procédure s'exécute de la manière suivante :

  1. La commande -DEFAULT affecte la valeur initiale 0 à &N.
  2. -START commence la boucle. Il s'agit aussi de la cible pour un -GOTO inconditionnel.
  3. La commande -SET incrémente la valeur &N de 1 à chaque fois que la boucle s'exécute.
  4. La commande FOCUS EX SLRPT est empilée. -RUN exécute ensuite la commande empilée.
  5. La commande -IF teste la valeur en cours de la variable &N. Si la valeur est supérieure à 5, le contrôle passe au label -NOMORE, qui affiche un message à l'utilisateur final et force la sortie. Si la valeur de &N est égale à 5 ou moins, le contrôle passe à la commande suivante du Gestionnaire de Dialogue.
  6. -GOTO passe le contrôle au label -START, et la boucle continue.


x
Appel d'une autre procédure avec -INCLUDE

Vous pouvez insérer une procédure partielle ou totale dans une autre grâce à la commande -INCLUDE. Une procédure partielle peut contenir un texte d'en-tête, ou du code devrait être inclus au moment de l'exécution en fonction d'un test dans la procédure appelante. Elle s'exécute immédiatement quand elle rencontrée.

Une procédure appelante ne peut pas effectuer de branchement sur un label dans une procédure appelée, et vice versa. Quand une procédure est incluse en utilisant la commande -INCLUDE, la procédure qui est incluse (appelée) à un accès total aux variables définies dans la procédure appelante.

La commande -INCLUDE peut être utilisée des façons suivantes :



x
Syntaxe : Incorporer un Fichier
-INCLUDE filename [filetype]

où :

filename

est le nom de la procédure WebFOCUS.

filetype

Indique le nom de la procédure. Si rien n'est inclus, c'est FOCEXEC qui est supposé.



Exemple : Appel d'une autre procédure avec -INCLUDE

Dans l'exemple suivant, le gestionnaire de dialogue recherche une procédure appelée DATERPT tel que spécifié par la commande -INCLUDE.

-IF &OPTION EQ 'S' GOTO PRODSALES ELSE GOTO PRODRETURNS;
   .
   .
   .
-PRODRETURNS
-INCLUDE DATERPT
-RUN 
   .
   .
   .

Supposons que DATERPT contiennent le code suivant, que le Gestionnaire de Dialogue incorpore au sein de la procédure originale. Le Gestionnaire de Dialogue substitue une valeur pour la variable &PRODUCT dès que -INCLUDE est rencontré. -RUN exécute la requête.

TABLE FILE SALES
PRINT PROD_CODE UNIT_SOLD
WHERE PROD_CODE EQ '&PRODUCT';
END


Exemple : Appeler une procédure sans en-tête

L'exemple suivant incorpore un en-tête, qui est stocké en tant que procédure de :

TABLE FILE SALES
-INCLUDE SALEHEAD
SUM UNIT_SOLD AND RETURNS AND COMPUTE
   .
   .
   .

Le fichier SALEHEAD contient :

HEADING
"THE ABC CORPORATION"
"RETAIL SALES DIVISION"
"MONTHLY SALES REPORT"

Cet en-tête est inclus dans la requête de rapport.



Exemple : Appeler une procédure pour un champ virtuel

L'exemple suivant incorpore un champ virtuel pour une procédure :

-INCLUDE DEFRATIO
   TABLE FILE SALES
-INCLUDE SALEHEAD
   SUM UNIT_SOLD AND RETURNS AND RATIO
   BY CITY
   .
   .
   .

Le fichier DEFRATIO créer un champ virtuel :

DEFINE FILE SALES
RATIO/D5.2=(RETURNS/UNIT_SOLD);
END

Ce champ virtuel sera dynamiquement inclus avant l'exécution de la requête du rapport.



x
Imbriquer les Procédures avec -INCLUDE

Tout nombre de différentes procédures peut être invoqué à partir d'une seule procédure appelante.

Vous pouvez aussi imbriquer une procédure au sein d'elle-même, ou d'une manière récursive. Les commandes récursives -INCLUDE ne peuvent excéder quatre niveaux. Pour les commandes non récursives -INCLUDE, le niveau d'imbrication n'est limité que par la mémoire disponible.

Les fichiers de un à quatre sont incorporés dans la procédure originale. Tous les fichiers inclus sont vus comme une partie de la procédure originale.

Une procédure ne peut pas se brancher à un label dans un fichier inclus.



x
Appel d'une autre procédure avec EXEC

Vous pouvez invoquer une procédure via une autre avec la commande EXEC. La procédure appelée doit être complètement exécutable. Elle agit comme une procédure complètement séparée, avec son propre contenu. Elle ne peut pas utiliser de variables locales (&variables) définies par la procédure appelante (à moins qu'elle ne soit explicitement transmise à la procédure appelée sur la ligne de commande). Cependant, la procédure exécutée (appelée) peuvent utiliser des variables globales (&&variables) qui ont été définies dans la procédure appelante.

Quand une commande EXEC est rencontrée, elle est empilée est exécutée lorsque la commande appropriée du gestionnaire de dialogue est rencontrée.



x
Syntaxe : Appeler une procédure avec la commande EXEC
EX[EC] procedure						

où :

procédure

est le nom de la procédure.

Vous pouvez inclure des arguments pour la procédure.

Remarque : la syntaxe est identique à la syntaxe d'exécution pour te procédures stockée. Cependant, dans ce contexte, une commande EXEC est incluse sein d'une autre procédure.



Exemple : Appel d'une procédure avec EXEC

Dans l'exemple suivant, une procédure appelle DATERPT:

-IF &OPTION EQ 'S' GOTO PRODSALES ELSE GOTO PRODRETURNS;
    .
    .
    .
-PRODRETURNS
    EX DATERPT
    .
    .
    .
-RUN

Haut de page

x
Utilisation de variables dans une Procédure

Dans cette section :

Comment :

Référence :

Vous pouvez créer des procédures qui incluent des variables (aussi appelées variables amper) et leur fournissent des valeurs au moment de l'exécution. Ces variables stockent une chaîne de texte ou de nombres et peuvent être placées n'importe où dans la procédure. Par exemple, une variable peut faire référence à un champ, une commande, un texte descriptif, ou encore un nom de fichier.

Remarque : une variable du gestionnaire de dialogue ne contient que des dates alphanumériques. Si une fonction ou une expression renvoie une valeur numérique vers une variable du gestionnaire de dialogue, la valeur est tronquée en un entier et elle est convertie au format alphanumérique avant d'être stockée dans la variable.

Les variables se répartissent entre deux catégories :

Le nombre maximum de variables locale, globale, système, statistique, spéciale, et index disponibles dans une procédure est 1024. Environ 40 sont réservées pour l'utilisation avec FOCUS.

Les variables peuvent être utilisées seulement dans les procédures. Elles sont ignorées si vous les utilisez lors de la création de rapports en direct avec le terminal.

Vous pouvez interroger les variables de chacun des types de variables que vous utilisez.

Les valeurs pour les variables peuvent être fournies de plusieurs façons.



x
Référence : Nommer les Conventions pour Variables globales et locales

Les noms de variable globale et locale sont définis par l'utilisateur ; les variables statistiques et système ont des noms prédéfinis. Les règles suivantes s'appliquent aux dommages des variables globales et locales :



x
Syntaxe : Spécifier un nom de variable
&[&]name

où :

&

Dénote une variable locale. Un symbole amper simple suivie d'une chaîne numérique indique une variable de position.

&&

Dénote une variable globale.

nom

est le nom de la variable. Le nom que vous affectez doit respecter les règles indiquées dans le Gestionnaire de dialogue.



x
Variable locales

Les variables locales sont identifiées par un cycle esperluette unique (&) précédant le nom de la variable. Elles restent effectivement tout au long de la procédure unique.



Exemple : Utilisation des variables locales.

Considérez la procédure suivantes, SALESREPORT, dans laquelle &CITY, &CODE1, et &CODE2 sont des variables locales:

TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR &CITY"
"PRODUCT CODES FROM &CODE1 TO &CODE2"
" "
SUM UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY CITY
IF CITY EQ &CITY
BY PROD_CODE
IF PROD_CODE IS-FROM &CODE1 TO &CODE2
END

Supposea une application des valeurs suivantes quand vous appelez une procédure :

EX SLRPT CITY = STAMFORD, CODE1=B10, CODE2=B20

Le Gestionnaire de Dialogue substitue les valeurs pour les variables suivantes :

TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR STAMFORD"
"PRODUCT CODES FROM B10 TO B20"
" "
SUM UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY CITY
IF CITY EQ STAMFORD
BY PROD_CODE
IF PROD_CODE IS-FROM B10 TO B20
END

Quand la procédure est exécutée est terminée : les valeurs STAMFORD, B10, et B20 sont perdues



x
variables globales

Les variables globales sont différentes des variables locales car lorsqu'une valeur est fournie, elle restent effectives tout au long de la session WebFOCUS, à moins qu'elles ne soient transformées en une autre valeur via la commande -SET ou effacées par la commande LET CLEAR. Les variables globales sont utiles pour rassembler des valeurs au début de la session de travail pour utilisation par plusieurs procédures ultérieures. Toutes les procédures qui utilisent une variable globale particulière reçoivent la valeur en cours jusqu'à ce que vous quittiez WebFOCUS.

Les variables globales sont spécifiées via l'utilisation d'un sigle esperluette double (&&) précédant le nom de la variable. Il est possible d'avoir une variable globale et une variable locale ayant le même nom. Elles sont distinctes et peuvent avoir des valeurs différentes.



Exemple : Utilisation des variables globales.

L'exemple suivant illustre l'utilisation de trois variables globales : &&CITY, &&CODE1, &&CODE2. Les valeurs sont substituées dans la première procédure, PROC1, et des valeurs sont retenues est transmises à la seconde procédure, PROC2.

TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR &&CITY"
SUM UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY CITY
IF CITY EQ &&CITY
BY PROD_CODE
IF PROD_CODE IS-FROM &&CODE1 TO &&CODE2
END
EX PROC2
TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR &&CITY AND PRODUCT &&CODE1"
PRINT UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY CITY
IF CITY EQ &&CITY
IF PROD_CODE EQ &&CODE1
END


x
Variables système

WebFOCUS substitue automatiquement les valeurs pour variable système rencontrées dans les requêtes du gestionnaire de dialogue. Par exemple, vous pouvez utiliser la variable système &DATE pour inclure automatiquement la date système dans votre requête.

Les variables fournies par le système ne devraient pas être remplacées. Pour éviter cette possibilité, les variables fournies par les utilisateurs ne doivent pas être affectées avec des noms de variables fournies par le système.



x
Référence : Résumé des variables spéciales

Le tableau suivant décrit les variables système du Gestionnaire de dialogue.

Variable

Format ou Valeur

Description

&DATE
MM/DD/YY

Renvoie la date actuelle.

&DATEfmt											
&DATXfmt											

Retourne la date en cours ou la valeur date/heure, où fmt représentant toute date valide au format date/heure. &DATEfmt récupère les espaces vides de fin dans une valeur retournée. &DATXfmt supprime les espaces vides de fin dans la valeur retournée.

Remarque : l'utilisation des symboles de concaténation (|) pour supprimer une ponctuation entre composants n'est pas prise en charge. Pour retourner une valeur sans ponctuation entre composants, utilisez &YYMD ou &DATEHYYMDN.

Pour des informations sur l'format date et date/heure, consultez le chapitre , Décrire un fichier individuel dans le manuel Décrire les données en langage WebFOCUS.

Retourne la date en cours ou la valeur date/heure, où fmt représentant toute date valide au format date/heure. Par ce que beaucoup d'options de format de date peuvent être ajoutées au préfixe DATE pour construire l'un de ces noms de variables, vous devriez éviter d'utiliser DATE en tant que préfixe lors de la création d'un nom de variable.

&DMY
DDMMYY

Renvoie la date actuelle.

&DMYY
DDMMCCYY

Renvoie la date actuelle (année sur quatre chiffres).

&FOCCODEPAGE
 

Retourne la page de code qui est utilisée par FOCUS.

&FOCCPU
milliseconds

Calcul le temps CPU du système d'exploitation.

&FOCEXTTRM
ON
OFF

Indique la disponibilité d'attribut du terminal étendu.

&FOCFEXNAME
 

Retourne le nom du FOCEXEC exécuter même s'il a déjà été exécuté avec une commande EX ou une commande ‑INCLUDE au sein d'un autre FOCEXEC. Cette variable est différente de la variable &FOCFOCEXEC parce que &FOCFOCEXEC renvoie le nom du FOCEXEC appelé seulement.

&FOCFIELDNAME
NEW
OLD
NOTRUNC

Retourne une chaîne indiquant si des noms de champs longs et qualifiés sont pris en charge. Une valeur OLD indique qu'ils ne sont pas pris en charge ; NEW indique qu'ils sont pris en charge ; et NOTRUNC indiquer qu'ils sont pris en charge, mais des troncatures uniques de noms de champs ne peuvent pas être utilisées.

&FOCFOCEXEC

 

Gère les opérations de reporting qui utilisent beaucoup de requêtes nommées d'une façon similaire qui sont exécutés en utilisant EX. &FOCFOCEXEC vous permet de déterminer facilement quelle procédure est exécutée. &FOCFOCEXEC peut être spécifié au sein d'une requête ou d'une commande du Gestionnaire de Dialogue pour afficher le nom de la procédure en cours d'exécution.

&FOCINCLUDE

 

Gère les opérations de reporting qui font appel à des requêtes nommées de la même façon et qui sont incluses dans l'utilisation -INCLUDE. &FOCINCLUDE peut être spécifié au sein d'une requête ou d'une commande du Gestionnaire de Dialogue pour afficher le nom de la procédure incluse en cours.

&FICLANGCODE

Retient le code de langue sur trois caractères, par exemple GER pour GERMAN ou FRE pour FRENCH. Cette variable est vide que la langue est English, AME ou ENG.

 

&FOCMODE
CRJE
MSO
OS
TSO

Identifie l'environnement opérationnel.

&FOCNEXTPAGE

 

Établit une numérotation de page consécutive au travers de plusieurs rapports. Lorsqu'un rapport est traité, la variable &FOCNEXTPAGE et renseigner avec le numéro qui suit le dernier numéro de page dans le rapport. Cette valeur peut être utilisée en tant que premier numéro de page dans le rapport suivant, rendant la sortie du rapport provenant de plusieurs requêtes plus lisible et plus utile.

&FOCPRINT
ONLINE
OFFLINE

Renvoie le paramètre d'imprimante actuel.

&FOCPUTLVL
WebFOCUS PUT level number.

Par exemple, 9306 oU 9310.

&FOCPUTLVL n'est plus pris en charge.

&FOCQUALCHAR
.
:
!
%
|
\

Renvoie le caractère utilisé pour séparer les composants des noms de champ qualifié.

&FOCREL
release number

Identifier le numéro de mise à jour FOCUS. Par exemple, 6.5 oU 6.8.

&FOCSBORDER
ON
OFF

Si des bordures solides sont utilisées en mode plein écran.

&FOCTRMSD
24
27
32
43

Indique afficher hauteur. (Il peut s'agir de n'importe quelle valeur ; les exemples montrés ont des paramètres communs.)

&FOCTRMSW
80
132

Indique afficher largeur. (Il peut s'agir de n'importe quelle valeur ; les exemples montrés ont des paramètres communs.)

&FOCTRMTYP
3270
TTY
UNKNOWN

Identifie le type de terminal.

&FOCUSER

 

Renvoie l'ID utilisateur connecté. Similaire à la fonction GETUSER.

&HIPERFOCUS
ON
OFF

Renvoie une chaîne montrant si HiperFOCUS est actif.

&IORETURN

 

Retourne le code renseigné par l'opération -READ ou -WRITE du Gestionnaire de Dialogue. (0 = succès ; 1= échec.)

&MDY
MMDDYY

Renvoie la date actuelle. Ce format rend cette variable utile pour des comparaisons numériques.

&MDYY
MMDDCCYY

Renvoie la date actuelle (année sur quatre chiffres).

&RETCODE
numeric

Retourne le code de retour renseigné à l'exécution d'une commande du système d'exploitation. Exécute toutes les commandes FOCUS dans le FOCSTACK exactement de la même manière que la commande -RUN.

&SETFILE
alphanumeric

Contient la valeur de la commande SET FILE.

&TOD
HH.MM.SS

Renvoie la date/heure actuelle. Quand vous entrez dans FOCUS, cette variable est mise à jour autant système en cours dans le seul cas où vous exécutez une commande MODIFY, SCAN, ou FSCAN. Pour obtenir le temps exact pendant n'importe quel processus, utilisez la fonction HHMMSS.

&YMD
YYMMDD

Renvoie la date actuelle.

&YYMD
CCYYMMDD

Renvoie la date actuelle (année sur quatre chiffres).



Exemple : Extraction de la date en utilise la variable système &DATE

L'exemple suivant incorpore la variable système &DATE dans une requête. Le pied de page utilise la variable système &DATE pour insérer la date système en cours en pied de page de rapport.

TABLE FILE SALES
SUM UNIT_SOLD
BY PROD_CODE
FOOTING 
"CALCULATED AS OF &DATE"
END


Exemple : Extraction du nom de la procédure en utilisant la variable système &FOCFOCEXEC

Cet exemple illustre comment utiliser la variable système &FOCFOCEXEC dans une requête pour afficher le nom de la procédure en cours d'exécution :

TABLE FILE EMPLOYEE
"REPORT: &FOCFOCEXEC -- EMPLOYEE SALARIES"
PRINT CURR_SAL BY EMP_ID
END

Si la requête est stockée en tant que procédure appelée SALPRINT, elle produit le résultat suivant à son exécution :

REPORT: SALPRINT -- EMPLOYEE SALARIES
EMP_ID            CURR_SAL
------            --------
071382660       $11,000.00
112847612       $13,200.00
117593129       $18,480.00
119265415        $9,500.00
119329144       $29,700.00
123764317       $26,862.00
126724188       $21,120.00
219984371       $18,480.00
326179357       $21,780.00
451123478       $16,100.00
543729165        $9,000.00
818692173       $27,062.00

&FOCFOCEXEC et &FOCINCLUDE peuvent aussi être utiliséS dans des commandes -TYPE. Par exemple, vous avez une procédure nommée EMPNAME contenant :

-TYPE &|FOCFOCEXEC is: &FOCFOCEXEC

Quand EMPNAME est exécuté, la sortie suivante est produite :

&FOCFOCEXEC IS: EMPNAME


Exemple : Affichage d'une date en utilise la variable système &YYMD

Vous pouvez afficher une variable date contenant une année sur 4 chiffres sans séparateur. Les variables sont &YYMD, &MDYY, et &DMYY.

L'exemple suivant montre un rapport utilisant &YYMD :

TABLE FILE EMPLOYEE
HEADING
"SALARY REPORT RUN ON DATE &YYMD"
"  "
PRINT DEPARTMENT CURR_SAL
BY LAST_NAME BY FIRST_NAME
END

La sortie est montrée ci-dessous.



x
variables statistiques

WebFOCUS poste beaucoup de statistiques concernant l'ensemble des opérations pendant l'exécution d'une procédure, sous la forme de variables statistiques. Tout comme avec les variables système, WebFOCUS fournit automatiquement des valeurs pour ces variables, à la demande.



x
Référence : Résumé des variables statistiques

Le tableau suivant décrit les variables statistiques du Gestionnaire de dialogue.

Variable

Description

&ACCEPTS

Indique le nombre de transactions acceptées. Cette variable ne s'applique qu'avec les requêtes MODIFY.

&BASEIO

Indique le nombre d'opérations entrée/sortie effectuées.

&CHNGD

Indique le nombre de segments mis à jour. Cette variable ne s'applique qu'avec les requêtes MODIFY.

&DELTD

Indique le nombre de segments supprimés. Cette variable ne s'applique qu'avec les requêtes MODIFY.

&DUPLS

Indique le nombre de transactions rejetées suite à des valeurs dupliquées dans la source de données. Cette variable ne s'applique qu'avec les requêtes MODIFY.

&FOCDISORG

Indique le pourcentage de désorganisation pour un fichier FOCUS. Vous pouvez utiliser ? FILE pour afficher ou tester cette variable, même si la valeur est inférieure à 30 % (le niveau auquel ? FILE affiche le montant de désorganisation).

&FOCERRNUM

Indique le dernier numéro d'erreur, au format FOCnnnn, affiché après l'exécution d'une procédure. S'il y a eu plus d'une erreurs, &FOCERRNUM indique le numéro de l'erreur la plus récente. S'il n'y a eu aucune erreur, &FOCERRNUM prend la valeur 0. Elle peut aussi être utilisée pour contrôler le branchement à partir d'une procédure pour exécuter une routine de gestion d'erreur.

&FORMAT

Indique le nombre de transactions rejetées à la suite d'une erreur de formatage. Cette variable ne s'applique qu'avec les requêtes MODIFY.

&INPUT

Indique le nombre de segments ajoutés à la source de données. Cette variable ne s'applique qu'avec les requêtes MODIFY.

&INVALID

Indique le nombre de transactions rejetées à la suite d'une condition valide. Cette variable ne s'applique qu'avec les requêtes MODIFY.

&LINES

Indique le nombre de lignes imprimées dans le dernier rapport. Cette variable ne s'applique qu'aux requêtes de rapport.

&NOMATCH

Indique le nombre de transactions rejetées suite à une valeur sans correspondance dans la source de données. Cette variable ne s'applique qu'avec les requêtes MODIFY.

&READS

Indique le nombre d'enregistrements lus à partir d'un fichier non-FOCUS.

&RECORDS

Indique le nombre d'enregistrements extraits du dernier rapport. Cette variable ne s'applique qu'aux requêtes de rapport.

&REJECTS

Indique le nombre de transactions rejetées pour d'autres raisons que celles qui ont été spécifiquement enregistrées par d'autres variables statistiques. Cette variable ne s'applique qu'avec les requêtes MODIFY.

&TRANS

Indique le nombre de transactions traitées. Cette variable ne s'applique qu'avec les requêtes MODIFY.



Exemple : Contrôler l'exécution d'une requête avec la variable statistique &LINES

Dans l'exemple suivant, le système calcule la valeur de la variable statistique &LINES. Si &LINES est égale à 0, le contrôle passe à la requête TABLE FILE EMPLOYEE identifiée par le label ‑RPT2. Si la valeur n'est pas 0, le contrôle passe au label ‑REPTDONE, et le traitement est terminé.

TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR &CITY"
SUM UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY CITY
IF CITY EQ &CITY
BY PROD_CODE
IF PROD_CODE IS-FROM &CODE1 TO &CODE2
END
-RUN 
-IF &LINES EQ 0 GOTO RPT2 ELSE GOTO REPTDONE;
-RPT2
TABLE FILE EMPLOYEE
   .
   .
   .
END
-RUN 
-REPTDONE
-EXIT


x
Variables spéciales

FOCUS fournit des variables spéciales s'appliquant au curseur de la souris, les raccourcis clavier, les fenêtres, et d'autres fonctionnalités.





x
Effectuer une Requête sur des Valeurs de Variables et de Paramètres

Deux commandes du Gestionnaire de dialogue vous permettent de :

De plus, vous pouvez émettre deux QUERY (?) commandes depuis l'invite WebFOCUS pour afficher les valeurs de :



x
Syntaxe : Afficher la valeur d'une variable

Remarque : vous pouvez interroger toutes les variables Gestionnaire de Dialogue (local, global, système et statisitque) à partir d'une procédure stockée en lançant : La syntaxe est :

-? &[&variablename]

où :

&

Effectuée une seule fois, affiche toutes les variables de tous les types.

variablename

Est une variable amper complète ou une chaîne partielle allant jusque 12 caractères. Seules les variables amper commençant par la chaîne spécifiée sont affichées.

La commande affiche le message suivant, suivi d'une liste de variables amper en cours et les valeurs :

CURRENTLY DEFINED & VARIABLES:

Les variables locales n'existant pas à l'extérieur d'une procédure, il n'y a pas de requête similaire disponible pour la ligne de commande WebFOCUS.



x
Syntaxe : Stockage de configuration des paramètres de valeur

Vous pouvez stocker la valeur courante d'un paramètre SET dans une variable et utiliser cette valeur dans une procédure. La syntaxe est :

-? SET parameter &[&]variablename						

où :

paramètre

Existe-t-il un paramètre WebFOCUS valide pouvant faire l'objet d'une requête avec le ? SET ou ? commande ? SET

variablename

Est le nom de la variable où la valeur doit être stockée.



Exemple : Stockage de configuration d'une valeur de paramètre

Si vous entrez ce qui suit, la valeur stockée dans &ABC devient la valeur de ASNAMES.

-? SET ASNAMES &ABC
-TYPE &ABC

Si vous omettez &ABC dans la commande, une variable appelée &ASNAMES contenant la valeur ASNAMES est créée.


Haut de page

x
Fournir et vérifier des valeurs pour variables

Dans cette section :

Référence :

Lorsque vous concevez une procédure du gestionnaire de dialogue avec des variables, vous devez toujours décider comment les variables de la procédure vont acquérir des valeurs au moment de l'exécution. Vous pouvez utiliser ou encore combiner les techniques suivantes.

Vous pouvez fournir des valeurs de variables directement dans les procédures, sans inviter l'utilisateur à les entrer, en utilisant les méthodes suivantes :

Vérifier l'entrée utilisateur : pour des valeurs fournies par utilisateur, vous pouvez aussi vérifier l'entrée en la comparant à :



x
Référence : Règles pour fournir des valeurs de variables

Les règles suivantes s'appliquent aux valeurs pour variable :



Exemple : Fournir des valeurs de variable dans une procédure

Cet exemple illustre l'utilisation des commandes -DEFAULT et -SET pour fournir des valeurs pour les variables. L'utilisateur final devra fournir la valeur B10 pour &CODE1, B20 pour &CODE2, et SMITH pour &REGIONMGR à l'invitation du formulaire HTML.

Les nombres à gauche de l'exemple s'appliquent aux annotations qui suivent :

1. -DEFAULT &VERB=SUM 
2. -SET &CITY=IF &CODE1 GT 'B09' THEN 'STAMFORD' ELSE 'UNIONDALE'; 
3. -TYPE REGIONAL MANAGER FOR &CITY
    SET PAGE=OFF 
5.     TABLE FILE SALES
       HEADING CENTER
       "MONTHLY REPORT FOR &CITY"
       "PRODUCT CODES FROM &CODE1 TO &CODE2"
       " "
       &VERB UNIT_SOLD AND RETURNS AND COMPUTE
       RATIO/D5.1 = 100 * (RETURNS/UNIT_SOLD);
       BY PROD_CODE
       IF PROD_CODE IS-FROM &CODE1 TO &CODE2
       FOOTING CENTER 
4.     "REGION MANAGER: &REGIONMGR"
       "CALCULATED AS OF &DATE"
       END 
6. -RUN

La procédure s'exécute de la manière suivante :

  1. La commande -DEFAULT applique la valeur de &VERB à SUM.
  2. La commande-SET fournit la valeur pour &CITY en fonction de la valeur saisie par l'utilisateur final dans le formulaire pour &CODE1. L'utilisateur final ayant entré B10 en tant que valeur pour &CODE1, &CITY devient STAMFORD.
  3. Quand l'utilisateur final exécute le rapport, WebFOCUS écrit un message qui incorpore la valeur pour &CITY :
    REGIONAL MANAGER FOR STAMFORD
  4. L'utilisateur fournit la valeur pour &REGIONMGR en réponse à une invite implicite. FOCUS fournit les données en cours au moment de l'exécution.
  5. L'empilement contient les lignes suivantes :
    TABLE FILE SALES
    HEADING CENTER
    "MONTHLY REPORT FOR STAMFORD"
    "PRODUCT CODES FROM B10 TO B20"
    " "
    SUM UNIT_SOLD AND RETURNS AND COMPUTE
    RATIO/D5.1 = 100 * (RETURNS/UNIT_SOLD);
    BY PROD_CODE
    IF PROD_CODE IS-FROM B10 TO B20
    FOOTING CENTER
    "REGION MANAGER: SMITH"
    "CALCULATED AS OF 06/11/03"
    END
  6. La commande -RUN provoque l'exécution de toutes les commandes dans l'empilement. La sortie de la requête du rapport est la suivante :
        MONTHLY REPORT FOR STAMFORD
       PRODUCT CODES FROM B10 TO B20
     
    PROD_CODE  UNIT_SOLD  RETURNS  RATIO
    ---------  ---------  -------  -----
    B10              103       13   12.6
    B12               69        4    5.8
    B17               49        4    8.2
    B20               40        1    2.5
     
           REGION MANAGER: SMITH
         CALCULATED AS OF 06/11/03


x
Fournir une valeur de variable par défaut

Les commandes -DEFAULT indiquent les valeurs par défaut pour les variable globales et locales. Cette technique assure que la valeur est bien transmise à la variable de façon à ce que l'utilisateur ne soit pas invité à renseigner cette valeur.

Vous pouvez lancer plusieurs commandes -DEFAULT pour une variable. Si la variable globale, ces commandes -DEFAULT peuvent être entrées dans des FOCEXECs séparés. À tout moment avant qu'une autre méthode ne soit utilisée pour établir une valeur pour une variable, la commande -DEFAULT la plus récente sera prise en compte.

Cependant, dès lors qu'une valeur pour une variable est établie en utilisant une autre méthode (par exemple en entrant une commande -SET, qui récupère une entrée de valeur par l'utilisateur, ou qu'il y une valeur à partir d'un fichier), les commandes -DEFAULT suivantes pour cette variable seront ignorées.

Remarquez que -DEFAULTS et -DEFAULTH sont synonymes de -DEFAULT.



x
Syntaxe : Fournir une valeur par défaut
-DEFAULT[S|H] &[&]name=value [...] [;]

où :

nom

est le nom de la variable.

value

Est la valeur par défaut affectée à la variable.

;

Est un caractère de ponctuation optionnelle.

Remarque : -DEFAULTS et -DEFAULTH sont synonymes de -DEFAULT.



Exemple : Fournir une valeur par défaut

Dans l'exemple suivant, -DEFAULT renseigne la valeur par défaut de &PLANT pour Boston (BOS) :

-DEFAULT &PLANT=BOS
TABLE FILE CENTHR
     .
     .
     .


x
Fournir des valeurs de variables dans une expression

Vous pouvez affecter une valeur à la valeur en calculant la valeur dans une expression ou en affectant une valeur litérale à la variable avec la commande -SET. Vous pouvez aussi utiliser la phrase IN FILE pour tester si la valeur de ce caractère existe dans un fichier et affecter une variable avec le résultat. La valeur de la variable prend la valeur 1 dans le cas où la valeur testée dans le fichier existe ou la valeur 0 si elle n'existe pas.

Vous pouvez utiliser cette technique pour fournir des dates au Gestionnaire de Dialogue en tant que valeurs de variables.. Une date fournie au Gestionnaire de Dialogue dans une variable ne peut pas avoir une longueur supérieure à 20 caractères, les espaces inclus. Les variables du Gestionnaire de Dialogue n'acceptent des dates à format complet (c'est-à-dire, MDY ou MDYY, dans l'ordre de votre choix).

Si vous travaillez avec des dates à cheval entre deux siècles qui n'incluent pas une année sur quatre chiffres, vous pouvez utiliser les paramètres SET DEFCENT et YRTHRESH.

Si vous souhaitez appliquer une valeur de variable à un nombre, les caractères pris en charge que vous pouvez utiliser sont des chiffres numériques, par exemple le signe -, et une virgule pour représenter les emplacements de décimales suivant. Ces derniers sont les seuls caractères valides que le Gestionnaire de Dialogue prend en charge en tant que nombre, et ce quels que soient les options EDIT ou la valeur du CDN.



x
Syntaxe : Affecter une valeur dans une expression
-SET &[&]name= {expression|value};
-SET &[&]var3= &var1 IN FILE filename1 [OR &var2 IN FILE filename2 ...];

où :

nom

est le nom de la variable.

expression

est une expression valide. Des expressions peuvent occuper plusieurs lignes, il devez donc terminer la commande avec un point-virgule.

value

Est une valeur litérale ou une expression logique ou arithmétique affectée à la variable. Si la valeur littérale contient des virgules ou des espaces vides incorporés, vous devez entourer la valeur avec des guillemets simples.

&[&]var3

Il s'agit d'une variable qui est remplie avec la valeur 1 si le résultat de l'expression côté droit du signe = a la valeur True, ou bien avec la valeur zéro si le résultat est faux (False).

&var1

Est la variable qui contient la valeur à rechercher dans filename1.

&var2

Est la variable qui contient la valeur à rechercher dans filename2.



x
Référence : Notes utilisation pour IN FILE
  • Le résultat de la phrase IN FILE est une valeur alphanumérique (10) qui peut être utilisé dans une expression logique connectée avec les opérateurs and ou or au sein de la même commande SET. Cette valeur ne peut pas être utilisée en tant qu'argument dans une opération alphanumérique telle que une concaténation au sein de la même commande SET.
  • Si vous voulez que IN FILE retourne la valeur un, les valeurs dans le fichier est la chaîne de recherche doive être exactement les mêmes, en commençant par l'octet du fichier situé le plus à gauche.
  • Le fichier peut se situer dans n'importe quel ordre et peut avoir des valeurs dupliquer. La recherche s'arrête soit si la première correspondant se trouvait ou dans le cas ou la fin du fichier est atteinte. Si le fichier à une allocation mais n'existe pas, la valeur zéro et retourner. Si le fichier n'est pas alloué, un message FOC351 s'affiche.
  • La longueur de la variable utilisée dans la phrase IN FILE détermine le nombre de d'octets depuis le début de chaque enregistrement dans le fichier utilisé pour comparaison. Seule une correspondance exacte avec ce nombre d'octets va retourner la valeur 1. Les espaces vides à droite dans la variable vont nécessiter l'utilisation du même nombre d'espaces vides de droite dans le fichier à des fins de correspondance. Par exemple, l'exemple suivant va correspondre uniquement avec la valeur 'ABC' (ABC avec trois espaces à droite) :
    -SET &VAR1 = 'ABC   ';
    -SET &VAR2 = &VAR1 IN FILE FILE1;


x
Syntaxe : Spécificier une précision pour calculs avec le Gestionnaire de Dialogue

Le paramètre DMPRECISION active les commandes -SET du gestionnaire de dialogue pour calculer précisément les valeurs de variable numérique sans avoir à utiliser la fonction FTOA.

Sans la présence ce paramètre, les résultats de calcul numérique sont retournés en tant que nombre entier, bien que les calculs tels quels emploient une arithmétique à double précision. Pour retourner un nombre avec une précision décimale 100 ce paramètre, vous devez entrer le calcul en temps qu'entrée de la sous-routine FTOA, ou vous pouvez spécifier le nombre de décimales qui sont retournées.

La commande SET DMPRECISION donne aux utilisateurs l'option de choisir entre accepter la troncature par défaut pour la portion décimale de la sortie à partir de calcul arithmétique, ou bien de spécifier cinq décimales pour arrondir le résultat.

SET DMPRECISION = {OFF|n}

où :

OFF

Tâches spécifiées le troncature sans arrondissement après le point décimale. OFF est la valeur par défaut.

n

Il s'agit d'un nombre positif entre 019, indiquant la valeur d'arrondissement. Notez que n=0 résulte en une valeur entière arrondie.

  • Lorsque vous utilisez SET DMPRECISION, vous devez obligatoirement inclure -RUN à la suite de la commande SET DMPRECISION pour vous assurer que cette précision et indiquer avant d'exécuter toute commande -SET numérique.
  • Vu que la conversion actuelle à double précision respecte les règles du système d'exploitation, les valeurs peuvent varier d'une plate-forme à l'autre.


Exemple : Précision de spécification pour calcul avec le gestionnaire de dialogue

Le tableau suivant montre le résultat de la division de 20 par 3 avec avec divers paramètres DMPRECISION (DMP) :

SET DMPRECISION =

Résultat

OFF

6

0

7

1

6.7

2

6.67

9

6.666666667



Exemple : Indiquer une valeur de variables dans une expression

Dans l'exemple suivant, -SET affecte la valeur 14Z ou 14B à la variable &STORECODE, tel que déterminé par l'expression logique IF. La valeur de &CODE est fournie par l'utilisateur final.

-SET &STORECODE = IF &CODE GT C2 THEN '14Z' ELSE '14B';
   TABLE FILE SALES
   SUM UNIT_SOLD AND RETURNS
   BY PROD_CODE
   IF PROD_CODE GE &CODE
   BY STORE_CODE
   IF STORE_CODE IS &STORECODE
   END


Exemple : Paramétrer une valeur littérale

L'utilisation de guillemets simples entourant un littéral est optionnelle à moins que le littéral ne contiennent des espaces vides incorporés, des virgules, ou des signes égal. Dans ces cas, vous devez les inclure tel qu'illustré ci-dessous :

-SET &NAME='JOHN DOE';


Exemple : Indiquer la différence entre deux dates

Cet exemple fournit des dates au Gestionnaire de Dialogue en tant que variables. La variable &DELAY prend la valeur égale à la différence de jours entre &LATER et &NOW.

-SET &NOW = 'JUN 30 2002';
-SET &LATER = '2002 25 AUG';
-SET &DELAY = &LATER - &NOW;
-TYPE &DELAY


Exemple : Tester si la valeur de variable est dans un fichier

Le FOCEXEC suivant crée un fichier alphanumérique HOLD appelé COUNTRY1 avec les noms des pays présents dans le fichier CAR. Puis il affecte la variable &C égale à FRANCE. La phrase IN FILE renvoie la valeur 1 à &IN1 si FRANCE est présent dans le fichier HOLD et si 0 ne l'est pas :

TABLE FILE CAR                                   
PRINT COUNTRY                                    
ON TABLE HOLD AS COUNTRY1 FORMAT ALPHA           
END                                              
-RUN                                             
-SET &C = 'FRANCE';                              
-SET &IN1 = &C IN FILE COUNTRY1;                
-TYPE THE VALUE IS &IN1                     

La sortie montre que FRANCE est présent dans le fichier COUNTRY1 :

THE VALUE IS 1 


Exemple : Initialisation d'une variable sur une chaîne longue

Pour indiquer la valeur d'une variable avec -SET, vous devez spécifier une chaîne de caractères sur le côté droit de la commande SET. La chaîne de caractères ne pouvant être placéesur plusieurs lignes, si nécessaire, vous pouvez effectuer une concaténation plus courte des chaînes ou des variables afin de composer la chaîne longue.

La procédure suivante créée une variable nommée &LONG contenant une chaîne longue :

-SET &LONG = 'THIS IS A LONG AMPER VARIABLE. NOTE THAT IN ORDER '
-  |'TO SET ITS VALUE USING -SET, YOU MUST CONCATENATE SHORTER STRINGS, '
-  |'EACH OF WHICH MUST FIT ON ONE LINE.';
-TYPE &LONG
END

La sortie est :

THIS IS A LONG AMPER VARIABLE.NOTE THAT IN ORDER TO SET ITS VALUE USING 
-SET, YOU MUST CONCATENATE SHORTER STRINGS, EACH OF WHICH MUST FIT ON ONE 
LINE.


x
Lecture des valeurs de variables à partir d'un fichier externe et lire ces variables à partir du même fichier externe

Vous pouvez lire les valeurs de variables depuis un fichier externe, ou les écrire dans un fichier externe avec les commandes -READ et -WRITE respectivement.

Le fichier externe peut-être un fichier à format fixe (dans lequel les données sont stockées dans des colonnes fixées) ou bien dans un fichier à format libre (dans lequel des données sont stockées à l'aide d'un format délimité par virgule).

Vous pouvez aussi lire un fichier en utilisant la commande -READ. La commande -READFILE lit un fichier en commençant par effectuer la lecture de son fichier Maître et crée des variables d'invite de saisie pour le Gestionnaire de Dialogue basées sur les formats ACTUAL pour chaque champ du fichier maître. Puis cette commande lit le fichier puis, si nécessaire, convertit les champs de valeurs numériques en chaîne de caractères alphanumériques retournées vers les variables qui ont été créées. L'affichage des options aux formats USAGE ne sont pas transmises aux variables. Les noms des variables d'invite sont les noms des champs préfixés avec un signe amper (&).



x
Syntaxe : Extraire une valeur de variable à partir d'un fichier externe
-READ ddname[,] [NOCLOSE] &name[.format.][,] ...

où :

ddname

est le nom logique du fichier tel que défini dans WebFOCUS en utilisant ALLOCATE ou DYNAM ALLOCATE.

Un espace après le ddname dénote un fichier à format fixé alors que la virgule dénote un fichier délimité par virgule.

NOCLOSE

Indique que le fichier devrait être gardé ouvert même si un -RUN est rencontré. Le fichier est fermé lorsque la procédure est terminée ou lorsqu'une commande -CLOSE ou une commande -WRITE suivante est rencontrée.

nom

est le nom de la variable. Vous pouvez spécifier plus d'une variable. L'utilisation de virgules pour séparer les variables est optionnel.

Si la liste des variables est plus longue qu'une seule ligne, finissez la première ligne avec une virgule et débutez la ligne qui suit avec un tiret suivi d'un espace (- ) pour les fichiers délimités par virgule ou un tiret suivi d'une virgule puis d'un espace (-, ) pour les fichiers à format fixe. Par exemple :

fichiers délimités par des virgules

-READ EXTFILE, &CITY,&CODE1,
- &CODE2

Fichiers à format fixé

-READ EXTFILE &CITY.A8. &CODE1.A3.,
-, &CODE2.A3
format

est le format de la variable. Il peut être alphanumérique (A) ou numérique (N) Notez que ce format doit être délimité avec des points. Le format est ignoré pour des fichiers délimités par des virgules.

Remarque : -SET fournit une méthode alternative pour définir la longueur d'une variable en utilisant le nombre correspondant de caractères entouré de guillemets simples ('). Par exemple, la commande suivante définit la longueur de &CITY sur 8 :

-SET &CITY='        ';


Exemple : Lire une valeur à partir d'un fichier externe

Supposons que EXTFILE est un fichier à format fixe contenant les données suivantes :

STAMFORDB10B20

Pour détecter la fin d'un fichier, le code suivant test la variable système &IORETURN. Quand il n'y a plus d'enregistrement à lire, une valeur égale à zéro ne sera pas trouvée.

-READ EXTFILE &CITY.A8. &CODE1.A3. &CODE2.A3.
-IF &IORETURN NE 0 GOTO RESUME;
    TABLE FILE SALES
    SUM UNIT_SOLD
    BY CITY
    IF CITY IS &CITY
    BY PROD_CODE
    IF PROD_CODE IS-FROM &CODE1 TO &CODE2
    END
-RESUME
 .
 .
 .


x
Syntaxe : Écrire une valeur de variable dans un fichier externe
-WRITE ddname [NOCLOSE] text						

où :

ddname

est le nom logique du fichier tel que défini dans WebFOCUS en utilisant ALLOCATE ou DYNAM ALLOCATE.

NOCLOSE

Indique que le fichier devrait être gardé ouvert même si un -RUN est rencontré. Le fichier est fermé lorsque la procédure est terminée ou lorsqu'une commande -CLOSE ou une commande -READ suivante est rencontrée.

text

Est n'importe quelle combinaison de variables et de texte. Pour écrire plus d'une ligne, terminez la première ligne avec une virgule (,) et commencer la ligne suivante avec un trait d'union suivi d'un espace (- ).

-WRITE ouvre le fichier pour recevoir le texte et le ferme à la fermeture de la procédure. Lorsque le fichier est réouvert pour écriture, le nouveau matériel remplace l'ancien Pour réouvrir pour ajouter de nouveaux enregistrements plutôt que de remplacer des enregistrements existants, utilisez l'attribut DISP MOD quand vous définissez le fichier au système d'exploitation.



Exemple : Écriture dans un Fichier

L'exemple suivant réouvre le fichier -PASS pour ajouter un nouveau texte :

DYNAM ALLOC DD PASS DA USER1.PASS.DATA MOD
-WRITE PASS &DIV &RED &TEST RESULT IS,
- &RECORDS AT END OF RUN


x
Syntaxe : Lire les champs d'un fichier Maître dans des variables du Gestionnaire de Dialogue
-READFILE [app/]mastername

où :

app

Est le répertoire d'application dans lequel se trouve le fichier.

mastername

Est le nom du fichier maître à lire.



x
Référence : Note d'utilisation pour -READFILE
  • Une commande -RUN ne ferme pas le fichier. Vous devez lancer une commande -CLOSE pour fermer le fichier. Attention de ne pas supprimer, modifier, ou re-allouer le fichier avant de le fermer.
  • Si plusieurs champs ont le même nom de champ, une seule variable est créée, et elle contient la valeur pour le dernier champ dans le fichier Maître.
  • -READFILE ne fonctionne pas si le fichier Maître contient des restrictions DBA. Le message suivant est généré :
    (FOC339) DIALOGUE MANAGER -READ FAILED: CHECK FILEDEF OR ALLOCATION FOR: -READFILE filename								
  • -READFILE n'est pas pris en charge avec des champs texte. Le message suivant est généré :
    (FOC702) THE OPTION SPECIFIED IS NOT AVAILABLE WITH TEXT FIELDS: fieldname


Exemple : Lecture de champ à partir d'une source donnée dans les variables du Gestionnaire de Dialogue en utilisant -READFILE

La requête suivante créée un fichier binaire HOLD, puis elle utilise -READFILE pour lire le premier enregistrement du fichier HOLD et écrit les valeurs qui ont été extraites dans les variables du Gestionnaire de Dialogue. Notez que les noms des variables d'invite sont les noms des champs préfixés avec un signe amper (&) :

TABLE FILE EMPLOYEE                           
PRINT LAST_NAME FIRST_NAME DEPARTMENT CURR_SAL
BY EMP_ID                                     
ON TABLE HOLD AS READF1 FORMAT BINARY         
END                                           
-RUN                                          
-READFILE READF1                              
-TYPE LAST_NAME  IS &LAST_NAME                
-TYPE FIRST_NAME IS &FIRST_NAME               
-TYPE DEPARTMENT IS &DEPARTMENT               
-TYPE CURR_SAL   IS &CURR_SAL                 
-TYPE EMP_ID     IS &EMP_ID

La sortie est :

>   NUMBER OF RECORDS IN TABLE=       12  LINES=     12 
                                                        
 HOLDING BINARY FILE...                                             
LAST_NAME  IS STEVENS                                   
FIRST_NAME IS ALFRED                                    
DEPARTMENT IS PRODUCTION                                
CURR_SAL   IS     11000.00                              
EMP_ID     IS 071382660


x
Syntaxe : Fermer un fichier externe

La commande -CLOSE ferme affiche externe ouvert avec la commande -READ ou la commande -WRITE avec l'option NOCLOSE. L'option NOCLOSE garde le fichier ouvert même si -RUN est rencontrée.

-CLOSE {ddname|*}

où :

ddname

est le ddname du fichier ouvert décrit dans WebFOCUS utilisant une allocation.

*

Ferme tous les fichiers -READ et -WRITE ouverts.



x
Fournir des Valeurs de Variables via la Ligne de commande

Quand un utilisateur connaît les valeurs qui sont requises par une procédure, certaines valeurs (ou toutes) peuvent être entrées via la ligne de commande en utilisant EXEC suivi du nom de la procédure. Ceci permet de gagner du temps puisque WebFOCUS a maintenant les valeurs qu'il doit transmettre à toutes les variables locales ou globales, de façon à ce que l'utilisateur ne soit pas invité à les fournir lui-même.



x
Syntaxe : Fournir une Valeur de Variable via la Ligne de Commande
EX[EC] procedure [[&&][variable=]value, ...]

où :

procédure

est le nom de la proicédure qui contiendra les valeurs nom/valeur.

variable

est le nom de la variable pour laquelle vous fournissez une valeur. Omettez ceci pour une variable positionnelle.

Pour une variable locale, n'incluez pas l'esperluette dans le nom de la variable.

Pour variable globale, vous devez inclure une double esperluette dans le nom de la variable :

EX SLRPT &&GLOBAL=value, CITY = STAMFORD, CODE1=B10, CODE2=B20
value

est la valeur que vous donnez à la variable.

Le nom et les paires de valeurs doivent être séparés par des virgules.

Quand la liste des valeurs à fournir dépasse la largeur de l'affichage, insérez une virgule en tant que dernier caractère sur la ligne, puis entrez le reste de la liste sur les lignes suivantes, de cette façon :

EX SLRPT AREA=S, CITY = STAMFORD, VERB=COUNT, FIELDS = UNIT_SOLD, CODE1=B10, CODE2=B20


x
Référence : Règles concernant l'utilisation de variables nommées pour positionnement avec EXEC.

Vous pouvez librement mixer des variables positionnelles à des variables nommées dans la commande EXEC. Les variables positionnelles sont des valeurs non nommées qui sont passées à la procédure lorsqu'elle est invoquée.

Respectez ces règles :

  • Les noms doivent être associés avec des valeurs pour variables nommées.

    Il n'est pas nécessaire d'entrée les paires name=value dans l'ordre tel qu'il est rencontré dans la procédure.

  • Les valeurs pour les variables de positionnement être fourni dans l'ordre dans lequel ces mêmes variables sont mentionnées au sein de la procédure.

    Si la variable peut être positionnée (s'il s'agit d'une variable de type nombre), il n'est pas nécessaire de spécifier le nom de la variable dans la commande EXEC. WebFOCUS effectue la correspondance entre les valeurs EXEC et les variables de positionnement lorsqu'elles sont rencontrées dans la procédure.



Exemple : Fournir des Valeurs via la Ligne de commande

Considérez la procédure suivante appelée SLRPT:

TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR &CITY"
SUM UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY PROD_CODE
IF PROD_CODE IS-FROM &CODE1 TO &CODE2
BY CITY
IF CITY EQ &CITY
END

Vous pouvez fournir des valeurs pour les variables sous la forme de paramètres en utilisant la commande EX de la façon suivante :

EX SLRPT CITY=STAMFORD, CODE1=B10, CODE2=B20


Exemple : Utilisation des variables de positionnement.

Prenons l'exemple suivant :

TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR &1"
SUM UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY PROD_CODE
IF PROD_CODE IS-FROM &2 TO &3
BY CITY
IF CITY EQ &1
END

La commande EX qui invoque la procédure est la suivante :

EX SLRPT STAMFORD, B10, B20

Cette commande va substituer STAMFORD pour la première variable positionable, B10 pour la seconde, et B20 pour la troisième.



Exemple : Mixer des variables nommées et positionnelles

La requête de rapport SLRPT inclure des variables nommées et positionnelles :

TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR &CITY"
&VERB UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY PROD_CODE
IF PROD_CODE IS-FROM &1 TO &2
BY CITY
IF CITY EQ &CITY
END

La commande suivante exécute SLRPT et remplit les variables nommées et positionnelles :

EX SLRPT CITY=STAMFORD, B10, B20, VERB=COUNT

&CITY est une variable nommée dont la valeur est STAMFORD.

&1 est une variable de positionnement dans la valeur est B10.

&2 est une variable de positionnement dans la valeur est B20.

&VERB est une variable nommée dont la valeur est COUNT.



x
Vérification de valeurs fournies par utilisateur en fonction d'un jeu de spécifications de format

Vous pouvez spécifier les variables avec des conditions de format qui seront comparées aux valeurs entrées. Si les valeurs entrées n'ont pas le format spécifié, WebFOCUS génère des messages d'erreur et invite l'utilisateur à renseigner à nouveau les valeurs.



x
Référence : Spécifications de format pour variables

Les formats alphanumériques sont décrits par la lettre A, suivi par le nombre de caractères. Le nombre de caractères doit être entre un et 3968.

Les formats numériques sont décrits par la lettre I, suivi par le nombre de chiffres à entrer. Ce nombre de chiffres peut être entre 1 et 10 (la valeur doit être inférieure à 231-1), et la valeur fournie pour le nombre peut contenir un point décimal.

La description du format doit obligatoirement être entourée de points.

Si vous testez des noms de champ en fonction de valeurs de variables en entrée, spécifiez les formats des variables d'entrée. Si vous ne les spécifiez pas, et que la valeur fournie dépasse la spécification de format du Fichier Maître, la procédure est arrêtée et des messages d'erreur sont affichés. Pour continuer, la procédure doit être à nouveau exécutée. Cependant, si vous incluez le format, et que la valeur fournie dépasse le format, la valeur entrée sera rejetée et l'utilisateur sera invité de nouveaux à la saisir.

Remarque : WebFOCUS stocke toutes les variables du gestionnaire de dialogue en interne sous la forme de codes alphanumériques. Pour effectuer des opérations arithmétiques, le gestionnaire de dialogue convertit la valeur de variable en décimales point flottant à double précision, puis reconvertit le résultat en code alphanumérique, en supprimant les emplacements décimaux. Pour cette raison, n'effectuez pas de tests recherchant des emplacements décimaux dans le code numérique.



Exemple : Utilisation d'une spécification de format pour vérifier l'entrée de l'utilisateur

Considérez la spécification de format suivante :

&STORECODE.A3.

Aucun message spécial n'est envoyé à l'écran qui détaille le format spécifié. Toutefois, si dans l'exemple ci-dessus, l'utilisateur entre plus de trois caractères alphanumériques, la valeur est rejetée, le message d'erreur FOC291 est affiché, et l'utilisateur doit recommencer.


Haut de page

x
Manipuler et tester des variables

Dans cette section :

Vous pouvez utiliser plusieurs techniques de manipulations et de tests des variables du gestionnaire de dialogue.



x
Tests sur Variables pour Longueur, Type, et Existence

Pour vous assurer qu'une valeur fournie et valide et qu'elle est utilisée correctement dans la procédure, vous pouvez tester sa présence, son type, et sa longueur. Par exemple, il se peut que vous ne souhaitiez pas effectuer un calcul numérique sur une variable pour laquelle des données alphanumériques ont été fournies.



x
Syntaxe : Vérification d'une Valeur de Variable pour Longueur et Type
-IF &name{.LENGTH|.TYPE} rest_of_expression GOTO label...;

où :

&name

Est une variable fournie par utilisateur.

.LENGTH

teste la longueur d'une valeur. Si une valeur n'est pas présente, un zéro (0) est transmis à l'expression. Sinon, le nombre de caractères dans la valeur est transmis.

.TYPE

teste le type d'une valeur. La lettre N (numérique) est transmise à l'expression si la valeur peut être interprétée en tant que nombre jusqu'à 231-1 et elle est stockée sur 4 octets au format à virgule flottante. Dans le gestionnaire de dialogue, le résultat d'une opération arithmétique avec des champs numériques est tronqué en un entier après que le résultat d'une expression dans son ensemble ait été calculé. Si la valeur n'a pas pu être interprétée comme étant numérique, la lettre A (alphanumérique) est transmise à l'expression. Si la valeur n'est pas définie, la lettre U est passée à l'expression.

rest_of_expression

Est ce qui reste d'une expression utilisant &name avec le suffixe spécifié.

label GOTO

Spécifie un label pour le branchement.



Exemple : Tests sur Longueur de Variable

Si la longueur de &OPTION est supérieure à un caractère, le contrôle passe au label -FORMAT, qui informe l'application cliente qu'un seul caractère est permis.

-IF &OPTION.LENGTH GT 1 GOTO FORMAT ELSE
-GOTO PRODSALES;
      .
      .
      .
-PRODSALES
    TABLE FILE SALES
      .
      .
      .
    END
-EXIT
-FORMAT
-TYPE ONLY A SINGLE CHARACTER IS ALLOWED.


Exemple : Stocker la longueur d'une chaîne

L'exemple suivant renseigne la variable &WORDLEN avec la longueur d'une chaîne contenue dans la variable &WORD.

&WORD.ENTER WORD.
-SET &WORDLEN = &WORD.LENGTH;

Vous pouvez utiliser cette technique lorsque vous souhaitez utiliser une variable pour en renseigner une autre.



Exemple : Tests sur Type de Variable

Si &OPTION n'est pas alphanumérique, le contrôle passe au label -NOALPHA, qui informe l'application cliente que seuls les caractères alphanumériques sont permis.

-IF &OPTION.TYPE NE A GOTO NOALPHA ELSE
- GOTO PRODSALES;
       .
       .
       .
-PRODSALES
    TABLE FILE SALES
       .
       .
       .
    END
-EXIT
-NOALPHA
-TYPE ENTER A LETTER ONLY.


x
Syntaxe : Tester la présence d'une variable
-IF &name.EXIST GOTO label...;

où :

&name

Est une variable fournie par utilisateur.

.EXIST

tester la présence d'une valeur. Si une valeur n'est pas présente, un zéro (0) est transmis à l'expression. Sinon, une valeur non-zéro est transmise.

label GOTO

Spécifie un label pour le branchement.



Exemple : Tester la présence d'une variable

Si aucune valeur n'est fournie, &OPTION.EXIST est égal à zéro et le contrôle est passé au label ‑CANTRUN. La procédure envoie un message à l'application cliente, puis quitte. Si une valeur est fournie, le contrôle la transmet au label -PRODSALES.

-IF &OPTION.EXIST GOTO PRODSALES ELSE GOTO CANTRUN;
      .
      .
      .
-PRODSALES
    TABLE FILE SALES
      .
      .
      .
    END
-EXIT
-CANTRUN
-TYPE TOTAL REPORT CAN'T BE RUN WITHOUT AN OPTION.
-EXIT


x
Évaluer une variable immédiatement

L'opérateur .EVAL vous permet de remplacer une variable avec sa valeur immédiatement, rendant possible la modification d'une procédure dynamiquement. L'opérateur .EVAL s'avère particulièrement utile pour modifier le code au moment de l'exécution.



x
Syntaxe : Évaluer une variable immédiatement
[&]&variable.EVAL

où :

variable

Est une variable locale globale.

Quand la procédure de commande est exécutée, l'expression est remplacée avec la valeur de la variable spécifiée avant que tout autre action ne soit exécutée. La commande qui contient cette valeur est alors réévaluée.

Sans l'opérateur .EVAL, une variable ne peut être utilisée à la place de certaines commandes.



Exemple : Évaluer une variable immédiatement

L'exemple suivant illustre l'utilisation de l'opérateur .EVAL dans une expression de sélection d'enregistrements. Les nombres à gauche s'appliquent aux annotations qui suivent la procédure :

1. -SET &R='IF SALARY GT 100000'; 
2. -IF &Y EQ 'YES' THEN GOTO START; 
3. -SET &R = '-*';
   -START 
4.   TABLE FILE CENTHR
     SUM SALARY 
     BY PLANT 
5.   &R.EVAL
     END

La procédure s'exécute de la manière suivante :

  1. La procédure renseigne la valeur de &R avec 'IF SALARY GT 100000'.
  2. Si &Y est YES, les procédures effectuent le branchement au label START sans utiliser la seconde commande -SET.
  3. Si &Y est NO, la procédure passe à la seconde commande -SET, qui renseigne &R avec '-*', qui est un commentaire.

    La requête de rapport est empilée.

  4. La procédure est value la valeur de &R. Si l'utilisateur final voulait effectuer un test de sélection d'enregistrement, la valeur de &R serait 'IF SALARY GT 100000' et cette ligne serait empilée.
  5. Si l'utilisateur final ne soit pas effectué de tests de sélection d'enregistrements, la valeur de &R est '-*' et cette ligne est ignorée.


Exemple : Utilisation de .EVAL pour interpréter une Variable

Sans .EVAL, le Gestionnaire de dialogue interprète une variable une seule fois. Dans l'exemple ci-dessous :

-SET &A='-TYPE';
&A HELLO

Le gestionnaire de dialogue ne reconnaît pas que &A est la commande -TYPE : il n'affiche donc pas le mot HELLO et génère le message d'erreur :

UNKNOWN WebFOCUS COMMAND -TYPE

Ajouter l'opérateur .EVAL à la variable &A active le gestionnaire de dialogue pour interpréter la valeur correctement. Le code

-SET &A='-TYPE';
&A.EVAL HELLO

produit la sortie suivante :

HELLO
>>


x
Concaténation de variables

Vous pouvez ajouter une variable à une chaîne de caractères ou combiner deux variable ou plus et/ou des littéraux. Consultez le manuel Création de rapports avec le langage WebFOCUS pour toutes les informations concernant la concaténation.

Remarque : lorsque vous utilisez des variables, séparez chacune d'entre elles du symbole de concaténation (||) avec un espace.



x
Syntaxe : Concaténer des Variables
-SET &name3 = &name1 || &name2;

où :

&name3

est le nom de la variable concaténée.

&name1 || &name2

Il s'agit de variables, séparées par un espace et un symbole de concaténation.

Remarque : l'exemple montré utilise une concaténation forte, indiquée par le symbole || . Une concaténation forte déplace tous les espaces de fin de &name1 vers la fin du résultat. À l'inverse, une concaténation faible, indiquée par le symbole | préserve tous les espaces de fin dans &name1.



x
Créer une variable indexée

Vous pouvez ajouter la valeur d'une variable à la valeur d'une autre variable, en créant une variable indexée. Cette fonctionnalité s'applique autant aux variables locales qu'aux variables globales.

Si la valeur indexée est numérique, l'effet est similaire à un tableau (array) utilisé dans les langages de programmation traditionnels. Par exemple, si la valeur de l'index &K varie de 1 à 10, la variable &AMOUNT.&K fait référence à l'une des dix variables, de &AMOUNT1 à &AMOUNT10.

Un index numérique peut être utilisé comme un compteur, il peut être renseigné, incrémenté, et testé dans une procédure.



x
Syntaxe : Créer une variable indexée
-SET &name.&index[.&index...] = expression;

où :

&name

Est une variable.

.&index

Il s'agit d'une variable numérique ou alphanumérique dont la valeur est ajoutée à &name. Le point est obligatoire.

Quand plus d'un index est utilisé, toutes les valeurs d'index font l'objet d'une concaténation et la chaîne s'ajoute au nom de la variable.

Par exemple, &V.&I.&J.&K est équivalent à &V1120 quand &I=1, &J=12, et &K=0.

expression

est une expression valide. Pour plus d'informations sur les types d'expression que vous pouvez écrire, consultez le manuel Création de rapports en langage WebFOCUS



Exemple : Utilisation d'une variable indexée dans une boucle

Une variable indexée peut être utilisée dans une boucle. L'exemple suivant créait l'équivalent d'une boucle DO utilisée dans les langages de programmation traditionnels :

-SET &N = 0;
-LOOP
-SET &N = &N+1;
-IF &N GT 12 GOTO OUT;
-SET &MONTH.&N=&N;
-TYPE &MONTH.&N 
-GOTO LOOP
-OUT

Dans cet exemple, &MONTH est la variable indexée et &N est l'index. La valeur de l'index est fournie via la commande -SET. La première commande -SET initialise l'index à 0, et la seconde -SET incrémente l'index à chaque fois que la procédure achève une boucle.

Si la valeur d'un index n'est pas définie avant la référence, la commande suppose une valeur vide. Par conséquent, le nom et la valeur de la variable indexée ne changera pas.

Les variables indexées sont incluses dans la limite système 1024, ce qui inclut les variables réservées pour WebFOCUS.



x
Création d'une chaîne standard délimitée par guillemets

Les chaînes de caractères doivent être entourées par des guillemets simples avant d'être utilisés par la plupart des moteurs de base de données. De plus, les guillemets simples incorporés sont indiqués par deux guillemets simples contigus. WebFOCUS et iWay requiert des guillemets autour des variables qui contiennent des délimiteurs, qui incluent des espaces et des virgules.

Le suffixe QUOTEDSTRING d'une variable du Gestionnaire de dialogue applique les de conversion suivante aux contenus de la variable :

Les commandes du Gestionnaire de Dialogue diffèrent dans la possibilité qu'ils offrent de gérer les chaînes de caractère qui ne sont pas entourés par des guillemets simples et qui contiennent des espaces vides incorporés. Une commande -PROMPT explicite ou implicite peut lire une telle chaîne. La chaîne d'entrée en entier est ensuite entourée par des guillemets simples quand elles sont manipulées par .QUOTEDSTRING.

Remarque : lors de l'utilisation de la commande -SET pour référencer une chaîne de caractères, assurez-vous que cette chaîne est entourée de guillemets simples pour éviter des erreurs.



x
Syntaxe : Créer une chaîne de caractères standard délimitée par guillemets
&var.QUOTEDSTRING

où :

&var

est une variable du Gestionnaire de Dialogue.



Exemple : Créer une chaîne de caractères standard délimitée par guillemets

L'exemple suivant affiche le résultat du suffixe QUOTEDSTRING sur des chaînes d'entrée.

-SET &A = ABC;
-SET &B = 'ABC';
-SET &C = O'BRIEN;
-SET &D = 'O'BRIEN';
-SET &E = 'O''BRIEN';
-SET &F = O''BRIEN;
-SET &G = OBRIEN';
-TYPE  ORIGINAL = &A QUOTED = &A.QUOTEDSTRING
-TYPE  ORIGINAL = &B QUOTED = &B.QUOTEDSTRING
-TYPE  ORIGINAL = &C QUOTED = &C.QUOTEDSTRING
-TYPE  ORIGINAL = &D QUOTED = &D.QUOTEDSTRING
-TYPE  ORIGINAL = &E QUOTED = &E.QUOTEDSTRING
-TYPE  ORIGINAL = &F QUOTED = &F.QUOTEDSTRING
-TYPE  ORIGINAL = &G QUOTED = &G.QUOTEDSTRING

La sortie est :

ORIGINAL = ABC        QUOTED = 'ABC'
ORIGINAL = ABC        QUOTED = 'ABC'
ORIGINAL = O'BRIEN    QUOTED = 'O''BRIEN'
ORIGINAL = O'BRIEN    QUOTED = 'O''BRIEN'
ORIGINAL = O'BRIEN    QUOTED = 'O''BRIEN'
ORIGINAL = O''BRIEN   QUOTED = 'O''''BRIEN'
ORIGINAL = OBRIEN'    QUOTED = 'OBRIEN'''
ORIGINAL = ABC        QUOTED = 'ABC'
ORIGINAL = ABC        QUOTED = 'ABC'
ORIGINAL = O'BRIEN    QUOTED = 'O''BRIEN'
ORIGINAL = O'BRIEN    QUOTED = 'O''BRIEN'
ORIGINAL = O'BRIEN    QUOTED = 'O''BRIEN'
ORIGINAL = O''BRIEN   QUOTED = 'O''''BRIEN'
ORIGINAL = OBRIEN'    QUOTED = 'OBRIEN''' 

Remarque : La commande -SET va retirer les guillemets simples autour de la chaîne. Observez dans l'exemple ci-dessus que le résultat de -SET &B = 'ABC' a été changé en ORIGINAL = ABC (comme on peut le voir dans la sortie), avant la conversion QUOTEDSTRING.



x
Référence : Notes d'utilisation pour les chaînes de caractères délimités par guillemets
  • Un guillemet simple sans correspondance au début d'une chaîne de caractères est traité comme une entrée invalide et génère le message suivant :
    (FOC257) MISSING QUOTE MARKS:  value;


x
Effectuer un Calcul sur une Variable

Vous pouvez utiliser -SET pour définir une valeur pour une variable substituée en fonction des résultats d'une expression ou d'une combinaison arithmétique ou logique.



x
Syntaxe : Effectuer un calcul sur une Variable
-SET &name = expression;

où :

&name

Il s'agit d'une variable fournie par l'utilisateur dont la valeur est affectée avec l'expression.

expression

Il s'agit d'une expression respectant les règles indiquer dans le Création de rapports avec le langage WebFOCUS, mais avec les limitations définies dans cette rubrique. Le point-virgule (;) après l'expression est requis pour indiquer la fin de la commande SET.



x
Extraction de Caractères d'une Valeur de Variable avec la fonction EDIT

Vous pouvez utiliser l'option de masque de la fonction EDIT avec des variables amper. Vous pouvez insérer des caractères dans une valeur alphanumérique, ou extraire certains caractères d'une valeur.



x
Suppression des espaces de fin des Variables avec la Fonction TRUNCATE

La fonction TRUNCATE du Gestionnaire de dialogue retire tous les espaces de fin des variables amper du gestionnaire de dialogue et en ajuste la longueur.

La fonction TRUNCATE du gestionnaire de dialogue ne possède qu'un seul argument, la chaîne ou la variable qui doit être tronquée. Si vous essayez d'utiliser la fonction TRUNCATE du gestionnaire de dialogue avec plus d'un argument, le message d'erreur suivant sera généré :

(FOC03665) Error loading external function 'TRUNCATE'

Cette fonction ne peut être utilisée que dans les commandes du gestionnaire de dialogue qui supporte les appels à fonction, telles que -SET et -IF. Il ne peut pas être utilisé dans une commande -TYPE ou en tant qu'argument passé à la procédure.

Remarque : une fonction écrite par l'utilisateur ayant le même nom peut exister sans créer de conflit dans l'application.



x
Syntaxe : Supprimer les espaces de droite Depuis Variables
-SET &var2 = TRUNCATE(&var1);

où :

&var2

Dans le cas où la variable du gestionnaire de dialogue vers laquelle la chaîne de caractères tronquée est retournée. La longueur de cette variable est égale à la longueur de la chaîne originale ou de la variable sans espace de droite vide. Si la valeur d'origine ne contenait que des espaces vides, un espace vide unique ayant la longueur de l'un d'entre est retournée.

&var1

Est la variable du gestionnaire de dialogue ou une chaîne de caractère littéral entourée par des guillemets simples ('). Les variables systèmes et statistiques sont permises, ainsi que les variables globales et locales créées par un utilisateur.



Exemple : Suppression des espaces de droite

L'exemple suivant montre le résultat de la troncature des espaces de fin :

-SET &LONG = 'ABC   ' ;
-SET &RESULT =  TRUNCATE(&LONG);
-SET &LL = &LONG.LENGTH;
-SET &RL = &RESULT.LENGTH;
-TYPE LONG   =  &LONG  LENGTH =  &LL
-TYPE RESULT =  &RESULT LENGTH =  &RL

La sortie est :

LONG   =  ABC     LENGTH =  06
RESULT =  ABC LENGTH =  03

L'exemple suivant montre le résultat de la troncature d'une chaîne consistée uniquement d'espaces vides :

-SET &LONG = '      ' ;
-SET &RESULT =  TRUNCATE(&LONG);
-SET &LL = &LONG.LENGTH;
-SET &RL = &RESULT.LENGTH;
-TYPE LONG   =  &LONG  LENGTH =  &LL
-TYPE RESULT =  &RESULT LENGTH =  &RL

La sortie est :

LONG   =          LENGTH =  06
RESULT =    LENGTH =  01

L'exemple suivant utilise la fonction TRUNCATE en tant qu'argument pour EDIT :

-SET &LONG = 'ABC   ' ;
-SET &RESULT =  EDIT(TRUNCATE(&LONG)|'Z','9999');
-SET &LL = &LONG.LENGTH;
-SET &RL = &RESULT.LENGTH;
-TYPE LONG   =  &LONG  LENGTH =  &LL
-TYPE RESULT =  &RESULT LENGTH =  &RL

La sortie est :

LONG   =  ABC     LENGTH =  06
RESULT =  ABCZ LENGTH =  04


x
Invoquer une Fonction

Tout nom de fonction rencontrée dans une expression du gestionnaire de dialogue qui n'est pas reconnu en tant que non standard du système ou de fonction WebFOCUS est considéré par défaut comme une fonction. Ces fonctions sont programmées en externe par les utilisateurs, puis stockés dans bibliothèques mise à disposition au moment référencé. Un ou plusieurs arguments sont passés au programme utilisateur, qui effectue une opération ou un calcul et renvoie une valeur unique ou une chaîne de caractères.

Les variables du gestionnaire de dialogue peuvent recevoir les valeurs de fonction via la commande -SET.

Remarque :



x
Syntaxe : Définir une Valeur de variable en fonction du résultat d'une Fonction
-SET &name = routine(argument,...,'format');

où :

nom

est le nom de la variable dans laquelle le résultat est stocké.

routine

est le nom de la fonction

argument

Représente les arguments qui doivent être passés à la fonction. Les arguments numériques sont convertis au format double précision (D).

format

est le format prédéfini du résultat. Ceci est utilisé pour reconvertir les résultats numériques en représentation de caractères. La valeur doit figurer entre guillemets simples.



x
Utilisation de variables pour altérer les commandes

Une variable peut faire référence à une commande WebFOCUS ou à un champ particulier. Cependant, la structure de la commande d'une procédure peut être déterminée par la valeur de la variable.



Exemple : Utilisation d'une variable pour contrôler ce que la commande TABLE imprime

Dans cet exemple, la variable &FIELD détermine le champ à imprimer dans la requête TABLE.

Dans le fichier nommé SALES, la variable &FIELD peut afficher les valeurs RETURNS, DAMAGED, ou UNIT_SOLD.

TABLE FILE SALES
 .
 .
 .
PRINT &FIELD
BY PROD_CODE
 .
 .
 .

Haut de page

x
Utilisation de variables numériques amper dans des fonctions

Dans cette section :

WebFOCUS stocke toutes les variables amper en tant que chaîne au format alphanumérique, qu'elles contiennent des données alphanumériques ou numériques ou un mélange des deux formats. Il n'existe que deux types de variables disponibles pour les variables ampères : alphanumériques numériques.



x
Déterminer le type de données d'une variable amper

Les données saisies pour les variables amper sont déterminées pour des contenus de données seulement. Par conséquent, l'utilisation de guillemets simples autour de valeurs numériques dans une commande –SET n'a aucun effet sur le type de données de la variable amper.

Par exemple, la requête suivante stocke des données numériques dans les variables &A, &B, and &C :

-SET &A=12345;
-SET &B='12345';
-SET &C=123.45
-TYPE &A &B &C
-TYPE &A.TYPE &B.TYPE &C.TYPE

La sortie montre que &A, &B, et &C en toute le type de données numérique :

12345 12345 123.45
N  N  N


x
Manipulation de variable Amper

Lorsqu'une variable amper est affichée, substituée, concaténée, ou rajoutée, il n'y a pas de transformation de la valeur contenue dans la variable amper.

Substitution

-SET &C=123.45
IF RETAIL_COST EQ &C  

devient

IF RETAIL_COST EQ 123.45

Aussi, considérez la considération suivante :

-SET &D= &C;
-TYPE &D &D.TYPE

La sortie montre que &D à la même valeur que &C et est aussi numérique :

123.45  N

Concaténation

La variable amper &F est créée par concaténation de &A et &C :

-SET &F =  &A | &C;
-TYPE &F &F.TYPE

La sortie montre que la valeur de &F est la valeur de &A suivie par la valeur de &C, et que le type est numérique :

12345123.45  N

L'exemple suivant crée la variable amper &E en incorporant une esperluette dans la chaîne. L'esperluette n'est pas reconnue en tant que début d'un nom de variable et est traité en tant que symbole alphanumérique dans la chaîne :

-SET &E = 1234&C;
-TYPE &E &E.TYPE

La sortie montre que la variable est de type alphanumérique, pas numérique. Il ne s'agit pas de la concaténation de la chaîne '1234' avec la variable &C :

1234&C  A

Le même comportement peut être obtenu avec concaténation :

-SET &G = AT&|T;
-TYPE &G &G.TYPE

La sortie est :

AT&T  A


x
Utilisation d'une variable Amper dans une expression

Quand une variable amper est utilisé dans une expression, il peut s'avérer nécessaire d'opérer une conversion de façon à traiter l'expression. La variable amper utilisée dans l'expression est généralement considérée comme étant littérale, et sa valeur est substituée avant que l'expression ne soit traitée. Par conséquent, la conversion de données nécessaire pour traiter l'expression est accomplie. Les valeurs numériques contenues dans des variables amper sont traitées comme des valeurs entières. Si l'expression peut être évaluée en tant qu'entier, tel sera le cas.

Dans l'exemple suivant, &C a la valeur 123.55. Puis une expression crée &D en ajoutant 100 à &C :

-SET &C=123.55;
-SET &D=&C + 100;
-TYPE &D &D.TYPE

La sortie montre que &D et numérique et que sa valeur est égale à 123.55+100 tronquée en tant qu'entier de valeur 223 par ce que l'arithmétique entière est utilisée :

223  N

L'expression suivante requière une conversion à double précision, car le littéral numérique (100.49) dans l'expression n'est pas un nombre entier :

-SET &C=123.55;
-SET &D=&C + 100.49;
-TYPE &D &D.TYPE

La sortie montre que le résultat est tronqué avant que &D ne soit retourné, pendant que l'arithmétique été faite en convertissant la valeur de &C en double précision.

224  N

Si vous souhaitez que le résultat retienne les emplacements des décimales, vous pouvez renseigner le paramètre DMPRECISION en lui affectant la valeur égale au nombre d'emplacements décimaux que vous souhaitez retourner à la variable amper résultante.

Par exemple :

SET DMPRECISION=2
-RUN
-SET &C=123.55;
-SET &D=&C + 100.49;

Maintenant, le résultat retient les emplacements des décimales :

224.04 N


x
Utiliser des Variables amper en tant que Paramètres de Fonction

La façon dont vous traitez les variables numériques amper quand vous les transmettez à une fonction dépend du type de données du paramètre de la fonction.



x
Utiliser une Variable amper numérique en tant que Paramètre numérique de Fonction

Lorsque vous utilisez une variable numérique amper en tant que paramètres numériques lors de l'appel d'une fonction, la variables amper est traitée en tant que champ. Étant maintenant un champ, elle ne possède pas de type spécifié, ni dans le fichier Maître ni dans le FOCEXEC, elle prend le type de données par défaut de la double précision.

Notez que lorsque le résultat est renvoyé à la variable de sortie, son type est déterminé par son contenu. S'il ne possède que des nombres et un point décimale, il est numérique. S'il contient d'autres symboles, il est alphanumérique.

Par exemple, la fonction FTOA converti un nombre en précision simple ou double (D ou F) en une chaîne alphanumérique au format spécifié entre les parenthèses second paramètre :

FTOA (number_to_convert, '(format)', 'alpha_output_format' )

L'exemple suivant renseigne &C en 123.55 et le passe à la fonction FTOA pour être converti en une chaîne alphanumérique avec un signe dollar :

-SET &C=123.55;
-SET &G=FTOA(&C,'(D7.2M)','A11');  
-TYPE &G &G.TYPE

La sortie montre que la chaîne $123.55 a été renvoyée à &G. Vu qu'il comporte un symbole autre que des chiffres numériques et un point décimal, son type est alphanumérique :

$123.55    A

Dans l'exemple suivant, le format renvoyé ne spécifie pas signe dollar :

-SET &A=12345;                       
-SET  &G=FTOA(&A/100,'(D7.2)','A11');
-TYPE &G &G.TYPE                     

Vu que la chaîne renvoyée ne contient que des chiffres numériques et un point décimal, son type est numérique :

123.45    N

Notez que si le nombre avait un autre chiffre, il serait renvoyé avec une virgule, et son type serait alphanumérique :

-SET &A=123456;                       
-SET  &G=FTOA(&A/100,'(D7.2)','A11');
-TYPE &G &G.TYPE                     

La sortie est :

1,234.56    A


x
Utiliser une Variable amper numérique en tant que Paramètre alphanumérique de Fonction

Lors de l'utilisation d'une variable numérique amper en tant que paramètre alphanumérique dans un appel de fonction, vous devez convertir la valeur numérique en une chaîne alphanumérique avant de l'utiliser de façon à éviter un échec dû à une erreur de format. Vous pouvez le faire en utilisant l'une des fonctions conçues pour convertir des numériques en alphanumériques, ou vous pouvez effectuer une concaténation d'un caractère alphanumérique en une valeur numérique de façon à l'affecter à un type de données alphanumérique.

Par exemple, l'exemple suivant montre la conversion de &C on une chaîne et renvoie cette chaîne à la variable &G. Ensuite, il retourne &G à la fonction RJUST, qui justifie à droite la valeur et la renvoie à la variable &H:

-SET &C=123.55;                   
-SET  &G=FTOA(&C,'(D7.2M)','A11');
-SET &H = RJUST(11,&G,'A11');    
-TYPE &G &G.TYPE                  
-TYPE &H &H.TYPE                  

La sortie est :

$123.55   A
  $123.55 A

Haut de page

x
Déboguer une procédure

Comment :

Référence :

Vous pouvez tester et déboguer votre procédure de la manière suivante.



x
Syntaxe : Afficher lignes de commande quand elles s'exécutent
{-DEFAULT|-SET|EX} &ECHO = {ON|ALL|OFF|NONE}

où :

ON

Affiche les commandes WebFOCUS qui sont étendues et empilées pour exécution.

ALL

Affiche les commandes du gestionnaire de dialogue et les commandes WebFOCUS qui sont étendues et empilées pour exécution.

OFF

Annule l'affichage des commandes empilées et des commandes du Gestionnaire de Dialogue. Il s'agit de la valeur par défaut.

NONE

Empèche l'affichage du code de procédure (renvoyé en écho). À partir du moment où la valeur de &ECHO a été renseignée avec NONE, elle ne peut pas être changée pendant la session ou la connexion.

Par défaut, toute procédure qui ne renseigne pas explicitement la variable &ECHO s'exécute avec la valeur OFF. Vous pouvez changer cette valeur par défaut pour &ECHO avec la commande SET DEFECHO.



x
Syntaxe : Définir une valeur par défaut pour la variable &ECHO
SET DEFECHO = {OFF|ON|ALL|NONE}

où :

OFF

Établit OFF en tant que valeur par défaut pour &ECHO. OFF est la valeur par défaut.

ON

Établit ON en tant que valeur par défaut pour &ECHO. Affiche les commandes WebFOCUS qui sont étendues et empilées pour exécution.

ALL

Établit ALL en tant que valeur par défaut pour &ECHO. ALL affiche les commandes du gestionnaire de dialogue et les commandes WebFOCUS qui sont étendues et empilées pour exécution.

NONE

Empèche l'affichage du code de procédure (renvoyé en écho). À partir du moment où la valeur de DEFECHO ou de &ECHO a été renseignée avec NONE, elle ne peut pas être changée pendant la session ou la connexion.



x
Référence : Note d'utilisation pour SET DEFECHO = NONE


Exemple : Empèche l'affichage du code de procédure

La procédure suivante effectue une requête sur la valeur du paramètre DEFECHO et lance une requête TABLE avec la source de données EMPLOYEE :

? SET DEFECHO 
-RUN   
-TYPE ECHO = &ECHO         
TABLE FILE EMPLOYEE        
PRINT CURR_SAL CURR_JOBCODE
BY LAST_NAME BY FIRST_NAME 
END                        
-RUN

La sortie de la commande requête montre que DEFECHO est sur OFF (la valeur par défaut) :

 DEFECHO                  OFF

La commande -TYPE montre que la valeur de &ECHO est OFF (la valeur par défaut) :

ECHO = OFF

Vu que &ECHO est sur OFF, les commandes TABLE ne s'affichent pas au moment de l'exécution de la procédure :

 NUMBER OF RECORDS IN TABLE=       12  LINES=     12
                                                    
 PAUSE.. PLEASE ISSUE CARRIAGE RETURN WHEN READY    
PAGE     1                                                
                                                          
LAST_NAME        FIRST_NAME         CURR_SAL  CURR_JOBCODE
---------        ----------         --------  ------------
BANNING          JOHN             $29,700.00  A17         
BLACKWOOD        ROSEMARIE        $21,780.00  B04         
CROSS            BARBARA          $27,062.00  A17         
GREENSPAN        MARY              $9,000.00  A07         
IRVING           JOAN             $26,862.00  A15         
JONES            DIANE            $18,480.00  B03         
MCCOY            JOHN             $18,480.00  B02         
MCKNIGHT         ROGER            $16,100.00  B02         
ROMANS           ANTHONY          $21,120.00  B04         
SMITH            MARY             $13,200.00  B14         
                 RICHARD           $9,500.00  A01         
STEVENS          ALFRED           $11,000.00  A07         
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                               END OF REPORT

Maintenant, renseignez DEFECHO=ON et ré-exécutez la procédure.

La sortie de la commande requête montre que DEFECHO est sur ON :

 DEFECHO                  ON

La commande -TYPE montre que la valeur de &ECHO a été change sur ON :

ECHO = ON

Vu que &ECHO est sur ON, les commandes TABLE s'affichent au moment de l'exécution de la procédure :

TABLE FILE EMPLOYEE                                 
PRINT CURR_SAL CURR_JOBCODE                         
BY LAST_NAME BY FIRST_NAME                          
END

Puis la sortie affiche :

 NUMBER OF RECORDS IN TABLE=       12  LINES=     12
                                                    
 PAUSE.. PLEASE ISSUE CARRIAGE RETURN WHEN READY    
PAGE     1                                                
                                                          
                                                          
LAST_NAME        FIRST_NAME         CURR_SAL  CURR_JOBCODE
---------        ----------         --------  ------------
BANNING          JOHN             $29,700.00  A17         
BLACKWOOD        ROSEMARIE        $21,780.00  B04         
CROSS            BARBARA          $27,062.00  A17         
GREENSPAN        MARY              $9,000.00  A07         
IRVING           JOAN             $26,862.00  A15         
JONES            DIANE            $18,480.00  B03         
MCCOY            JOHN             $18,480.00  B02         
MCKNIGHT         ROGER            $16,100.00  B02         
ROMANS           ANTHONY          $21,120.00  B04         
SMITH            MARY             $13,200.00  B14         
                 RICHARD           $9,500.00  A01         
STEVENS          ALFRED           $11,000.00  A07         
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                               END OF REPORT

Maintenant, lancez la commande SET DEFECHO = NONE et ré-exécutez la procédure :

SET DEFECHO = NONE

La sortie de la commande requête montre que la valeur de DEFECHO a été changée en NONE :

 DEFECHO                 NONE

La commande -TYPE montre que la valeur de &ECHO est NONE :

ECHO = NONE

DEFECHO ayant la valeur NONE, les commandes TABLE ne s'afficher pas au moment de l'exécution de la procédure. La sortie est :

 NUMBER OF RECORDS IN TABLE=       12  LINES=     12
                                                    
 PAUSE.. PLEASE ISSUE CARRIAGE RETURN WHEN READY    
PAGE     1                                                
                                                          
                                                          
LAST_NAME        FIRST_NAME         CURR_SAL  CURR_JOBCODE
---------        ----------         --------  ------------
BANNING          JOHN             $29,700.00  A17         
BLACKWOOD        ROSEMARIE        $21,780.00  B04         
CROSS            BARBARA          $27,062.00  A17         
GREENSPAN        MARY              $9,000.00  A07         
IRVING           JOAN             $26,862.00  A15         
JONES            DIANE            $18,480.00  B03         
MCCOY            JOHN             $18,480.00  B02         
MCKNIGHT         ROGER            $16,100.00  B02         
ROMANS           ANTHONY          $21,120.00  B04         
SMITH            MARY             $13,200.00  B14         
                 RICHARD           $9,500.00  A01         
STEVENS          ALFRED           $11,000.00  A07         
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                               END OF REPORT

Une fois que la valeur de DEFECHO a été renseignée avec NONE, elle ne peut pas être changée. La commande SET suivante essaie de changer la valeur sur ON, mais la sortie de la commande requête montre qu'elle a toujours la valeur NONE :

SET DEFECHO=ON          
? SET DEFECHO           
 DEFECHO                 NONE


x
Syntaxe : Tester la logique de commandes du Gestionnaire de Dialogue
{-DEFAULT|-SET|EX procname} &STACK = {ON|OFF}

où :

procname

est la procédure à exécutée.

ON

Exécute des commandes empilées normalement. Il s'agit de la valeur par défaut.

OFF

Empêche l'exécution des commandes empilées. De plus, les variables système (par exemple, &RECORDS ou &LINES) ne sont pas renseignées. Les commandes du Gestionnaire de Dialogue sont exécutées de façon à ce que vous puissiez tester la logique de la procédure.

Remarque : &STACK est généralement utilisé avec &ECHO = ALL à des fins de débogage. L'affichage affiche les commandes du gestionnaire de dialogue en même temps que celles de WebFOCUS avec les valeurs fournies. Vous pouvez visualiser la logique de la procédure.



Exemple : Utilisation de la variable &RETCODE pour tester le résultat d'une commande

Si vous utilisez Usage Simultané (Simultaneous Usage - SU), vous devez obligatoirement savoir si le serveur de base de données WebFOCUS est disponible avant de commencer une procédure particulière. La procédure suivante test si SINK1 est disponible avant de lancer PROC1.

? SU SINK1
-RUN
-IF &RETCODE EQ 16 GOTO BAD;
-INCLUDE PROC1
-BAD
-EXIT


x
Référence : Suivre le statut d'une Requête

La variable système &RETCODE renvoie un code après l'exécution d'une requête. Si la requête résulte en un affichage normal, la valeur de &RETCODE est 0. En cas d'erreur d'affichage, ou si aucun affichage n'est rendu (ce qui peut arriver si la requête ne trouve aucune donnée), la valeur de &RETCODE est 8. (Si l'erreur a lieu sur un ? SU, la valeur de &RETCODE est 16.)

La valeur de &RETCODE est renseignée à la suite de l'exécution de l'une de ses requêtes :

Commande

NORMAL

NODISPLAY

ERROR

? HOLD

0

8

 

? SU* 

0

8

16

? JOIN

0

8

 

? COMBINE

0

8

 

? DEFINE

0

8

 

? USE

0

8

 

? LOAD

0

8

 

*La valeur &RETCODE de ? SU veut dire : 0 indique que le serveur de base de données WebFOCUS (appelé auparavant machine sink) tourne avec un ou plusieurs utilisateurs, 8 indiquent qu'il tourne sans utilisateur connecté, et 16 indique qu'il y a une erreur de communication avec le serveur.

Vous pouvez tester le statut de n'importe quelle de ces requêtes en vérifiant la variable &RETCODE et en fournissant des instructions de branchement dans votre procédure.



x
Exécuter une commande du système d'exploitation

Comment :

Vous pouvez fournir une commande du système d'exploitation en configurant un environnement dans lequel une requête devra obligatoirement être exécutée. Par exemple, un programme peut changer les répertoires, renommer des fichiers, extraire des fichiers d'une archive, ou effectuer d'autres opérations avant d'exécuter une requête.



x
Syntaxe : Exécuter une commande du système d'exploitation
op_system command

où :

op_system

Spécifie le système d'exploitation.

command

Est une commande du système d'exploitation.


Haut de page

x
Référence de la syntaxe du gestionnaire de dialogue

Dans cette section :

 

Cette rubrique fournit une liste alphabétique de toutes les commandes du gestionnaire de dialogue, y compris une description des fonctions et de la syntaxe.

Elle fournit aussi une liste groupée des défauts et limites du gestionnaire de dialogue.

Notez que cette information est aussi présentée dans le chapitre dans le contexte de la tâche à laquelle s'applique.



x
-* Commande

signale le début d'une ligne de commentaires.

N'importe quel nombre de lignes de commentaires peuvent se suivre les unes les autres, mais chacune doit commencer avec -*. Un commentaire peut être inséré au début ou à la fin d'une procédure, ou encore entre deux commandes. Cependant, il ne peut pas être placé sur la même ligne que une commande.

Utilisez les lignes de commentaires pour documenter une procédure de façon à ce que son but et son historique soit clair pour les autres.

La syntaxe est :

-* text				

où :

texte

Est un commentaire. Un espace n'est pas obligatoire entre -* et text.



x
? Commande

LA commande ? affiche la valeur en cours d'une variable locale.

La syntaxe est :

-? &[variablename]

où :

variablename

Est un nom jusqu'à 12 caractères de long. Si ce paramètre n'est pas spécifié, les valeurs en cours de toutes les variables locales et globales, ainsi que les variables système et statistiques définies sont affichées.



x
commande -CLOSE

-CLOSE ferme affiche externe ouvert avec la commande -READ ou la commande -WRITE avec l'option NOCLOSE. L'option NOCLOSE garde un fichier ouvert jusqu'à ce que l'opération -READ ou -WRITE soit complétée.

La syntaxe est :

-CLOSE {ddname|*}

où :

ddname

est le ddname du fichier ouvert décrit dans WebFOCUS utilisant une allocation.

*

Ferme tous les fichiers -READ et -WRITE ouverts.



x
Commande -DEFAULT[S|H]

Les commandes -DEFAULT indiquent les valeurs par défaut pour les variable globales et locales. ‑DEFAULT garantit que des valeurs sont toujours fournies aux variables et aide à s'assurer qu'elles s'exécutent correctement.

Vous pouvez lancer plusieurs commandes -DEFAULT pour une variable. Si la variable globale, ces commandes -DEFAULT peuvent être entrées dans des FOCEXECs séparés. À tout moment avant qu'une autre méthode ne soit utilisée pour établir une valeur pour une variable, la commande -DEFAULT la plus récente sera prise en compte.

Cependant, dès qu'une valeur pour la variable est établie en utilisant une autre méthode, les commandes ultérieures -DEFAULT effectuées pour cette variable seront ignorées.

Vous pouvez remplacer les valeurs de -DEFAULT en fournissant des valeurs pour les variables sur la ligne de commande, ou encore en fournissant une valeur avec un -SET ultérieur sur -DEFAULT.

Les valeurs par défaut sont fournies dans d'autres modules WebFOCUS pour anticiper les besoins d'utilisateurs et réduire le nombre d'actions dans des situations où la plupart des utilisateurs désirent un résultat prédéfini.

La syntaxe est :

-DEFAULT[S|H] &[&]name=value [...]

où :

&name

est le nom de la variable.

value

Est la valeur par défaut affectée à la variable.



x
-commande EXIT

-EXIT force une procédure à se terminer. Toutes les commandes empilées sont exécutées et la procédure quitte. Si la procédure était appelée par une autre, la procédure appelante continuerait le traitement.

Utilisez -EXIT pour terminer une procédure après le traitement d'une branche finale qui complète la tâche désirée. La dernière ligne d'une procédure est une commande -EXIT implicite.

La syntaxe est :

-EXIT


x
commande -GOTO

Les Transfert -GOTO contrôlent un label spécifié.

Si le Gestionnaire de Dialogue trouve le label, le traitement continu avec la ligne qui le suit. Si le Gestionnaire de Dialogue trouve aucun label, le traitement s'arrête et un message d'erreur est affiché.

La syntaxe est :

-GOTO label				
    .
    .
    .
-label [TYPE text]

où :

label

Le label dans la commande -label est un nom défini par utilisateur pouvant aller jusque 12 caractères pour spécifier la cible -GOTO.

N'utilisez pas d'espaces insérés, ni le nom d'une autre commande gestionnaire de dialogue, à l'exception de -QUIT ou -EXIT. N'utilisez pas de mots qui sont susceptibles d'être confondus avec une fonction, des opérations arithmétiques et logiques, etc.

TYPE text

Envoie un message à l'application cliente.



x
-commande IF

-IF redirige le flux d'exécution d'une procédure basée sur l'évaluation d'une expression.

Une commande -IF sans un ELSE spécifié explicitement dont l'expression est fausse continue le traitement avec la ligne la suivant immédiatement.

La syntaxe est :

-IF expression [THEN] GOTO label1 
[- ELSE GOTO label2]
[- ELSE IF...];

où :

label

Est un nom défini par utilisateur jusqu'à 12 caractères spécifiant la cible de l'action GOTO.

N'utilisez pas d'espaces insérés, ni le nom d'une autre commande gestionnaire de dialogue, à l'exception de -QUIT ou -EXIT. N'utilisez pas de mots qui sont susceptibles d'être confondus avec une fonction, des opérations arithmétiques ou logiques, etc.

expression

est une expression valide. Les littéraux n'ont pas besoin d'être entourés avec des guillemets simples à moins qu'ils ne contiennent des virgules espaces vides incorporés.

THEN

Est une commande optionnelle qui améliore la lisibilité d'une commande.

ELSE GOTO

Passe le contrôle sur label2 quand le test -IF échoue.

ELSE IF

Spécifie un test composé -IF

Le point-virgule est requis à la fin de la commande, il est ligne de continuation doive obligatoirement commencer par un trait d'union.



x
-INCLUDE Commande

-INCLUDE spécifit une autre procédure à incorporer et à exécuter à l'exécution, comme si elle faisait partie de la procédure appelante. La procédure spécifiée peut comprendre une procédure partielle ou complètement développée. Notez qu'une procédure partielle ne s'exécute pas si elle est appelée à l'extérieur de la procédure contenant -INCLUDE.

Lorsque vous utilisez -INCLUDE, vous ne devriez pas effectuer de branchement sur le label à l'extérieur de la procédure spécifiée.

Une procédure peut contenir plus d'un -INCLUDE. Vous pouvez imbriquer autant de -INCLUDEs que nécessaire, mais l'appel à des -INCLUDEs récursifs est limité à quatre niveaux.

Vous pouvez utiliser n'importe quelle commande valide dans un -INCLUDE.

EXEC peut aussi être utilisé pour exécuter une procédure à l'intérieur d'une autre.

La syntaxe est :

-INCLUDE filename [filetype]

où :

filename

Est la procédure à incorporer dans la procédure appelante.

filetype

Est le DDNAME de la procédure. Si rien n'est inclus, c'est FOCEXEC qui est supposé.



x
commande -label

Le label spécifié dans la commande -label est la cible de la commande -GOTO ou du critère -IF.

La syntaxe est :

-label [TYPE message]

où :

label

Est un nom fourni par utilisateur jusqu'à 12 caractères identifiant la cible pour une branche.

N'utilisez pas d'espaces insérés, ni le nom d'une autre commande gestionnaire de dialogue, à l'exception de -QUIT ou -EXIT. N'utilisez pas de mots qui sont susceptibles d'être confondus avec une fonction, des opérations arithmétiques ou logiques, etc.

TYPE message

Envoie un message à l'application cliente.



x
commande -PASS

-PASS transmet directement la commande et contrôle les mots de passe. Cette fonctionnalité est particulièrement utile pour spécifier un fichier en particulier ou un jeu de fichier qu'un utilisateur peut lire ou écrire. Les mots de passe ont des jeux de fonctions associés via l'utilitaire DBA.

La procédure qui renseigne les mots de passe peut être cryptée de façon à ce que les mots de passe et cette procédure ne puisse pas être entrés et révélés.

Une variable peut être associée avec -PASS de façon à ce que vous soyez invités à renseigner une valeur de mot de passe.

La commande PASS fournit la même fonction au niveau de commande, tout comme le paramètre PASS de la commande SET.

La syntaxe est :

-PASS password				

où :

password

Est un mot de passe litéral FOCUS ou une variable contenant un mot de passe.



x
commande -READ.

Lit des valeurs depuis un fichier externe. -READ peut accéder aux données sous une forme fixée ou libre.

La syntaxe est :

-READ ddname[,] [NOCLOSE] &name[.format.][,] ...

où :

ddname

est le nom logique du fichier tel que défini dans WebFOCUS en utilisant ALLOCATE ou DYNAM ALLOCATE. Un espace après le ddname dénote un fichier à format fixé alors que la virgule dénote un fichier délimité par virgule.

NOCLOSE

Indique que le ddname devrait être gardé ouvert même si un -RUN est exécuté. Le ddname est fermé lorsque la procédure est terminée ou lorsqu'une commande -CLOSE ou une commande -WRITE suivante est rencontrée.

nom

est le nom de la variable. Vous pouvez spécifier plus d'une variable. L'utilisation d'une virgule pour séparer les variables est optionnel.

Si la liste des variables est plus longue qu'une seule ligne, finissez la première ligne avec une virgule et débutez la ligne qui suit avec un tiret suivi d'un espace (-) pour les fichiers délimités par virgule ou un tiret suivi d'une virgule puis d'un espace (-,) pour les fichiers à format fixe. Par exemple :

fichiers délimités par des virgules

-READ EXTFILE, &CITY,&CODE1,- &CODE2

Fichiers à format fixé

-READ EXTFILE &CITY.A8. &CODE1.A3.,-, &CODE2.A3
format

est le format de la variable. Il peut être alphanumérique (A) ou numérique (N) Notez que ce format doit être délimité avec des points. Le format est ignoré pour des fichiers délimités par des virgules.



x
Commande -READFILE

-READFILE liens fichier Maître, puis lit les valeurs dans un fichier dans des variables basées sur les champs qui sont listés dans le fichier Maître.

-READFILE [app/]mastername

où :

app

Est le répertoire d'application dans lequel se trouve le fichier.

mastername

Est le nom du fichier maître à lire.



x
-REMOTE command

-REMOTE transmet au serveur l'exécution des commandes au sein des commandes -REMOTE BEGIN et -REMOTE END.

La syntaxe est :

-REMOTE BEGIN
commands
-REMOTE END


x
commande -REPEAT

-REPEAT permet les boucles dans une procédure stockée.

Une boucle s'achève quand l'un des événements suivants survient :

La syntaxe est :

-REPEAT label n TIMES
-REPEAT label WHILE condition; 
-REPEAT label FOR &variable 
     [FROM fromval] [TO toval] [STEP s]

où :

label

Identifie le code qui doit être répété (la boucle). Annabelle peut inclure une autre boucle si le label pour la seconde boucle a un nom différent que le premier.

n TIMES

Spécifie le nombre d'exécutions de la boucle. La valeur de n peut être une variable locale, une variable globale, ou une constante. S'il s'agit d'une variable, elle n'est évaluée qu'une seule fois, vous n'avez donc pas à changer le nombre d'exécutions de la boucle. La boucle ne peut être arrêtée qu'en utilisant -QUIT ou -EXIT.

condition WHILE;

Spécifie la condition qui doit être vérifiée pour l'exécution de la boucle. Cette condition peut consister en n'importe quelle expression logique, qui peut être vrai ou faux. La boucle est exécutée si la condition est vraie (true).

Remarque : la condition doit obligatoirement être suivie par un point-virgule.

&variable

Est la variable qui est testée au démarrage de chaque exécution de la boucle et incrémentée de s à chaque exécution. Elle est comparée aux valeurs fromval et toval, si elles ont été fournies. La boucle est exécutée seulement si &variable est supérieure ou égale à fromval ou inférieure ou égale à toval.

fromval

Est une constante qui est comparée avec &variable au départ de chaque exécution de la boucle. La valeur par défaut est 1.

toval

Est une valeur qui est comparée avec &variable au départ de chaque exécution de la boucle. La valeur par défaut est 1,000,000.

STEP s

Est une constante utiliser pour incrémenté &variable à la fin de chaque exécution de la boucle. Elle peut être positive ou négative. L'incrément par défaut est 1.

Remarque : les paramètres FROM, TO, et STEP peuvent apparaître dans n'importe quel ordre.



x
-commande RUN

-RUN provoque l'exécution immédiate de toutes les WebFOCUS commandes empilées.

À la suite de l'exécution, le traitement de la procédure stockée continue suivant -RUN.

-RUN est généralement utilisé pour effectuer les tâches suivantes :

La syntaxe est :

-RUN


x
-commande ? SET

-SET affecte une valeur littérale, ou une valeur calculée dans une expression logique ou arithmétique, à une variable.

Des guillemets simples autour d'une valeur littérale sont optionnels à moins qu'elle contienne un espace vide incorporé, une virgule, ou un signe égal, dans quel cas vous devrez obligatoirement les inclure.

La syntaxe est :

-SET &[&]name= {expression|value};

où :

&name

est le nom de la variable.

expression

est une expression valide. Des expressions peuvent occuper plusieurs lignes, il est donc conseillé de terminer la commande avec un point-virgule.

value

Est une valeur litérale ou une expression logique ou arithmétique affectée à la variable. Si la valeur littérale contient des virgules ou des espaces vides incorporés, vous devez entourer la valeur avec des guillemets simples.



x
commande -TYPE

Transmet des messages informatifs à l'utilisateur à l'affichage. N'importe quel nombre de commandes -TYPE peuvent se suivre les unes les autres, mais chacune d'elle doit commencer par -TYPE.

Les variables substituables peuvent être incorporées en texte. Les valeurs affectées en cours à chaque variable sont affichées dans leur position d'affectation dans le texte.

-TYPE1 et TYPE+ ne sont pas pris en charge par les types d'affichage d'IBM 3270.

TYPE est utilisé de plusieurs façons dans WebFOCUS pour envoyer des messages informatifs vers l'écran. Une commande TYPE est susceptible d'apparaître sur la même ligne en tant que label dans le Gestionnaire de dialogue. Dans MODIFY, TYPE est utilisé pour générer des messages au début et à la fin des processus, à des emplacements sélectionnés dans MATCH ou NOMATCH, NEXT ou NONEXT, et pour envoyer un message à la suite d'une condition de données INVALID.

La syntaxe est :

-TYPE[+] text 
-TYPE[0] text 
-TYPE[1] text				

où :

-TYPE1

Envoie le texte après l'émission d'une éjection de page.

-TYPE

Envoie le texte après le saut d'une ligne.

-TYPE+

Envoie le texte mais n'ajoute pas de flux de ligne.

text

Est une chaîne de caractères qui peut être écrite dans une ligne.



x
-commande WRITE

-WRITE écrit des données dans un fichier séquentiel.

Si la commande continue sur un grand nombre de lignes, placez une virgule à la fin de la ligne et un tiret au début de chaque ligne subséquente.

À moins que vous ne spécifiez l'option NOCLOSE, afficher ouvert et fermé quand une procédure se termine avec -RUN, -, ou -QUIT.

Dans TABLE, WRITE est synonyme de SUM; la fonctionnalité est relativement différente de ‑WRITE.

La syntaxe est :

-WRITE ddname [NOCLOSE] text				

où :

ddname

est le nom logique du fichier tel que défini dans WebFOCUS en utilisant ALLOCATE ou DYNAM ALLOCATE.

NOCLOSE

Indique que le fichier devrait être gardé ouvert même si un -RUN est rencontré. Le fichier est fermé lorsque la procédure est terminée ou lorsqu'une commande -CLOSE ou une commande -READ suivante est rencontrée.

text

Est n'importe quelle combinaison de variables et de texte. Pour écrire plus d'une ligne, terminez la première ligne avec une virgule (,) et commencer la ligne suivante avec un trait d'union suivi d'un espace (- ).



x
Défauts et limites du Gestionnaire de dialogue

Cette rubrique vous fournit une méthode plus simple pour localiser les variables par défaut, les limites du système d'exploitation et de WebFOCUS, les tables de résumé, les règles générales, et les astuces associées.

Règles générales à suivre pour la création de procédures :

Règles générales concernant la fourniture de valeurs pour les variables :

Valeurs par défaut du système d'opération, limites et spécifications format.


WebFOCUS