CMDGET (3I)     version 4.6.9     March 2022

User Intro    Prog Intro    Liste des programmes    Liste des manuels
Table of Contents


NAME

cmdget, cmdget1, iquel, iquel1, convcd - lecture et reconnaissance d'une commande.

SYNOPSIS

integer function iquel(cmd,brk,nbrk,ih)
integer nbrk
character *1 cmd,brk(nbrk),ih

integer function iquel1(cmd,brk,nbrk,ih)
integer nbrk
character *1 cmd,brk(nbrk),ih

subroutine convcd(cmd,icmd,nbcom)
character *1 cmd(nbcom)
integer*2 icmd
integer nbcom

#include <inrimage/dialog.h>

int cmdget(cmdtab,prompt)
struct cmdtab *cmdtab; char *prompt;

int cmdget1(cmdtab,prompt)
struct cmdtab *cmdtab; char *prompt;

DESCRIPTION

cmdget, cmdget1 affichent sur stderr le message contenu dans prompt, puis lisent sur stdin une chaîne de caractère de longueur maximum nmax terminée par "espace", "TAB ou "Newline". Ils comparent cette chaîne à la liste de commandes contenue dans cmdtab, et retournent le contenu du champ ret_val de la commande trouvée s'il n'est pas nul, le numèro d'ordre de la commande (supérieur ou égal à 1) sinon. En cas de réponse incorrecte, le programme imprime ``?'' et boucle en attente d'une nouvelle commande.
En cas de réponse vide, cmdget ne fait rien, tandis que cmdget1 retourne 0.
Le message prompt est précédé d' ``newline'' dans le cas de cmdget, mais pas dans le cas de cmdget1.

structure de la table cmdtab
struct cmdtab {
unsigned char *cmd; /* commande */
short nbmin; /* nb min de char. de la commande */
int ret_val; /* return value */
};

iquel, iquel1 affichent sur stderr le caractère contenu dans ih, puis lisent sur stdin une chaîne de caractère de longueur maximum nmax terminée par l'un des nbrk caractères d'arrêt contenus dans brk (généralement '\\r' et ' '). Ils comparent cette chaîne à la liste de commandes contenue dans cmd, et retournent le numèro d'ordre de la commande (supérieur ou égal à 1). En cas de réponse incorrecte, le programme imprime ``?'' et boucle en attente d'une nouvelle commande.
En cas de réponse vide, iquel ne fait rien, tandis que iquel1 retourne 0.
Le message ih est précéde newline pour iquel, mais pas pour iquel1.

structure de la table de commandes cmd:
Chaque commande est une chaîne terminée par 2 caractères spéciaux : le premier vaut 0xFF pour la dernière commande et 0 pour les autres; le deuxième contient le nombre de caractères minimum de la commande. En Fortran, cette table est initialisèe avec ces 2 caractères à 0, et mise en forme par le programme convcd.

convcd met en forme la table de nbcom commandes cmd, le nombre de caractères minimum de la ième commande étant donné par icmd(i).
Chaque commande doit être termninée par 2 octets nuls dans la table icmd(i) de départ.

"SEE ALSO"

ltchai(3i)

DIAGNOSTICS


tous ces modules bouclent en lecture en cas d'erreur.