Commandes OPL
Site de référence OPLWiki

(Traduction en cours)

A B C D E F G H I J K L M N O P Q R S T U V W X Y

ABS

> Emploi

  a=ABS(x)

Retourne la valeur absolue d'un nombre en virgule flottante sans son signe +/-.

> Exemple

ABS(-10.099) va retourner 10.099

ACOS

> Emploi

  a=ACOS(x)

Retourne l'arc-cosinus, ou le cosinus inverse (COS^-1) de x.

La variable x doit se situer dans l'intervalle -1 à+1. La fonction retourne un nombre qui correspond à un angle en radians. Pour convertir cet angle en degrés, utilisez la fonction DEG.

ADDR

> Emploi

  a&=ADDR(variable) (EPOC et Symbian)

  a%=ADDR(variable) (SIBO)

Retourne l'adresse à laquelle variable est stockée en mémoire.

Les valeurs de differents types de variables sont stockées dans les octets débutant à l'adresse ADDR(variable). Voir PEEK pour les détails.

Sur les machines SIBO, l'adresse maximale est bloquée pour être inférieure à 64Ko, alors que ce n'est pas le cas sur les machines EPOC et Symbian. Sur EPOC, le type de la variable retournée doit être par conséquent un entier long, mais peut être un entier simple sur SIBO.

EPOC et Symbian :
Voir SETFLAGS si vous avez besoin de forcer la limite à 64Ko sur EPOC et Symbian. Si l'attribut est réglé de façon à restreindre cette limite, cela garantit que a& soit un entier simple.

Voir les commandes UADD, USUB, ACOS.

ADJUSTALLOC

> Emploi

EPOC et Symbian :

  pcelln&=ADJUSTALLOC(pcell&,off&,am&)

SIBO :

  pcelln%=ADJUSTALLOC(pcell%,off%,am%)

Ouvre ou ferme un trou off& (off%) à l'intérieur de la cellule allouée pcell& (pcell%), retournant l'adresse de la nouvelle cellule ou zero en cas de dépassement de capacité mémoire . off& (off%) égale 0 pour le premier octet de la cellule. Si la quantité am& (am%) est positive cela ouvre un trou, alors qu'il le ferme si elle est négative.

Le nombre d'octets alloués est limité à 64Ko sur SIBO, alors qu'il ne l'est pas sur EPOC et Symbian. Le type de la variable retournée doit néanmoins être un entier long sur EPOC ou Symbian, alors qu'il peut être un nombre entier sur SIBO.

Les cellules ont comme taille allouée, des longueurs multiples de quatre juste supérieure à la taille requise. Une erreur peut survenir si l'argument de l'adresse n'est pas dans l'intervalle connu par la pile (heap).

Voir également SETFLAGS si vous avez besoin de forcer la limite à 64Ko sur EPOC ou Symbian. Si l'argument est choisi de façon à restreindre cette limite, cela garantit que pcelln& puisse être compatible avec un entier simple.

Voir ALLOC et également le chapitre ‘Advanced Topics’ du manuel EPOC OPL Manual.

ALERT

> Emploi

  r%=ALERT(m1$,m2$,b1$,b2$,b3$)
  r%=ALERT(m1$,m2$,b1$,b2$)
  r%=ALERT(m1$,m2$,b1$)
  r%=ALERT(m1$,m2$)
  r%=ALERT(m1$)

Présente une alerte – dialogue simple – avec les messages et les touches spécifiées, et attend une réponse. m1$ correspond au message à afficher sur le première ligne, et m2$ sur la seconde ligne. Si m2$ n'est pas pas rempli ou rempli avec une chaîne nulle, la seconde ligne du message reste en blanc.

On peut utiliser jusqu'à trois touches. Les variables b1$, b2$ et b3$ sont les chaînes de caractères (mots habituellement ) associées aux touches. b1$ apparaît au-dessus d'un bouton  Esc, b2$ sur un bouton Entrée, et b3$ sur une Espace. Cela signifie que vous pouvez avoir soit Esc seul, ou Esc et Entrée, ou Esc, Enter et Espace. Si aucune chaîne n'est fournie, le mot CONTINUE est utilisé sur la touche Esc.

Le nombre clé retouné est 1 pour Esc, 2 pour Entrée ou 3 pour Espace.

Les constantes pour ces valeurs retounées sont fournies dans le fichier Const.oph. consultez le chapitre ‘Calling Procedures’ du manuel EPOC OPL Manual pour le détail de la façon d'utiliser ce fichier.

ALLOC

> Emploi

EPOC et Symbian:

  pcell&=ALLOC(size&)

SIBO :

  pcell%=ALLOC(size%)

Alloue sur la pile une cellule de la taille spécifiée, en plaçant le pointeur sur la cellule ou en retournant zéro en cas de dépassement de capacité mémoire.

Le nombre d'octets alloués est limité à 64Ko sur SIBO, alors qu'il ne l'est pas sur EPOC ni Symbian. Le type de la variable retourné doit néanmoins être un entier long sur EPOC et Symbian, alors que cela peut être un nombre entier sur SIBO.

Sur les machines dotées de processeurs ARM (toutes les machines EPOC et Symbian), les longueurs des cellules allouées correspondent au plus petit multiple de quatre supérieur à la taille requise. Une erreur survient si l'argument de l'adresse ne se touve pas dans l'intervalle connu de la pile.

Voir également SETFLAGS si vous avez besoin de forcer à 64Ko la limite. Si l'attribut est choisi de façon à restreindre cette limite, on est sûr que pcelln& puisse être compatible avec le type Entier.

Voir les commandes ADJUSTALLOC, REALLOC, FREEALLOC. Voir également le chapitre ‘Advanced Topics’ du manuel EPOC OPL Manual

APP

> Emploi

EPOC et Symbian (Pas encore opérationnel pour les Series 60, mais fonctionne pour les Series 80 et UIQ) :

  APP caption,uid&
    ...
  ENDA

SIBO :

  APP caption
    ...
  ENDA

SYMBIAN SERIES 60
Pas encore opérationnel – utiliser ou bien l'OPL Launcher ou le C++ Wrapper

Commence la déclaration d'une application OPL. La variable caption correspond au nom de l'application (ou la légende = caption) dans le langage machine par défaut. Noter que, bien que caption soit une chaîne de caractères, elle n'est pas écrite entre guillemets.

EPOC, Symbian Series 80, Symbian UIQ :
uid& correspond au numéro unique d'identification de l'application (UID). Vous devez utiliser une UID officielle pour pouvoir distibuer votre application dans le public. Il suffit pour cela de contacter Symbian (Voir UID). Si vous utilisez l'application pour votre usage propre ou pendant sa mise au point, (sans édition publique) il n'est pas nécessaire d'utiliser une UID réservée, et tout numéro d'UID entre &01000000 et &0fffffff fera l'affaire. Les applications développées avec ces UID 'privées' ne doivent être utilisées pour l'édition publique.

L'ensemble des informations incluses dans la structure APP…ENDA sont utilisées pour générer un fichier .aif qui spécifie les légendes de l'application en diverses langues, ses icônes utilisées par les différents écrans Système et le paramétrage de FLAGS. Pour plus de détails, consultez le chapitre ‘Advanced Topics’.

Voir les commandes CAPTION, ICON, FLAGS . Voir également le chapitre‘Advanced Topics’ de SIBO OPAs and EPOC/Symbian Apps.

APPEND

> Emploi

  APPEND

Ajoute une nouvelle fiche (record) à la fin du fichier de données courant. La fiche qui était la fiche courante n'est plus pointée et c'est la fiche ajoutée, qui est la dernière du fichier, qui devient la fiche courante.

La fiche ajoutée est établie à partir des valeurs courantes des variables de champs (field) A.field1$, A.field2$, etc..., du fichier de données courant. Quand un champ n'est pas assigné, la valeur zéro lui est attriuée par défaut si c'est un champ numérique, ou une chaîne nulle en cas de champ alphanumérique.

> Exemple

  PROC add:
    OPEN "address",A,f1$,f2$,f3$
    PRINT "ADD NEW RECORD"
    PRINT "Enter name:",
    INPUT A.f1$
    PRINT "Enter street:",
    INPUT A.f2$
    PRINT "Enter town:",
    INPUT A.f3$
    APPEND
    CLOSE
  ENDP

Utiliser UPDATE pour réécrire le contenu de la fiche courante avec les nouvelles valeurs des champs.

EPOC et Symbian OS :
Sur EPOC et Symbian OS, il faut utiliser INSERT, PUT et CANCEL de préférence à APPEND et UPDATE, bien que APPEND et UPDATE soient encore supportés pour conserver la compatibilité avec SIBO. Néanmoins, il faut noter que la commande APPEND peut générer un grand nombre de fiches (intermédiaires). La commande COMPACT doit être utilisée pour les supprimer, ou sinon, utilisez SETFLAGS pour établir le mode auto-compactage.

Voir le chapitre ‘Series 5 Database Handling’ du manuel EPOC OPL Manual pour plus de détails . Voir également les commandes INSERT, MODIFY, PUT, CANCEL, SETFLAGS.

ASC

> Emploi

  a%=ASC(a$)

Retourne le code du caractère débutant la chaîne de caractère a$.

Pour le Series 5, reportez vous à l'Appendix D pour voir l'ensemble des caractères ; pour le Series 3c, reportez vous pour les codes au chapitre situé au dos du Guide de l'Utilisateur. Une autre solution consiste à utliser la ligne de commande  A%=%char pour trouver le code associé au caractère char – par exemple %X pour ‘X’.

Si a$ est la chaîne nulle ("") ASC retourne la valeur 0.

> Exemple

  A%=ASC("hello") retourne 104, le code de la lettre h.

ASIN

> Emploi

  a=ASIN(x)

Retourne l'arc-sinus, ou sinus inverse (SIN-1) de x.

La variable x doit se situer dans l'intervalle -1 à+1. La fonction retourne un nombre qui correspond à un angle en radians. Pour convertir cet angle en degrés, utilisez la fonction DEG.

AT

> Emploi

  AT x%,y%

Positionne le curseur dans la fenêtre de texte à x% caractères vers la droite et y% rangs vers le bas. L'instruction AT 1,1 place toujours dans le coin supérieur gauche corner de la fenêtre. Au départ, la fenêtre est plein écran, mais vous pouvez modificateur sa taille et sa position avec la commande SCREEN.

La commande AT est utilisée communément pour afficher des chaînes de caractèes à un endroit particulierde la fenêtre de texte

> Exemple

  AT 5,2 :PRINT "Voici un message".

Les instruction PRINT qui ne sont pas précédées de AT affichent le texte sur la gauche de la fenêtre et sous la ligne écrite par la dernière instruction PRINT (qui ne termine pas par une , ou un ;) ; les lignes affichées au sommet de la fenêtre défilent hors de l'écran lorsque de nouvelles lignes doivent être écrites tout au bas de la fenêtre.

L'affichage de chaînes de caractères efface toujours ce qu'il y avait sur l'écran – elles ne font pas défiler vers le bas les choses auxquelles elles se superposent.

> Exemple

  PROC records:
   LOCAL k%
   OPEN "clients",A,name$,tel$
   DO
     CLS
     AT 1,7
     PRINT "Appuyez sur une touche pour"
     PRINT "atteindre la Fiche suivante"
     PRINT "ou Q pour Quitter"
     AT 2,3 :PRINT A.name$ 
     AT 2,4 :PRINT A.tel$
     NEXT
     IF EOF
       AT 1,6 :PRINT "Fin de Fichier"
       FIRST
     ENDIF
     k%=GET
   UNTIL k%=%Q ou k%=%q
   CLOSE
 ENDP

ATAN

> Emploi

  a=ATAN(x)

Retourne l'arc-tangente, ou la tagente inverse (TAN-1) de x.

La fonction retourne un nombre qui correspond à un angle en radians. Pour convertir cet angle en degrés, utilisez la fonction DEG.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

BACK

> Emploi

  BACK

Rend courante la fiche qui précéde la fiche qui était la fiche courante du fichier de données en cours d'utilisation.

Si la fiche courante était la première fiche du fichier, la fiche courante reste la même.

BEEP

> Emploi

  BEEP time%,pitch%

Fait vibrer le buzzer. La durée du bip perçu dure time%/32 seconde(s), et il faut donc affecter time%=32 pour obtenir une durée d'une seconde, etc. Le maximum est de 3840 (soit 2 minutes).

La tonalité (pitch) qui correspond à la fréquence du bip est de 512/(pitch%+1) KHz.

Le réglage BEEP 5,300 procure un bip de sonorité agréable.

Si vous affectez à time% une valeur négative, la commande BEEP recherche d'abord si le système d'émission sonore est déjà utilisé (éventuellement par un autre programme OPL), et retourne au programme. Si c'est le cas, BEEP attend jusqu'à ce que le système d'émission sonore soit libre.

> Exemple

Gamme à partir d'un Do moyen :

 PROC gamme:
    LOCAL freq,n% REM n% relative au La moyen
    n%=3 REM début au Do moyen
    WHILE n%<16
       freq=440*2**(n%/12.0) REM La moyen  = freq 440Hz
       BEEP 8,512000/freq-1.0
       n%=n%+1
       IF n%=4 OR n%=6 OR n%=9 OR n%=11 OR n%=13
         n%=n%+1
       ENDIF
     ENDWH
 ENDP

SIBO :
Comme alternative, on peut déclencher le buzzer grâce à l'instruction : PRINT CHR$(7). Ces bips ont une fréquence et une durée prédéterminées.

EPOC et Symbian OS :
Comme alternative, on peut déclencher le buzzer grâce à l'instruction : PRINT CHR$(7). Cela produit un « clic ».

> Note

Sur les systèmes EPOC, si le niveau de vos batteries est bas, la commande BEEP ne produira pas l'effet recherché : le buzzer sera utilisé pour produire un « clic » plus aigu à la place.

BOOKMARK

> Emploi

  b%=BOOKMARK

Place un signet à la fiche courante de la vue de la base de données courante. La valeur retournée peut être utilisée dans la commande GOTOMARK pour pointer à nouveau cette fiche. Utiliser la commande KILLMARK pour détruire le signet.

BREAK

 Emploi

  BREAK

Provoque la sortie d'une boucle  DO...UNTIL ou WHILE...ENDWH en cours d'exécution et enchaîne directement sur la ligne d'instructions située immédiatement après l'instruction UNTIL ou ENDWH.

> Exemple

Voir également la commande CONTINUE.

BUSY

> Emploi

  BUSY str$,c%,delay%
  BUSY str$,c%
  BUSY str$
  BUSY OFF

La commande BUSY str$ affiche la chaîne de caractère str$ dans le coin inférieur gauche de l'écran, jusqu'à ce que BUSY OFF soit appelé. Vous pouvez utiliser cette commande pour afficher un message ‘Occupé’ ou 'Chargement en cours', ..., chaque fois qu'un programme OPL ne va plus pour un certain temps, répondre à la pression d'une touche ou au système de pointage.

L'affectation d'une valeur à  c% permet de contrôler le coin dans lequel apparaît le message :

  • 0 – en haut à gauche
  • 1 – en bas à gauche (default)
  • 2 – en haut à droite
  • 3 – en bas à droite

EPOC et Symbian OS :
Les constantes pour les valeurs de ces coins sont fournies dans le fichier Const.oph.

  • delay% spécifie le délai (en demi- secondes) d'apparition du message à l'écran. Vous pouver utiliser ce paramètrage pour éviter l'affichage intempestif et répété de messages brefs.

On ne peut faire apparaître qu'un seul message à la fois. Sur EPOC et Symbian, la longeur maximale du message affiché avec l'instruction BUSY est de 80 caractères ; un message d'erreur ‘Invalid argument’ est retourné en cas de valeur excessive. Sur le Series 3c, cette longeur maximale est de 19 caractères.

BYREF

> Emploi

  BYREF variable

Passe variable par référence (en donnant son adresse) à une procédure d'un OPX lorsque celle-ci est utilisée dans la liste des arguments de la procédure. Cela signifie que la valeur de la variable peut être modifiée par la procedure.

Voir pour plus de détails, le chapitre sur les OPX.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

CACHE (SIBO uniquement)

> Emploi

  CACHE init%,max%
  CACHE ON
  CACHE OFF

La commande CACHE crée un cache de procédure d'une nombre init% spécifié d'octets qui peut être augmenté jusqu'à une taille maximale de max%. Il est recommandé de lui associer la commande TRAP.
Une fois qu'un  cache a été créé, OFF prévient l'insertion d'une nouvelle commande CACHE, bien que le cache soit encore en cours de recherche lors de l'appel des procédures suivantes. CACHE ON peut être utilisé alors pour permettre à nouveau de créer un cache.

Les procédures sur EPOC et Symbian OS sont automatiquement cachées, et on n'a donc pas besoin de cette commande.

CACHEREC (SIBO uniquement)

> Emploi

  CACHEREC addr(rec%()),off%

Lit la fiche d'index de cache à l'offset off% dans le tableau rec%(), qui doit est composée d'au moins 18 éléments entiers.

Voir pour plus de détails le chapitre ‘Advanced Topics’.

Les procédures sur EPOC et Symbian OS sont automatiquement cachées, et on n'a donc pas besoin de cette commande.

CACHETIDY (SIBO uniquement)

> Emploi

  CACHETIDY

Retire du cache toutes les procédures qui sont retournées à la procédure appelante.

Les procédures sur EPOC et Symbian OS sont automatiquement cachées, et on n'a donc pas besoin de cette commande.

CALL (SIBO uniquement)

> Emploi

  e%=CALL(s%,bx%,cx%,dx%,si%,di%)

Cette fonction vous permet d'effecteur des appels au Système d'exploitation. Vous devez avoir une connaissance étendue du Système d'exploitation et des techniques de programmation qui sont en rapport pour pouvoir l'utiliser. La syntaxe de cette commande n'est incluse ici que pour être exhaustif.

Le nombre INT lui-même est l'octet de bas poids de s%. La valeur AH  (le numéro de sous-fonction) correspond à l'octet de haut poids de s%. Les valeurs des autres arguments sont passées aux registres correspondants du processeur 8086. La valeur du registre AX  est retournée.

EPOC et Symbian OS supportent les appels au Système d'exploitation grâce aux OPXs. La description complète de leur conception dépasse le cadre de ce manuel ; il est par contre détaillé dans le EPOC32 C++ Software Development Kit (SDK). Voir le guide OPX Guide pour les détails concernant les OPX.

CANCEL

> Emploi

  CANCEL

Marque la fin d'une phase de modification d'une base de données par INSERT ou MODIFY et annule les modifications effectuées lors de cette phase.

CAPTION

> Emploi

&n? G??A ?bsp; CAPTION caption$,languageCode%

Spécifie pour une langue donnée le nom public d'un OPA (ou sa légende) qui apparaîtra sous son icône sur la barre des Extras et dans la liste des ‘Programmes’ dans le dialogue ‘Nouveau Fichier’ (dans la mesure où le paramétrage de FLAGS le permet) quand la langue est celle utilisée par la machine. CAPTION ne doit être uniquement mis en oeuvre qu'au sein d'une structure APP...ENDA .

Le code de langue spécifie pour quelle variante de lange nationale la légende doit être utilisée, de façon à ce qu'on ait pas besoin de la changer losqu'on utilise l'OPA sur des machines utilisant des langues différentes. Quelque soit la langue , l'utilisation de la commande CAPTION provoque l'écrasement de la légende par défaut donnée par la déclaration APP . Par conséquent, il est nécessaire de fournir une instruction CAPTION pour chacune des langues susceptibles d'être utilisées, y compris la langue dans laquelle l'application a été développée à l'origine.

Les valeurs des codes de langue doivent correspondre à l'une des suivantes :

Anglais 1 Italien 5 Finlandais 9 Portuguais 13 Hongrois 17 Belge-Français 21
Français 2 Suédois 6 Americain 10 Turc 14 Néerlandais 18 Autrichien 22
Allemand 3 Daniois 7 Suisse-Français 11 Islandais 15 Belge-Flammand 19 Néo Zélandais 23
Espagnol 4 Norvégien 8 Suisse-Allemand 12 Russe 16 Australien 20 Français diplomatique 24

Les constantes pour les codes de ces langue sont fournies dans le fichier Const.oph. consultez le chapitre ‘Calling Procedures’ pour les détails sur la façon d'utiliser ce fichier et l'Appendix E pour son listing.

La longueur maximale de caption$ est de 255 caractères. Néanmoins, gardez en tête qu'une légende de plus de 8 caractères n'apparaîtra pas nettement sur la barre des 'Extras'.

Voir APP. Voir également le paragraphe ‘OPL applications’ du chapitre ‘Advanced Topics’.

CHANGESPRITE (SIBO uniquement)

> Emplois

  CHANGESPRITE ix%,time%,bit$(),dx%,dy%
  CHANGESPRITE ix%,time%,bit$()

Modifie les déplacements et les durées de l'ensemble d'image (bitmap-set) spécifié par ix% (1 pour le premier bitmap-set) de l'image animée (sprite) courante, à partir des fichiers d'images fournis, de la même manière que la commande APPENDSPRITE.

Sur EPOC et Symbian OS, les images animées (sprites) sont gérées par un OPX intégré.

CHR$

> Emploi

SIBO et EPOC :

  a$=CHR$(x%)

Symbian OS :

  a$=CHR$(x&)

Retourne le caractère dont le code est respectivement x% ou x&.

L'ensemble complet du jeu de caractère sur les machines EPOC telles que le Psion Series 5mx peut être consulté – ici << et pour les machines SIBO – ici <<.

Pour le Symbian OS (par exemple machines de type Series 80 et Series 60 ) le jeu de caractères suit le standard Unicode.

Vous pouvez utiliser cette commande pour afficher des caractères difficiles à gérer à l'aide du clavier.

> Exemple

L'instruction PRINT CHR$(133) affiche des points de suspension (...) sur une machine EPOC comme le Psion Series 5mx. Sur une machine Unicode on obtient le même résultat à l'aide de l'instruction PRINT CHR$(&2026).

De la même manière, avec Symbian OS, on obtient le symbole Euro () grâce à l'instruction PRINT CHR$(&20ac).

CLEARFLAGS

> Emploi

  CLEARFLAGS flags&

Efface les marqueurs contenus dans flags& s'ils ont été paramétrés préalablement à l'aide de la commande SETFLAGS, et rétablit les valeurs par défaut.

Voir la commande  SETFLAGS.

CLOSE

> Emploi

  CLOSE

EPOC et Symbian OS :
Ferme la vue courante d'une base de données. S'il n'existe pas d'autre vue ouverte pour la base de données, c'est la base elle-même qui sera fermée. Voir SETFLAGS pour les détails sur la façon de paramétrer l'auto-compactage à la fermeture des fichiers.

SIBO :
Ferme le fichier courant (c'est à dire celui qui a été ouvert grâce à la commande OPEN et utlisé le plus récemment à l'aide de USE).

Si, pour effacer certaines fiches, vous avez utilisé la commande ERASE , CLOSE récupère la mémoire utilisée par les fiches détruites, que ce soit en mémoire interne, sur un disque (sur le Series 5) ou une SSD RAM (sur le Series 3c).

CLOSESPRITE (SIBO uniquement)

> Emploi

  CLOSESPRITE id%

Ferme l'image animée (sprite) d'identité id%.

Sur EPOC et Symbian OS, les images animées (sprites) sont gérées par un OPX intégré.

CLS

> Emploi

  CLS

Efface le contenue de la fenêtre de texte.

Le curseur se place alors sur le début de la première ligne. Si vous avez utilisé la commande OFF, le curseur est positioné à cet endroit mais il n'est pas affiché.

CMD$

> Emploi

  c$=CMD$(x%)

Retourne les arguments des lignes de commande passés lors du démarrage d'une application. Il se peut que des chaînes nulles soient retournées. Sur EPOC et Symbian OS x% doit être compris entre 1 et 3 ; x% peut aller jusqu'à 5 sur les machines SIBO. CMD$(2) to CMD$(5) sont uniquement pour applications OPL.

  • CMD$(1) retourne le nom complet du chemin d'accès utilisé pour démarrer le programme en cours d'exécution.
  • CMD$(2) retourne le nom complet du chemin d'accès du fichier qui doivent être utilisés par une application OPL. Sur EPOC et Symbian OS, CMD$(2) passe un nom de fichier par défaut qui inclut le chemin d'accès si CMD$(3)="R" (voir ci-dessous).
  • CMD$(3) retourne "C" pour "Création d'un fichier" ou "O" pour "Ouverture d'un fichier" et peut également retourner "R" sur EPOC et Symbian OS. Si l'application OPL a exécuter ? G??A ? possède un nouveau nom de fichier, cette commande retourne "C". Cela survient lors de la toute première utilisation d'une application, et chaque fois qu'un nouveau nom de fichier est utilisé pour l'exécuter. Sinon, le programme est exécuté sous le nom du fichier existant et CMD$(3) retourne "O" si elle est sélectionnée directement à partir de l'écran système. CMD$(3) retourne "R" (EPOC et Symbian OS uniquement) si votre application a été lancée à partir de l'éditeur de programme ou sélectionnée grâce à son icône sur la barre des Extras, et non pas par la sélection ou création de documents à partir de l'écran système.

EPOC et Symbian OS :
Les constantes pour les éléments (1-3) du tableau et pour les valeurs retournées par CMD$(3) sont fournies dans le fichier Const.oph.

SIBO :

  • CMD$(4) retourne l'information sur l'alias, s'il y en a un. En pratique cela n'a pas d'importance pour les applications OPL .
  • CMD$(5) retourne le nom de l'application, tel qu'il est décalré avec le mot-clé APP.

Voir pour plus de détails le chapitre ‘Advanced Topics’ d'OPL applications.

Voir également la fonction GETCMD$.

COMMITTRANS

> Emploi

  COMMITTRANS

Effectue la transaction sur la vue courant de la base de données.

Voir également les commandes BEGINTRANS, ROLLBACK, INTRANS.

COMPACT

> Emploi

  COMPACT file$

Compresse la base de données file$, en réécrivant le fichier en place. Toutes les vues sur la base de données et a fortiori le fichier de la base de données lui-même souvent être fermés avant d'appeler cette commande. Il ne faut pas effectuer cette opération fréquemment car cela accapare un grande part de la puissance du processeur.

La compression peut être effectuée automatiquement à la fermeture du fichier en effectuant le paramétrage ad hoc avec la commande SETFLAGS.

COMPRESS (SIBO Uniquement)

> Emploi

  COMPRESS src$,dest$

Copie le fichier de données src$ dans un autre fichier de données dest$. Si dest$ existe déjà, les fiches de src$ sont rajoutée à la fin de dest$.

Les fiches détruites ne sont pas recopiées. Cela rend la commande COMPRESS particulièrement utile sur les machines SIBO lorsqu'on effectue une copie à partir de la mémoire Flash SSD. (L'espace utilisé par les fiches détruites sur la SSD RAM  ou en mémoire interne est automatiquement libéré à la cloture du fichier.)

Si vous souhaitez que src$ écrase le fichier dest$ plutôt qu'il ne s'ajoute à sa suite, utilisez la ligne d'instructions TRAP DELETE dest$ avant COMPRESS.

Si vous souhaitez copier plus d'un fichier à la fois, vous pouvez utiliser un joker (*) mais si le premier nom contient un ou plusieurs jockers, le deuxième nom ne doit pas inclure de nom de fichier mais uniquement le support de mémoire et le répertoire dans lequel les fichiers doivent être recopiés sous leur nom d'origine.

> Exemple

Pour recopier - à l'occasion d'une sauvegarde par exemple - l'ensemble des fichiers de données du disque A: (dans le répertoire par défaut \OPD) dans B:\BCK\:, utilisez la ligne d'instruction suivante (sans oublier le backslash sur le nom du répertoire !) :
COMPRESS "A:*.ODB","B:\BCK\"

Voir la commande COPY pour recopier un fichier quelque soit son type.

Cette commande est remplacée par COMPACT sur le Series 5.

CONTINUE

> Emploi

  CONTINUE

Place le programme directement sur la ligne de commande UNTIL... d'une boucle DO...UNTIL ou WHILE... d'une boucle WHILE...ENDWH pour tester la condition.

> Exemple

Voir également la commande BREAK.

CONST

> Emploi

  CONST KConstantName=constantValue

Permet d'effectuer les déclarations de constantes qui sont traitées en tant que litéralles, et non comme données stockées. Les déclarations doivent être effectuées en dehors de toute procédure, habituellement au début du code source. KConstantName est pourvue des indicateurs de type normaux (%, &, $ ou rien pour les nombres en virgule flottante). Les valeurs déclarées avec CONST ont un statut "global" et ne sont pas écrasées par les variables locales ou globales dotées du même nom : en fait, l'interpréteur ne parmet pas la déclaration de variables locales ou globales du même nom. Par convention, ont fait débuter toutes les constantes par la lettre K pour les distinguer des autres variables.

> Note

Il n'est pas possible de définir en notaiton décimale des constantes dont la valeur est de -32768 pour les entiers et -214748648 pour les entiers longs ; à la place, il faut utiliser la notation hexadécimale - soit $8000 et &80000000 respectivement.

Vous disposez d'un grand fichier de constantes prédéfinies (Const.oph) que vous pouvez utiliser dans votre code source.

COPY

> Emploi

  COPY src$,dest$

Copie le fichier source src$, qui peut être de n'importe quel type, dans le fichier destination dest$. Tout fichier préexistant nommé dest$ est détruit. Il vous loisible de recopier d'une machine à une autre. Sur les machines SIBO vous pouvez utiliser les extensions de fichier appropriées pour indiquer le type de fichier, et sur toutes les machines utilisez des jokers (*) si vous souhaitez copier plus d'un fichier à la fois.

EPOC et Symbian OS :
Si la variable src$ contient des jokers, dest$ doit spécifier soit un nom de fichier contenant des jokers, ou juste le disque et le répertoire dans lequel les fichiers vont être recopiés sous leurs noms d'origine.

> Exemple

Pour recopier tous les fichiers à partir de la mémoire interne (dans le répertoire \OPL) vers le disque D:\ME\, utilisez la ligne d'instruction suivante (sans oublier le backslash sur le nom du répertoire !) :
COPY "C:\OPL\*","D:\ME\"

SIBO :
Si src$ contient des jockers, dest$ ne doit pas spécifier de nom de fichier, mais uniquement le disque et le répertoire dans lequel les fichiers vont être recopiés sous leurs noms d'origine.

Vous devez spécifier soit une extension ou .* sur le premier nom de fichier. Les types d'extensions de fichiers sont énumérées dans le 'Guide utilisateur' (User Guide).

> Exemple

Pour recopier tous les fichiers OPL à partir de mémoire interne (dans le répertoire \OPL) vers le disque B:\ME\, utilisez la ligne d'instruction suivante (sans oublier le backslash sur le nom du répertoire !) :
COPY "M:\OPL\*.OPL»,"B:\ME\"

Voir la commande COMPRESS pour plus de contrôles sur la copie de fichiers de données. Quand vous utilisez la commande COPY pour recopier un fichier de données, les fiches détruites sont recopiées et vous ne pouvez pas le rajouter à la fin d'un autre fichiers de données.

Vous trouverez les détails de spécification complète des fichiers dans le chapitre ‘Advanced topics’.

COS

> Emploi

  c=COS(x)

Retourne le cosinus de x, où x est un angle spécifié en radians.

Pour convertir de degrés en radians, utilisez la fonction RAD .

COUNT

> Emploi

  c%=COUNT

Retourne le nombre de fiches du fichier de données courant.

Ce nombre sera 0 en cas de fichier vide.

EPOC et Symbian OS :
Si vous essayez de compter le nombre de fiches dans une vue d'une base de données en cours de mise à jour, vous provoquez une erreur de type ‘Incompatible update mode’ (Cela peut survenir entre l'assignation de valeurs et APPEND / UPDATE ou entre MODIFY / INSERT et PUT).

CREATE (EPOC et Symbian OS uniquement)

> Emploi

EPOC et Symbian :

  CREATE tableSpec$,log,f1,f2,...

Créé une table dans une base de données. Si nécessaire, la base de données est également créée. Immediately après avoir appelé la commande CREATE, le fichier et la vue (ou table) est ouverte et accessible.

La variable tableSpec$ contient le nom de fichier de la base de données et de façon optionnelle un nom de table et le nom des champs qui doivent être créés à l'intérieur de cette table.

> Exemple

   CREATE "clients FIELDS nom(40), tel to telephone", log, n$, t$

  • clients correspond au nom du fichier.
  • telephone est le nom de la table à créer dans ce fichier.
  • La liste d'éléments séparée par des virgules, entre les mots-clés FIELDS et TO, spécifie le nom des champs dont les types sont précisés par leur terminaison (n$, t$ dans notre cas).
  • Le champ nom a une longueur de 40 octets, comme c'est spécifié juste après entre parenthèses.
  • Le champ tel a pour sa part une longueur par défaut de 255 octets. Ce mécanisme est nécessaire pour créer certains index. Pour plus de détails sur la cration d'index, consultez le chapitre ‘Using OPXs on the Series 5’ .

Le nom du fichier peut être une spécification complète du fichier longue de 255 caractères maximum. Un nom de champ peut avoir jusqu'à 64 caractères de long. Les champs de texte (alphanumériques) ont par défaut une longueur de 255 octets.

  • log spécifie le nom logique (lettre de A à Z) de la base de donnée. Cette lettre sert d'abbréviation pour le nom de fichier lorsque vous utilisez d'autres commandes sur les fichiers de données telles que USE.

CREATESPRITE (SIBO uniquement)

> Emploi

  id%=CREATESPRITE

Créé une image animée (sprite), en retournant son identité réupérée par id%.

EPOC et Symbian OS :
Sur EPOC et Symbian OS, les images animées (sprites) sont gérées par un OPX intégré.

CURSOR

> Emploi

  CURSOR ON
  CURSOR OFF
  CURSOR id%
  CURSOR id%,asc%,w%,h%
  CURSOR id%,asc%,w%,h%,type%

L'instruction CURSOR ON affiche le curseur sur sa position courante. Aucun curseur n'est affiché précédemment.

Vous pouvez afficher le curseur graphique dans une fenêtre en faisant suivre la commande CURSOR par l'identité de la fenêtre. Cela remplace tout curseur de texte. En même temps, vous pouvez également spécifier la forme du curseur, et sa postion par rapport à la ligne basale du texte.

  • asc% correspond au décalage – nombre de pixels (de -128 à 127) au-dessus de la ligne de base de la fonte courante - du sommet du curseur.
  • h% et w% (tous deux de 0 à 255) correspondent respectivement à la hauteur et la largeur du curseur.

Si vous ne précisez rien, les valeurs par défaut suivantes sont affectées :

  • asc% – décalage de la la fonte ;
  • h% – hauteur de la fonte ;
  • w%2

Quand la variable type% est précisée, on peut observer les effets :

  • 2 not flashing ;
  • 4 gris.

Vous pouvez additionner ces valeurs pour combiner les effets – if type% is 6 a grey non-flashing cursor is drawn. Le Series 3c supporte également un curseur oblong en affectant 1 à type% . Sur le Series 5, type%=1 affiche juste le curseur graphique par défaut, comme si aucun type n'avait été spécifié.

Un message d'erreur apparaît si id% spécifie une image au lieu d'une fenêtre.

CURSOR OFF efface tout curseur.

EPOC et Symbian OS :
Les constantes pour ces types sont fournies dans le fichier Const.oph.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

DATETOSECS

> Emploi

  s&=DATETOSECS(yr%,mo%,dy%,hr%,mn%,sc%)

Retourne le nombre de secondes écouéles depuis le 1/1/1970 à 00:00 on à la date/heure spécifiée.

Un message d'erreur est émis pour les dates antérieures au 1/1/1970.

La valeur est retournée sous forme d'un entier long. (Jusqu'à  +2147483647, qui corrspond au 19/1/2038 à 03:14:07, les valeurs sont retournées de la manière attendue. Au-delà de  +2147483647, elles sont retournées sous forme de nombres négatifs, démarrant à partir de  -2147483648 et remontant vers zéro.)

Voir également les commandes SECSTODATE, HOUR, MINUTE, SECOND.

DATIM$

> Emploi

  d$=DATIM$

Retourne la dte et l'heure courante à partir de l'horloge système sous forme de chaîne de caractères

> Exemple

"Fri 16 Oct 1992 16:25:30". La chaîne de caractères retournée a toujours ce format – 3 caractères pour le jour, puis un espace, puis 2chiffres pour jour du mois, et ainsi de suite.

EPOC et Symbian OS :
Les constantes pour les offsets de chaque élément au sein de la chaîne de caractères (à utiliser avec MID$, par exemple) sont fournies dans Const.oph. L'OPX Date fournit pour sa part un large éventail de procédures permettant de manipuler les dates et mesurer correctement les durées. Voir l''OPX Guide' pour plus de détails .

DAY

> Emploi

  d%=DAY

Retourne le jour courant du mois (de 1 à 31) à partir de l'horloge système.

DAYNAME$

> Emploi

  d$=DAYNAME$(x%)

Convertit x%, nombre de 1 à 7, en jour de la semaine, exprimé sous forme d'une chaîne de trois caractères.

> Exemples

d$=DAYNAME$(1) retourne MON (pour monday).

 PROC Birthday:
   LOCAL d&,m&,y&,dWk%
   DO
     dINIT
        dTEXT "","Date of birth",2
        dTEXT "","eg 23 12 1963",$202
        dLONG d&,"Day",1,31
        dLONG m&,"Month",1,12
        dLONG y&,"Year",1900,2155
     IF DIALOG=0 :BREAK :ENDIF
     dWk%=DOW(d&,m&,y&)
     CLS :PRINT DAYNAME$(dWk%), PRINT d&,m&,y&
     dINIT
        dTEXT "","Again?",$202
        dBUTTONS "No",%N,"Yes",%Y
   UNTIL DIALOG<>%y
 ENDP

Voir également DOW.

DAYS

> Emploi

  d&=DAYS(day%,month%,year%)

Retourne le nombre de jours depuis le 1/1/1900.

Utiliser cette fonction pour calcuker le nombre de jours entre deux dates.

> Exemple

 PROC deadline:
   LOCAL a%,b%,c%,deadlin&
   LOCAL today&,togo%
   PRINT "Quel jour ? (1-31)"
   INPUT a%
   PRINT "Quel mois ? (1-12)"
   INPUT b%
   PRINT "Quelle année ? (20??)"
   INPUT c%
   deadlin&=DAYS(a%,b%,1900+c%)
   today&=DAYS(DAY,MONTH,YEAR)
   togo%=deadlin&-today&
   PRINT togo%,"days to go"
   GET
 ENDP

Voir également dDATE, SECSTODATE.

EPOC et Symbian
L'OPX Date fournit pour sa part un large éventail de procédures permettant de manipuler les dates et mesurer correctement les durées. Voir l''OPX Guide' pour plus de détails .

DAYSTODATE

> Emploi

EPOC et Symbian

  DAYSTODATE days&,year%,month%,day%

Instruction qui convertit days&, le nombre de jours écoulés depuis le 1/1/1900, en la date qui lui correspond, en retournant le jour du mois dans day%, le mois dans month% et l'année dans year%. Cette fonction est utile pour convertir les valeurs établies par dDATE, qui donne également les jours depuis le 1/1/1900.

dBUTTONS

> Emplois

  dBUTTONS p1$,k1%,p2$,k2%,p3$,k3%
  dBUTTONS p1$,k1%,p2$,k2%
  dBUTTONS p1$,k1%

Définit les boutons qui s'affichent au bas d'une boîte de dialogue  (ou sur son côté sur EPOC : Voir dINIT).

On peut définir plus d'un seul bouton pour sortir du dialogue. Chaque paire de p$ et k% permet de spécifier un bouton de sortie.

  • p$ est le texte qui doit s'afficher sur le bouton  ;
  • k% est le code du raccourci clavier correspondant au bouton. DIALOG (quand il est appelé) permet de récupérer le code de la touche enfoncée (en minuscule pour les lettres).

Pour les touches alphabétiques, il faut utiliser le signe %%A signifie « code de A », etc. Ainsi,  sur les machines EPOC et Symbian OS, le raccouci clavier est obtenu par la combinaison Ctrl+Touche alphabétique. Les codes des touches (telle que Tab) qui ne font pas partie de l'ensemble des caractères est listé en appendice. Si vous utilisez le code pour l'une de ces touches, son nom (par exemple ‘Tab’, ou ‘Entrée') sera affichée sur la touche.

Si vous affectez une valeur négative à l'argument k%, le bouton permet de quitter le dialogue en abandonnant (cancel). C'est la valeur positive correspondante qui est utilisée pour l'affichage sur le bouton et la valeur retournée par DIALOG, mais lorsque vous cliquez pour sortir, les variables utilisées dans les commandes telles que dEDIT, dTIME etc. ne sont pas assignées. Pour les machines EPOC et Symbian OS, l'utilisation d'une valeur négative pour un raccourci permet de sortir du dialogue en abandonnant ; vous devez négativer le raccourci en même temps que tous les arguments rajoutés.

La touche 'Esc' permet de sotir de la boîte de dialogue en abandonnant, avec DIALOG qui retourne 0. Si vous souhaitez que la touche 'Esc' (dont le code est 27)soit l'une de celles qui permettent de sortir, utilisez pour l'argument k% la valeur  -27 afin que les variables au sein du dialogue ne soient pas assignée si 'Esc' est appuyée.

Il ne doit y avoir qu'un seul item dBUTTONS par dialogue.

Certaines touches du clavier ne peuvent être spécifiées.

> Exemple

Cet exemple présente une question simple qui retourne‘Faux’ pour Non, ou ‘Vrai’ pour Oui, en associant à chacun des boutons un raccourci clavier - N et O respectivement - sans attributs.

  PROC query:
    dINIT
      dTEXT "","MODIFICATIONS OUBLIEES",2
      dTEXT "","Certain ?",$202
      dBUTTONS "Non",-(%N OR $300),"Oui",%O OR $300
    RETURN
    DIALOG=%y
  ENDP

Sur les machines SIBO, les mêmes raccourcis clavier peuvent être spécifiés avec l'instruction suivante (les étiquettes restent toujours visibles sur SIBO) :

  dBUTTONS "Non",%N,"Oui",%O

Voir également l'instruction dINIT.
EPOC
L'OPL permet d'afficher plus de 3 boutons qui peuvent être ajoutés de la même façon.
On peut obtenir les effets suivants en ajoutant les constantes appropriées au code de raccourci clavier :

  • 256 (soit $100) – affiche le bouton sans inscrire son raccouci clavier ;
  • 512 (soit $200) – permet d'utiliser la touche seule (sans être associée à Ctrl).

Les boutons peuvent occuper jusqu'à deux lignes d'écran. On peut utiliser dBUTTONS n'importe où entre dINIT et DIALOG; l'endroit où se situe cette instruction dans le code n'affecte pas la position des boutons dans le dialogue.

Les constantes pour ces arguments ainsi que les codes des touches Esc, Entrée, etc. sont fournies dans Const.oph. Pour plus de détails sur l'utilisation de ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour le listing.

Symbian OS (Communicators)
Voir les Porting Notes.

SIBO
La légende des boutons est affichée au-dessus des boutons, et non sur le bouton lui-même.
Sur SIBO, les raccourcis clavier n'ont pas de modificateur, ce sont juste les touches alphabétiques (a et non ctrl-a par exemple)

Les boutons peuvent prendre jusquà trois lignes d'écran. dBUTTONS doit être la dernière commande du dialogue, située juste avant DIALOG.

dCHECKBOX

> Emploi

  dCHECKBOX chk%,prompt$

Créé une entrée sous forme de boîte à cocher. C'est l'équivalent d'une liste de choix avec deux items, hormis le fait que la liste est remplacée par une case cochée ou non. L'état de la case est maintenu lors des appels au dialogue concerné.

Vous devez initialiser la chk% à 0 si vous souhaitez afficher la case sans la coche et à n'importe quelle autre valeur pour qu'elle apparaisse cochée. L'argument chk% vaut alors alors automatiquement 0 si la case est décochée et -1 si elle l'est au moment de la fermeture du dialogue.

Voir également l'instruction dINIT

Symbian OS
La commande dCHECKBOX a été supprimée de l'OPL. Vous devez utiliser  dCHOICE à sa place.

dCHOICE

> Emplois

  dCHOICE choice%,prompt$,list$

ou

  dCHOICE var choice%,prompt$,"Option 1,Option 2,Option 3,etc"
  dCHOICE var choice%,"","Option 1,Option 2,Option 3,etc"
  REM * Affiche les options sans invite
  dCHOICE var choice%,"",listN$
  REM * Construit une liste d'options grâce à une ligne de texte,sans invite

EPOC et Symbian OS uniquement

  dCHOICE var choice%,prompt$,"Option 1,Option 2,Option 3,..."
  REM * Pour une liste de choix plus longue

Définit une liste de choix possibles dans un dialogue.

  • prompt$ sera la légende qui doit être affichée sur la gauche de la ligne.
  • listN$ doit contenir les choix possibles, séparés par une virgule– par exemple, "Oui,Non". L'un d'eux sera affiché sur la droite de la ligne, et peut être utilisé passer d'un choix à l'autre.
  • choice% peut être une variable de type LOCAL ou GLOBAL. Il spécifie quel choix doit être initialement proposé à l'ouverture du dialogue - 1 pour le premier choix, 2 pour le second, et ainsi de suite. En sortant du dialogue sans abandonner, choice% a pour valeur celle du dernier choix sélectionné - à nouveau 1 pour le premier choix, etc...

Sur EPOC et Symbian OS, dCHOICE supporte un nombre illmité d'items (dans les limites de mémoire disponible). Pour allonger une liste dCHOICE, ajoutez une virgule après le dernier item de la ligne suivie par “..." (trois points), comme cela est montré ci-avant. choice% doit être identique sur chaque ligne, sinon cela provoque une erreur.

> Exemple

Pour les items spécifiés suivants i1, i2, i3, i4, i5, i6 :

  dCHOICE ch%,prompt$,"i1,i2,..."
  dCHOICE ch%,"","i3,i4,..."
  dCHOICE ch%,"","i5,i6"

Voir également l'instruction dINIT.

dDATE

> Emploi

  dDATE lg&,p$,min&,max&

Définit une case d'édition pour une date qui peut être utilisée dans un dialogue.

  • p$ est le texte affiché sur la partie gauche de la ligne.
  • lg&, qui doit être une variable de type LOCAL ou GLOBAL, spécifie la date qui doit être affichée à l'ouverture du dialogue. Bien que cette variable apparaisse sous la forme d'une date normale - 15/03/92, par exemple- lg& doit être spécifié au titre de « jours depuis le 1/1/1900 ».
  • min& et max& fixent la valeur minimale et maximale autorisée. Là encore, ces valeurs sont exprimées jours depuis le 1/1/1900. Une erreur est provoquée si min& est supérieur à max&.

En quittant le dialogue, la date saisie est retournée dans lg&, en jours depuis le 1/1/1900.

Le paramétrage du système détermine l'ordre d'affichage de l'année, du mois et du jour.

Voir également les commandes DAYS, SECSTODATE, DAYSTODATE, dINIT.

DECLARE EXTERNAL

> Emploi

  DECLARE EXTERNAL

Permet que l'interpréteur émette un message d'erreur si des variables ou des procédures sont utilisées avant qu'elles n'aient été déclarées. Cette commande doit être appliquée au début du module auquelle elle s'applique, avant la première procédure. Cela est utile pour détecter les erreurs de type ‘Undefined externals’ au moment de l'interprétation plutôt qu'à l'exécution.

> Exemple

En mettant DECLARE EXTERNAL en commentaires, le code suivant après interprétation provoque l'erreur, ‘Undefined externals, i’ ) lors de son exécution. En ajoutant cette déclaration (en retirant REM), l'erreur est détectée au moment de l'interprétation.

  REM DECLARE EXTERNAL
  PROC main:
    LOCAL i%
    i%=10
    PRINT i%
    GET
  ENDP

Si vous utilisez cette déclaration, vous devrez déclarer ultérieurement toutes les variables et procédures utilisées dans le module, en utilisant l'instruction EXTERNAL.

Voir également la commande EXTERNAL.

DECLARE OPX

> Emploi

 DECLARE OPX opxname,opxUid&,opxVersion&
 ...
 END DECLARE

Instruction qui permet de déclarer un OPX.

  • opxname corespon au nom de l'OPX ;
  • opxUid& à son UID ;
  • pxVersion& à son numéro de version.

dEDIT

> Emplois

  dEDIT string$,prompt$,len%
  dEDIT string$,prompy$

Définit une case d'édition pour du texte utilisable dans un dialogue.

  • prompt$ correspond au texte affiché sur la gauche de la ligne.
  • string$ correspond à la variable de type chaîne de caractères qui doit être éditée. Son contenu initial apparaît lors de l'ouverture du dialogue. La longeur utilisée lors de la définition de string$ est la longueur maximale de saisie.
  • len%, si elle affectée, correspond à la largeur de la case d'édition (en prenant en compte la largeur maximale des caracatères dans la fonte). La chaîne de caractères défileront dans la cas d'édition si besoin. Si l'argument len% n'est pas affecté, la case d'édition aura une taille suffisamment grande pour accepter la largeur maximale que string$ peut avoir.

Voir également l'instruction dTEXT.

dEDITMULTI

> Emploi

 dEDITMULTI pData&,p$,widthInChars%,numLines%,maxLen%

Définit une case d'édition muti-ligne utilisable dans un dialogue. Normallement, le texte résultant peut être utilisé dans un dialogue ultérieur , sauvegardé dans un fichier ou imprimé grâce à 'Printer OPX' (Voir le chapitre ‘Using OPXs on the Series 5’). Il est également possible de copier le texte contenu par le tampon dans d'autres applications et vice versa, en perdant toutefois le formatage et les objets inclus dans le texte.

  • pData& correspond à l'adresse du tampon qui doit stocker le texte à éditer. Ce peut être l'adresse d'un tableau comme l'intruction ADDR en retourne, ou d'une cellule de pile, comme ALLOC en retourne (Voir les commandes ADDR et ALLOC). Le tampon ne doit pas être directement spécifié comme chaîne de caractères et ne doit pas être lu en tant que tel. Il doit être à la place "peeké", octet par octet (Voir l'instruction PEEK). Les 4 octets de tête à l'adresse ptrData& contiennent le nombre d'octets de données qui suivent. Ces octets sont également paramétrés par dEDITMULTI au nombre réels d'octets édités. C'est pour cette raison qu'il convient d'utiliser comme tampon un tableau entiers longs, avec au moins 1+(maxLen%+3)/4 éléments. Le premier élément du tableau spécifie alors la longeur initiale.
    Si une cellule allouée est utilisée (probablement par qu'il y a besoin de plus de 64Ko), les quatre premiers octets de la cellule doivent être paramétrés à la longeur initiale de la donnée. Une erreur est provoquée si cette longueur n'est pas affectée.

> Exemple

Si vous allouez 100000 octets à une une cellule, vous devez placer un entier long égal à  zéro en début pour spécifier qu'il n'y a initialement aucun texte dans la cellule.

  p&=ALLOC(100000)
  POKEL p&,0 REM Le texte débute à p&+4

Les caractères spéciaux tels que les caractères 'Sauts de lignes' et 'Tab' peuvent être utilisés dans le tampon. Les constantes pour ces codes sont fournies dans Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

  • L'invite p$ correspond au texte qui est affiché sur la gauche de la case d'édition
  • widthInChars% spécifie la largeur de la case d'édition dans laquelle le texte est logé, en se servant de la notion de largeur moyenne de caractère. Le nombre réel de caractères le mieux adapté dépendra de la largeur des caractères, avec par exemple plus de ‘i’ que de ‘w’.
  • numLines% spécifie le nombre de lignes complètes affichées. Toute ligne supplémentaire défilera.
  • maxLen% spécifie la taille en octets réservée pour le tampon (en excluant les octets utilisés pour stocker la longueur).

La touche 'Entrée' est utilisée par la case d'édition multi-ligne qui has the focus avant being offered to any buttons. Cela signifie que la touche 'Entrée' ne peut pas utilisé pour quitter le dialogue, sans que another item is provided that can take the focus without using the Enter key. Normal practice is to provid'un  button that does not use the Enter key to exit a dialog whenever it contains a multi-line edit box. the Esc key will toujours cancel a dialog néanmoins, even when it contains a multi-line edit box.

> Exemple

Dans l'exemple suivant, la case d'édition de trois lignes et large d'environ 10 caractères permet de saisir jusqu'à 399 caractères :

  CONST KLenBuffer%=399
  PROC dEditM:
    LOCAL buffer&(101)
    REM 101=1+(399+3)/4 en arithmétique intier
    LOCAL pLen&,pText&
    LOCAL i%
    LOCAL c%
    pLen&=ADDR(buffer&(1))
    pText&=ADDR(buffer&(2))
    WHILE 1
      dINIT Essayez dEditMulti"
      dEDITMULTI pLen&,"Invite",10,3,KLenBuffer%
      dBUTTONS "Fait",%d
      REM bouton nécessaire pour sortir du dialogue
      IF DIALOG=0 :BREAK :ENDIF
      PRINT "Longueur :";buffer&(1)
      PRINT "Texte :"
      i%=0
      WHILE i%<buffer&(1)
        c%=PEEKB(pText&+i%)
        IF c%>=32
          PRINT CHR$(c%);
        ELSE REM remplacer les caractères spéciaux par un point
          PRINT ".";
        ENDIF i%=i%+1
      ENDWH
    ENDWH
  ENDP

Voir également l'instruction dINIT.

DEFAULTWIN

> Emploi

  DEFAULTWIN mode%

Change la fenêtre par défaut (ID=1) pour permettre ou empêcher l'utilisation du plan gris (sur SIBO) ou changer de mode (ou de profondeur) de couleurs sur EPOC ou Symbian OS.

Il faut souligner que vous devez appeler la commande DEFAULTWIN une fois pour toute dans le tout le début de votre programme si vous avez besoin de changer le mode de couleurs de la fenêtre par défaut sur EPOC ou Symbian OS ou utiliser le plan gris sur SIBO. Si cela échoue du fait d'une erreur de type ‘Out of memory’ (dépassement de capacité de mémoire), le programme peut être clos sans perdre d'informations vitales.

Pour EPOC et Symbian OS, la fenêtre par défaut utilise initalement le mode 4 couleurs.

  • mode%=1 efface l'écran, laissant la fenêtre en mode 4 couleurs afin d'assurer la compatibilité avec le Series 3c (voir au-dessus).
  • mode%=0 passe l'écran en mode 2 couleurs (en pratique, transforme les gris en noir ou blanc) ;
  • mode%=2 passe l'écran en mode 16 couleurs, comme prévu.

L'utilisation de la commande DEFAULTWIN avec l'une de ces valeur provoque également l'effacement de l'écran.

Using 4-colour mode uses more power than using 2-colour mode et using 16-colour mode uses more power that either de these. consultez le chapitre ‘Graphics’ pour plus d'information.

Les constantes pour les modes de DEFAULTWIN sont fournies dans le fichier Const.oph.

Pour SIBO :
Le gris ne peut être initiallement utilisé dans la fenêtre par défaut.

  • mode%=1 permet l'utilisation du gris ;
  • mode%=0 empêche l'utilisation du gris.

La commande DEFAULTWIN a pour effet collatéral d'effacer la fenêtre par défaut.

L'usage du gris nécessite d'avantage de mémoire que l'usage du noir seul.

Voir également les commande gGREY, gCOLOR et gCREATE.

DEG

> Emploi

  d=DEG(x)

Convertit de radians à degrés.

Retourne x, un angle en radians, sous forme de nombre de degrés. La formule utilisée est : 180*x/PI

Toutes les fonctions trigonométriques (SIN,COS etc.) fonctionnent en radians, et non en degrés. Vous pourvez utiliser la fonction DEG pour convertir un dégrés un angle retourné par une fonction trigonométrique:

> Exemple

  PROC xarctan:
    LOCAL arg,angle
    PRINT "Entrez l'argument:";
    INPUT arg
    PRINT "l'ARCTAN de",arg,"est de"
    angle=ATAN(arg)
    PRINT angle,"radians"
    PRINT DEG(angle),"degrés"
    GET
  ENDP

DELETE

La commande DELETE possède deux syntaxes, l'une pour les fichiers et l'autre pour les bases de données.

> Emploi n°1

  DELETE filename$

Détruit tout type de fichier.

Vous pouvez vous servir de jockers.

> Exemple

Pour supprimer tous les fichiers dans le répertoire D:\OPL

  DELETE "D:\OPL\*"

Et pour supprimer tous les les fichier d'extension .OPL du répertoire B:\OPL

  DELETE "B:\OPL\*.OPL"

Les extensions des types de fichier listées dans le guide utilisateur (User Guide).

Voir également la commande RMDIR.

> Emploi n°2

  DELETE dbase$,table$

Cette commande détruit la table table$, contruite à partir de la base de données dbase$. Pour ce faire, il est nécessaire de clore toutes les vues ainsi que la base de donnée elle-même.

dFILE

> Emploi

  dFILE file$,p$,f%

Sur les machines EPOC et Symbian OS, on peut de façon optionnelle utiliser la commande :

  dFILE var file$,p$,f%,uid1&,uid2&,uid3&

Définit une case d'édition de nom de fichier utilisable dans un dialogue. Un sélecteur de répertoire (Folder) et de disque (Disk) sont ajoutés sur les lignes suivantes (juste un sélecteur de disque sur SIBO).

EPOC et Symbian OS:
Par défaut, il n' y a aucune invite affichée pour les sélecteurs de fichier, de répertoire et de disque. Il faut pour cela fournir une liste d'invites séparées par une virgule.

> Exemple

Pour un éditeur de fichier, utilisez les invites standardisées  :

  dFILE f$,"Fichier,Répertoire,Disque",1

SIBO :
Sur SIBO, le sélecteur de disque est automatiquement fourni avec une invite où p$ sera l'invite inscrite à gauche du sélecteur de nom de fichier.

  • f% controle le type d'éditeur ou sélecteur de fichier, et le genre d'entrées autorisées. Vous pouvez combiner chacune des valeurs suivantes en les additionnant :
    •   0 – utiliser un sélecteur ;
    •   1 – utiliser une case d'édition ;
    •   2 – autoriser les noms de répertoire ;
    •   4 – noms de répertoire uniquement ;
    •   8 – interdire les fichiers existants  ;
    •  16 – interroger en cas de fichiers existants ;
    •  32 – autoriser l'entrée d'une chaîne vide ;
    •  64 – ne pas afficher l'extension de fichier ;
    • 128 – respecter/autoriser les jockers ;
    • 256 – autoriser la sélection de fichiers en ROM ;
    • 512 – autoriser la sélection de fichiers dans le répertoire System.

Le premier item de la liste est le plus crucial.

  • Si vous ajoutez  1 à f%, vous obtiendrez une case d'édition de nom de fichier, comme lors de la création d'un nouveau fichier.
  • Si n'ajoutez pas 1, vous ferez apparaître le sélecteur de ‘fichiers compatibles’, utilisé lors du choix de fichiers existants.

La valeur 64 (qui permet d'omettre les extensions de fichier) n'est pas valide sur le Series 5 dans la mesure où les extensions ne sont plus traitées comme une composante spéciale du nom du fichier.

Pour exécuter une opération ‘copier vers’, vous devez utiliser la combinaison  1+2+16, afin de spécifier que vous souhaitez une case d'édition de nom de fichier dans laquelle il sera possible de saisir le nom du répertoire d'arrivée, et qui vous interrogera si le nom du fichier existe déjà.

Si vous souhaitez demander le retrait d'un répertoire, vous devez utilisez la valeur  4 pour que seuls les répertoires existants soient traités.

Interroger en cas de fichiers existants’ est ignoré si ‘interdire les fichiers existants’ a été paramétré. Ces deux options ainsi que ‘Autoriser l'entrée d'une chaîne vide’ fonctionnent uniquement en édition, et non pour la sélection de ‘Fichiers compatibles’.
EPOC et Symbian :
Pour l'opération de sélection de fichier, dFILE supporte une restriction de fichier selon leur UID, ou selon le type selon le choix de l'utilisateur. Les documents sont identifiés grâce à trois UID qui précisent l'application qui les a créés et à quelle sorte de fichier ils correspondent. En spécifiant les trois UID, vous optez pour une restriction maximale, et en spécifier moins permet de diminuer cette restriction. Il suffit d'affecter 0 pour uid1& et uid2& si vous souhaitez limiter la liste aux fichiers correspondant à l'uid3&. Cela peut être utile lors de la gestion de documents provenant de l'une de vos propres applications : vous pouvez aisément retrouver la troisième UID car ce sera celle que vous avez spécifiée dans l'instruction APP. Notez que les UID sont ignorées pour les éditeurs de noms de fichier.

> Exemple

Si votre application a pour UID KUidMyApp&, l'instruction suivante ne listera uniquement que les documents spécifiques de votre application :

  dFILE f$,p$,f%,0,KUidOplDoc&,KUidMyApp&
  REM KUidOplDoc& pour Documents OPL

Certaines des UID en rapport avec l'OPL sont fournies dans le fichier Const.oph. Voir pour les détails d'utilisation de ce fichier, le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

SIBO :
f$ correspond à la variable de type chaîne de caractères à éditer. Son contenu initial contrôle toujours le disque et le répertoire utilisé initialement. Toute partie du nom de fichier f$ est affichée initiallement dans la case d'édition. Pour le sélecteur de ‘matching file’, vous pouvez utiliser des jokers dans toute partie du nom du fichier (comme *.tmp) pour contrôler quels nom de fichiers vont correspondre. Pour ce faire, vous devezajouter  128 à f%. Le paramètrage 128 permet également de spécifier que des jokers peuvent être entrés (retournés dans f$), à la fois pour les sélecteurs de recherche ou les nouveaux fichiers.

Si f$ contient aucune information de disque ou de répertoires, c'est le chemin d'accès paramétré par SETPATH qui est utilisé. Si la commande  SETPATH n'a pas été utilisée, c'est le répertoire \OPD du disque par défaut (habituellemnt M:, ‘Interne’) qui est utilisé.

Avec un sélecteur de fichier (par opposition à un éditeur de nom) la valeur 8 limite la sélection aux fichiers qui correspondent au nom du fichier/extension saisi dans f$.

f$ doit être déclaré avec une longueur de 255 octets, dans la mesure où les noms de fichier peuvent atteindre cette longueur, et cela provoque une erreur si f$ est trop court.

Les constantes utilisées pour les arguments de dFILE et certaines UID en rapport avec l'OPL sont fournies dans le fichier Const.oph.

Voir également l'instruction dINIT.
SIBO :
Les sélecteurs de fichier peuvent également utiliser la valeur 64, en quel cas, les fichiers dont l'extension est identique à celle comprise dans f$, sont affichés sans cette extension. (De nombreux sélecteurs de fichiers fonctionnent ainsi).

Vous pouvez toujours appuyer sur 'Tab' pour obtenir un sélecteur complet de fichier avec un item  dFILE .

f$ doit avoir une longueur au moins égale à 128 octets.

Voir également l'instruction dINIT.

dFLOAT

> Emploi

  dFLOAT floatpoint,prompt$,min,max

Définit une case d'édition pour nombre ne virgule flottante utilisable dans un dialogue.

  • prompt$ correspond au texte affiché sur la gauche de la ligne.
  • min et max corresponde à la valeur minimale et maximale autorisée. Une erreur est émise si min est plus grand que max.
  • floatpoint doit être une variable de type LOCAL ou GLOBAL. Elle spécifie la valeur affichée à l'ouverture du dialogue. Lorsque vous quittez le dialogue, la valeur saisie est retournée dans la variable floatpoint.

Voir également l'instruction dINIT.

DIALOG

> Emploi

  n%=DIALOG

Présente le dialogue préparé par l'instruction dINIT et les commandes telles que dTEXT et dCHOICE. Si vous quittez le dialogue en pressant la touche 'Entrée', les valeurs saisies sont stockées dans les différentes variables spécifiées dans dLONG, dCHOICE etc., mais vous pouvez l'empécher avec la commande dBUTTONS en choisissant de retourner la valeur  0.

Si, lors de la préparation d'un dialogue, vous utilisez l'instruction dBUTTONS, c'est la valeur du code de la dernière touche enfoncée qui est retourné. Sinon, DIALOG retourne le numéro de ligne de l'item courant quand la touche 'Entrée' a été appuyée. L'item en tête de dialogue (ou la ligne de titre s'il y en a un), a pour numéro le nombre 1.

Si vous abandonnez le dialogue en pressant la touche 'Esc', les variables ne sont pas modifiées, et la valeur 0 est retournée.

Voir également l'instruction dINIT.

DIAMPOS (SIBO uniquement)

> Emploi

  DIAMPOS pos%

Positionne l'indicateur sur la liste .

Si vous choisissez une valeur de pos% en dehors de l'intervalle des items, l'indicateur se positionnera après un glissement approprié. L'affectation pos%=0 provoque la disparition du symbole.

DIAMINIT (SIBO uniquement)

> Emploi

  DIAMINIT pos%,str1$,str2$,...

Initialise la liste [insert image] (en éliminant toute liste préexistante).

  • str1$, str2$, etc. correspondent aux textes qui doivent être affichés dans la fenêtre d'état pour chaque item de la liste.
  • pos% correspond à l'item initial sur lequel doit être positionné l'indicateur , avec pos%=1 spécifiant le premier item. (Toute valeur supérieures au nombre de chaînes de caractère spécifie l'item final).
    • Si pos%>=1, vous devez définir au moins une de ces chaînes de caractère.
    • Si pos% n'est pas fourni, si pos%=0 ou si DIAMINIT est utilisé seul sans arguments, il n'y a pas de barre définie.
    • Si pos%=-1, le diamant est retiré comme pour les petites fenêtes d'état sur le Series 3c.

dINIT

> Emploi

  dINIT
  dINIT title$

EPOC et Symbian:

  dINIT title$,flags%##

Prépare l'initation d'un dialogue, en provoquant l'abandon de tout autre en cours. Vous pouvez utiliser dTEXT, dCHOICE etc. pour définir chaque item du dialogue, puis la commande DIALOG pour afficher l'ensemble du dialogue.

  • Si la variable  title$ est fournie, son contenu sera affiché en haut du dialogue.

SIBO :
Toute variable title$ non vide sera affichée centrée et suivi d'une ligne vide.

EPOC et Symbian OS :
Toute variable title$ non vide sera positionnée dans la ligne colorée située en haut du dialogue.

  • flags% peut avoir pour valeur toute combinaison par addition des constantes suivantes afin d'obtenir les effets suivants :
    • 1 – boutons sur la droite du dialogue plutôt qu'à sa base ;
    • 2 – pas de barre de titre (tout titre dans l'intruction dINIT est ignoré) ;
    • 4 – utiliser l'écran complet ;
    • 8 – ne pas autoriser de déplacer (par glissement = drag) la case de dialogue ;
    • 16 – contactrer le texte du dialogue (mais pas les boutons).

Les constantes pour ces arguments sont fournies dans le fichier Const.oph.

> Note

Les dialogues sans titre ne peuvent être déplacées quelque soit le paramétrage de flags%. La contraction du texte (dense packing) permet de faire tenir plus de ligne sur l'écran.

Sur EPOC et Symbian OS, en cas d''erreur lors de l'ajout d'un item à un dialogue, le dialogue est détruit et il faut rappeler dINIT. Cela est nécessaire afin d'éviter que certaines lignes du dialogue ne soient que partiellement spécifiées.

En pratique cela signifie que si l'exemple artificiel suivant va marcher sur le Series 3c, ne laissant apparaître qu'une case de saisie pour un entier long, il provoquera une erreur de type ‘Défaut de structure' ('Structure fault’) sur le Series 5.

  dINIT
    ONERR e1
    REM Une mauvaise liste d'arguments provoque une erreur
    dCHOICE ch%,"ChList","a,b,,,,c"
    e1::
    ONERR OFF
    dLONG l&,"Long",0,12345
  DIALOG

DIR$

> Emplois

  d$=DIR$(filespec$)

puis

  d$=DIR$("")

Liste les noms de fichier, en incluant les noms des sous-répertoires, correspondant aux spécifications données grâce à filespec$. Vous avez le droit d'inclure des jokers dans ces spécifications. Si filespec$ correspond simplement à un nom de rpertoire, il faut inscrire un 'anti-slash' à la fin comme par exemple, "\TEMP\".

Utilisez la fonction de la manière suivante :

  • DIR$(filespec$) retourne le nom du premier fichier correspondant aux spécifications ;
  • DIR$("") retourne alors le deuxième fichier du répertoire ;
  • DIR$("") retourne le troisième, et ainsi de suite.

Quand il n'y a plus de fichiers qui correpondent au critère de recherche dans le répertoire, DIR$("") retourne une chaîne vide ("").

> Exemples

EPOC et Symbian OS :
Listing de tous les fichiers débute par un A dans le répertorie C:\ME\

  PROC dir:
    LOCAL d$(255)
    d$=DIR$("C:\ME\A*")
    WHILE d$<>""
      PRINT d$
      d$=DIR$("")
    ENDWH
    GET
  ENDP

SIBO :
Listing de tous les fichiers de base de données .DBF dans le répertoire M:\DAT\

  PROC dir:
    LOCAL d$(128)
    d$=DIR$("M:\DAT\*.DBF")
    WHILE d$<>""
      PRINT d$
      d$=DIR$("")
    ENDWH
    GET
  ENDP

dLONG

> Emploi

  dLONG long&,prompt$,min&,max&

Définit une case d'édition pour un entier long, utilisable dans un dialogue.

  • prompt$ correspond au texte qui sera affiché sur la gauche de la ligne ;
  • min& et max& correspondent à la valeur minimale et maximale autorisées ;
  • long& doit être une variable de type LOCAL ou GLOBAL. Elle spécifie la valeur qui doit être affichée à l'ouverture du dialogue. Lorsque vous quittez le dialogue, la valeur saisie est retournée dans long&.

Voir également l'instruction dINIT.

DO...UNTIL

> Emploi

  DO
    instruction
    ...
  UNTIL condition

L'instruction DO force l'ensemble d'instructions qui la suive à être répétée tant que la condition spécifiée par UNTIL soit remplie.

C'est la façon la plus simple de répéter une opération un certain nombre de fois.

Chaque instruction DO doit est assosicée à un UNTIL en fin de boucle.

Si vous choissez une condition qui n'est jamais remplie, le programme continue de touner dans une boucle sans fin.

EPOC et Symbian OS :
Vous pouvez sortir de la boucle à l'aide de la combinaison Ctrl+Esc, à condition de ne pas avoir utilisé la commande ESCAPE OFF. Si vous avez utilisé la commande ESCAPE OFF, vous devez retourner à la liste de tâches (Task list), sélectionner votre programme dans la liste et cliquer l'option 'Fermer le fichier' (‘Close file’).

SIBO :
Vous pouvez sortir de la boucle à l'aide de la touche Psion-Esc, à condition de ne pas avoir utilisé la commande ESCAPE OFF. Si vous avez utilisé la commande ESCAPE OFF, vous devez retourner à l'écran Système, vous déplacer sur le nom du programme sous l'icône Run Opl, et appuyer sur Détruire (Delete).

DOW

> Emploi

  d%=DOW(day%,month%,year%)

Retourne le jour de la semaine de 1 (Lundi) à 7 (Samedi) correspondant à la date donnée.

  • day% doit être compris entre 1 et 31,
  • month% entre 1 et 12
  • year% de 1900 à 2155.

> Exemple

L'instruction D%=DOW(4,7,1992) retourne 6, signifiant Samedi.

EPOC et Symbian OS :
Les constantes pour les valeurs numériques assignées pour les jours de la semaine sont fournies dans le fichier Const.oph.

dPOSITION

> Emploi

  dPOSITION x%,y%

Positionne un dialogue. On peut utiliser dPOSITION n'importe où entre les commandes dINIT et DIALOG.

La commande dPOSITION utilise deux valeurs entières. La première spécifie la position horizontale, et la seconde, la position verticale.

  • dPOSITION -1,-1 le positionne en haut à gauche de l'écran ;
  • dPOSITION 1,1 en bas à droite;
  • dPOSITION 0,0 au centre, position habituelle des dialogues.

> Exemple

L'instruction dPOSITION 1,0 positionne le dialogue sur le bord droit de l'écran, et centré au milieu du bord.

EPOC et Symbian OS :
Les constantes pour les positions sont fournies dans le fichier Const.oph.

Voir également l'instruction dINIT.

DRAWSPRITE

> Emploi

  DRAWSPRITE x%,y%

Trace l'image animée (sprite) courante dans la fenêtre courante avec le coin supérieur gauche placé sur le pixel de coordonnées x%,y%.

EPOC et Symbian OS :
Sur le Series 5, les images animées sont gérées par l'OPX intégré 'Sprite OPX'. Voir pour plus de détails, le chapitre ‘Using OPXs on the Series 5’.

dTEXT

> Emplois

  dTEXT prompt$,body$,t%
  dTEXT prompt$,body$

Définit une ligne de texte à afficher dans un dialogue.

  • prompt$ sera affiché sur la gauche de la ligne, et body$ sur la droite. Si vous ne voulez afficher qu'un message sur la ligne, affectez une chaîne vide ("") à p$, et passez la chaîne de caractère désirée dans body$. Elle occupera la totalité de la ligne de dialogue. Une erreur est renvoyée si body$ est une chaîne vide.
  • body$ est normalement aligné à gauche (bien que habituellement dans la colonne de droite). Vous pouvez passer outre en spécifiant la valeur de t% :
    • 0 – alignement gauche de body$
    • 1 – alignement droit de body$
    • 2 – alignement centré de body$

> Notes

  • Sur le Series 5, l'alignement de body$ n'est supporté que lorsque prompt$ est une chaîne vide, sinon body$ est aligné à gauche. De plus, vous pouvez additionner chacune ou toutes les étiquettes suivantes à t%, pour obtenir les effets suivants :
    • $100 – écrire body$ en caractères gras  ;
    • $200 – tracer une ligne sous l'item ;
    • $400 – permettre la sélection de l'item ;
    • $800 – spécificier un séparateur.
  • Sur EPOC et Symbian OS, les caractères gras ne sont pas supportés dans les dialogues. Il est possible d'afficher une ligne de séparation entre deux items en affectant la valeur $800 au t% d'un item auquel on a affecté une chaîne vide à p$ et body$ (si p$ et/ou body$ ne sont pas des chaînes vides, l'étiquette $800 est alors ignorée et aucun séparateur n'est tracé). Le séparateur est pris en compte comme un item dans la valeur retournée par DIALOG.
  • Sur SIBO, on ne peut tracer qu'une seule ligne au sein d'un dialogue en se servant de l'étiquette $200. Cette ligne sera placée sous le dernier item qui l'a appelé, que ce soit sous le titre si c'est dINIT (SIBO uniquement) ou un item dTEXT. L'étiquette $400 ne permet de sélectionner que l'invite prompt$ et non le corps body$.

EPOC et Symbian OS :
Les constantes pour les types de texte sont fournies dans le fichier Const.oph.

Voir les instructions dEDIT, dINIT

dTIME

> Emploi

  dTIME long&,prompt$,t%,min&,max&

Définit une case d'édition spécifiquement dédiée aux heures, utilisable dans les dialogues.

  • prompt$ correspond au texte affiché sur la partie gauche de la ligne.
  • long&, qui doit être une variable de type LOCAL ou GLOBAL , la valeur intiale de l'heure qui doit être affichée à l'ouverture du dialogue. Bien qu'elle apparaisse dans le dialogue sous forme d'une heure normale, 18:27 par exemple, la variable long& doit être spécifiée en tant que nombre de secondes après 00:00 (minuit). Une valeur de 60 correspond à minuit une; 3600 à une heure du matin, et ainsi de suite.
  • min& et max& fixent la valeur minimale et maximale autorisée. Là encore, ces valeurs sont exprimées en secondes après 00:00. Un message d'erreur est émis si min& est supérieur à max&.
  • Lorsque vous quittez le dialogue, la valeur de l'heure saisie est retournée par l'argument long&, toujours en secondes après 00:00.
  • t% spécifie le type d'affichage requis, de la manière suivante :
    • 0 – heure absolue sans les secondes
    • 1 – heure absolue avec les secondes
    • 2 – durée sans les secondes
    • 3 – durée avec les secondes
    • 4 – heure sans les heures
    • 8 – heure absolue sur 24 heures

EPOC et Symbian OS :
Les constantes pour types de dTIME sont fournies dans Const.oph.

> Exemple

03:45 représente une heure absolue alors que 3 heures 45 minutes représente une durée.

Les heures absolues sont affichées soit en format 24 heures ou matin/après-midi (am/pm) selon le paramétrage courant du système.

Sur les machines EPOC et Symbian OS, 8 affiche l'heure sur une horloge de 24 heures, quelque soit le paramétrage du système .

Les heures absolues sont affichées de façon appropriée avec am ou pm, sans qu'on ait besoin d'une horloge sur 24 heures. Les durées ne sont jamais accompagnées de am ou pm à l'affichage.

> Note

Néanmoins, si vous affectez la valeur 4 à cet argument (sans heures), les symboles am/pm seront affichés ; il faut lui ajouter la valeur 2 si vous souhaitez le masquer.

Voir également l'instruction dINIT.

dXINPUT

> Emploi

  dXINPUT string$,prompt$

Définit une case d'édition pour chaînes de caractères secrètes - comme les mots de passe - utilisables dans un dialogue.

  • prompt$ correspond au texte affiché sur la partie gauche de la ligne.
  • string$ correspond à la variable qui va recueillir la chaîne de caractères que vous frappez. Sur les machines EPOC et Symbian OS, string$ ne doit pas excéder 15 caractères de longueur et doit être au moins de huit caractères sur SIBO.

Lorsqu'on ouvre le dialogue, la case n'affiche aucun caractère ; le contenu initial de l'argument str$ est ignoré. Un caractère spécial sera affiché à la place de chaque lettre entrée, afin de préserver le secret de la saisie.

Voir également l'instruction dINIT.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

EDIT

> Emploi

  EDIT a$

Affiche une variable de type chaîne de caractères directement sur l'écran. On peut utiliser toutes les touches d'édition habituelles, les flèches permettent de se déplacer le long de la ligne, la touche Esc l'efface, etc...

Lorsque vous avez terminé votre saisie, enfoncez la touche Entrée pour confirmer les changements. Si vous appuyez sur Entrée avant d'avoir effectué toute modification, la chaîne de caractères restera inchangée.

Si vous utilisez la commande  EDIT en conjonction avec l'instruction PRINT, utilisez une virgule au bout de la ligne d'instruction PRINT de manière à ce que la chaîne de caractères qui doit être éditée apparaisse sur la même ligne que le texte :

  ...
  PRINT "Editer l'adresse :",
  EDIT A.address$
  UPDATE
  ....
  TRAP EDIT

Si on enfonce la touche Esc alors qu' aucun texte n'a été saisi sur la ligne d'entrée, l'erreur ‘Escape key pressed’ (numéro -114) sera renvoyée par la fonction ERR si la commande EDIT a été préalablement « trappée ». Vous pouvez mettre à profit cette caractéristrique pour permettre à l'utilisateur de se servir de la touche Esc pour s'échapper de la saisie de texte.

Voir également les commandes INPUT, dEDIT.

ELSE

Voir l'instruction  IF

ELSEIF

Voir l'instruction  IF

ENDIF

Voir l'instruction  IF

ENDA

Voir l'instruction APP

ENDP

Voir l'instruction PROC

ENDV

Voir l'instruction VECTOR

ENDWH

Voir l'instruction WHILE

ENTERSEND (SIBO uniquement)

> Emploi

  ret%=ENTERSEND(pobj%,m%,var p1,...)

Cette commande est identique à SEND à l'exception du fait que si on quitte la méthode, un code de l'erreur est retourné à la procédure appelante. Sinon la valeur retournée semble être retounée pas la méthode.

EPOC et Symbian OS :
L'OPL prend maintenant en charge les sorties sans avoir besoin d'utiliser cette fonction.

ENTERSEND0 (SIBO uniquement)

> Emploi

  ret%=ENTERSEND0(pobj%,m%,var p1,...)

Cette commande est identique à ENTERSEND à l'exception que si on ne quitte pas la méthode, la fonction retourne zéro.

EPOC et Symbian OS :
L'OPL prend maintenant en charge les sorties sans avoir besoin d'utiliser cette fonction.

EOF

> Emploi

  e%=EOF

Recherche si vous êtes ou non en fin de fichier (end of file).

Cette fonction retourne -1 ('Vrai') si on a atteint la fin de fichier, ou 0 ('Faux') si ce n'est pas le cas.

Lorsque vous lisez les fiches d'un fichier, vous devez tester s'il reste encore des fiches à lire sinon vous risquez d'avoir un message d'erreur.

> Exemple

  PROC testfindefichier:
    OPEN "Monfichier",A,a$,b%
    DO
      PRINT A.a$
      PRINT A.b%
      NEXT
      PAUSE -40
    UNTIL EOF
    PRINT "Dernier enregistrement"
    GET
    RETURN
  ENDP

ERASE

> Emploi

  ERASE

Détruit la fiche courante du fichier courant.

La fiche suivante deveint alors la fiche courante. Si c'est la dernière fiche du fichier qui a été détruite, la fiche courante sera nulle après cette commande et EOF revoiera 'Vrai'.

ERR

> Emploi

  e%=ERR

Retourne le numéro de la dernière erreur qui est survenue, ou 0 s'il n'y a pas eu d'erreur.

> Exemple

  ... PRINT "Entrez l'âge en années"
  age::
  TRAP INPUT age%
  IF ERR=-1
    PRINT "Un nombre SVP !"
    GOTO age
  ENDIF ...

EPOC et Symbian OS :
Vous pouvez forcer la valeur retournée par ERR à 0 (ou tout autre valeur) en utilisant TRAP RAISE 0. Cela est utile pour effacer une ERR.

SIBO :
Pour effacer la valeur de ERR on SIBO, vous devez suivre les instructions suivantes,

  ONERR e0
  RAISE 0
  e0::
  ONERR OFF

Voir également les fonctions ERR$, ERRX$. Voir pour plus de détails le chapitre ‘Error Handling’, incluant la liste des numéros d'erreur ainsi que les messages émis.

ERR$

> Emploi

  e$=ERR$(x%)

Retourne le message d'erreur pour le code d'erreur x% spécifié. Ainsi, ERR$(ERR) renvoie le message associé à la dernière erreur survenue.

> Exemple

  TRAP OPEN "\FILE",A,field1$
  IF ERR
    PRINT ERR$(ERR)
    RETURN
  ENDIF

Voir également les fonctions ERR, ERRX$. Voir pour plus de détails le chapitre ‘Error Handling’, incluant la liste des numéros d'erreur ainsi que les messages émis.

ERRX$

> Emploi

  x$=ERRX$

Retourne le message intégral de l'erreur courante (lorsqu'une erreur a été « trappée »).

> Exemple

  'Error in MODULE\PROCEDURE,EXTERN1,EXTERN2,...'

Ce message aurait été présenté sous forme d'alerte si l'erreur n'avait pas été « trappée ». Cela permet de retrouver le nom des modules externes et des procédures manquants, etc. d'être retrouvés lorsqu'une erreur a été « trappée » par le gestionnaire.

Voir également les fonctions ERR, ERR$.Voir pour plus de détails le chapitre ‘Error Handling’, incluant la liste des numéros d'erreur ainsi que les messages émis.

ESCAPE OFF

> Emploi

  ESCAPE OFF
  ...
  ESCAPE ON

  • ESCAPE OFF bloque la possibilité de quitter une application en cours d'exécution à l'aide la combinaison de touches Ctrl+Esc sur les machines EPOC et Symbian OS (ou Psion-Esc sur SIBO).
  • ESCAPE ON rétablit cette possibilité.
  • ESCAPE OFF ne prend effet que dans la procédure dans laquelle il se trouve, et dans tous les sous-procédures qui sont appelées . Les combinaisons Ctrl+Esc ou Psion-Esc sont toujours actives lorsque le programme débute.

EPOC et Symbian OS :
Si votre programme est entré et tourne dans une boucle sans sortie logique alors que l'instruction ESCAPE OFF a été activée, vous n'avez plus qu'à ouvrir la liste des tâches (Task list), vous déplacer sur le nom du programme, et sélectionner l'option 'Fermer le fichier' (Close file).

SIBO :
Si votre programme entre dans une boucle sans sortie logique, et que l'instruction ESCAPE OFF a été activée, vous allez devoir retourner sur l'écran Système, vous déplacer sur le nom du le programme sour l'icône 'Run Opl', et enfoncer la touche 'Delete'.

EVAL

> Emploi

  d=EVAL(s$)

Evalue l'expression mathématique sous forme de chaîne de caractères s$ et en retourne la valeur en virgule flottante. s$ peut inclure toute fonction mathématique ou tout opérateur.

> Note

L'arithmétique est toujours effectué en virgule flottante.

EPOC et Symbian OS :
La fonction EVAL fonctionne dans le contexte de la procédure courante, et donc les variables globales et les modules externes peuvent être utilisés dans s$, les procédures dans les modules chargés peuvent être appelées et les valeurs de gX et gY utilisées etc. Les variables de type LOCAL ne peuvent utilisées dans s$ (car l'interpréteur ne sait pas les différencier).

> Exemple

  DO AT 10,5 :PRINT "Calcul :",
    TRAP
    INPUT n$
    IF n$="" :CONTINUE :ENDIF
    IF ERR=-114 :BREAK :ENDIF
    CLS :AT 10,4
    PRINT n$;"=";EVAL(n$)
  UNTIL 0

Voir également la commande VAL.

EXIST

> Emploi

  e%=EXIST(filename$)

Vérifie si le fichier existe. Cette fonction retourne -1 (‘Vrai’) si le fichier existe et 0 (‘Faux’) si ce n'est pas le cas.

Utilisez cette fonction lors de la création d'un fichier pour vérifier qu'un fichier du même nom n'existe pas déjà, ou à l'ouverture d'un fichier pour vérifier s'il a déjà été créé :

  IF NOT EXIST("CLIENTS")
    CREATE "CLIENTS",A,names$
  ELSE OPEN "CLIENTS",A,names$
  ENDIF
  ...

EXP

> Emploi

  e=EXP(x)

Retourne la valeur exponentielle de x – c'est à dire, la valeur de la constante arithmétique e (2.71828...) élevée à la puissance x.

EXT (SIBO uniquement)

> Emploi

  EXT name$

Cette fonction rend l'extension de fichier des fichiers utilisés par un OPA. Elle ne peut être utilisée qu'entre les instructions APP et ENDA.

Pour plus de détails sur les OPA, consultez le chapitre ‘Advanced Topics’.

EXTERNAL

> Emplois

SIBO :

  EXTERNAL variable   ou   EXTERNAL prototype

Cette instruction est requise si DECLARE EXTERNAL est spécifié dans le module.

Le premier emploi permet de déclarer une variable au titre de variable externe.
Par exemple, EXTERNAL screenHeight%

Le deuxième emploi permet de déclarer le prototype d'une procédure (un prototype se termine par : et une liste d'argument). On peut appeler la procédure avant qu'elle soit définie. Cela permet que la vérification du type des paramètres soit réalisée dès la phase d''interprétation plutôt que lors de l'exécution de l'application et également fournit les informations nécessaires à l'interpréteur pour forcer les types des arguments numériques. Cela est logique dans la mesure où l'OPL ne supporte pas le dépassement d'argument. Le même forçage survient lors de l'appel des mot-clés internes.

Comme pour C et C++, vous devez normallement fournir un fichier d'entête déclarant les prototypes de toutes les procédures et inclure ce fichier d'entête à l'aide d'INCLUDE au début du module qui définit les procédures déclarées afin d'en assurer l'homogénéité. Le fichier d'entête doit être également inclus avec INCLUDE dans tout autre module qui appelle ces procédures. Ainsi, vous devez utiliser DECLARE EXTERNAL au début des modules qui incluent le fichier d'entête de manière à ce que l'interpréteur puisse appeler ces procédures avec les bons types de paramètres ou des types qui puissent être forcés.

> Exemple

Voici une illustration de l'utilisation de DECLARE EXTERNAL et d'EXTERNAL :

  DECLARE EXTERNAL
  EXTERNAL myProc%:(i%,l&)
  REM ou INCLUDE "myProc.oph" qui définit toutes vos procédures
  PROC test:
    LOCAL i%,j%,s$(10)
    REM j% est forcé à un entier long
    REM tel que cela est spécifié par le prototype.

    myProc%:(i%,j%)
    REM erreur interpréteur ‘Type mismatch’:
    REM une chaîne de caractères ne peut être forcée à un type numérique

    myProc%:(i%,s$)
    REM Un nombre incorrect d'arguments peut provoquer une erreur interpréteur
    myProc%:(i%)
  ENDP

  PROC myProc%:(i%,l&)
    REM L'interpréteur vérifie la compatibilité avec le prototype précédent

    ...
  ENDP

Voir l'instruction DECLARE EXTERNAL.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

FIND

> Emploi

  f%=FIND(a$)

Recherche dans la base de données courante (ou la vue courante surEPOC et Symbian OS) les champs qui correspondent au contenu de a$. La recherche débute à partir de la fiche courante, et il faut utiliser la commande NEXT pour atteindre les fiches suivantes. FIND marque fiche suivante qui se recoupe avec a$ comme fiche courante et retourne le numéro de la fiche trouvée. La recherche s'effectue indifféremment minuscules et majuscules confondues.

Vous pouvez recourir à des jokers :

  • ? peut remplacer un caractère unique quelconque  ;
  • * peut replacer un groupe de caractères quelconques.

Cette commande ne fonctionne qu'avec des champs de type chaîne de caractères.

> Exemple

Si vous souhaitez trouver les fiches dont un champ contient "Dr" et "DURAND" ou "DUPONT", vous pouvez utiliser l'instruction :

  F%=FIND("*DR*DU??N*")

L'instruction FIND("DURAND") ne retrouvera que les fiches dont un champ contient exclusivement la chaîne de caractères "DURAND".

Voir également FINDFIELD.

FINDFIELD

> Emploi

  f%=FINDFIELD(a$,start%,no%,flags%)

De la même façon que la commande FIND, finds une chaîne de caractères, makes the record avec this string la fiche courante, et retourne le nombre de this record.

  • a$ est la chaîne de caractères à rechercher ;
  • la recherche est effectuée dans no% champs de chaque fiche ;
  • elle débute, à partir du champ numéro start% ( avec 1 pour numéro de la premier champ).

Les variables start% et no% doivent faire référence uniquement à des champs de type chaîne de caractères, les autres types étant ignorés.

  • flag% est l'argument qui spécifie le type de recherche de la manière qui est décrite ci-après. Si vous souhaitez effectuer une recherche dans tous les champs, utilisez start%=1 et no% égal au nombre de champs que vous avez utilisé dans la commande OPEN/CREATE.
    • 0 – en arrière à partir de la fiche courante ;
    • 1 – en avant à partir de la fiche courante ;
    • 2 – en arrière à partir de la fin de fichier ;
    • 3 – en avant à partir du début de fichier.

EPOC et Symbian :
Les constantes définies pour ces attributs sont fournies dans le fichier Const.oph.

En ajoutant 16 à une des valeurs de flag% données précédemment, la recherche s'effectue en différenciant les caractères majuscules des minuscules (case-dependant). Sinon la recherche ne les différencie pas (case-independent) ce qui signifie que pour une lettre donnée, majuscule et minuscule sont équivalents pour la recherche.

Voir également le chapitre ‘Data File Handling’.

FINDLIB

> Emploi

  ret%=FINDLIB(var cat%,name$)

Recherche la catégorie de bibliothèque de procédure DYL de nom name$ (incluant l'extension .DYL) dans la ROM. Cette fonction retourne zéro en cas de recherche positive et écrit dans cat% sa catégorie.

EPOC et Symbian :
Le Series 5 ne supporte que l'utilisation d'OPX. Pour plus de détails, consultez le chapitre ‘Using OPXs on the Series 5’.

FIRST

> Emploi

  FIRST

Positionne le pointeur de fiche sur la première fiche de la base de données (ou vue sur EPOC et Symbian) courante.

FIX$

> Emploi

  f$=FIX$(x,y%,z%)

Retourne la représentation sous forme de chaîne de caractères du nombre x, avec y% décimales. La chaîne de caractères est limitée à une longueur de z% caractères .

> Exemple

  FIX$(123.456,2,7) retourne "123.46".

  • Si z% est négatif, la chaîne de caractères est justifée à droite ; par exemple FIX$(1,2,-6) retourne "   1.00" avec deux espaces à la gauche du 1.
  • Si z% est positif, il n'y a pas d'espace ajouté ; par exemple FIX$(1,2,6) retourne "1.00".
  • Si le nombre x ne correspond pas à la longeur spécifiée dans z%, la chaîne de caractères renvoyée ne contient que des astérisques ; par exemple FIX$(256.99,2,4) retourne "****".

Voir également les commandes GEN$, NUM$, SCI$.

FLAGS (EPOC et Symbian OS)

> Emploi

  FLAGS flags%

Remplace TYPE depuis les machines SIBO. L'argument flags% peut avoir les valeurs suivantes :

  • 1 – est utilisé pour spécifier une application qui a le droit de créer des fichiers. Elle sera alors incluse dans la liste des applications proposées quand l'utilisateur créé un nouveau fichier à partir de l'écran Système.
  • 2 – empêche l'application d'apparaître sur la barre des 'Extras'. Il est rare que cet attribut soit donné.

Les constantes pour les attributs flags% sont fournies dans le fichier Const.oph.

L'instruction FLAGS ne doit être utilisée qu'au sein d'une construction APP … ENDA .

Voir l'instruction APP. Voir également le paragraphe sur les OPA du chapitre ‘Advanced Topics’.

FLT

> Emploi

  f=FLT(x&)

Convertit une expression entière (soit entier ou entier long) en nombre en virgule flottante.

> Exemple

Soit la procédure

  PROC gamma:(v)
    LOCAL c
    c=3E8
    RETURN 1/SQR(1-(v*v)/(c*c))
  ENDP

Vous pouvez l'appeler de la manière suivante : gamma:(FLT(a%)) si vous souhaitez lui passer la valeur d'une varable de type entier sans avoir besoin de l'assigner préalablement à une variable de type virgule flottante.

Voir également les fonctions INT et INTF.

FONT

> Emploi

EPOC et Symbian :

  FONT id&,style%

SIBO :

  FONT id%,style%

Paramètre la fonte et le style d'une fenêtre de texte.

EPOC et Symbian :
Les constantes pour les UID des fontes sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

Voir pour plus de détails, le paragraphe ‘The text and graphics windows’ dans le chapitre ‘Graphics’.

FREEALLOC

> Emploi

EPOC et Symbian :

  FREEALLOC pcell&

SIBO :

  FREEALLOC pcell%

Libère les cellules de mémoire réservées à l'adresse pcell& (pcell%).

Le nombre d'octets réservables est limité sur SIBO à 64 Ko. La valeur entrée est donc un entier long sur EPOC et Symbian OS et un entier sur les machines SIBO.

EPOC et Symbian :
Voir également la commande SETFLAGS si vous avez besoin de forcer la limite à 64 Ko sur le Series 5. Si le paramétrage force à cette limite, pcell& est certain d'être compatible avec un entier simple.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

gAT

> Emploi

  gAT x%,y%

Place le curseur aux coordonnées (x%,y%) dans la fenêtre de dessin courante. La commande gAT 0,0 place le curseur en haut à gauche de la fenêtre de dessin (drawable) courante .

Voir également la commande gMOVE.

gBORDER

> Emplois

  gBORDER flags%,width%,height%
  gBORDER flags%

Trace une bordure noire d'un pixel de largeur autour du dessin (drawable) courant.

  • Si les variables width% et height% sont fournies, un cadre de cette taille dont le coin gauche est placé sur la position courante du curseur est tracé. Si ces arguments ne sont pas fournis, la bordure est tracée autour du dessin tout entier.
  • flags% contrôle les trois attributs du bord possibles - ombre sur la droite et en dessous, espace d'un pixel autour - et type de coins utilisé :
    • 1    – ombre d'un pixel ;
    • 2    – escamotage d'une ombre d'un pixel (laisse un espace pour une ombre d'un pixel sur SIBO) ;
    • 3    – ombre de deux pixels ;
    • 4    – escamotage d'une ombre de deux pixels (laisse un espace pour une ombre de deux pixels sur SIBO) ;
    • $100 – espace d'un pixel tout autour ;
    • $200 – coins arrondis.

EPOC et Symbian OS:

Les constantes pour les valeurs de ces attributs sont fournies dans le fichier Const.oph.

Les ombres n'apparaissent pas de la même manière sur EPOC et Symbian OS qu'elles apparaissent sur d'autres objets tels que les dialogues et panneaux de menu. Si vous souhaitez afficher de telles ombres sur une fenêtre, vous devez le spécifier quand vous utilisez la commande gCREATE. De plus, il est préférable d'utiliser la commande gCREATE (et gXBORDER) à gBORDER.

Il est possible de combiner les valeurs pour contrôler les trois effets différents (les valeurs 1, 2, 3 et 4 s'excluent mutuellementet vous ne pouvez utiliser que l'une d'entre-elles).

> Exemples

Pour avoir des coins arrondis avec une ombre de deux pixels, utilisez flags%=$203.

Si vous ne souhaitez pas d'ombre, ni d'espace autour et des coins droits, utilisez  flags%=0

Pour masquer une bordure précédemment amplifiée, utilisez  gBORDER avec flags%=4:

  gBORDER 3 REM affiche la bordure
  GET
  gBORDER 4 REM escamote la bordure
  ...

Voir également la commande gXBORDER.

gBOX

> Emploi

  gBOX width%,height%

Trace une case (box) à partir de la position courante, d'une largeur de width% pixels vers la droite et d'une hauteur height% vers le bas. La position courante du curseur reste inchangée.

gBUTTON

> Emploi

  gBUTTON text$,type%,w%,h%,state%

Trace un bouton 3D noir et gris à la position courante du curseur de largeur w% et de hauteur h% (englobant le bouton quelque soit son état).

  • text$ spécifie le texte (jusqu'à 64 caractères) qui doit être affiché avec la fonte et le style courant, à l'intérieur du bouton. Vous devez vous assurer que ce texte tient bien dans le bouton.
  • type%=1 dessine un bouton SIBO ; type%=2 spécifie un bouton EPOC et Symbian OS.
  • state%=0 dessine un bouton en position haute (en relief) ;
    state%=1 un bouton à moitié enfoncé (plat) ;
    state%=2 un bouton complètement enfoncé (en creux).

Sur les machines SIBO, l'absence de plan gris dans la fenêtre courante provoque une erreur.

> Emplois supplémentaires

EPOC et Symbian uniquement :

  gBUTTON text$,type%,w%,h%,st%,bmpId&
  gBUTTON text$,type%,w%,h%,st%,bmpId&,maskId&
  gBUTTON text$,type%,w%,h%,st%,bmpId&,maskId&,layout%

Cette commande supporte l'affichage de bitmaps sur les boutons. On peut passer trois arguments optionnels supplémentaires qui permettent de préciser l'identité (ID) du bitmap, celle du masque qui lui est associé et sa disposition dans le bouton. On peut affecter la valeur 0 à maskId% pour spécifier qu'il n'y en a pas.

On peut affecter les valeurs suivantes à layout% pour préciser la position relative du texte et des icones sur le bouton :

  • 0 – à droite ;
  • 1 – en bas ;
  • 2 – en haut ;
  • 3 – à gauche.

On peut rajouter les constantes suivantes pour spécifier comment  l'espace en excès doit être alloué sur le bouton :

  • 0   – partagé entre texte et icone ;
  • $10 – alloué au texte ;
  • $20 – alloué à l'image.

Les constantes pour toutes ces mises en forme et les états des boutons sont fournies dans le fichier Const.oph.

Dans les dispositions où les texte est au-dessus ou au-dessous de l'image, texte et image sont centrés verticalement et horizontalement dans l'espace qui leur est alloué. Dans les dispositions où le texte est à gauche ou à droite de l'image, le texte est aligné à gauche dans l'espace qui lui est alloué et l'image est aligné à doite ou gauche respectivement. Texte et image sont centrés verticalement dans ce cas.

> Exemples

  • $13 crée un bouton dont le texte est à gauche et aligné à gauche dans l'espace en excès s'il y en a ;
  • $20 crée un bouton dont le texte est à droite et l'icone alignéeà gauche dans l'espace en excès s'il y en a ;
  • $10 crée un bouton standard de barre d'outil, avec le texte à droite ;
  • Si vous souhaitez n'afficher qu'une icone, affectez une chaîne vide ("") à  text$.

Une erreur de type ‘Invalid arguments’ survient si vous utilisez une fenêtre OPL pour gBUTTON. Les bitmaps en lecture seule peuvent être également chargés en utilisant l'OPX 'Bitmap OPX'.

> Note

Un bouton est une entité purement graphique et ne s'approprie pas les bitmaps. Il n'est donc pas nécessaire de décharger l'image lorsque le bouton est encore en cours d'utilisation.

gCIRCLE

> Emplois

  gCIRCLE radius%
  gCIRCLE radius%,fill%

Trace dans le dessin courant un cercle centré sur la position courante du curseur.

  • radius% correspond à son rayon en pixels ; si radius% a une valeur négative, aucun cercle n'est dessiné.
  • si l'argument fill% est fourni et s'il est non nul, l'intérieur du cercle est coloré avec la couleur courante du curseur.

Voir les commandes gELLIPSE, gCOLOR.

gCLOCK

> Emplois

  gCLOCK ON/OFF
  gCLOCK ON,mode%
  gCLOCK ON,mode%,offset&
  gCLOCK ON,mode%,offset&,format$
  gCLOCK ON,mode%,offset&,format$,font%
  gCLOCK ON,mode%,offset&,format$,font%,style%

Affiche ou escamote une horloge qui affiche l'heure système. C'est la position courante dans la fenêtre courante qui est utilisée. On ne peut afficher qu'une seule horloge par fenêtre.

  • mode% contrôle le type d'horloge de la manière suivante :
    •  6 moyenne noire et gris, règlage heure système ;
    •  7 analogique moyenne noire et gris moyen ;
    •  8 digitale moyenne de deuxième type ;
    •  9 maxi-format noire et gris ;
    • 10 digitale formatée (description plus loin) ;
    • 11 digitale formatée (description plus loin) ;

Les constantes pour les modes d'affichage sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

SIBO OS :
Sur le Series 3c, les modes 1 à 5 sont fournis pour la compatibilité avec le Series 3 , et génère repectivement une petite horloge digitale, une horloge de taille moyenne (pour réglage de heure système), moyenne analogique, moyenne digitale, et grande analogique.

Vous pouvez également combiner à l'aide de l'opérateur OR les différents modes pour obtenir l'un des effets suivants :

  • $10 – affiche la date dans tous les formats excepté le plus grand ;
  • $20 – afficher les secondes sur les petites horloges digitales, les grandes analogiques, les analogiques de taille moyenne noire et grise et les maxi-format ;
  • $40 – affiche am/pm sur les les peties horloges digitales et les noires moyennes.
  • $80 – spécifie qu'une horloge doit être dessinée dans le plan gris (uniquement pour les horloges qui ne contiennent pas du noir et du gris simultanément, c'est à dire toutes sauf les horloges noire et blanc, moyennes et maxi-format).

> Note

Il est possible to dessiner des horloges qui contienent du gris dans des fenêtres qui n'ont pas de plan gris.

EPOC et Symbian :
Sur le Series 5, trois caractéristiques supplémentaires remplacent partiellement ces effets sur les horloges de base. L'horloge digitale (mode%=8) affiche automatiquement le jour de la semaine et le numéro du jour du mois sous l'heure. L'horloge analogique maxi-format (mode%=9) affiche automatiquement une second hand.

> Attention !

N'utilisez pas la commande  gSCROLL pour faire glisser la région qui contient une horloge. Lorsque l'heure est mise à jour, l'ancienne position pourrait être utilisée. Néanmoins, l'ensemble de la fenêtre peut être déplacé à l'aide de la commande gSETWIN.

Les horloges digitales affichent en mode 24-heures ou 12-heures selon le paramétrage système.

  • offset& spécifie un décalage en minutes entre heure système et heure affichée. Cela vous permet d'afficher une horloge affichant une autre heure que l'heure système.

> Note

L'argument offset& est replacé par offset% et l'argument font& par font% sur le Series 3c.

EPOC et Symbian OS :
Sur le Series 5, un attribut dont la valeur est $100, peut être combiné à l'aide de l'opérateur OR avec mode% de manière à ce que offset& soit spécifié en secondes plutôt qu'en minutes. La variable offset& est un entier long pour pouvoir correspondre à un jour entier quand le décallage est spécifié en secondes.

Si ces arguments ne sont pas fournis, mode% prend 1 et offset& prend 0 comme valeur par défaut.

EPOC et Symbian :
Le paramétrage du système pour le type d'horloge (digitale ou analogique) peut être changé par un programme OPL en se servant de la procédure LCSETCLOCKFORMAT: de l'OPX 'Date OPX'. Cette fonction peut être mise à profit par exemple, pour permettre au sein de votre application, de changer de type d'horloge en cliquant sur l'horloge de la barre d'outil comme cela est possible sur les applications natives du Series 5. Pour plus de détails sur cette procédure, voir le paragraphe ‘Using OPXs on the Series 5’.

  • format$, font% et style% sont used uniquement pour formatted digital clocks (mode% 10 sur le Series 3c et 11 sur le Series 5). la valeurs pour font& et style% sont as for gFONT et gSTYLE. the default font pour gCLOCK is the system font. the default style is normal (0).

Pour les horloges digitales formatées, une chaîne de caractère de formatage (jusqu'à 255 caractères de longueur) spécifie comment  l'horloge doit être affichée. Cette chaîne de formatage contient un certain nombre de spécificateurs de la forme d'un % suivi d'une lettre (majuscule ou minuscule).
Sur le Series 5, la chaîne de formatage peut contenir les symbols suivants pour obtenir l'effet recherché :

  • %%  – Insère un caractère % dans la chaîne de caractères ;
  • %*  – Abrège l'item qui suit. L'astérisque doit être insérée entre le % et le nombre ou la lettre, comme par exemple : %*1. Dans la plupart des cas this amounts d'omettre les zéros de tête, comme par exemple le premier du mois "%F %*M" qui s'affichera sous la forme de "1 " plutôt que "01".
  • %:n  – Insère un caractère séparateur dans l'heure système. L'attribut n est un nombre entier entre zéro et trois inclus qui indique quel type de séparateur utiliser. Pour le paramétrage de l'heure européenne, seules les valeurs n=1 et n=2 sont utilisées, donnant respectivement le séparateur heures/minutes et minutes/secondes.
  • %/n  – Insère un caractère séparateur dans la date système. L'attribut n est un nombre entier entre zéro et trois inclus qui indique quel type de séparateur utiliser. Pour le paramétrage de l'heure européenne, seules les valeurs n=1 et n=2 sont utilisées, donnant respectivement le séparateur jour/mois et mois/année.
  • %1  – Insère le premier composant d'une date qui en comporte trois (c'est à dire jour, mois et année) et dont l'ordre des composants a été déterminé par le paramétrage du système. Les différentes possibilités sont : jj/mm/aaaa (format Européen), mm/jj/aaaa (format Américain), aaaa/mm/jj (format Japonais).
  • %2  – Insère le deuxième composant d'une date qui en comporte trois dont l'ordre a été déterminé par le paramétrage du système. Voir %1.
  • %3  – Insère le troisième composant d'une date qui en comporte trois dont l'ordre a été déterminé par le paramétrage du système. Voir %1.
  • %4  – Insère le premier composant d'une date qui en comporte deux (c'est à dire jour, mois uniquement) dont l'ordre a été déterminé par le paramétrage du système. Les différentes possibilités sont : jj/mm (format Européen), mm/jj (format Américain), mm/jj (Japonais).
  • %5  – Insère le deuxième composant d'une date qui en comporte deux dont l'ordre a été déterminé par le paramétrage du système.Voir %4.
  • %A  – Insère am ou pm selon la langue choisie et l'heure du jour. Le texte est inscrit même si l'horloge en 24 heures est utilisée. Il est possible de spécifier si le texte doit être inscrit avent ou après l'heure, et un espace avent ou après selon le cas sera ajouté. La version abrégée (%*A) retire cet espace. En option, il est possible d'insérer un signe moins ou un signe plus entre le % et le A. This operates as follows: %-A provoque am/pm text to être inserted uniquement if le paramétrage du système de the am/pm symbol position is set pour afficher avant the time. Similarly, %+A provoque am/pm text to être inserted uniquement if le paramétrage du système de the am/pm symbol is set pour afficher after the time. No am/pm text will être inserted avant the time if a + is inserted in la chaîne de caractères . par exemple you could use, "%-A%H%:1%T%+A" to insert the am/pm symbol either avant ou after the time, selon le paramétrage du système. %+A et %-A cannot être abbreviated.
  • %B as %A, except that the am/pm text is uniquement inserted if l'horloge système setting is 12 hour. (This should être utilisé in conjunction avec %J.)
  • %D  – Insert the two-digit day nombre in month (en conjonction avec %1 etc.).
  • %E  – Insert the day name. Abbreviation is language specific (3 letters in English).
  • %F  – Utiliser this au début de a format string to make the date/time formatting independent de le paramétrage du système. This fixes the order de the following day/month/year component(s) in their given order, removing the need to use %1 to %5, allowing individual components de the date to être printed. (No abbreviation.)
  • %H  – Insert the two-digit hour component de the time in 24 hour clock format.
  • %I Insert the two-digit hour component de the time in 12 hour clock format. Any leading zero is automatically suppressed, regardless de whether an asterisk is inserted ou not.
  • %J  – Insert the two-digit hour component de time in either 12 ou 24 hour clock format depending sur lecorresponding system setting. When the clock has been set to 12 hour format, the hour’s leading zero is automatically suppressed regardless de whether an asterisk has been inserted entre the % et J.
  • %M  – Insert the two-digit month nombre (in conjunction avec %1 etc.).
  • %N  – Insert the month name (in conjunction avec %1 etc.). When using system settings (i.e. not using %F) this provoque all months following %N in la chaîne de caractères to être written in words. When using fixed format (i.e. when using %F) %N may be used alone to insert a month name. Abbreviation is language specific (3 letters in English).
  • %S  – Insert the two-digit second component de the time.
  • %T  – Insert the two-digit minute component de the time.
  • %W  – Insert the two-digit week nombre in year, counting the first (part) week as week 1.
  • %X  – Insert the date suffix. When using system settings (i.e. not using %F), this provoqu'un suffix to être put on any date following %X in la chaîne de caractères . When using fixed format (i.e. using %F), %X following any date appends a suffix pour that particular date. Cannot être abbreviated.
  • %Y  – Insert the four digit year nombre (in conjunction avec %1 etc.). the abbreviation is the last two digits de the year.
  • %Z  – Insert the three digit day nombre in year.

> Exemples

Voici quelques exemples de chaînes de formatage. L'exemple utilise correspond au jeudi 1er Janvier 1997 (Wednesday, 1st January 1997) à 1:30:05 de l'après-midi (pm), avec un paramétrage système de dates au format européen et avec am/pm après l'heure :

EPOC et Symbian :

  • "%-A%I:%T:%S%+A" will print the time in 12 hour clock, including secondes, avec the am/pm either inserted avant ou after the time, depending sur lesystem setting. so the example time would appear as, 1:30:05 pm.
  • "%F%E %*D%X %N %Y" will print the day de the week suivi par the date avec suffix, the month as a word et the year. par exemple, Wednesday 1st January 1997.
  • "%E %D%X%N%Y %1 %2 %3" will use the locale setting pour ordering the éléments de the date, mais will use a suffix sur leday and the month in words. par exemple, Wednesday 01st January 1997.
  • "%*E %*D%X%*N%*Y %1 %2 '%3" will être similar to 3., mais will abbreviate the day de the week, the day, the month et the year, so the example becomes «Wed 1st Jan 97".
  • "%M%Y%D%1%/0%2%/0%3" will appear as 01/01/1997. This demonstrates that the ordering de the %D, %M et %Y is irrelevant when using locale-dependent formatting. Instead the ordering de the date components is determined by the order de the %1, %2, et %3 formatting commandes .

L'argument style% may take any de la valeurs used to specify gSTYLE, other than 2 (underlined).

A note should également être made that a ‘General Failure’ error will result if you attempt to use an invalid format. Invalid formats include using %: et %/ suivi par 0 ou 3 when in European locale setting (when these separators sont without meaning) et using %+ et %- suivi par caractères other than A or B.

SIBO OS :
the format string pour the Series 3c may be defined in a similar manner to the Series 5, although generally less functionality is available. Any item may be abbreviated by using a * after the %. par exemple, %*T at 11:05 pm abbreviates 05 to 5. in the following list de specifiers, those which produce nombres will do so without any leading zero if you use %* instead de %. Other abbreviations sont marked :

  • %%  – Insert a single % character in la chaîne de caractères.
  • %:, %/  – Insert a system time, date separator character.
  • %A  – Insert am or pm text, selon the system time. (Abbreviation: 1st letter uniquement)
  • %D, %W, %M  – Insert the day, week, month nombre as two digits, dans l'intervalle 01-31, 01-53 et 01-12, respectively
  • %E, %N  – Insert the day, month name. (Abbreviation: language dependent – first 3 letters in English)
  • %H, %I  – Insert the hour in 24-hour, 12-hour format, dans l'intervalle 00-23 et 01-12, respectively
  • %S, %T  – Insert the secondes, minutes, dans l'intervalle 00-59.
  • %X  – Insert the suffix string for day nombre, par exemple st in ‘1st’, nd in ‘2nd’
  • %Y  – Insert the year as a four digit nombre (Abbreviation: discards the century, i.e. last two digits)
  • %1, %2, %3  – Insert the day, month, year ordered selon le paramétrage du système. E.g. European setting is day/month/year, so %1=%D, %2=%M, %3=%Y. So pour afficher a date in correct format use "%1/%2/%3". (Abbreviation: Voir %G, %P, %U)
  • %4, %5  – Insert the day, month as ordered in le paramétrage du système.
  • %F, %O  – Toggles days, months (displayed by %1, %2 and %3) entre numérique et name formats. on 9th March 1993, avec European date type, "%1%F%1%F%1" gives 09Tuesday09.
  • %G, %P, %U  – Toggles %1, %2 and %3 entre long form et abbreviation. on 9th March 1993, avec European date type, "%F%1%G%1%G%1" gives Tuesday Tue Tuesday.
  • %L  – Toggles the suffix sur leday nombre pour %1, %2, %3 (in numérique form uniquement). on 9th March 1993, avec European date type, "%G%1%L%1%L%1" gives 99th9.
  • %6, %7  – Inserts the hour et am/pm text selon le paramétrage du système. With am-pm format, %6=%I et %7=%A. With 24-hour format, %6=%H et %7 gives no ‘am/pm’ caractères.

> Exemples

Les chaînes de formatages donnent les résulats suivants :

  • "%H, m:%T" at 11:05 pm, displays a running clock as h:23, m:05.
  • "%1%/%2%/%3" automatically generates une horloge avec day, month et year in the order as selected in the Time application.
  • "%4%/%5" gives une horloge avec just day and month in selected order.
  • "%6%:%T%:%S%7" gives une horloge avec hour, minute et second automatically conforming to the system configuration.

Noter que pour those specifiers that toggle entre two different options (par exemple %F), the state de toggle is remembered uniquement within one format string et not à partir de one string to the next – i.e. the toggle state is restored to the default setting when displaying a new clock.

Et pour terminer, assuming that the settings in the Time application sont for ‘day/month/year’ date format, ‘am-pm’ time format et ‘:’ time separator et that the time is 11:30:05 pm on 9th March 1993, "%G%L%P%O%*E, %1 %2 %3 %6%:%T:%S%" generates Tue, 9th Mar 1993 11:30:05pm. With the same setup except pour ‘month/day/year’ date format in ‘24-hour’ mode, the same string generates Tue, Mar 9th 1993 23:30:05.

gCLOSE

> Emploi

  gCLOSE id%

Ferme le dessin (drawable) spécifié précédemment ouvert à l'aide de la commande gCREATE, gCREATEBIT ou gLOADBIT.

Si la fenêtre courante correspondait au dessin qui vient d'être fermé, c'est la fenêtre par défaut (ID=1) qui devient la fenêtre courante.

Une erreur survient si vous essayez de fermer la fenêtre par défaut.

gCLS

> Emploi

  gCLS

Efface la totalité du dessin courant et positionne le curseur aux coordonnées ' 0,0', c'est-à-dire le coin gauche.

gCOLOR (EPOC et Symbian OS)

> Emploi

EPOC et Symbian OS :

  FREEALLOC pcell&
  gCOLOR red%,green%,blue%

Paramètre la couleur du curseur de la fenêtre courante. Les valeurs des arguments red%,green% et blue% spécifient une couleur qui sera convertie en gamme de gris sur les écrans qui ne sont pas en couleurs.

> Note

Si les valeurs de red%, green% et blue% sont égales, vous obtenez un gris pur allant du noir (0) au blanc (255).

gCOPY

> Emploi

  gCOPY id%,x%,y%,w%,h%,mode%

Copies un rectangle de la taille spécifiée (largeur w%, hauteur h%) à partir du point de coordonnées x%,y% dans le dessin dont l'identité est id%, à la position courante du curseur dans le dessin (drawable) courant.

Dans la mesure où cette commande peut aussi bien copier les pixels allumés qu'éteints, vous disposez des mêmes modes que pour l'affichage d'un texte. Paramétrés mode%=0 pour allumer, 1 pour effacer, 2 pour inverser ou 3 pour remplacer. 0, 1 et 2 n'agissent que sur les plixels allumés du motif ; 3 recopie l'ensemble du rectrangle, que les pixels soient allumés ou éteints.

La position courante du curseur reste inchangée dans chacune des fenêtres.

EPOC et Symbian OS :

Il n'est pas recommandé d'utiliser la commande gCOPY pour copier à partir de fenêtres car c'est un processus très lent. On ne doit l'utiliser que pour effectuer une copie de bitmaps dans une fenêtre ou un autre bitmap. Pour obtenir une vitesse de traitement graphique vraiment rapide, utilisez l'affectation  mode%=3 chaque fois que possible.
SIBO :
La commande gCOPY est affectée par le paramétrage de gGREY (dans la fenêtre courante) de la manière suivante :

  • avec gGREY 0 it copies black to black;
  • avec gGREY 1 it copies grey to grey, ou black to grey if source is black uniquement;
  • avec gGREY 2 it copies grey to grey et black to black, ou black to both if source is black uniquement.

gCREATE

> Emploi

any of

  id%=gCREATE(x%,y%,w%,h%,v%)

SIBO:

  id%=gCREATE(x%,y%,w%,h%,v%,grey%)

EPOC et Symbian OS :

  id%=gCREATE(x%,y%,w%,h%,v%,flags%)

Crée une fenêtre aux coordonnées x%,y% et de taille (largeur w%, hauteur h%) spécifées , en la plaçant au premier plan et la marquant en tant que fenêtre courante. Cette commande établit la position courante du curseur aux coordonnées 0,0 correspondant au coin supérieur gauche. Si l'argument v% vaut 1, la fenêtre sera immédiatement visible; s'il vaut  0, elle sera invisible.

La variable id% contient la valeur qui sert à identifier cette fenêtre pour les autres mots-clés.

L'argument flags% spécifie le mode graphique et l'ombrage qui doivent être appliqués à la on la fenêtre. Par défaut le mode graphique est bicolore et sans ombre.

the least significant 4 bits de flags% donnent le mode de couleurs comme précédemment : 0 (mode bicolore), 1 (mode 4 couleurs), 2 (mode 16 couleurs).

the next 4 bits may be set to specify the shadowing on la fenêtre. If 0, la fenêtre has no shadow. the next 4 bits give the shadow height relative to la fenêtre behind it (a height de N units gives a shadow de N x 2 pixels).

L'argument flags% est plus facilement spécifié en hexadécimal :

  • $412 fenêtre en mode 16 couleurs ($2), shadowed window ($1), avec height 4 units ($4) above the previous window avec a shadow de 8 pixels.
  • $010 fenêtre enmode bicolore (noir et blanc) shadowed window at the same height as the previous window.
  • $101 fenêtre en mode 4 couleurs sans ombre (height ignored if shadow disabled).
  • $111 fenêtre en mode 4 couleurs avec ombre d'une unité au dessus de above window behind - en pratique : ombres de 2 pixels.

Les constantes pour spéciifer les divers arguments possibles pour la commande gCREATE sont sont fournis dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

If grey% is not given ou is 0, la fenêtre will not have a grey plane. If grey% is 1, it will have one.

> Note

Vous pourvez ouvrir jusqu'à 63 fenêtres et il est recommandé d'utiliser plusieurs petites fenêtre plutôt que quelques grandes.

Voir également les commnades gCLOSE, gGREY et DEFAULTWIN.

gCREATEBIT

> Emploi

  id%=gCREATEBIT(w%,h%)

EPOC and Symbian :

  id%=gCREATEBIT(w%,h%,mode%)

Crée une image (bitmap) de largeur w% et de hauteur h% spécifiées, et en fait le dessin courant. Cette commande positionne le curseur aux coordonnées 0,0, correspondant à son coin supérieur gauche.

La variable id% contient la valeur qui sert à identifier ce bitmap pour les autres mots-clés.

EPOC and Symbian: gCREATEBIT may be used avec an optional third parameter which spécifie le mode graphique de the bitmap to être created. la valeurs de these sont as given in gCREATE. Par défaut le mode graphique de a bitmap is 2-colour.


Voir également gCLOSE, gCREATE.

gDRAWOBJECT (SIBO Only)

> Emploi

  gDRAWOBJECT type%,flags%,w%,h%

Draws the scaleable graphics object spécifié by type%, scaled to fit in the rectangle avec en haut à gauche at the current graphics cursor position et avec the spécifié width w% et height h%.

SIBO has uniquement one object type (set type%=0) a ‘lozenge’. This is a 3-D rounded box lit à partir de the top left, avec a shadow at en bas à droite et a grey body. (For an example, consultez le chapitre text ‘City’ in the en haut à gauche de the World application.)

Pour type%=0, flags% spécifie the corner roundness :

  • 0 for normal roundness
  • 1 for more rounded
  • 2 for un seul pixel removed à partir de each corner

An error is raised if la fenêtre courante has no grey plane.

gELLIPSE

> Emploi

  gELLIPSE hRadius%,vRadius%
ou gELLIPSE hRadius%,vRadius%,fill%

Draws an ellipse avec the centre at la position courante in the current drawable. hRadius% is the horizontal distance in pixels à partir de the centre de the ellipse to la gauche (and right) de the ellipse. vRadius% is the vertical distance à partir de the centre de the ellipse to the top (and bottom). If the length de either radius is inférieur à zero, then no ellipse is drawn.

If fill% is supplied et if fill%<>0 then the ellipse is filled avec the current pen colour.

Voir gCIRCLE, gCOLOR.

GEN$

> Emploi

  g$=gen$(x,y%)

Retourne une représentation du nombre x sous forme de chaîne de caractères. La chaîne de caractères peut avoir jusqu'à y% caractères de long.

> Exemple

GEN$(123.456,7) retourne "123.456" et GEN$(243,5) retourne "243".

Si  y% est négatif, la chaîne de caractères est justifée à droite. Par exemple GEN$(1,-6) retourne "     1" avec cinq espaces à gauche du1.

Si y% est positif, il n'y pas d'espace surajouté. Par exemple GEN$(1,6) retourne "1".

Si le nombre x ne tient pas dans la largeur spécifié by y%, la chaîne de caractères est remplacée par des astérisques. Par exemple GEN$(256.99,4) retourne "****".

Voir également les commandes FIX$, NUM$ et SCI$.

GET

> Emploi

  g%=GET

Attend qu'une touche soit enfoncée et retourne le code du caractère correspondant à cette touche.

> Exemple

Si la touche A est enfoncée sans verrouillage des majuscules avec Ver Maj, l'entier retourné a pour valeur 97 (pour a), ou 65 (pour A) si la touche Maj a été enfoncée simultanément.

Le code des caractères des touches spéciales, telles que Pg Dn, sont donnés dans l''Appendix D'.

Vous pouvez utiliser la commande  KMOD pour vérifier si une des touches de fonction (Maj, Ctrl, Psion sur le Series 3c, et Fn sur le Series 5 et Ver Maj) a été utilisée.

Voir l''Appendix D' pour le jeu complet de caractères du Series 5. Pour the Series 3c, réferrez vous au guide utilisateur 'User Guide'.

Voir également la commande KEY.

GET$

> Emploi

  g$=GET$

Attend jusqu'à ce qu'une touche soit enfoncée et retourne la touche sous forme de chaîne de caractères.

> Exemple

Si  on enfonce la touche A en mode muniscule, la chaîne de caractères retournée est "a".

Vous pouvez utiliser la commande KMOD pour vérifier si une touche de mofication est utilisée (Maj, Ctrl, Psion sur le Series 3c ou Fn sur le Series 5 et Ver Caps).

Voir également la commande KEY.

GETCMD$

> Emploi

  w$=GETCMD$

Retourne les arguments d'une nouvelle ligne de commande à une application OPL, après qu'un événement  "changer de fichiers" ou "quitter" soit survenu. Le premier caractère de la chaîne de caractères retournée est un "C", un "O" ou un "X". Si la première lettre retournée est un "C" ou un "O", le reste de la chaîne de caractères corrrepond à un nom du fichier.

La signification du premier caractère est la suivante :

  • "C" – fermeture du fichier courant et création du nouveau fichier spécifié ;
  • "O" – fermeture du fichier courant et ouverture du fichier existant spécifié ;
  • "X" – fermeture du fichier courant (s'il y en a un) et fermeture du programme.

Vous ne pouvez appeler la commande GETCMD$ qu'une seule fois pour chaque message système.
EPOC et Symbian :
Les constantes pour ces valeurs retournées sont fournies dans le fichier Const.oph.

Voir également la commande CMD$.

GETDOC$

> Emploi

  docname$=GETDOC$

Retourne le nom du document courant.

Voir également la commande SETDOC.

GETEVENT

> Emploi

  GETEVENT var a%()

Attend la survenue d'un événement. La valeur retournée par le tableau d'entiers a%() spécifie la nature de l'événement. La donnée retournée dans a%() dépend du type d'événement survenu. Si l'événement correspond à l'enfoncement d'une touche, l'expression (a%(1) AND $400) vaut obligatoirement zéro. Pour les autres types d'événements, (a%(1) AND $400) est donc différente de zéro.

Si une touche a été enfoncée :

  •  a%(1) – keycode (comme pour la commande GET)
  • a%(2) AND $00ff – modificateur (comme pour l'instruction KMOD)
  • a%(2)/256
    auto-repeat count (ignoré par la commande GET)
  • Passage du programme en premier plan – a%(1)=$401
  • Passage en arrière -plan – a%(1)=$402 ;
  • Si la machine s'est allumée – a%(1)=$403
  • Si le système veut qu'un programme change de fichiers ou quitte – a%(1)=$404
  • Si la date change – a%(1)=$405

> Note

Les événements de changement de date ne sont pas détectés par EPOC ou Symbian OS.

Notez également que GETEVENT répond à tous les événements auxquels répond la commande GETEVENT32, y compris les événements « stylet ». Les mêmes codes qu'avec l'instruction GETEVENT32 ev&() sont écrit dans ev&(1), mais les éléments ev%(2) à ev%(6) du tableau sont uniquement paramétrés de la manière qui est détailllée ci-dessus.
Pour un événement « clavier », le modificateur est retourné dans a%(2) et ne l'est pas par l'instruction KMOD.
Si un événement qui n'est pas un événement « clavier » tel que ‘Premier plan’ survient lors de l'utlisation de l'un des mots-clés « clavier » tels que GET, INPUT, MENU ou DIALOG , l'événement est écarté. La commande GETEVENT doit donc être utilisée si des événements qui ne sont pas des événements « clavier » doivent être surveillés. Si vous avez besoin de to use thesemot-clés in programmes, use LOCK ON / LOCK OFF around them, so that l'écran Système won’t send messages to switch files ou shutdown while l'application cannot respond.

Le tableau (ou chaîne d'entiers) doit compter au moins 6 entiers.

EPOC et Symbian :
On recommande vivement d'utiliser la commande GETEVENT32 plutôt que GETEVENT pour le Series 5. La commande GETEVENT n'est supportée que pour des raisons de compatibilité et ne peut pas être utilisée pour gérer les événements « stylet » de façon satisfaisante.

Voir également les commandes TESTEVENT, GETCMD$ et GETEVENT32.

GETEVENT32 (EPOC et Symbian OS)

> Emploi

  GETEVENT32 ev&()

Récupère tous les types d'événements gérés par l'instruction GETEVENT ev%() plus les événement « stylet ». Ces derniers sont trop grands pour tenir dans le tableau d'entiers fourni pour l'instruction GETEVENT ev%(). Le tableau ev&() doit compter au moins 16 éléments.

Tout événement retourne une estampille d'heure de 32 bits. L'ID de la fenêtre mentionée ci-dessous se réfère à la valeur renvoyée par l'instruction gCREATE. Le modificateur des valeurs et le code scannée qui correspond à la valeur associée à chaque touche enfoncée (qui en spécifie la localisation sur le clavier) sont fournies dans le chapitre ‘Advanced Topics’ et l'Appendix D.

GETEVENT32 retourne plus d'informations que la commande GETEVENT, comme vous le constatez ci-dessous :

  • Si une touche a été enfoncée – (ev&(1) AND &400)=0
    ev&(1) – code de la touche ;
    ev&(2) – estampille de l'heure ;
    ev&(3) – code scanné ;
    ev&(4) – modificateur ;
    ev&(5) – répétition.

> Note

À la différence de GETEVENT, the repeat pour GETEVENT32 is strictly a repeat. Si il n'y a que l'enfoncement d'une touche, la valeur de ev&(5) vaut 0.

Pour tous les autres types d'événement, ev&(1) est supérieur à la valeur &400

  • Si le programme a été porté au premier plan – ev&(1)=&401
    ev&(2) – estampille de l'heure ;
  • Si le programme a été porté en arrière-plan – ev&(1)=&402
    ev&(2) – estampille de l'heure ;
  • Si la machine est allumée – ev&(1)=&403
    ev&(2) – estampille de l'heure ;
    Notez que cet événement ne peut être autorisé sans que the appropriate flag is set (il ne l'est pas par défaut) : voir la commande SETFLAGS.
  • Si l'ordinateur wants the OPL application to switch files ou quitter –  ev&(1)=&404
    Si cet événement est capté, la commande GETCMD$ doit être appelée pour trouver quelle action entreprendre (voir GETCMD$).
  • Si une touche est enfoncée – ev&(1)=&406
    ev&(2) – estampille de l'heure ;
    ev&(3) – code scanné ;
    ev&(4) – modificateur ;
  • Si une touche est relâchée – ev&(1)=&407
    ev&(2) – estampille d'heure ;
    ev&(3) – scan code ;
    ev&(4) – modificateur ;
  • Si un événement « stylet » survient – ev&(1)=&408
    ev&(2) – estampille d'heure ;
    ev&(3)ID de la fenêtre ;
    ev&(4) – type de pointeur (voir ci-après) ;
    ev&(5) – modificateur ;
    ev&(6) – abcisse x ;
    ev&(7) – ordonnée y ;
    ev&(8) – abcisse relative x dans la fenêtre mère ;
    ev&(9) – ordonnée relative y dans la fenêtre mère.

Pour les événements « stylet », ev&(4) peut prendre l'une des valeurs suivantes :

  • 0 – stylet appuyé ;
  • 1 – stylet levé ;
  • 6 – stylet appuyé en cours de déplacement (drag).

Autres valeurs :

  • Si le stylet entre en contact a l'écran – ev&(1)=&409
    • ev&(2) – testampille d'heure ;
    • ev&(3)ID de la fenêtre.
  • Si le stylet perd le contact avec l'écran – ev&(1)=&40A
    • ev&(2) – estampille d'heure 
    • ev&(3)ID de la fenêtre.

Les constantes pour les subscripts du tableau et les valeurs retournées sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et pour son listing, l'Appendix E .

Certains événements « stylet », et pointer enters et exits, peut être filtrés pour éviter qu'ils soient noyés dans d'autres types d'événements indésirables. Voir la commande  POINTERFILTER.

> Notes

Pour les autres événements inconnus, ev&(1) contient la valeur &1400 additionnée du code renvoyé par le serveur de fenêtre. La variable ev&(2) correspnd à l'estampille d'heure et ev&(3) à l'ID de la fenêtre, et le restant des données renvoyées par le serveur de fenêtre est mis dans ev&(4), ev&(5), etc.

Si un événement qui ne correspond pas au clavier tel que ‘Premier plan’ survient alors qu'un mot-clé tel que GET, INPUT, MENU ou DIALOG est encours d'utilisation, l'événement est écarté. Ainsi, GETEVENT ne doit pas être utilisé si des événements sans rapport avec le clavier doivent être surveillés. Si vous avez besoin d'utiliser ces mot-clés dans une application OPL, encadrez les des instruction LOCK ON / LOCK OFF, de manière à ce que l'écran Système won’t send messages to switch files ou shutdown while l'application cannot respond.

Voir également les commandes GETEVENT, GETEVENTA32.

GETEVENTA32

> Emploi

  GETEVENTA32 status%,ev&()

Version asynchrone de la fonction GETEVENT32. La commande GETEVENTA32 retourne dans le tableau ev&() les mêmes codes que GETEVENT32.

Voir les commandes GETEVENTC, GETEVENT32 et GETEVENT. Pour les détails sur les fonctions d'entrée/sortie asynchrones, reportez vous également au paragraphe ‘I / O functions and commandes ’ du chapitre ‘Advanced Topics’ .

GETEVENTC

> Emploi

  GETEVENTC(var stat%)

Annule la fonction GETEVENTA32 précédemment appelée avec l'état stat%. Noter que la commande GETEVENTC consomme le signal (à la différence de IOCANCEL), et on ne doit donc pas utiliser l'instruction IOWAITSTAT après GETEVENTC.

Voir pour les détails le chapitre ‘Advanced Topics’.

GETLIBH

> Emploi

  cat%=GETLIBH(num%)

Convertit un numéro de catégorie num% en un handle. Si l'argument num% est égal à zéro, la commande récupère le handle correspondant à OPL.DYL.

gFILL

> Emploi

  gFILL width%,height%,gMode%

Remplit un a rectangle de la taille spécifiée à partir de la position courante, selon le mode graphique spécifié.
La position courante reste inchangée.

gFONT

> Emploi

  gFONT fontUid&
  gFONT fontId%

Affecte la fonte d'identité fontId% au dessin (drawable) courant . La fonte peut être l'une de celles qui sont prédéfinies en ROM ou une fonte définie par l'utilisateur. Pour plus de détails sur les fontes, reportez vous au chapitre ‘Graphics’ .

Les constantes pour les UID des fontes sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et pour son listing, l'Appendix E .

Les fontes définies pas l'utilisateur doivent être préalablement chargées avec la commande gLOADFONT, ce qui permet secondairement d'utiliser les UID des fontes chargées avec gFONT.

> Note

Ce n'est pas l'identité  retournée par gLOADFONT (qui est l'ID du fichier de fonte), mais l'UID définie dans le fichier de fonte lui-même.

Les fontes définies par l'utilisateur doivent être préalablement chargées avec la commande gLOADFONT, qui retourne la variable fontId% utilisable avec gFONT.

Voir également les commandes gLOADFONT et FONT.

gGMODE

> Emploi

  gGMODE mode%

Paramètre l'effet des commandes graphqiues gLINEBY, gBOX etc. qui suivent cette instruction sur le dessin (drawable) courant.
Selon la valeur de Mode% les pixels seront :

  • 0 – allumés
  • 1 – effacés
  • 2 – inversés

Les constantes pour l'argument mode% sont fournies dans le fichier Const.oph.

Lorsque vous utilsez pour lapremière fois des commandes graphiques sur un dessin (drawable), elles paramètrent les  pixels du dessin. Utilisez la commande gGMODE si vous souhaitez le modofier.

> Exemple

Si vous avez établi un arrière plan noir, vous pouvez y dessiner une « boîte » (box) entourée d'un cadre à l'aide de l'une des instructions gGMODE 1 ou gGMODE 2, suivi par gBOX.

gGREY (SIBO)

> Emploi

  gGREY mode%

Change la couleur du curseur de noir à gris. L'attribut mode% possède les propriétés suivantes :

  • mode%=1 établit la couleur du premier plan du dessin courant au gris clair. C'est la couleur qui peut être obtenue grâce à l'instruction gCOLOR $aa,$aa,$aa.

Tout autre valeur de mode% établit la couleur du premier plan colour au noir (valeur par défaut).
Contrôlez si tous les dessins et textes graphiques de la fenêtre courante son tracés dans le plan gris, le plan noir ou les deux.

  • mode%=0 – pour le seul plan noir (valeur par défaut)
  • mode%=1 – pour le seul plan gris
  • mode%=2 – pour les deux plans

Il est utile d'imaginer que le plan noir se trouve en avant du plan gris ; ainsi, un pixel allumé dans les deux plans apparaîtra noir. Pour les détails, consultez le chapitre ‘Graphics’.

Pour autoriser l'utilisation du gris dans la fenêtre par défaut (ID=1) utilisez l'instruction  DEFAULTWIN 1 au début de votre programme. Si vous avez besoin de gris dans d'autres fenêtres, vous devez creer la fenêtres avec un plan gris en tulisant la commande gCREATE.

La commande gGREY ne peut être utilisée avec les bitmaps qui n'ont qu'un seul plan .

Voir également les commandes DEFAULTWIN et gCREATE.

gHEIGHT

> Emploi

  height%=gHEIGHT

Retourne la hauteur du dessin (drawable) courant.

gIDENTITY

> Emploi

  id%=gIDENTITY

Retourne l'identité ID du dessin (drawable) courant.

La fenêtre par défaut a une ID=1.

gINFO

> Emploi

  gINFO var i%()

Récupère les informations générales concernant le dessin (drawable) courant et curseur graphique (quelque soit la fenêtre dans laquelle il se trouve). Les informations sont retournées dans le tableau i%() qui doit être composé d'au moins 32 entiers.

Les informations concernent le dessin dans son état courant, par exemple les infos sur la fonte concernent la fonte et le style courant.

Les informations suivantes sont retournées :

  • i%(1) – code du caractère le plus bas ;
  • i%(2) – code du caractère le plus haut ;
  • i%(3) – hauteur de la fonte ;
  • i%(4) – descente de fonte ;
  • i%(5) – remontée de fonte ;
  • i%(6) – caractère de largeur '0' ;
  • i%(7) – largeur maximale des caractères ;
  • i%(8) – attributs de la fonte (voir ci-dessous) ;
  • i%(9-17 – nom de la fonte ;
  • i%(18) – mode graphique courant (gGMODE) ;
  • i%(19) – mode texte courant (gTMODE) ;
  • i%(20) – style courant (gSTYLE) ;
  • i%(21) – état du curseur (ON=1,OFF=0) ;
  • i%(22) – ID de la fenêtre contenant le curseur (-1 pour le curseur de texte) ;
  • i%(23) – largeur du curseur ;
  • i%(24) – hauteur du curseur ;
  • i%(25) – remontée du curseur ;
  • i%(26) – abcisse x du curseur dans la fenêtre ;
  • i%(27) – ordonnée y du curseur dans la fenêtre ;
  • i%(28) – 1 si le dessin est un bitmap ;
  • i%(29) – effets de curseur ;
  • i%(30) – paramétrage de gGREY
  • i%(31) – reservé (serveur d'identité ID pour les dessins (drawing)) ;
  • i%(32) – reservé.

i%(8) permet de spécifier une combinaison des caractéristiques de fonte suivantes :

  • 1     – fonte utilisant des caractères ASCII standards (32–126)
  • 2     – fonte utilisant des caractères Code Page 850 (128–255)
  • 4     – fonte grasse ;
  • 8     – fonte italique ;
  • 16    – fonte avec serif ;
  • 32    – fonte monospace ;
  • $8000 – fonte stockée décompressé pour traçage rapide ;

Utiliser l'instruction PEEK$(ADDR(i%(9))) pour lire le nom de la fonte utilisée dans une chaîne de caractères.

Si le curseur est sur ON (i%(21)=1), il est visible dans la fenêtre identifiée par i%(22).

Si le curseur is oblong, i%(29) le bit 0 est à un, (i%(29) et 1) , s'il ne clignote pas le bit 1 est sur un (i%(29) et 2) , et s'il est gris le bit 2 est à un  (i%(29) et 4).

Si le curseur est OFF (i%(21)=0), ou si c'est un curseur de texte (i%(22)=-1), i%(23) to i%(27) et i%(29)should être ignored.

gINFO32

> Emploi

  gINFO32 var i&()

Gets general information concernant le current drawable et concernant le graphics cursor (whichever window it is in). This replaces gINFO because the information available has changed. i&() doit have 48 éléments (although éléments 37 to 48 sont currently unused). the same information is returned to le tableau éléments as for gINFO except pour the following,

  • i&(1) – réservé ;
  • i&(2) – réservé ;
  • i&(9) – the font UID as used in gFONT
  • i&(10-17) unused
  • i&(30) graphics colour-mode de current window
  • i&(31) gCOLOR red% du premier plan
  • i&(32) gCOLOR green% du premier plan
  • i&(33) gCOLOR blue% du premier plan
  • i&(34) gCOLOR red% de l'arrière plan
  • i&(35) gCOLOR green% de l'arrière plan
  • i&(36) gCOLOR blue% de l'arrière plan

De plus, notez que sur EPOC, i&(8)=2 means that Code Page 1252 is used (rather than Code Page 850) et également that there is no obloid cursor, so bit 0 will never être set in i&(29).

Voir également les commandes gINFO, gFONT, gCOLOR et gCREATE.

gINVERT

> Emploi

  gINVERT width%,height%

Inverse le rectangle d'une largeur width% sur la droite et d'une hauteur height% vers le bas à partir de la position courante du curseur, à l'exception des pixels des quatre coins.

gIPRINT

> Emplois

  gIPRINT str$,c%
  gIPRINT str$

Affiche un message d'information pendant environ deux secondes, dans le coin inférieur droit de l'écran.

> Exemple

L'instruction gIPRINT "Pas trouvé" va afficher le texte 'Pas trouvé'. Si la chaîne de caractères s'avère trop longue pour l'écran, elle sera rognée.

  • Quand l'argument c% est fourni, il contrôle le coin où le message apparaît :
    • 0 – en haut à gauche ;
    • 1 – en bas à gauche ;
    • 2 – en haut à droite ;
    • 3 – en bas à droite (default)

Les constantes pour les valeurs de ces coins sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

On ne peut faire apparaître qu'un message à la fois. Vous pouvez faire disparaître le message - par exemple, si une touche est enfoncée - avec l'instruction gIPRINT "".

gLINEBY

> Emploi

  gLINEBY dx%,dy%

Trace une ligne à partir de la position courante vers un point situé à une distance dx% vers la droite et dy% vers le bas. Une valeur négative de dx% et dy% correspond respectivement à un déplacement vers la gauche et vers le haut.

Les machines EPOC et Symbian OS machines ne tracent jamais le dernier point. Ainsi, pour l'instruction gLINEBY dx%,dy%, le point de coordonnées (gX+dx%,gY+dy%) n'est donc pas tracé.

Note, néanmoins, that OPL specially plots the point when le début et end-point coincide.

Pour les lignes horizontales, the line includes the pixel avec the lower x co-ordinate et excludes the pixel avec the higher x co-ordinate. De mêm pour les lignes verticales, the line includes the pixel avec the lower y co-ordinate et excludes the pixel avec the higher y co-ordinate. Pour oblique lines (where the x and y co-ordinates change), the line is drawn minus one ou both end points.

Pour toutes les machines, la position courante du curseur correspond au bout de la ligne tracée.

L'instruction gLINEBY 0,0 allume le pixel situé à la position courante du curseur.

Voir également gLINETO, gPOLY.

gLINETO

> Emploi

  gLINETO x%,y%

Trace une ligne entre la position courante du curseur et le point de coordonnées (x%,y%). Le curseur prend pour position courante le point de coordonées (x%,y%).

> Note

EPOC et Symbian OS ne tracent jamais le dernier point, et l'instruction gLINETO x%,y% ne trace donc pas le point de coordonnées (x%,y%). Néanmoins, lorsque le point initial et final coincident, OPL trace le point.

Pour les lignes horizontales, la ligne inclue le pixel d'abcisse x la plus faible et exclu le pixel de abcisse x la plus élevée. De même pour les lignes verticales, la ligne inclue le pixel d'ordonnée y la plus faible et exclu le pixel d'ordonnée y la plus élevée. Pour les lignes oblique (où x et y changent tous les deux), la ligne est tracée sans l'un ou les deux points extrêmes.

Pour tracer un seul point quelque soit la machine, utilisez la commande  gLINETO à la position courante (ou gLINEBY 0,0).

Voir également les commandes gLINEBY, gPOLY.

gLOADBIT

> Emploi

  id%=gLOADBIT(name$,write%,index%)
  id%=gLOADBIT(name$,write%)
  id%=gLOADBIT(name$)

Charge un bitmap à partir du fichier nommé name$ et en fait le dessin courant. Cette commande positionne le curseur à la position de coordonnées (0,0) qui correspond à son coin supérieur gauche. Les bitmaps sont contenus dans les fichiers dont l'extension est .mbm.

La commande gLOADBIT ne rajoute pas d'extension par défaut au nom de fichier entré dans l'argument name$.

> Note

Sur EPOC et Symbian OS, la commande gLOADBIT charge les fichiers d'image EPOC (EPOC Picture files) qui sont naturellement au même format que ceux obtenus à l'aide de la commande gSAVEBIT. Les fichiers d'image EPOC peuvent également être générés par exportation de fichiers créés avec 'Sketch', l'application de dessin. Ces fichiers sont appelés multi-bitmaps (MBMs), bien qu'ils ne contiennent souvent qu'une seule image comme dans le cas de gSAVEBIT , et ont souvent pour extension .mbm. Le bitmap est conservé sous forme de copie locale en mémoire.

  • Si l'argument  name$ n'a pas d'extension, .pic lui est attribué par défaut.
  • La commande retourne dans id% la valeur qui identifie le bitmap pour les autres mot-clés.
  • write%=0 met le fichier en lecture seule. Les tentatives d'écriture sur le fichier en mémoire seront ignorées, mais le bitmap peut être utilisé par d'autres programmes sans requérir d'avantage de mémoire.
  • write%=1 vous permet d'écrire et de re-sauvegarder le bitmap. C'est la valeur par défaut.
    Les constantes pour la valeurs de write% sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.
  • Pour les fichiers de bitmaps qui contiennent plus d'un bitmap, index% spécifie lequel charger. Le premier bitmap a pour valeur  index%=0, qui est également la valeur par défaut.

Les fichiers bitmaps sauvegardés avec la commande gSAVEBIT ne contiennent qu'un seul bitmap s'ils sont sauvegardés à partir d'un fichier bitmap en mémoire plutôt qu'à partir d'une fenêtre. Lorsqu'on sauvegarde une fenêtre en noir/gris/blanc sur une machine SIBO, les deux plans sont sauvegardés, le noir avec index%=0 et le gris avec index%=1.

Voir également la commande gCLOSE.

gLOADFONT

> Emplois

  fileId%=gLOADFONT(file$)
  fontId%=gLOADFONT(name$)

Loads the user-defined font. This is done differently entre machines as follows:

Loads the user-defined fonts spécifié in le fichier file$ et retourne le fichier ID of the font file, which peut être utilisé uniquement avec gUNLOADFONT. the maximum nombre de font files which may be loaded at any one time is 16.

to use the fonts in a loaded font file you need to use their published UIDs which will être defined in the font file itself, par exemple:

  fileId%=gLOADFONT("Music1")
  gFONT KMusic1Font1&
  ...
  gUNLOADFONT fileId%

Loads the user-defined font name$ et retourne a font ID which peut être utilisé avec gFONT to make the current drawable use this font. If name$ does not contain a file extension, .FON is used.

gFONT itself is very efficient, so you doivent normallement load all required fonts at le début de a programme.

Noter que the built-in fonts sont automatically available, et do not need loading.

Voir la commande  gUNLOADFONT.

GLOBAL

> Emploi

  GLOBAL variables

Déclare les variables à utiliser dans la procédure courante (de la même façon que la commande LOCAL) et (à la différence de LOCAL) dans toutes les procédure appelées par la procédure courante, ou qu'elle appellent elles-mêmes.

Les variables peuvent être de quatre types, selon le symbole sur lequel elles se terminent :

  • Les noms de variables qui ne finissent pas par $, %, & ou () sont variables en virgule flottante.
    Exemples : prix, x
  • Celles qui se terminent par un % sont variables de type entier simple.
    Exemples : x%, ventes02%
  • Celles qui se terminent par un & sont variables de type entier long.
    Exemples : x&, ventes02&.
  • Celles qui se terminent par un $ sont variables de type chaîne de caractères. Les noms de ce type de variables doit être suivi par la longueur maximale de la chaîne entre parenthèses.
    Exemples : nom$(12), a$(3)
  • Les tableaux (Array) de variables sont suivies d'un nombre entre parenthèse qui spécifie le nombre de éléments du tableau. Ces tableaux peuvent être de n'importe quel type.
    Exemples : x(6), y%(5), f$(5,12), z&(3).
  • Lorsque vous déclarez un tableau de chaînes de caractères, vous devez indiquer deux nombres entre parenthèses. Le premier sert à déclarer le nombre d'éléments, le second à déclarer leur longueur maximale.
    Exemple
     : Prenom$(5,8) déclare un tableau de cinq éléments, dont chacun peut contenir jusqu'à 8 caractères.

EPOC et Symbian :
Les noms de variables peuvent être une combinaison d'au plus 32 caractères (lettres, chiffres et "_" (underscore). Ils doivent commencer par une lettre ou un underscore.

SIBO :
Les noms de variables peuvent être composés d'une combinaison d'au plus 8 lettres et chiffres. Ils doivent commencer par une lettre.

La longueur d'un nom de variable inclut le signe %, & ou $ , mais pas les () dans les variables de type chaîne de caractères ou les tableaux.

On peut utiliser plus d'une instruction GLOBAL ou LOCAL , mais elles doivent figurer sur des lignes différentes, juste après le nom de la procédure.

Voir également la commande LOCAL.

gMOVE

> Emploi

  gMOVE dx%,dy%

Déplace la position courante de dx% vers la droite et dy% vers le bas, dans le dessin en cours.

Un dx% négatif provoque un déplacement vers la gauche; un dy% négatif provoque déplacement vers le haut.

Voir également la commande gAT.

gORDER

> Emploi

  gORDER id%,position%

Sets la fenêtre spécifié by id% to the selected premier plan/background position, et redraws l'écran. Position 1 is the premier plan window, position 2 is next, et ainsi de suite. Any position greater than le nombre de windows is interpreted as la fin de la liste .

on creation, a window is at position 1 in la liste .

Provoque une erreur si  id% correspond à un bitmap.

Voir également la commande gRANK.

gORIGINX

> Emploi

  x%=gORIGINX

Retourne l'espace en pixels entre le bord gauche de l'écran et le bord gauche de la fenêtre courante.

Provoque une erreur si le dessin (drawable) courant est un bitmap.

gORIGINY

> Emploi

  y%=gORIGINY

Retourne l'espace en pixels entre le sommet de l'écran et le sommet de la fenêtre courante.

Provoque une erreur si le dessin (drawable) courant est un bitmap.

GOTO

> Emploi

  GOTO label ou GOTO label::
  ...
  label::

Fait sauter l'exécution du code à la ligne d'instruction qui suit le signet label:: et continue à partir de là. Le signet doit :

  • se trouver dans la procédure en cours d'exécution
  • commencer par une lettre et se terminer par deux fois deux points, bien que cela ne soit pas obligatoire avec l'instruction GOTO.

Le signet peut avoir jusqu'à 32 caractères de longueur sur le Series 5, ou 8 sur le Series 3c, sans compter les deux points.

GOTOMARK

> Emploi

  GOTOMARK b%

Makes the record avec bookmark b%, as returned by BOOKMARK, la fiche courante. b% doit être a bookmark in the current view.

gPATT

> Emploi

  gPATT id%,width%,height%,mode%

Remplit un rectangle de la taille spécifiée (largeur width%, hauteur height%) à partir de la position courante du curseur avec une répétition du motif graphique (drawable) id%.

Comme avec gCOPY, cette commande effectue la copie de tous les pixels, qu'ils soient allumés ou éteints. Les mêmes modes sont donc disponibles que lors de l'affichage de texte. Set mode%=0 pour set, 1 pour clear, 2 pour invert ou 3 pour replace. Les affectations 0, 1 et 2 act uniquement on set pixels in the pattern; 3 copies the entire rectangle, avec set and clear pixels.

If you set id%=-1 a pre-defined grey pattern is used.

La position courante du curseur reste inchangée.

SIBO OS :
La commande gPATT est affectée par le paramétrage de gGREY (dans la fenêtre courante) de la même manière que gCOPY :

  • gGREY 0  – copie noir vers noir ;
  • gGREY 1  – copie gris vers gris, ou noir vers gris si la source est uniquement noire ;
  • gGREY 2  – copie gris vers gris et noir vers noir, ou noir vers les deux si la source est uniquement noire.

gPEEKLINE

> Emploi

  gPEEKLINE id%,x%,y%,d%(),ln%,mode%

Lit une ligne horizontale appartenant au plan noir d'un dessin (drawable) d'identité id%, d'une longueur ln%, débutant aux coordonnées x%,y%. Les 16 pixels les plus à gauche sont lu dans d%(1), avec le premier pixel lu dans dans l'octet de faible poids.

If you set id% to0, this just reads à partir de la totalité de l'écran, not à partir de any particular window.

gPEEKLINE has an extra optional parameter mode% to specify the colour mode:

mode% colour mode colour of pixel which sets bits

  • 1 black and white black
  • 0 black and white white
  • 1 4-colour mode white
  • 2 16-colour mode white

The default mode% is -1. Pour 4 et 16-colour modes, 2 et 4 bits per pixel respectively sont used. This is to enable the colour de the pixel to être ascertained à partir de the bits which sont set. White results in all 2 ou 4 bits being set, while black sets none de them. par exemple, in a 4-colour window, avec the colour set by gCOLOR 16,16,16 a pixel de a line would peek as 0001 in binary. Similarly, a pixel of a line avec the colour set to gCOLOR 80,80,80 would result in la valeur 0101 in binary when peeked.

le tableau d%() doit être long enough to hold the data. You can work out le nombre de integers required avec ((ln%+15)/16) (using whole-nombre division).

EPOC et Symbian OS :
Noter que if the optional parameter mode% is used sur le Series 5, le tableau size allowed doit être adjusted accordingly: it doit être au moins twice as long as le tableau needed pour black et white if the line vous souhaitez to peek in 4-colour mode et four times as long in 16-colour mode.

Sur le Series 3c, si vous additionnez $8000 à id%, the grey plane (not the black plane) will être peeked, mais notez que $8000 ORed avec the id% sur le Series 5 provoque une erreur de type ‘Invalid arguments’.

gPOLY

> Emploi

  gPOLY a%()

Trace une séquence de lignes, comme si cela s'effectuait avec les commandes gLINEBY et gMOVE.

Le tableau est établi de la façon suivante :

  • a%(1) – position x de départ :
  • a%(2) – position y de départ ;
  • a%(3) – nombre de paires de déplacements
  • a%(4) – dx1%
  • a%(5) – dy1%
  • a%(6)dx2%
  • a%(7) – dy2%
  • etc.

Les constantes pour les cinq premiers subscripts du tableau sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

Chaque paire de nombres - par exemple dx1%,dy1% - spécifie le tracé d'une ligne ou un déplacement. Pour le tracé de ligne, dy% correspond au déplacement en pixels vers le bas, et dx% au déplacement en pixels vers la droite multiplié par deux.

Pour spécifier un déplacement (sans tracer de ligne), affectez dx%,dy% comme pour une ligne et rajoutez 1 à dx%.

Si vous souhaitez tracer un trait ou vous déplacer vers le haut ou vers la droite, utilisez des nombres négatifs.

L'instruction gPOLY est plus rapide que la combinaison de gAT, gLINEBY et gMOVE.

> Exemple

Tracer trois lignes horizontales de 50 pixels de longueur aux positions 20,10, 20,30 et 20,50 :

  a%(1)=20 :a%(2)=10  REM Coordonnées de départ 20,10
  a%(3)=5  REM 5 opérations
  a%(4)=50*2 :a%(5)=0  REM ligne vers la droite de 50
  a%(6)=0*2+1 :a%(7)=20  REM descend de 20
  a%(8)=-50*2 :a%(9)=0  REM ligne vers la gauche de 50
  a%(10)=0*2+1 :a%(11)=20  REM descend de 20
  a%(12)=50*2 :a%(13)=0  REM ligne vers la droite de 50
  gPOLY a%()

gPRINT

> Emploi

  gPRINT liste d'expressions

Affiche une liste d'expressions à la position courante du curseur dans le dessin (drawable) courant. Les variables sont formatées au mêmes types quie pour l'instruction PRINT.

Contrairement à PRINT, gPRINT ne s'achève pas par le saut vers une nouvelle ligne. Une virgule entre les expressions est toujours affichée sous forme d'espace, alors qu'un point virgule n'a pas d'effet. La commande gPRINT sans liste d'expressions ne fait rien.

Voir également les commandes gPRINTB, gPRINTCLIP, gTWIDTH, gXPRINT, et gTMODE.

gPRINTB

> Emplois

  gPRINTB t$,w%,al%,tp%,bt%,m%
  gPRINTB t$,w%,al%,tp%,bt%
  gPRINTB t$,w%,al%,tp%
  gPRINTB t$,w%,al%
  gPRINTB t$,w%

Affiche le texte contenu dans la variable t$ dans une case effacée de w% pixels de largeur. La position courante sert de point d'ancrage du bord gauche et de la ligne de base du texte.

  • al% contrôle l'alignement du texte dans la case :
    • 1 – aligné à droite,
    • 2 – aligné à gauche,
    • 3 – centré.
  • tp% et bt% sont les espaces libres entre le texte et le haut (top)  / bas (bottom) de la case. Ils contrôlent, avec la taille de la fonte courante, la hauteur de la case d'édition. Une erreur survient si la somme de  tp% plus la hauteur de fonte dépasse 255.
  • m% contrôle les marges droite et gauche.
    • En cas d'alignement gauche, m% est l'offset du début du texte à partir de la gauche de la case.
    • En cas d'alignement droit, m% est l'offset la fin du texte à partir de la droite de la case.
    • En cas d'alignement centrié, m% est l'offset de la région à centrer à partir de la gauche (si m% est positif) ou de la droite (si m% est négatif) .

En l'absence de valeurs fournies pour certains arguments, les valeurs par défauts sont les suivantes :

  • al% – aligné à gauche
  • tp% – 0
  • bt% – 0
  • m% – 0

Les constantes pour les caractéristiques de mise en page et leurs valeurs par défauts sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

Voir également les commandes gPRINT, gPRINTCLIP, gTWIDTH et gXPRINT.

gPRINTCLIP

> Emploi

  w%=gPRINTCLIP(text$,width%)

Affiche le contenu de la variable text$ à la position courante, en se cantonnant aux caractères qui tiennent dans le nombre de pixels spécifiés par width%. La fonction retourne le nombre de caractères affichés.

Voir également les commandes gPRINT, gPRINTB, gTWIDTH, gXPRINT, et gTMODE.

gRANK

> Emploi

  rank%=gRANK

Retourne l'ordre ou rang (rank) de la fenêtre courante entre premier plan / arrière-plans :

  • Series 5 : de 1 to 64  ;
  • Series 3c : de 1 to 8.

Provoque une erreur si le dessin (drawable) courant est un bitmap.

Voir également la commande gORDER.

gSAVEBIT

> Emplois

  gSAVEBIT name$,width%,height%
  gSAVEBIT name$

Sauvegarde le dessin (drawable) courant as the named bitmap file. If width% et height% sont given, then uniquement the rectangle de that size à partir de la position courante is copied.

Sur le Series 5, si aucune extension n'est fournie dans le nom passé en argument avec name$, gSAVEBIT n'en rajoute pas alors que sur le Series 3c, l'extension .PIC est rajoutée par défaut.

La sauvegarde d'une fenêtre qui possède un plan gris provoque la sauvegarde dans le fichier des deux plans : le bitmap noir d'abord suivi du gris.

gSCROLL

> Emplois

  gSCROLL dx%,dy%
  gSCROLL dx%,dy%,x%,y%,wd%,ht%

Fait glisser les pixels du dessin (drawable) courant par décallage (scroll) de dx%,dy% :

  • Un dx% positif provoque un décallage vers la droite,
  • Un dy% positif provoque un décallage vers le bas.

Le dessin lui-même ne change pas de position.

Si vous spécifiez un rectangle dans le dessin courant, aux coordonnées x%,y% et de taille wd%,ht%, seul le rectangle est décallé.

Les surfaces de largeur dx% et de profondeur dy% qui sont « laissées derrière » lors du décallage sont effacés.

La position courante du curseur reste inchangée.

gSETPENWIDTH

> Emploi

  gSETPENWIDTH width%

Paramètre la largeur du curseur à la valeur de width% pixels dans le dessin (drawable) courant.

gSETWIN

> Emplois

  gSETWIN x%,y%,width%,height%
  gSETWIN x%,y%

Change la position et, de façon optionnelle, la taille de la fenêtre courante.

Une erreur survient si le dessin courant est un bitmap.

La position courante ducurseur n'est pas affectée.

Si vous utilisez cette commande sur la fenêtre par défaut, vous devez utiliser conjointement la commande SCREEN pour vous assurer que la surface nécessaire aux commandes PRINT que vous utilisez soit bien totalement incluse dans la fenêtre par défaut.

gSTYLE

> Emploi

  gSTYLE style%

Paramètre le style de texte affiché après les commandes gPRINT, gPRINTB et gPRINTCLIP sur le dessin (drawable) courant.

Selon les valeurs de l'argument Style%, on obtient les styles de texte suivants :

  • 0  – normal ;
  • 1  – gras ;
  • 2  – souligné ;
  • 4  – inversé ;
  • 8  – hauteur double ;
  • 16 – espacé d'un pixel
  • 32 – italique

Il est possible de combiner ces styles par addition des valeurs.

> Exemple

Utilisez l'instruction gSTYLE 11 afin d'obtenir un texte écrit en caractères gras, souligné et de hauteur double (11=1+2+8).

Cette commande n'affecte pas les commandes qui ne sont pas des commandes graphiques telles que PRINT.

Les constantes pour le styles sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

gTMODE

> Emploi

  gTMODE mode%

Paramètres la manière dont les caractères sont affichés après les commandes gPRINT et gPRINTCLIP sur le dessin (drawable) courant.
Selon la valeur de l'argument Mode%, les pixels seront :

  • 0 allumés
  • 1 effacés
  • 2 inversés
  • 3 remplacés

Lors de la première utilisation des commandes graphiques de texte, chaque point d'une lettre provoque l'allumage d'un pixel dans le dessin. C'est le mode%=0. Si l'argument mode% à pour valeur 1 ou 2, les commandes graphiques de texte fonctionnent de la même manière, mais les pixels sont effacés ou inversés. Quand mode% vaut 3, les cases des caractères sont tracées sur l'écran - les pixels de la lettre sont allumés et effacés en arrière-plan.

Cette commande n'affecte pas les autres commandes d'affichage de texte.

Les constantes pour les modes sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

gTWIDTH

> Emploi

  width%=gTWIDTH(text$)

Retourne la largeur en pixels de text$ dans la fonte et le style courants.

Voir également les commandes gPRINT, gPRINTB, gPRINTCLIP et gXPRINT.

gUNLOADFONT

> Emploi

  gUNLOADFONT fileId%
  gUNLOADFONT fontId%

Décharge une fonte définie par l'utilisateur chargée préalablement à l'aide de la commande gLOADFONT. Une erreur est retournée si aucune fonte n'a été chargée.

Les fontes natives intégrées ne sont pas stockées en mémoire et ne peuvent pas être déchargées.

Voir également la commande gLOADFONT.

gUPDATE

> Emplois

  gUPDATE ON
  gUPDATE OFF
  gUPDATE

L'écran est habituellement rafraîchi à chaque fois que vous y affichez quelque chose. L'instruction gUPDATE OFF annule cette caractéristique. L'écran ne sera rafraîchi que si nécessaire, grâce à la commande gUPDATE utilisée seule (notez cependant que certains mot-clés provoquent toujours le rafraîchissement de l'écran).

Dans certains cas, cela peut améliorer considérablement la vitesse d'exécution. Par exemple, il est conseillé d'utiliser gUPDATE OFF avant une séquence de commandes graphiques, suivie par un gUPDATE. Vous devez certainement avoir recours à l'instruction gUPDATE OFF si êtes sur le point d'écrire exclusivement dans des bitmaps.

L'instruction gUPDATE ON retourne à une mise à jour normale de l'écran.

gUPDATE affecte toute commande qui affiche quelque chose sur l'écran. Si vous utilisez de nombreuses commandes PRINT, l'instruction gUPDATE OFF provoquera une différence notable de vitesse d'exécution.

> Note

Avec gUPDATE OFF, la localisation des erreurs qui surviennent lors de l'exécution des procédures peut être rapportée de façon erronnée. Pour cette raison, il est plus judicieux d'utiliser la commande gUPDATE OFF dans les étapes finales de développement du programme, et vous serez peut-être amenés à les retirer pour localiser certaines erreurs.

gUSE

> Emploi

  gUSE id%

Rends courant le dessin (drawable) d'identité id%. Les commandes graphiques peuvent alors être appliquées à ce dessin. La commande gUSE ne porte pas le dessin au premier plan (Voir la commande gORDER).

gVISIBLE

> Emplois

  gVISIBLE ON
  gVISIBLE OFF

Rend visible ou invisible la fenêtre courante.

Retourne une erreur si le dessin (drawable) courant est un bitmap.

gWIDTH

> Emploi

  width%=gWIDTH

Retourne la largeur du dessin (drawable) courant .

gX

> Emploi

  x%=gX

Retourne l'abcisse x courante (à partir de la gauche) dans le dessin (drawable) courant.

gXBORDER

> Emplois

  XBORDER type%,flags%,w%,h%
  gXBORDER type%,flags%

Trace une bordure du type spécifié dans le dessin (drawable) courant, s'inscrivant dans un rectangle de la taille spécifiée ou de la taille du dessin courant (drawable) si aucune n'est spécifiée.

  • type%=1 pour le tracé des bordures 3D grises et noires en sur le Series 3c. Une ombre ou l'espace pour une ombre est toujours assuré.
  • type%=2 pour le tracé des bourdures sur le Series 5.

Les valeurs possibles pour l'argument flags% et leurs effets sur le Series 5 sont les suivantes :

  • $00 – aucune ;
  • $01 – noire simple ;
  • $42 – avec un léger renfoncement  ;
  • $44 – avec un profond renfoncement ;
  • $54 – avec un profond renfoncement et un contour ;
  • $82 – avec un léger relief ;
  • $84 – avec un important relief ;
  • $94 – avec un important relief et un contour ;
  • $22 – barre verticale
  • $2a – barre horizontale

Les constantes pour ces arguments et ces types sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

Sur le Series 3c, les affectation flags%=1,2,3,4 se comportent de la même façon qu'avec la commande gBORDER. Quand il y a une ombre (affectation des valeurs 1 ou 3) seules les parties grises et noires de la bordure sont tracées ; il faut préalablement effacer l'arrière plan pour faire apparaître les parties blanches. Quand il n'y a pas d'ombre ( affectation des valeurs 2 ou 4) les lignes intérieures et extérieures sont tracées, mais les surfaces couvertes par le gris / noir quand il y a des ombres ne sont effacées. (Cela permets de supprimer l'ombrage simplement en rappelant la commande gXBORDER .)

Sur le Series 3c, l'absence de plan gris dans la fenêtre courante provoque une erreur.

Les valeurs suivantes de flags% s'appliquent à tous les types de bordures :

  • 0    – coins normaux ;
  • $100 – laisse un espace d'un pixel autour de la bordure ;
  • $200 – coins arrondies ;
  • $400 – escamote un pixel.

Si on affecte simultanément par erreur les valeurs $400 et $200 , c'est la valeur qui est prioritaire.

Voir également la commande gBORDER.

gXBORDER32

La commande gXBORDER32 permet de tracer le nouveau style de bordures Symbian ER6. Cette nouvelle commande a été intruduite dans la mesure où les constantes pour les attributs de ce type de bordure sont d'une taille supérieure à un nombre entier et l'ancienne commande gXBORDER n'accepte que des attributs entiers. La syntaxe de gXBORDER32 est pratiquement identique à celle de l'ancienne commande gXBORDER, mais le premier paramètre a été supprimé et le second converti en entier long.

> Emplois

  gXBORDER32 flags&[,w%,h%]

Les constantes pour les différents types de bordure sont définies dans le fichier CONST.OPH.

> Exemple

La ligne d'instruction suivante trace une bordure de type Window autour de l'image courante :
  gXBORDER32 KgXBorder32Window& 

Voir également les commandes gBORDER, gXBORDER.

gXPRINT

> Utilisation

  gXPRINT string$,flags%

Affiche le contenue de la variable string$ à la position courante, avec un éclairage ou soulignement précis. La fonte et le style courants sont toujours utilisés, même si le style lui-même est inversé ou souligné. Si on utilise le mode texte 3 (remplacement ), tous les pixels allumés ou éteints sont dessinés.

  • Selon la valeur, flags% a les effets suivants :
  • 0 normal, comme avec gPRINT ;
  • 1 inversé ;
  • 2 inversé, à l'exception des pixels des coins ;
  • 3 inversé fin ;
  • 4 inversé fin, à l'exception des pixels des coins ;
  • 5 souligné ;
  • 6 souligné fin.

Les constantes pour ces attributs sont fournies dans le fichier Const.oph. Pour les détails sur la manière d'utiliser ce fichier, voir le chapitre ‘Calling Procedures’ et l'Appendix E pour son listing.

Là où les lignes de texte ne sont séparées que par un pixel, l'option « fine » (thin) maintient la séparartion entre les lignes.

La commande gXPRINT ne supporte pas l'affichage de listes d'expressions de types variés.

gY

> Emploi

  y%=gY

Retourne l'ordonnée courante y (à partir du sommet vers le bas) du dessin courant.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

HEX$

> Emploi

  h$=HEX$(x&)

Retourne une chaîne de caractères contenant la représentation hexadécimale (base 16) d'un entier ou entier long x&.

> Exemple

L'instruction HEX$(255) retourne la chaîne de caractères "FF".

> Notes

  • Pour saisir les valeurs de type entier (16 bits) en hexadécimal, mettez le caractère $ à leur début. Par exemple, le nombre hexadécimal noté $FF corespond à 255 en notation décimale (Ne pas confondre avec l'utilisation du caractère $ dans les noms de variable de type chaîne de caractère).
  • Pour saisir les valeurs de type entier long (32 bits) en hexadécimal, mettez le caractère & à leur début. Par exemple, le nombre hexadécimal noté &FFFFF correspond à 1048575 en notation décimale.

La manière de compter en hexadécimal se fait comme suit : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, CD, EF, 10, ...
avec A pour la valeur décimale 10, B pour la valeur décimale 11, C pour la valeur décimale 12 ... jusqu'à F pour la valeur décimale 15. Après F on a 10 qui correspond à la valeur décimale 16. Pour bien comprendre les nombres plus grand que 10 hexadécimal, comparons à nouveau notation hexadécimale et décimale. Dans ces exemples, 102 signifie 10 x 10, 103 signifie 10 x 10 x 10 et ainsi de suite.

Le nombre décimal 253 correspond à  :

(2 x102)+(5 x101)+(3 x100) = (2 x100)+(5 x10)+(3 x1) = 200+50+3

Par analogie, la valeur hexadécimale &253 corespond à :

(&2 x162)+(&5 x161)+(&3 x160) = (2256)+(516)+(31) = 512+80+3595 en notation décimale.

Et de même , la vaelur hexadécimale &A6B correspond à  :

(&A x162)+(&6 x161)+(&B x160) = (10 x256)+(6 x16)+(11x1) = 2560+96+112667 en notation décimale.

La table suivante peut donc vous être également utile pour les conversions hexa / décimale :

  • &1       >> 160 = 1
  • &10     >> 161 = 16
  • &100   >> 162256
  • &1000 >> 163 = 4096

Par exemple, &20F9 correspond à (2x&1000)+(0x&100)+(15x&10)+9, soit en notation décimale (24096)+(0256)+(15 x16)+98441.

Toutes les constantes hexadécimales sont de type entier ($) ou entier long (&). Les opérations arithmétiques comportant des nombres hexadécimaux s'exécutent de la manière habituelle. Par exemple, la division &3/&2 retourne la valeur 1, &3/2.0 retourne 1.5 et 3/$2 retourne 1.

HOUR

> Emploi

  h%=HOUR

Retourne le nombre correspondant aux heures de l'horloge système sous forme d'un entier compris entre 0 et 23.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

IABS

> Emploi

  i&=IABS(x&)

Retourne la valeur absolue - c'est-à-dire sans aucun signe - de l'expression de type entier ou entier long x&.

> Exemple

L'expression IABS(-10) retourne la valeur 10.

Voir également ABS, qui retourne la valeur absolue des nombres en virgule flottante.

ICON

> Emploi

  ICON mbm$

Donne le nom du fichier bitmap mbm$ - également connu sous le nom de fichier d'image EPOC (EPOC Picture file) - qui doit être utilisé en tant qu'icône pour une application OPL.

Si la commande ICON n'est pas utilisée au sein d'une structure APP…ENDA, c'est une icone par défaut qui est utilisée, mais le reste des informations insérées dans la structure APP…ENDA est malgré tout utilisé pour spécifier les autres caractéristiques de l'application OPL.

EPOC et Symbian :
Sur le Series 5, le paramètres mbm$ correspond à un fichier multi-bitmap (MBM) qui peut contenir jusqu'à trois paires de bitmap / masque – de taille respective 24 x 24, 32 x 32 et 48 x 48 pixels. Ces différentes tailles sont utilisées pour les différents niveau de zoom de l'écran système. Les tailles sont lues à partir du fichier MBM et la taille la plus adaptée est zoomée si vous n'avez pas fourni d'images de la taille exacte requise ou si certaines manquent.

En fait sur le Series 5, vous pouvez utiliser plus d'une intruction ICON dans une structure APP…ENDA . L'interpréteur vérifie uniquement insists que toutes les icônes sont appariées à un masque de la même taille dans la liste finale de l'instruction ICON. Cela vous permet d'utiliser des paires de MBMs ne contenant qu'un seul bitmap tel que ceux que vous pouvez dessiner avec l'application Dessin (Sketch) de votre machine.

> Exemple

Vous pouvez spécifier individuellement chaque fichier de la manière suivante :

  APP ...
    ICON "icon24.mbm"
    ICON "mask24.mbm"
    ICON "icon32.mbm"
    ICON "mask32.mbm"
    ICON "icon48.mbm"
    ICON "mask48.mbm"
  ENDA

ou par paires dans chaque MBM :

  APP ...
    ICON "iconMask24"
    ICON "iconMask32"
    ICON "iconMask48"
  ENDA

ou avec tous les bitmaps dans un seul MBM, comme cela devrait être normallement le cas si vous avez préparé votre icône sur votre PC à l'aide de l'application BMCONV et l'outil AIFTOOL (la descritpion de ces outils dépasse le cadre de ce manuel et vous devez vous référer à la documentation de l' EPOC C++ Software Development Kit (SDK), disponible chez Symbian, pour plus de détails).

Cette commande ne peut être utilisée qu'entre les mots-clés APP et ENDA.

Pour plus de détails sur les applications OPL, consultez le chapitre ‘Advanced Topics’.

IF...ENDIF

> Emploi

  IF condition1
    ...
  ELSEIF condition2
    ...
  ELSE
    ...
  ENDIF

Effectue :

  • Ou bien, les instruction qui suivent l'instruction IF condition1 ;
  • Ou bien, les instructions qui suivent l'une des conditions ELSEIF (il peut y avoir autant d'instructions ELSEIF qu'on veut, voire aucune) ;
  • Ou bien, les instructions qui suivent ELSE (ou, s'il n'y a pas d'instruction ELSE, rien du tout). Il ne peut y avoir qu'une seule instruction ELSE ou pas du tout.

Après l'instruction ENDIF, les lignes qui suivent le ENDIF s'effectuent normalement.

Les mots-clés IF, ELSEIF, ELSE et ENDIF doivent être utilisés dans cet ordre.

Chaque mot-clé IF doit être associé à un ENDIF.

Vous pouvez imbriquer les structures IF...ENDIF les unes dans les autres, par exemple de la façon suivante :

  IF condition1
    ...
  ELSE
    ...
    IF condition2
      ...
    ENDIF
    ...
  ENDIF

L'argument condition est une expression qui retourne une valeur logique comme par exemple a<b. Si l'expression retourne la valeur logique 'Vrai' (différente de zéro), les instructions qui suivent sont exécutées. Si l'expression retourne la valeur logique 'Faux' (zéro), les instructions qui suivent sont ignorées.

Repportez vous à l'Appendix B pour obtenir plus de détails sur les expressions logiques.

INCLUDE

> Emploi

  INCLUDE file$

Inclut le fichier dont le nom est file$, et qui peut contenir soit des définitions de constantes (avec les instructions CONST), soit les prototypes de procédures d'un OPX ou des prototypes de modules de procédures. Les fichiers inclus ne doivent pas inclure eux-mêmes de modules de procédures. Les prototypes de procédures de modules et d'OPX permettent à l'interpréteur de tester les paramètres et de forcer les paramètres numériques (qui sont passés par référence) au type requis.

Inclure un fichier revient logiquement à remplacer l'intruction INCLUDE par le contenu du fichier.

Le nom du fichier d'entête peut (ou non) inclure le chemin d'accès (path) et dans ce cas, OPL n'explorera que le répertoire spécifié pour le fichier. Néanmoins, la commande INCLUDE a pour chemin d'accès par défaut \System\Opl\, et par conséquent, si vous appelez INCLUDE sans spécifier de chemin d'accès, OPL explore d'abord dans le répertoire courant puis dans le répertoire \System\Opl\ sur chacun des disque en allant de Y: vers A: et terminant par la ROM Z:, en excluant les disques externes.

Voir les instructions CONST, EXTERNAL. Voir également le chapitre ‘Using OPXs on the Series 5’.

INPUT

> Emplois

  INPUT variable

  INPUT log.field

> Note

Cette instruction n'est pas fonctionnelle sur les machines Series 60 réelles avec l'OPL runtime Version 0.30, mais fonctionne sur l'émulateur de Series 60.

Attend qu'une valeur soit entrée au clavier, puis assigne la valeur entrée à la variable ou au champ du fichier de données.

Vous pouvez éditer la valeur en même temps que vous la tappez. Toutes les touches usuelles d'édition sont disponibles : les touches de flèches permettent de se déplacer le long de la ligne, la touche Esc efface la ligne et ainsi de suite.

Si une entrée erronnée est effectuée, par exemple une chaîne de caractères alors que l'entrée attend une variable de type nombre entier, le caractère " ? " s'affiche et vous pouvez essayer à nouveau. Néanmoins, si vous utilisez l'instruction TRAP INPUT, le contrôle passe à la ligne suivante de la procédure, en laissant la valeur de la variable inchangée et affectant le code d'erreur approprié.

L'instruction INPUT est habituellement associée à l'instruction  PRINT :

  PROC exch:
    LOCAL pounds,rate
    DO
      PRINT "Livres Sterling?", INPUT pounds
      PRINT "Taux (€uro)?", INPUT rate
    PRINT "=",pounds*rate,"€uro"
    GET UNTIL 0
   ENDP

> Note

La virgule en fin d'instruction PRINT, est utilisée de façon à ce que le curseur d'attente se situe sur la même ligne que le messages.

>> TRAP INPUT

Si en réponse à une instruction TRAP INPUT, une valeur erronnée est saisie (par exemple "abc" pour a%), le caractère "?" n'est par affiché mais la fonction ERR peut être appelée pour retourner la valeur de l'erreur survenue. Si la touche Esc est enfoncée alors qu'aucun texte n'est sur la ligne d'entrées, l'erreur de type ‘Escape key pressed’ (numéro -114) sera retournée par la fonction ERR (dans la mesure où cet INPUT a été « trappé »). Vous pouvez mettre à profit cette propriété pour permettre à l'utilisateur d'apputer sur Esc pour s'échapper lors de la saisie d'une valeur.

Voir également l'instruction EDIT. Cette commande fonctionne de la même façon que INPUT, excepté quelle affiche la chaîne de caractères à éditer puis l'assigne à une variable ou un champ. Elle ne peut être utilisée qu'avec les varaibles de type chaîne de caractère.

INSERT

> Emploi

  INSERT

Insère une nouvelle fiche vierge dans la vue courante d'une base de données. Les champs peuvent être assigné avant d'utiliser les commandes PUT ou CANCEL.

INT

> Emploi

  i&=INT(x)

Retourne la partie entière (en d'autres mots le nombre entier) de l'expression de type virgule flottante x. Le nombre retourné par la fonction est un entier long.

Les nombres positifs sont arrondis vers le bas, et les nombres négatifs vers le haut.

> Exemple

L'expression INT(-5.9) retourne la valeur -5 et INT(2.9) retourne 2.
Si vous souhaitez arrondir un nombre à l'entier le plus proche, ajoutez lui la valeur 0.5 s'il est positif (ou retranchez lui 0.5 s'il est négatif) avant d'utiliser la fonctionINT.
In the Calculator, you need d'utiliser INT to pass a nombre to a procedure which requires a long integer parameter. This is car the Calculator passes all nombres as floating-point by default.

INTF

> Emploi

  i=INTF(x)

Utilisé de la même façon que la fonction INT , mais retourne la valeur sous forme d'un nombre en virgule flottante.

> Exemple

L'expression INTF(1234567890123.4) retourne la valeur 1234567890123.0

Vous pouvez également avoir besoin de cette fonction chaque fois que le résultat d'une opération risque de sortir de l'intervalle qui contient les nombres de type entier long.

Voir également la fonction INT.

INTRANS

> Emploi

  i&=INTRANS

Teste pour savoir s'il y a des transactions en cours dans la vue courante. Retourne -1 si c'est le cas ou 0 dans le cas contraire.

Voir également la commande BEGINTRANS.

Fonctions Entrées/Sorties (I/O)

Ces fonctions sont traitée en détail dans le chapitre‘Advanced Topics’.

  r%=IOA (h%,f%,var status%,var a1,var a2)

This has the same form as IOC, mais it retourne an error value de the request is not completed successfully. L'instruction IOC doit être utilisée de préférence à IOA.

  IOC(h%,f%,var status%,var a1,var a2)

Make an I/O request avec guaranteed completion. the device driver opened avec handle h% effectue the asynchronous I / O function f% avec two further arguments, a1 et a2. the argument status% is set by the device driver. If an error occurs while making a request, status% is set to an appropriate des valeurs , mais IOC toujours retourne zero, not an error value.. An IOWAIT ou IOWAITSTAT doit être performed pour each IOC. IOC should être utilisé in preference to IOA.

  r%=IOCANCEL(h%)

Cancels any outstanding asynchronous E / S request (IOC ou IOA). Note, néanmoins, that the request will still complete, so the signal doit être consumed using IOWAITSTAT.

  r%=IOCLOSE(h%) Closes a file avec the handle h%.

  r%=IOOPEN(var h%,name$,mode%)

Creates ou opens a file appelé name$. Defines h% pour use by other fonctions E / S. mode% spécifie comment  to open le fichier. Pour unique file creation, use IOOPEN(var h%,addr%,mode%)
  r%=IOREAD(h%,addr&,maxLen%)
  r%=IOREAD(h%,addr%,maxLen%)

Lit à partir du fichier avec the handle h%. L'argument address% correspond à l'adresse d'un tampon suffisamment grand pour pour contenir un maximum de maxLen% octets. La valeur retournée dans r% est le nombre exacte d'octets lus ou, si elle est négative, is an error value.

  r%=IOSEEK(h%,mode%,var off&) recherche une position dans un fichier qui a été ouvert pour un accès aléatoire. mode% spécifie comment  the offset argument off& is à utiliser. Vous pouvez trouver les valeurs possibles pour l'argument mode% dans le chapitre ‘Advanced topics’. Le paramètre off& may be positive to move forwards ou negative to move backwards. IOSEEK sets the variable off&## to the absolute position set.

IOSIGNAL
Signals an asynchronous I / O function’s completion.

  r%=IOW(h%,func%,var a1,var a2)

Le disque ouvert avec le handle h% effectue the synchronous fonction E/S func% avec the two further arguments.

IOWAIT

Attend une fonction d'E/S asynchrone pour signaler to signal completion.

  IOWAITSTAT var stat%

Waits pour an asynchronous function, appelé avec IOC ou IOA, to complete.

EPOC et Symbian :
  IOWAITSTAT32 var stat&
Takes a 32-bit status word. IOWAITSTAT32 should être appelé uniquement when you need to wait pour completion d'un request made using a 32-bit status word when calling an asynchronous OPX procedure.

La valeur initiale d'un 32-bit status word while it is still pending (i.e. waiting to complete) is &80000001 (KStatusPending32& in Const.oph: consultez le chapitre ‘Calling Procedures’ chapter pour les détails sur la façon d'utiliser ce fichier). Pour a 16-bit status word the ‘pending value’ is -46 (KErrFilePending%).

  r%=IOWRITE(h%,addr&,length%)

  r%=IOWRITE(h%,addr%,length%)

Writes length% octets dans un tampon à l'adresse % to le fichier avec the handle h%.

IOYIELD
Ensures that any asynchronous handler set up avec IOC ou IOA is given a chance to run. IOYIELD doit toujours être appelé avant polling status words sur le Series 5, i.e. avant de lire a 16-bit status word if IOWAIT ou IOWAITSTAT have not been used first.

Note the following example when you use #:

Sur le Series 3c you would call IOSEEK using,

  ret%=IOVoirK(h%,mode%,#ptrOff%)
mais sur le Series 5 vous devriez utiliser,

  ret%=IOVoirK(h%,mode%,#ptrOff&)
passing the long integer ptrOff&.

Voir également le paragraphe ’32-bit addressing’ du chapitre ‘Advanced Topics’ .

A B C D E F G H I J K L M N O P Q R S T U V W X Y

KEY

> Emploi

  k%=KEY

Retourne le code du caractère de la dernière touche enfoncée, s'il y en a eu une depuis la dernière utilisation de l'une des commandes INPUT, EDIT, GET, GET$, KEY, KEY$, MENU ou DIALOG.
Si aucune touche n'a été enfoncée, la valeur retournée est zéro.

Voir l'Appendix D pour consulter la liste ds codes des touches spéciales. Vous pouvez vous servir de la commande KMOD pour vérifier l'utilisations de touches modificateurs (Maj, Ctl, Fn sur le Series 5 ou Psion sur le Series 3c et Ver Caps) .

Cette commande n'attend pas qu'une touche soit enfoncée, à la différence de la commande GET.

KEY$

> Emploi

  k$=KEY$

Retourne sous forme d'une chaîne de caractères, la dernière touche enfoncée s'il y en a eu une depuis la dernière utilisation de l'une des commandes INPUT, EDIT, GET, GET$, KEY, KEY$, MENU ouDIALOG.
Si aucune touche n'a été enfoncée, la valeur retournée est une chaîne vide ("").

Voir l'Appendix D pour consulter la liste ds codes des touches spéciales. Vous pouvez vous servir de la commande KMOD pour vérifier l'utilisations de touches modificateurs (Maj, Ctl, Fn sur le Series 5 ou Psion sur le Series 3c et Ver Caps) .

Cette commande n'attend pas qu'une touche soit enfoncée, à la différence de la commande GET$.

KEYA

> Emploi

  err%=KEYA(var stat%,var key%(1))

C'est une fonction de lecture asynchrone des entrées « clavier ».

Voir le chapitre ‘Advanced Topics’ pour les détails.

Abandonner avec KEYC.

KEYC

> Emploi

  err%=KEYC(var stat%)

Abandonne l'appel précédent de la fonction KEYA avec l'état stat%.

> Note

La commande KEYC mange le signal (à la différence de IOCANCEL), et il ne faut donc pas utiliser IOWAITSTAT après KEYC.

Voir le chapitre ‘Advanced Topics’ pour les détails.

KILLMARK

> Emploi

  KILLMARK b%

Retire le signet b%, qui a préalablement été retourné par BOOKMARK, de la vue courante d'une base de données.

Voir les commandes BOOKMARK, GOTOMARK.

KMOD

> Emploi

  k%=KMOD

Retourne a code representing the state de the modificateur keys (whether they were pressed ou not) at the time de the last keyboard access, tel que a KEY function. the modificateurs have these codes :

  • 2 (soit $2 en hexadécimal) Shift down
  • 4 Control down (soit $4 en hexadécimal)
  • 8 Psion down (soit $6 en hexadécimal)
  • 16 Caps Lock on (soit $10 en hexadécimal)
  • 128 Fn down (soit $80 en hexadécimal)

Les constantes pour these codes sont fournies dans le fichier Const.oph. consultez le chapitre ‘Calling Procedures’ pour les détails sur la façon d'utiliser ce fichier et pour son listing, l'Appendix E.


If there was no modificateur, the function retourne 0. If a combination de modificateurs was pressed, la somme de their codes is returned – par exemple 20 is returned if Control (4) was held down et Caps Lock (16) was on.

Il faut toujours l'utiliser après une instruction  KEY, KEY$, GET ou GET$.

La valeur retournée par KMOD has one binary bit set pour each modificateur, as shown above. By using the logical operator et on la valeur reoutrnée par KMOD you can check which de the bits sont set, pour voir which modificateur keys were held down. Pour plus de détails sur l'opérateur AND, voir l'Appendix B.

> Exemple

  PROC modificateur:
    LOCAL k%,mod%
    PRINT "Press a key" :k%=GET
    CLS :mod%=KMOD
    PRINT "Key code",k%,"avec "
    IF mod%=0
      PRINT "Pas de modificateur"
    ENDIF
    IF mod% AND 2
      PRINT "Shift down"
    ENDIF
    IF mod% AND 4
      PRINT "Control down"
    ENDIF
    IF mod% AND 8 REM uniquement sur Series 3c
    RINT "Psion down"
    ENDIF
    IF mod% AND 16
      PRINT "Caps Lock on"
    ENDIF
    IF mod% AND 128 REM uniquement sur Series 5
      PRINT "Fn down"
    ENDIF
  ENDP

A B C D E F G H I J K L M N O P Q R S T U V W X Y

LAST

> Emploi

  LAST

Positionne à la dernière fiche d'un fichier de données.

LCLOSE

> Emploi

  LCLOSE

Ferme le périphérique ouvert avec la commande LOPEN. (Le périphérique est également fermé automatiquement à la fermeture du programme.)

LEFT$

> Emploi

  b$=LEFT$(a$,x%)

Retourne les x% caractères les plus à gauche de la chaîne de caractères a$.

> Exemple

Si n$ contient la chaîne "Charles", l'instruction b$=LEFT$(n$,3) assigne "Cha" à b$.

LEN

> Emploi

  a%=LEN(a$)

Retourne le nombre de caractères contenus dans la variable a$.

> Exemple

Si a$ a la valeur "34, rue Kopechnie", la fonction LEN(a$) retourne la valeur 18.

Il est conseillé d'utiliser cette fonction pour vérifier que le champs d'un fichier de données n'est pas vide de caractères avant de l'afficher :

  IF LEN(A.client$)
    PRINT A.client$
  ENDIF

LENALLOC

> Emploi

EPOC et Symbian :

  len&=LENALLOC(pcell&)

SIBO :

  len%=LENALLOC(pcell%)

Retourne la longeur de la cellule allouée précédemment à l'adresse pcell& (ou pcell% sur le Series 3c).

Sur EPOC et Symbian, la longueur allouée aux cellules correspond au plus petit multiple de quatre immédiatement supérieur à la taille initialement requise. Une erreur est provoquée su l'argument d'adresse de la cellule ne se trouve pas dans l'intervalle reconnu par la pile.

Voir également la commande SETFLAGS si vous avez besoin de forcer la limite d'adresse mémoire à 64 Ko sur le Series 5. Si l'attribut est affecté pour restreindre à cette limite, vous êtres certain que len& soit comaptible avec un entier simple.

LINKLIB

> Emploi

  LINKLIB cat%

Lie toutes les bibliothèques (libraries) qui ont été chargées à l'aide de la commande LOADLIB.
Le Series 5 ne supporte que l'utilisation d'OPXs. Pour plus de détails, consultez le chapitre ‘Using OPXs on the Series 5’.

LN

> Emploi

  a=LN(x)

Retourne le logarithme naturel (base e) de x.

Utiliser la fonction LOG pour obtenir le logarithme en base 10 d'un nombre.

LOADLIB

> Emploi

  ret%=LOADLIB(var cat%,name$,link%)

Charge et lie de manière optionnelle une DYL qui n'est pas en ROM. Si le chargement s'effectue avec succès, this writes the category handle to cat% et retourne zéro. La DYL est partagée en mémoire si elle est déjà chargée par un autre processus.
Le Series 5 ne supporte que l'utilisation d'OPXs uniquement. consultez le chapitre ‘Using OPXs on the Series 5’ pour plus de détails.

 

> Emploi

  LOADM module$

Charge un module interpérté d'OPL de façon à ce que le module puisse être appelé. Tant qu'un module n'est pas chargé avec la commande LOADM, les appels aux procédures de ce module provoquent une erreur.

  • L'argument module$ est une chaîne de caractères qui contient le nom du module. Vous ne devez spécifier le nom complet que si nécessaire.

> Exemple

  LOADM "MODUL2"

Vous pouvez charger jusqu'à huit modules sur le Series 5, ou quatre sur le Series 3c, à la fois, en incluant le module de niveau supérieur ; si vous essayez de charger avec la commande LOADM un neuvième (cinquième), vous provoquez une erreur. Utilisez la commande UNLOADM pour enlever un module de la mémoire de façon à pouvoir en charger un autre.

Epoc et Symbian OS :
Par défaut, LOADM utilise toujours le répertoire du module de plus haut niveau. Cette commande n'est pas affectée par la commande SETPATH.

SIBO :
Par défaut, LOADM toujours uses the directory de the initial running programme, ou the one spécifié by a OPA application. it is not affected par la commande SETPATH.

LOC

> Emploi

  a%=LOC(a$,b$)

Retourne un nombre entier donnant la position dans la chaîne de caractère a$ à partir de laquelle on trouve l'occurence de la chaîne b$ , ou zéro si b$ n'est pas retrouvé dans a$. La recherche apparie majuscules et minuscules.

> Exemple

L'instruction LOC("STANDING","AND") doit retourner la valeur 3 car the substring "AND" starts at the third character de la chaîne de caractères "STANDING".

LOCAL

> Emploi

  LOCAL variables

Utilisé pour déclarer les variables qui ne peuvent être référencées que dans la procédure courante. Les autres procédures peuvent utiliser les mêmes noms de variable pour en créer de nouvelles. Utilisez l'instruction GLOBAL si vous souhaitez déclarer des variables communes à toutes les procédures appelées.

Les variables peuvent être de quatre types, selon le symbole sur lequel elles se terminent :

  • Les noms de variables qui ne finissent pas par $, %, & ou () sont variables en virgule flottante.
    Exemples : prix, x
  • Celles qui se terminent par un % sont variables de type entier simple.
    Exemples : x%, ventes02%
  • Celles qui se terminent par un & sont variables de type entier long.
    Exemples : x&, ventes02&.
  • Celles qui se terminent par un $ sont variables de type chaîne de caractères. Les noms de ce type de variables doit être suivi par la longueur maximale de la chaîne entre parenthèses.
    Exemples : nom$(12), a$(3)
  • Les tableaux (Array) de variables sont suivies d'un nombre entre parenthèse qui spécifie le nombre de éléments du tableau. Ces tableaux peuvent être de n'importe quel type.
    Exemples : x(6), y%(5), f$(5,12), z&(3).
  • Lorsque vous déclarez un tableau de chaînes de caractères, vous devez indiquer deux nombres entre parenthèses. Le premier sert à déclarer le nombre d'éléments, le second à déclarer leur longueur maximale.
    Exemple
     : Prenom$(5,8) déclare un tableau de cinq éléments, dont chacun peut contenir jusqu'à 8 caractères.

EPOC et Symbian :
Les noms de variables peuvent être une combinaison d'au plus 32 caractères (lettres, chiffres et "_" (underscore). Ils doivent commencer par une lettre ou un underscore.

SIBO :
Les noms de variables peuvent être composés d'une combinaison d'au plus 8 lettres et chiffres. Ils doivent commencer par une lettre.

La longueur d'un nom de variable inclut le signe %, & ou $ , mais pas les () dans les variables de type chaîne de caractères ou les tableaux.

On peut utiliser plus d'une instruction GLOBAL ou LOCAL , mais elles doivent figurer sur des lignes différentes, juste après le nom de la procédure.

Voir également GLOBAL, CONST et le chapitre‘Variables and the constantes ’.

LOCK

> Emplois

  LOCK ON
  LOCK OFF

Marque le verouillage ou non d'un OPA (application OPL ). Lorsqu'un OPA verrouillé à l'aide de la commande LOCK ON, l'écran système ne lui enverra pas les événements correspondant aux modifications de fichiers ou à la fermeture de l'application.

EPOC et Symbian :
Si, par exemple, vous vous rendez sur la liste des tâches en cours ou le nom du document dans l'écran Système pour essayer de fermer l'OPA en cours d'exécution à l'aide du bouton de commande ‘Fermer le fichier' ('Close file’) ou Ctrl+Q (Ctrl+E) respectivement, il apparaîtra un message indiquant que l'OPA ne peut être fermé à cet instant.

SIBO :
Si, par exemple, vous vous rendez sur la liste de fichiers dans l'écran Système et appuyez sur 'Delete' pour essayer d'arrêtre l'OPA en cours d'exécution, il apparaîtra un message indiquant que l'OPA ne peut être fermé à cet instant.

Vous devez utiliser la commande  LOCK ON si votre OPA utilise une commande telle que EDIT, MENU ou DIALOG, qui demande un accès au clavier. Il est également conseillé de l'utiliser quand l'OPA est sur le point d'être occupé pour une durée importante, ou à chaque point du programme où une sortie « propre » n'est pas possible. N'oubliez pas d'utiliser LOCK OFF aussi tôt que possible après.

Un OPA est déverrouillée au départ.

LOG

> Emploi

  a=LOG(x)

Retourne le logarithme base 10 de x.

Utilisez la fonction LN pour avoir le logarithme naturel (en base e).

LOPEN

> Emploi

  LOPEN device$

Ouvre le périphérique vers lequel les objets traités avec des instructions LPRINT doivent être envoyés.

On ne peut pas utiliser LPRINT tant qu'un périphérique n'a pas été ouvert grâce à la commande LOPEN.

Il est possible d'ouvrir l'un quelconque de ces périphériques :

SIBO :

  • Le port parallèle avec LOPEN "PAR:A"
  • Le port série avec LOPEN "TTY:A"
  • Un fichier sur la machine avec LOPEN NomDeFichier
  • Un fichier sur un ordinateur connecté.

> Exemple

Sur un PC :

  LOPEN "REM::C:\BAK\MEMO.TXT"

Sur un Macintosh d'Apple :

  LOPEN "REM::HD40:ME:MEMO5"

Tout fichier préexistant du nom donné sera écrasé lors de la nouvelle écriture.

On ne peut ouvrir qu'un seul périphérique à la fois. Utilisez la commande LCLOSE pour fermer le périphérique. Le fermeture est également automatique à la cloture du programme.

Voir l'Appendix C.

LOWER$

> Emploi

  b$=LOWER$(a$)

Convertit tout caractère majuscule de la chaîne de caractères a$ en minuscule et retourne la chaîne complète en minuscules.

> Exemple

Si a$="DUPONT", l'instruction LOWER$(a$) retourne la chaîne de caractères "dupont"

Utiliser la fonction UPPER$ pour convertir une chaîne de caractères en majuscules.

LPRINT

> Emploi

  LPRINT liste d'expressions

Imprime une liste d'items, de la même façon que PRINT, excepté que les données sont envoyées vers le périphérique le plus récemment ouvert avec la commande LOPEN.

Les expressions may be quoted strings, variables, ou the evaluated results d'expressions. La ponctuation de l'instruction LPRINT (virgules, deux points et nouvelles lignes) détermine la mise en page du texte imprimé, de la même façon que les instructions PRINT.

Une erreur survient si aucun périphérique n'a été ouvert à l'aide de LOPEN.

Voir la commande PRINT pour l'affichage sur l'écran.

Voir la commande LOPEN pour l'ouverture de périphériques pour LPRINT.

Voir l'Appendix C pour une vue générale des impressions avec OPL. Voir égalementle paragraphe Printer OPX du chapitre‘Using OPXs on the Series 5’ pour plus de détails sur les caractéristiques d'impression.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

MAX

> Emploi

  m=MAX(list)
  m=MAX(array(),element)

Retourne le plus grand des éléments d'un liste d'items numériques.

La liste peut être :

  • Une liste de variables, valeurs et expressions, séparées par une virgules ;
  • Les éléments d'une de valeurs en virgule flottante.

Quand on opère sur un tableau , le premier argument correspond au nom du tableau suivi par (). Le second argument element, séparé du premier par une virgule, correspond au nombre d'éléments du tableau sur lesquels vous souhaitez opérer.

> Exemple

L'instruction m=MAX(arr(),3) doit retourner la valeur du plus grand éléments des variables arr(1), arr(2) et arr(3).

mCARD

> Emplois

  mCARD title$,n1$,k1%

  mCARD title$,n1$,k1%,n2$,k2% etc.

Définit un menu. Quand vous avez défini l'ensemble du menu, utilisez la commande MENU pour l'afficher.

  • L'argument title$ correspond au nom du menu .

Il est possible de définir de un à huit items par menu, chacun étant spécifié à l'aide de deux arguments. Le premier correspond à son nom, le second au code de touche du raccourci clavier. Ce dernier précise la touche qui, enfoncé conjointement à la touche Ctrl (ou Psion sur le Series 3c), sélectionnera l'option choisie. Si le code de touche correspond à une lettre majuscule, le raccouci clavier correspond à l'enfoncement simultané des touches Maj (Shift) et Ctrl (ou Psion).

Les options peuvent être subdivisées en groupes logiques en affichant une ligne de séparation sous la dernière option d'un groupe. Pour ce faire, il suffit de passer la valeur négative du code correspondant au raccourci clavier de la dernière option du groupe. Par exemple, l'argument -%A spécifie le raccourci clavier Ctrl+Maj+A (Maj-Psion-A sur le Series 3c) et affiche une ligne de séparation sous l'option du menu à laquelle il est associée.

EPOC et Symbian :
Le Series 5 supporte les caractéristiques suivantes :

  • Des items sans raccourci clavier, en spécifiant pour celui-ci une valeurcomprise entre 1 et 32. Pour ces items, la valeur spécifiée est également reournée si l'item est sélectionné.
  • Des items grisés, ou avec des boîtes à coche ou des boutons d'options (connus parfois sous le nom de boutons radio).

Ces propriétés supplémentaires sont contrôlées en addtionnant les valeurs hexadécimales suivantes au code du raccourci clavier :

  • $1000  – item de menu grisé ;
  • $0800  – item avec boîte à coche ;
  • $0900  – début d'une liste d'options à boutons ;
  • $0A00  – milieu d'une liste d'options à boutons ;
  • $0B00  – fin  d'une liste d'options à boutons ;
  • $2000  – boîte cochée ou bouton sélectionné ;
  • $4000  – boîte à coche/bouton radio en position intermédiaire.

EPOC et Symbian :
Les constantes pour ces attributs sont fournies dans le fichier Const.oph. Voir le chapitre ‘Calling Procedures’ pour les détails sur la façon d'utiliser ce fichier et l'Appendix E pour son listing.

Les boutons d'options du début, du milieu et de la fin servent à spécifier un groupe d'items liés dont un seul peut être sélectionné (quand un item est sélectionné, les autres sont désélectionnés). Le nombre de boutons d'options au milieu est variable. Un menu peut contenir plus d'un jeu de boutons d'options ou plus d'une boîte à coche, mais les boutons d'un même jeu doivent se trouver ensemble. Par souci de vitesse, l'OPL ne vérifie pas la consistance des spécification de ces items.

Si vous avez besoin d'une ligne de séparation alors que vous avez rajouté l'un de ces effets, vous devez être certain de négativer l'ensemble de la valeur, et pas simplement le code de la touche de raccourci.

>  Exemple

mCARD "Options","Vue n°1",%A OR $2900,"Vue n°2",-(%B OR $B00),"Autre option",%C

Le code de touche du second raccourci clavier et son attribut -(%B OR $B00) sont correctement négativés pour afficher une ligne de séparation.

Une erreur de type ‘Too wide’ survient si la longueur est supérieure ou égale à 40 caractères . Les valeurs des raccourcis claviers doivent correspondre à des codes de caractères alphabétiques ou des nombres allant de 1 à 32. Any other des valeurs will raise an ‘Invalid arguments’ error.

Si l'ajout d'un des items du menu échoue, le menu est rejeté. Sur le Series 5, il est incorrect d'ignorer les erreurs avec les commandes mCARD et mCASC errors en les encadrant par des instructions ONERR encadrant les appels à mCARD ou mCASC . Si vous le faites, le menu est rejeté et une erreur de type ‘Structure fault’ est provoquée lors de l'utlisation des commandes mCARD, mCASC ou MENU sans instruction mINIT préalable. Voir l'instruction MENU pour en consulter un exemple.

Voir l'instruction  mCASC pour les items des menus en cascade.
Voir également le chapitre ‘Friendlier Interaction’.

mCASC

> Emploi

  mCASC title$,item1$,hotkey1%,item2$,hotkey2%

Crée une cascade d'item pour un menu, sur lequel des sous-menus peuvent être affichés. La cascade doit être définie avant d'utiliser l'instruction mCARD.

> Exemple

La cascade ‘Bitmap’ située sous le menu Fichier menu d'un possible OPL drawing application could être defined like this :

  mCASC "Bitmap","Charger",%L,"Fusionner",%M
  mCARD "Fichier","Nouveau",%n,"Ouvrir",%o,"Sauvegarder",%s,"Bitmap>",16,"Quitter",%e

Le caractère > spécifie qu'un item précédemment défini doit être utilisé à cet endroit ; il n'est pas affiché dans le menu avec l'item. Une cascade has a filled arrow head displayed along side it in le menu . Le titre de la cascade dans l'intruction mCASC est également utilisée uniquement pour identification purposes et is not displayed in the cascade itself. Ce titre doit être identique au texte de l'item du menu à côté du symbole >. Pour efficiency, OPL doesn’t check that a defined cascade has been used in a menu et an unused cascade will simply être ignored. pour afficher a > in a cascaded menu item, you can use –.

Shortcut keys used in cascades may be added to the appropriate constant des valeurs as for mCARD to enable checkboxes, option buttons et dimming de cascad' items.

As is typical pour cascade titles, a shortcut value de 16 is used in the example above. This prevents the display ou specification de any shortcut key. Néanmoins, it is possible to define a shortcut key pour a cascade title si besoin, par exemple to cycle through the options available in a cascade.

Voir les instructions mCARD, MENU et mINIT.

MEAN

> Emplois

  m=MEAN(list)
  m=MEAN(array(),element)

Retourne la moyenne arithmétique (average) d'une liste d'items numériques.

Cette liste peut être :

  • Une liste de variables, valeurs et expressions, séparées par une virgule;
  • Les éléments d'un tableau de variables en virgule flottante.
    Lorsque vous opérez sur un tableau, le premier argument doit être le nom du tableau suivi par (). Le second argument, séparé du premier par une virgule, correspond aux nombres d'éléments du tableau sur lesquels vous souhaitez opérer.

> Exemple

L'instruction m=MEAN(arr(),3) doit retourner dans m ma moyenne des éléments arr(1), arr(2) et arr(3). Ainsi, les instructions suivantes affichent la valeur 15.0 :

  a(1)=10: a(2)=15: a(3)=20
  PRINT MEAN(a(),3)

MENU

> Emplois

  val%=MENU
  val%=MENU(var init%)

Affiche les menus définis à l'aide des commandes mINIT, mCARD et mCASC, et attend qu'un item soit sélectionné par l'utilisateur. Retourne le code de la touche du raccourci clavier de l'item sélectionné tel qu'il est défini, en minuscule, dans l'instruction mCARD.
Si vous abandonnez en appuyant sur la touche Esc, l'instruction MENU retourne la valeur 0.

  • Si une variable est passée en argument (init%), elle sert à déterminer quel item du menu doit être en surbrillance à l'ouverture du menu. La variable init% doit valoir 256*(menu%)+item%; ainsi pour menu% et item%, la valeur 0 spécifie le premier, 2 le deuxième et ainsi de suite.
    Par exemple, si init% vaut 517 (=256*2+5), cela spécifie que le 6ème item du 3ème menu doit être en surbrillance.
    Si init% a été passé en argument, la commande MENU assigne en retour à init% la valeur correspondant au dernier item en surbrillance sur le menu. Il vous possible d'utiliser cette valleur lors du rappel du menu.

SIBO OS :
Vous n'avez besoin d'utiliser cette technique que si vous avez plus d'un menu dans votre programme, en maintenant une variable d'initialisation pour chacun des menus.
Quand le menu est clos puis réouvert, l'item en surbrillance à la réouverture est le dernier sélectionné.

EPOC et Symbian OS :
Il est nécessaire d'utiliser MENU(init%), en passant la même variable à chaque ouverture du menu si vous souhaitez que le menu soit réouvert avec le dernier item sélectionné en surbrillance.
Sur le Series 5, il est incorrect d'ignorer les erreurs avec les commandes mCARD et mCASC errors en les encadrant par des instructions ONERR encadrant les appels à mCARD ou mCASC . Si vous le faites, le menu est rejeté et une erreur de type ‘Structure fault’ est provoquée lors de l'utlisation des commandes mCARD, mCASC ou MENU sans instruction mINIT préalable.
Le code erroné suivant n'affichera pas le menu :

  mINIT
    ONERR errIgnore1
    mCARD "Xxx","ItemA",0 REM Raccourci clavier erronné
    errIgnore1::
    ONERR errIgnore2
    mCARD "Yyy","" REM Erreur ‘Structure fault’ (mINIT rejeté)
    errIgnore2::
    ONERR OFF
  MENU REM Nouvelle erreur ‘Structure fault’

MID$

> Emploi

  m$=MID$(a$,x%,y%)

Retourne la chaîne de caractères comprenant les y% caractères de la chaîne a$, en partant du caractère de position x%.

> Exemple

Si la variable name$="Mc Connell" , l'instruction MID$(name$,3,4) va retourner la chaîne de caractères "Conn".

MIN

> Emplois

  m=MIN(list)
  m=MIN(array(),element)

Retourne la plus petite valeur d'une liste d'items numériques.

La liste peut être :

  • une liste de variables, valeurs et expressions, séparé par une virgules ;
  • les éléments d'un tableau (array) de valeurs en virgule flottante.
    Lorsque vous opérez sur un tableau, le premier argument doit être le nom du tableau suivi par (). Le second argument, séparé du premier par une virgule, correspond au nombre d'éléments du tableau sur lesquels vous souhaitez opérer.

> Exemple

L'instruction m=MIN(arr(),3) retournera dans la variable m le plus petit élément parmi arr(1), arr(2) et arr(3).

mINIT

> Emploi

  mINIT

Prépare la définition de menus, annulant tout menu préexistant. Utilisez mCARD et mCASC (sur le Series 5 uniquement) pour définir chacun de ces type de menu, puis MENU pour les afficher.

EPOC et Symbian :
Sur le Series 5, il est incorrecte d'ignorer les erreurs lors de l'exécution des instructions mCARD ou mCASC en encadrant les appels à  mCARD ou mCASC avec des étiquettes ONERR . Si vous faites cela, le menu sera annulé et vous provoquerez une erreur de type ‘Structure fault’ si une instruction mCARD, mCASC ou MENU n'est pas précédée à nouveau de mINIT. Voir également l'instruction MENU pour en consulter un  exemple.

MINUTE

> Emploi

  m%=MINUTE

Retourne le nombre de minutes courantes à partir de l'horloge système (entre 0 et 59).

> Exemple

Pour 8.54am, la fonction MINUTE retourne 54.

MKDIR

Emploi

  MKDIR name$

Crée un nouveau dossier/répertoire.

> Exemples

EPOC et Symbian :
L'instruction MKDIR "C:\MINE\TEMP" crée un dossier C:\MINE\TEMP, mais également C:\MINE s'il n'existe pas déjà.

SIBO :
L'instruction MKDIR "M:\MINE\TEMP" crée un répertoire  M:\MINE\TEMP, mais également M:\MINE s'il n'existe pas déjà.

MODIFY

> Emploi

  MODIFY

Autorise la modification de la fiche courante d'une vue sans la déplacer. Les champs peuvent alors être assigné avant d'utiliser l'une des commandes PUT ou CANCEL.

MONTH

> Emploi

  m%=MONTH

Retourne le numéro du mois courant donné par l'horloge système sous forme d'un nombre entier entre 1 et 12.

> Exemple

Le 12 Mars 2002, l'instruction m%=MONTH retourne la valeur 3 dans m%.

EPOC et Symbian :
Les constantes pour les numéros des mois sont données dans Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre 'Calling Procedures' et consulter l''Appendix E' pour son listing .

MONTH$

> Emploi

  m$=MONTH$(x%)

Convertit x%, nombre entre 1 et 12, en nom de mois exprimé sous la forme d'une chaine de trois caractères.

> Exemple

L'instruction MONTH$(1) retourne la chaîne de caractères "Jan".

EPOC et Symbian :
Les constantes pour les numéros des mois sont données dans Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consultez le chapitre 'Calling Procedures' et consulter l''Appendix E' pour son listing .

mPOPUP

> Emploi

  mPOPUP(x%,y%,posType%,item1$,key1%,item2$,key2%,...)

Présente un menu « popup ». La commande mPOPUP retourne la valeur du code de la touche enfoncée pour sortir du menu popup ; la valeur est 0 si c'est la touche Ech (Esc) .

> Note

La commande mPOPUP définit et présente le menu lui-même ; elle ne doit et n'a pas besoin d'être appelée au sein d'une structure mINIT...MENU.

  • L'argument posType% contrôle l'endroit où doit être positionné le coin de coordonnées (x%,y%) du menu popup spécifié ; il peut prendre les valeurs :
    • 0 – en haut à gauche
    • 1 – en haut à droite
    • 2 – en bas à gauche
    • 3 – en bas à droite
    Les constantes pour les valeurs de ces coins sont fournies dans le fichier Const.oph. consultez le chapitre ‘Calling Procedures’ pour les détails sur la façon d'utiliser ce fichier et l'Appendix E pour son listing.
  • Les arguments item$ et key% peuvent prendre les mêmes valeurs que pour la commande mCARD, avec key% taking the same constant des valeurs to specify checkboxes, option buttons et dimmed items. Néanmoins, les cascades ne sont pas supportées dans les menus popup.

> Exemple

L'instruction :

  mPOPUP (0,0,0,"Continuer",%c,"Quitter",%q)

spécifie un menu popup menu dont le coin supérieur gauche a pour coordonnées (0,0) et doté des items ‘Continuer’ et ‘Quitter’, avec pour raccourci clavier les combinaisons respectives Ctrl+C et Ctrl+Q.

Voir également l'instruction mCARD.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

NEWOBJ

> Emploi

  pobj%=NEWOBJ(num%,clnum%)

Crée un nouvel objet de numéro de catégorie num% appartenant à la classe clnum%, et retourne the object handle en cas de succès ou zéro en cas de dépassement de capacité mémoire .

Le Series 5 ne supporte que l'utilisation d'OPX. Pour plus de détails, consultez le chapitre ‘Using OPXs on the Series 5'.

NEWOBJH

> Emploi

  pobj%=NEWOBJH(cat%,clnum%)

Créé un nouvel objet by category handle cat% appartenant à la classe clnum%, returning the object handle on success ou zéro en cas de dépassement de mémoire .

Symbian et EPOC :
Le Series 5 ne supporte que l'utilisation d'OPX. Pour plus de détails, consultez le chapitre ‘Using OPXs on the Series 5'.

NEXT

> Emploi

NEXT

Positionne à la fiche suivante dans le fichier de données courant.

Si NEXT est utilisé après qu'on ait atteint la fin de fichier, il n'y a pas de rapport d'erreur, mais la fiche courante est nulle et la fonction EOF retourne 'True' (vrai).

NUM$

> Emploi

  n$=NUM$(x,y%)

Retourne une représentation sous forme de chaîne de caractères de la partie entière du nombre en virgule flottante x, arrondie au nombre entier le plus proche. La chaîne de caractères aura une largeur pouvant atteindre y% caractères.

Si y% est négatif, la chaîne de caractères est justifée à droite. Si  y% est positif, il n'y a pas d'espace rajouté. Si la chaîne de caractères retournée dans n$ ne tient pas dans la largeur y%, la chaîne de caractères retournée ne contient que des astérisques.

> Exemples

  • L'instruction NUM$(1.9,-3) retourne " 2" avec deux espaces sur la gauche du 2.
  • L'instruction NUM$(-3.7,3) retourne "-4".
  • L'instruction NUM$(256.99,2) retourne "**".

Voir également les commandes FIX$, GEN$, SCI$.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

OFF

> Emplois

  OFF
  OFF x%

Eteind l'appareil.

Quand vous rallumez l'appareil, l'instruction qui suit la commande OFF est alors exécutée.

> Exemple

  OFF :PRINT "Re-Bonjour !"

Si vous spécifiez un nombre entier x%, supérieur à 2 (entre 2 et 16383 sur SIBO OS ; la valeur 16383 correspond à environ 4,5 heures), l'appareil s'éteind pour ce nombre de secondes et se rallume automatiquement en continuant à la ligne suivante l'exécution du programme. Néanmoins, pendant cette période, l'appareil peut se rallumer en cas d'alarme, et vous pouvez évidemment le rallumer vous-même comme d'habitude.

EPOC et Symbian OS :
Le temps minimal d'extinction est de 5 secondes sur EPOC et Symbian OS. EPOC32 empêche également prevents l'extinction de l'appareil si if there’s an absolute timer outstanding and due to go off en moins de 5 secondes.

Soyez prudents sur la manière d'utiliser cette commande. Si, par mégarde, un programme utilise la commande OFF dans une boucle, vous pouvez vous retrouver dans l'impossibilité de rallumer l'appareil et être obligé de le réinitialiser (reset).

ONERR

> Emplois

  ONERR label  ou  ONERR label::
    ...
  ONERR OFF

L'instruction ONERR label:: initialise dans une procédure un gestionnaire d'erreur. Quand une erreur survient, le programme saute à l'étiquette label:: au lieu de s'arrêter et d'afficher le message correspondant à l'erreur.

  • EPOC et Symbian OS : label:: peut avoir jusqu'à 32 caractères de longueur et doit débuter par une lettre ou le caractère "_" (underscore).
  • SIBO OS : label:: peut avoir jusqu'à 8 caractères de longueur et doit débuter par une lettre.

L'étiquette se termine par deux fois deux points (::), mais vous n'êtes pas obligé de les utiliser dans l'instruction ONERR.

L'instruction ONERR OFF désactive la commande ONERR. Ainsi, les erreurs qui peuvent survenir après l'instruction ONERR OFF ne provoque plus de saut à l'étiquette label::.
Il est judicieux de placer la commande ONERR OFF juste après label:: qui débute le code de gestion de l'erreur.

Pour plus de détails, consultez le document ‘Errors.pdf’.

OPEN

> EPOC et Symbian OS :

> Emploi

  OPEN query$,log,f1,f2,...

Ouvre une table (ou une vue (view) d'une table) existante à partir d'une base de données existante, en lui donnant le nom logique log et les paramètres pour les champs f1, f2. Le nom logique log doit être l'une des lettres comprises dans l'intervalle A à Z.

Le contenu de la variable query$ spécifie la base de donnée, la vue requise et les champs sélectionnés pour la requête.

> Exemple

OPEN "clients SELECT nom, tel FROM telephone",D,n$,t$

Ici, la base de données s'appelle clients et la table s'appelle telephone. Les noms de champs sont encadrés par les mots-clés SELECT et FROM et leur types doivent correspondre avec la liste des paramètres (pour être précisis n$ indique le nom du champ qui est une chaîne de caractère).

En remplaçant la liste des noms de champs par le caractère* , vous sélectionnez tous les champs de la table.

On se sert également de query$ pour spécifier une vue ordonnée si un index pertinent a été créé, qui pourra être alors utilisée. Voir le paragraphe  ‘Database OPX’ du document ‘OPX.pdf’.

> Exemple

L'instruction :

  OPEN "personne SELECT nom,numero FROM telephone ORDER BY nom ASC, numero DESC",G,n$,num%

doit permettre d'ouvrir une vue dont les champs "nom" sont triés par ordre alphabétique croissant et, quand deux noms sont identiques, il sont classés par "numero"décroissant.

Si la spécification de la base de données inclut des espaces, par exemple dans le nom de répertoire, le nom doit encadré de guillemets, ainsi par exemple l'instruction qui suit n'est pas correcte et échoue :

  OPEN "c:\repertoire avec espaces\fichier avec espaces",a,nom$

alors que l'instruction suivante marche :

  OPEN """c:\repertoire avec espaces\fichier avec espaces""",a,nom$

Compatibilité avec SIBO OS 
Comme sur SIBO OS, query$ peut contenir juste le nom du fichier. Dans ce cas, une table dont le nom par défaut est Table 1 est ouverte si elle existe. Les noms des champs ne sont pasimportant dans la mesure où il sera donné accès à autant de champs qu'il en est fourni en paramètres. Les marqueurs de type des paramètres de champs doivent correspondre aux types des champs.

> SIBO OS :

> Emploi

  OPEN fichier$,log,f1,f2...

Ouvre un fichier de données fichier$ en lui donnant le nom logique log, et en aux champs les noms f1,f2
Vous ne devez spécifier que les champs que vous avez l'intention de mettre à jour ou de rajouter, though you cannot miss out a field.
Le fichier ouvert est alors pris en compte au sein du programme sous son nom logique (A, B, C ou D).
On peut ouvrir jusqu'à 4 fichiers simultanément.

> Exemple

  OPEN "clients",A,nom$,adr$

Voir également les paragraphes ‘Data File Handling’ et ‘Series 5 Database Handling’ du document‘Database.pdf’.

Voir également les commandes CREATE, USE et OPENR.

OPENR

> Emploi

EPOC et Symbian OS :

  OPENR query$,log,f1,f2,...

SIBO OS :

  OPENR file$,log,f1,f2...

Cette commande fonctionne exactement comme OPEN excepté que le fichier est ouvert en lecure seule – en d'autres termes, vous ne pouvez appliquer les commandes APPEND, UPDATE ou PUT aux fiches qu'ils contiennent.

Cela signifie également qu'il est possible de faire tourner simultanément deux programmes séparés qui partagent le même fichier.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

PARSE$

> Emploi

  p$=PARSE$(f$,rel$,var off%())

Retourne la spécification complète d'un fichier à partir de son nom f$, complétant toute information manquante à partir de rel$.

Les offsets des composants du nom du fichier dans la chaîne retournée sont retournés dans le tableau off%() qui doit être déclaré avec au moins 6 éléments de type entier :

  • off%(1) – offset du système de gestion des fichiers (toujours égal à 1) ;
  • off%(2) – offset du disque (toujours égal à 1 Sur EPOC et Symbian OS dans la mesure où le système de gestion de fixchier n'entre pas dans la composition du nom de fichier sur EPOC et Symbian OS) ;
  • off%(3) – offset du chemin d'accès ;
  • off%(4) – offset du nom de fichier ;
  • off%(5) – offset de l'extension du nom de fichier ;
  • off%(6) – attributs concernant l'utilisation de jockers dans la chaîne retournée.

Les valeurs possibles pour l'attribut de off%(6) sont :

  • 0 – sans joker ;
  • 1 – joker dans le nom de fichier ;
  • 2 – joker dans l'extension de fichier ;
  • 3 – joker dans les deux.

EPOC et Symbian OS:
Les constantes pour le tableau subscripts et the flags sont fournies dans le fichier Const.oph. consultez le chapitre ‘Calling Procedures’ du document ‘Basics.pdf’ document pour les détails sur la façon d'utiliser ce fichier et l'Appendix E du document ‘Appends.pdf’ pour son listing .

Si  rel$ is not itself a complete file specification, the current filing system, device and/or path sont used as necessary to fill in the missing parts.

f$ et rel$ doivent être des chaînes de caractères séparées.

> Exemples

EPOC et Symbian OS :
L'instruction p$=PARSE$("NEW","C:\Documents\*.MBM",x%()) sets p$ to C:\Documents\NEW.MBM et x%() to (1,1,3,14,17,0).

SIBO :
L'instruction p$=PARSE$("NEW","LOC::M:\ODB\*.ODB",x%()) sets p$ to LOC::M:\ODB\NEW.ODB et x%() to (1,6,8,13,16,0).

PAUSE

> Emploi

  PAUSE x%

Met le programme en pause pour un certain temps, dépendant de la valeur de x% :
Effets de x%

  • 0 – attend q'une touche soit enfoncée.
  • Positif – effectue une pause de x% vingtièmes de seconde.
  • Négatif – effectue une pause de x% vingtièmes de seconde ou jusqu'à ce qu'une touche soit enfoncée.

> Exemple

L'instruction PAUSE 100 induira une pause du programme pendant 100/20 soit 5 secondes, et PAUSE -100 une pause de 5 secondes ou jusqu'à ce qu'une touche soit enfoncée.

Si x% est inférieur ou égal à 0, les commandes GET, GET$, KEY ou KEY$ renvoient la valeur de la touche enfoncée qui a provoqué la fin de la pause. Si vous ne vous intéressez pas à cette touche enfoncée mais à la suivante, effacez le contenu du tampon après PAUSE avec la commande KEY  :

PAUSE -10 :KEY

Vous devez vous montrer particulièrement prudent à cet égard si x% est négatif, dans la mesure où vous ne pouvez savoir si la pause s'est achevée parce qu'une touche a été enfoncée ou parce que la durée de pause était achevée.

La commande PAUSE ne doit pas être utilisée avec GETEVENT ou GETEVENT32 parce que les événements sont discarded par la fonction PAUSE.

PEEK

> Emploi

Les fonctions PEEK trouvent les valeurs stockées dans des octets spécifiques.

  •   p%=PEEKB(x&)

    L'instruction PEEKB retourne la valeur de l'entier contenu dans l'octet situé à l'adresse x&.

  •   p%=PEEKW(x&)

    L'instruction PEEKW retourne la valeur de l'entier contenu dans les deux octets situés à l'adresse x&.

  •   p&=PEEKL(x&)

    L'instruction PEEKL retourne la valeur de l'entier long (quatre octets) situé à l'adresse x&.

  •   p=PEEKF(x&)

    L'instruction PEEKF retourne la valeur du nombre en virgule flottante (huit octets) situé à l'adresse x&.

  •   p$=PEEK$(x&)

    L'instruction PEEK$ retourne la chaîne de caractères contenue dans les octets situées à l'adresse x&.

> Note

La représentation en mémoire d'une chaîne de caractères consiste en un « entête » (header), qui donne la longueur de la chaîne de caractères, et d'un « corps » (body), qui contient le texte lui-même. Le nombre d'octets utilisés pour représenter une chaîne de caractères dans l'entête et le corps dépend de la version d'OPL.
Dans les versions d'OPL antérieures au Symbian OS V6 - SIBO et EPOC - le nombre d'octets utilisés pour POKE$ et PEEK$ est égal à la longueur de la chaîne de caractères (Voir le mot -clé LEN) plus un octet d'entête.
Par conséquent, POKE$ address&,"Wiki" occupera cinq octets (un octet d'entête suivi de quatre octets de corps).
Avec Symbian OS v6 et suivants, ce qui inclut les Series 60 et Series 80, OPL est adapté à des processeurs Unicode et Thumb. Ce premier terme implique que le nombre d'octets occupés par le corps est maintenant le double de la longueur de la chaîne de caractères (voir le mot-clé SIZE), alors que le second implique que l'entête est codé sur deux  octets au lieu d'un. En conséquence, POKE$ address&,"Wiki" occupera dix octets (deux octets d'entête suivi de huit octets de corps).

PI

> Emploi

  p=PI

Retourne la valeur de pi (3.14... ).

POINTERFILTER

> Emploi

  POINTERFILTER filter%,mask%

EPOC et Symbian OS uniquement !

Filtre les événements lors dans la fenêtre courante en sortie ou au retour. Ajouter les attributs suivants pour obtenir filter% et mask% souhaités.
Valeur selon l'événement :

  • 0 – Aucun ;
  • 1 – Entrée/Sortie ;
  • 4 – Déplacement (drag).

Les Constantes pour ces valeurs sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, consulter le paragraphe ‘Calling Procedures’ du document ‘Basics.pdf’ et l'Appendix E du document ‘Appends.pdf’ pour son listing.

Les bits set in filter% spécifie les paramétrages à utiliser, 1 to filter out the event et 0 to remove the filter. Only those bits set in mask% seront utilisé pour le filtrage. This allows the current setting d'un particular bit to être left unchanged if that bit is zero in the mask. (i.e. mask% dictates what to change et filter% spécifie the setting to which it should être changed).

par exemple :

  mask%=5
  REM =1+4 - allows enter/exit et drag settings to être changed
  POINTERFILTER
  1,mask% REM filters out enter/exit, mais not dragging ... POINTERFILTER 4,mask% REM filters out drag et reinstates enter/exit

Initially les événements sont not filtered out.

Voir également les commandes GETEVENT32, GETEVENTA32.

POKE Commands

> Emploi

Les commandes POKE stockent des valeurs dans des octets spécifiques.

EPOC et Symbian OS:

  POKEB x&,y%

SIBO OS :

  POKEB x%,y%

Stocke la variable de type entier y% (inférieur à 256) dans l'octet dont l'adresse est x& (x%).

EPOC et Symbian OS:

  POKEW x&,y%

SIBO OS :

  POKEW x%,y%

Stocke la variable de type entier y% dans les deux octets successifs, avec l'octet de poids bas à l'adresse la plus petite qui est x& (x%).

EPOC et Symbian OS :

  POKEL x&,y&

SIBO OS :

  POKEL x%,y&

Stocke la variable de type entier long y& dans les quatre octets consécutifs qui commencent à l'adresse x& (x%).

EPOC et Symbian OS :

  POKEF x&,y

SIBO OS :

  POKEF x%,y

Stocke la variable de type virgule flottante y dans les huit octets qui commencent à l'adresse x& (x%).

EPOC et Symbian OS :

  POKE$ x&,y$

SIBO OS :

  POKE$ x%,y$

Stocke la variable de type chaîne de caractères y$ dans les octets qui commencent à l'adresse x& (x%).

Utilisez la fonction ADDR pour trouver l'adresse de vos variables déclarées.

L'utilisation inconsidérée de l'une de ces commandes peut être la source d'une perte de donnée avec le SIBO OS.

Voir la commande PEEK pour avoir plus de détails sur la façon dont sont stockés sur les octets les différents types de variables.

POS

> Emploi

  p%=POS

EPOC et Symbian OS :
Retourne le numéro de la fiche courante dans la vue courante. Sur le EPOC et Symbian OS, il vous est conseiller d'utiliser des signets (bookmarks) à la place de l'instruction POS.

SIBO OS :
Retourne le numéro de la fiche courante dans fichier de données en cour d'utilisation, de manière croissante en partant de la valeur 1 (première fiche).

Pour un fichier EPOC ou Symbian OS, il n'existe pas de limitation au nombre de fiches ; cette limite est par contre de 65534 fiches pour les fichiers SIBO OS. Néanmoins, une variable de type entier ne peut se trouver que dans l'intervalle -32768 à +32767. Les fiches dont le numéro est supérieur à 32767 sont par conséquent traitées de la manière suivante :

  • Enregistrement n°32767 – valeur retournée  32767
  • Enregistrement n°32768 – valeur retournée -32768
  • Enregistrement n°32769 – valeur retournée -32767
  • Enregistrement n°32770 – valeur retournée -32766
  • . . .
  • Enregistrement n°65534 – valeur retournée     -2

Afin d'afficher les numéros de fiche, vous pouvez utiliser les instructions suivantes :

  IF POS<0
    PRINT 65536+POS
  ELSE
    PRINT POS
  ENDIF

> Note

EPOC et Symbian OS :
Sur EPOC et Symbian OS, le numéro de la fiche courante peut être supérieur ou égal à 65535. Les valeurs peuvent donc avoir besoin d'être tronquées pour être compatibles avec la variable de type entier p%, ce qui donne un résultat erronné. C'est pour cette raison qu'il vous est fortement conseillé d'utiliser des signets si vous devez gérer un grand nombre de fiches.

Notez également que la valeur retournée par POS peut devenir erronnée si vous utilisez simultanément des signets (bookmarks) et des vues multiples sur une table. Un pointage correct peut être restauré en appliquant préalablement la commande FIRST ou LAST sur la vue courante.

Voir les commandes BOOKMARK, GOTOMARK et KILLMARK.

POSITION

> Emploi

  POSITION x%

Rend courant la fiche numéro x% du ficher de données en cours d'utilisation.

Si la valeur de x% est supérieure au nombre de fiches du fichier, la fonction EOF retourne 'Vrai' (true).

EPOC et Symbian OS :
Rend courant la fiche numéro x% du ficher de données en cours d'utilisation. Si vous utilisez conjointement des signets (bookmarks) alors que vous éditez la même table via plusieurs vues différentes, le positionnement exact peut être perdu et l'instruction POSITION x% peut pointer la mauvaise fiche. Un pointage correct peut être restauré en appliquant préalablement la commande FIRST ou LAST sur la vue courante.

La commande POSITION est maintenue principalement par souci de compatibilité avec SIBO OS et il convient de lui préférer les signets (bookmarks) sur EPOC et Symbian OS.

Voir les commandes BOOKMARK, GOTOMARK et KILLMARK.

PRINT

> Emploi

  PRINT list d'expressions

Affiche une liste d'expressions sur l'écran. La liste peut être ponctuée de l'une des manières suivantes :

  • Si les items à afficher sont séparés par des virgules, ils sont affichés séparés d'un espace.

  • S'ils sont séparés par deux points, il n'y a pas d'espace entre.

Chaque commande PRINT débute une nouvelle ligne, que le précédent PRINT finisse avec deux points ou une virgule.

Il peut y avoir autant d'items que vous le souhaitez dans cette liste. Un simple PRINT vous place sur la ligne suivante.

> Exemple

Le 1er Janvier 1993, le code suivant affiche

  PRINT "AUJOURD'HUI nous sommes le",
  PRINT DAY;".";MONTH;".";YEAR REM AUJOURD'HUI nous sommes le 1.1.1993
  PRINT 1 REM 1
  PRINT "Bonjour" REM Bonjour
  PRINT "Numéro",1 REM Numéro 1

Voir également les commandes LPRINT, gUPDATE, gPRINT, gPRINTB, gPRINTCLIP et gXPRINT.

PUT

> Emploi

EPOC et Symbian OS uniquement.

  PUT

Marque la fin d'une phase de modification d'une base de données avec les commmandes INSERT ou MODIFY et rend ces modifications permanentes.

Voir les commandes  INSERT, MODIFY et CANCEL.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

RAD

> Emploi

  r=RAD(x)

Convertit x de degrés en radians.

Toutes les fonctions trigonométriques utilisent des angles spécifiés en radians, mais cela peut être plus facile d'entrer les angles en degrés puis de les convertir avec RAD.

> Exemple

  PROC cosinusx:
    LOCAL angle
    PRINT "Angle (degrés)? :";
    INPUT angle
    PRINT "le COS de ",angle,"° égale ",
    angle=RAD(angle)
    PRINT COS(angle)
    GET
  ENDP

La formule utilisée est (PI*x)/180.

Pour convertir de radians à degrés, utiliser DEG.

RAISE

> Emploi

  RAISE x%

Met à évidence une erreur.

L'erreur mise en évidence est celle qui correspond au numéro x%. Cela peut correspondre à l'une des errreurs listée dans le document ‘Errors.pdf’ ou un nouveau numéro que vous avez vous-même défini.

L'erreur est gérée par le mécanisme de traitement des erreurs en cours - soit celui qui est propre à l'OPL et va stopper le programme en affichant un message, soit le gestionnaire ONERR si vous l'avez paramétré sur on.

RANDOMIZE

> Emploi

  RANDOMIZE x&

Donne une valeur de départ (seed) pour la fonction RND.

Les appels successifs de la fonction RND génère une séquence de nombres aléatoires. Si vous utilisez la commande  RANDOMIZE pour rétablir la valeur de départ à celle du début de la séquence précédente, vous obtiendrez la même séquence de nombres aléatoires.

> Exemple

Vous voulez utiliser la même séquence de nombres pour tester les nouvelles versions d'une procédure. Pour ce faire, faites précéder les instructions RND par l'instruction RANDOMIZE valDeDepart. Il suffit de se resevir de l'instruction  RANDOMIZE valDeDepart pour initier la même séquence de nombres aléatoires.

PROC SEQ:
  LOCAL g$(1)
  WHILE 1
    PRINT "S: régler l'amorce à 1"
    PRINT "Q: quitter"
    PRINT "autre touche: continuer"
    g$=UPPER$(GET$)
    IF g$="Q"
      BREAK
    ELSEIF g$="S"
      PRINT "Réglage de l'amorce à 1"
      RANDOMIZE 1
      PRINT "Premier nombre aléatoire:"
    ELSE
      PRINT "Nombre aléatoire suivant:"
    ENDIF
    PRINT RND
  ENDWH
ENDP

REALLOC

> Emploi

EPOC et Symbian OS :

  pcelln&=REALLOC(pcell&,size&)

Series 3 :

  pcelln%=REALLOC(pcell%,size%)

Change la taille d'une cellule précédemment allouée à l'adresse pcell& (pcell%) à la nouvelle taille size& (size%), retournant l'adresse de la nouvelle cellule ou zéro en cas de débordement de mémoire.

EPOC et Symbian OS :
Il est alloué aux cellules une longueur qui correspond au plus petit multiple de quatre juste supérieur à la taille requise. Une erreur survient si l'argument d'adresse de la cellule ne se situe pas dans l'intervalle connu par la pile.

Voir également la commande SETFLAGS si vous avez besoin sur EPOC et Symbian OS de forcer la limite à 64Ko. Si l'attribut est paramétré pour restreindre à cette limite, l'argument pcelln& est sûr d'être compatible avec le type entier.

Voir également le document ‘Advanced.pdf’.

REM

> Emploi

  REM text

Précède les commentaires que vous incluez pour expliquer ce que fait ou comment fonctionne le programme. Tout le texte situé après l'instruction REM jusqu'à la fin de la ligne est ignoré.

Quand vous avez recours à une instruction REM en fin de ligne, il suffit qu'elle soit précédée d'un espace, et non d'un espace et de deux points.

> Exemple

  INPUT a :b=a*.175 REM b=TAX
  INPUT a :b=a*.175 :REM b=TAX

RENAME

> Emploi

  RENAME file1$,file2$

Renomme le fichier file1$ en file2$. Il est possible de renommer tous les types de fichier.

Vous ne pouvez pas utiliser de jocker.

Il est possible de renommer en changeant de répertoire.L'instruction RENAME "\dat\xyz.abc","\xyz.abc" est correcte. Si vous faites ainsi, vous pouvez choisir de changer ou non le nom du fichier.

> Exemple

  PRINT "Ancien nom :" :INPUT a$
  PRINT "Nouveau nom :" :INPUT b$
  RENAME a$,b$

REPT$

> Emploi

  r$=REPT$(a$,x%)

Retourne une chaîne de caractères composée de x% répétitions de la chaîne a$.

> Exemple

Si on a a$="ex", l'instruction r$=REPT$(a$,5) retourne exexexexex.

RETURN

> Emplois

  RETURN
  RETURN variable

Termine l'exécution d'une procédure et retourne au point où cette procédure a été appelée (ENDP le fait automatiquement). L'instruction RETURN variable fait la même chose, mais elle passe également en retour la valeur de variable à la procédure appelante.
La variable peut être de n'importe quel type. Vous pouvez retourner la valeur tout élément d'un tableau simple – par exemple RETURN x%(3). On ne peut retourner qu'une seule variable.
La commande RETURN par elle-même, et le retour par défaut grâce à ENDP, fait retourner à la procédure la valeur 0 ou une chaîne vide("").

RIGHT$

> Emploi

  r$=RIGHT$(a$,x%)

Retourne x% caractères les plus à droite de la chaîne de caractères a$.

> Exemple

  PRINT "Enter name/ref",
  INPUT c$
  ref$=RIGHT$(c$,4)
  name$=LEFT$(c$,LEN(c$)-4)

RMDIR

> Emploi

  RMDIR str$

Retire le répertoire dont le nom est donné par str$. Vous ne pouvez retirer un répertoire que s'il est vide.

RND

> Emploi

  r=RND

Retourne un nombre aléatoire en virgule flottante compris dans l'intervalle 0 (inclus) à 1 (exclu). Si vous souhaitez générer un nombre aléatoire entre 1 et n (entre 1 et 6 pour un dé par exemple), utlisez l'instruction suivante :

  f%=1+INT(RND*n)

L'instruction RND généère un nombre différent chaque fois qu'elle appelée au sein d'un  programme. Il est possible de générer une séquence fixe à l'aide de l'instruction RANDOMIZE. Pour initier chaque fois différemment la séquence, il est conseillé de la débuter en vous servant de RANDOMIZE auquel vous avez attribué un argument généré à partir de la fonction MINUTE ou SECOND (ou équivalent ).

> Exemple

  PROC rndvals:
    LOCAL i%
    PRINT "Random test des valeurs :"
    DO
      PRINT RND
      i%=i%+1
      GET
    UNTIL i%=10
  ENDP

ROLLBACK

> Emploi

EPOC et Symbian OS uniquement.

  ROLLBACK

Abandonne la transaction en cours sur la vue courante. Les modifications effectuées sur la base de donnée en rapport avec cette vue depuis l'appel de la commande BEGINTRANS sont annulées.

Voir également les commandes BEGINTRANS, COMMITTRANS.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

SCI$

> Emploi

  s$=SCI$(x,y%,z%)

Retourne la représentation en chaîne de caractères de x en format scientifique, avec y% décimales et jusqu'à z% caractères.

> Exemples

  SCI$(123456,2,8)="1.23E+05"
  SCI$(1,2,8)="1.00E+00"
  SCI$(1234567,1,-8)=" 1.2E+06"

Si le nombre ne tient pas dans la taille spécifiée, une chaîne d'astérisques est retournée.

Si z% est négatif, la chaîne de caractères est justifée à droite.

Voir également les fonctions FIX$, GEN$, NUM$.

SCREEN

> Emploi

  SCREEN width%,height% ou SCREEN width%,height%,x%,y%

Change la taille de la fenêtre dans laquelle le texte est affiché. x%,y% spécifie la position des caractères dans le coin supérieur gauche. S'il ne sont pas fournis, la fenêtre de texte est centrée dans l'écran.

Un programme OPL peut afficher au départ du texte sur tout l'écran.

Voir la commande SCREENINFO.

SCREENINFO

> Emploi

  SCREENINFO var info%()

Récupère les informations sur l'écran « texte » (tel qu'il est utilisé par les instructions PRINT, SCREEN etc.)

Ce mot-clé vous permet de mélanger texte et images. Elle est nécessaire car, alors que la fenêtre par défaut à la même taille que l'écran physique, l'écran « texte » est légèrement plus petit et centré dans la fenêtre par défaut. L'intervalle de quelques pixels autour de l'écran « texte », qui constituent la marge gauche et la marge haute, dépend de la fonte utilisée.

En retour, le tableau info%() doté d'au moins 10 éléments, contient les informations suivante :

  • info%(1) – marge gauche en pixels ;
  • info%(2) – marge supérieure en pixels ;
  • info%(3) – largeur de l'écran de texte en nombre de caractères ;
  • info%(4) – hauteur de l'écran de texte en nombre de caractèrestext screen height in character units ;
  • info%(5) – réservé (identité du serveur de fenêtre pour la fenêtre par défaut)

Sur EPOC et Symbian OS :
L'identité de la fonte (font ID) sur le Series 5 est un entier long (32 bits) et ne peut donc être contenue dans un simple élément du tableau info%(). Par conséquent, les 16 bits de bas poids de font ID sont retournés dans info%(9) et les 16 bits de haut poids dans info%(10).

  • info%(6) – inutilisé ;
  • info%(7) – largeur de cellule en pixels pour les caractères dans la fenêtre « texte » ;
  • info%(8) – hauteur de ligne en pixels dans la fenêtre « texte » ;
  • info%(9) – 16 bits de bas poids de font ID ;
  • info%(10) – 16 bits de haut poids de font ID.

Les constantes pour these array subscripts sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, voir le paragraphe ‘Calling Procedures’ du document ‘Basics.pdf’ et l'Appendix E du document ‘Appends.pdf’ pour son listing.

Sur SIBO :
L'identité de la fonte est retournée dans info%(6).

  • info%(6) – fonteID ;
  • info%(7) – largeur de cellule en pixels pour les caractères dans la fenêtre « texte » ;
  • info%(8) – hauteur de ligne en pixels dans la fenêtre « texte » ;
  • info%(9) & info%(10) – réservés.

Au départ, la commande SCREENINFO retourne les valeurs correspondant à l'écran « texte » initial. Secondairement, l'utilisation de n'importe lequel des mots-clés qui affectent la taille de la fonte, tels que FONT ou SCREEN, modifieront les valeurs de certains des éléments du tableau info%() et il sera nécessaire de rappeler SCREENINFO pour obtenir les valeurs actualisées.

Voir également les commandes FONT, SCREEN.

SECOND

> Emploi

  s%=SECOND

Retourne le nombre de secondes de l'heure courante récupérée sur l'horloge système (valeur de 0 à 59).

> Exemple

À 6:00:33, la fonction SECOND retourne 33.

SETDOC

EPOC et Symbian OS uniquement.

> Emploi

  SETDOC file$

Assigne le fichier dont le nom est file$ à être un document. Cette commande doit être appelée juste avant la création de file$ si on veut qu'il soit reconnu en tant que document. La commande SETDOC peut être associée aux commandes CREATE, gSAVEBIT et IOOPEN.

La chaîne de caractères passée en argument à SETDOC doit être identique à celle passée à la commande CREATE ou gSAVEBIT sinon le fichier créé ne sera pas un document.

> Exemple

Création d'un document :
  SETDOC "monfichier" CREATE "monfichier",a,a$,b$

La commande SETDOC doit également être appelée après l'ouverture réussie d'un document pour permettre à l'écran système d'afficher le nom correct du document dans la liste de tâches.

En cas d'échec lors de la création ou l'ouverture du fichier requis, vous devez entreprendre l'action suivante :

  • Création – try to re-open the last file et if this fails display an appropriate error dialog et exit. on reopening, call SETDOC back to the original file so the Task list is correct.
  • Ouverture – as for creating, mais calling SETDOC again is not strictly required.

Database documents, created using CREATE, et multi-bitmap documents, created using gSAVEBIT, will automatically contain votre application UID in le fichier header. Pour binary et text file documents created using IOOPEN et LOPEN, it is le programmemer’s responsibility pour sauvegarder the appropriate header in le fichier. This is a fairly straight-forward process et the following suggests one way de finding out what the header should être :

  1. Create a database ou bitmap document in a test run de votre application en vous servant de SETDOC comme cela vous a été montré précédemment.
  2. Utilisez un programme  hex editor ou hex dump pour trouver les premiers 16 octets, ou exécutez le programme suivant qui extrait l'UID de quatre entiers longs à partir du document testé.
  3. Ecrivez ces quatre entiers longs au début du fichier que vous créez à l'aide de la commande IOOPEN.

  INCLUDE "Const.oph"
  DECLARE EXTERNAL
    EXTERNAL readUids:(fichier$)
  PROC main:
    LOCAL f$(255)
    WHILE 1
      dINIT "Récupérez l'UID dans l'entete du document"
      dPOSITION 1,0
      dFILE f$,"Document,Repertoire,Disque",0
      IF DIALOG=0
        RETURN
      ENDIF
      readUids:(f$)
    ENDWH
  ENDP
  PROC readUids:(fichier$)
    LOCAL ret%,h%
    LOCAL uid&(4),i%
    ret%=IOOPEN(h%,fichier$, KIoOpenModeOpen% OR KIoOpenFormatBinary%)
    IF ret%>=0
      ret%=IOREAD(h%,ADDR(uid&()),16)
      PRINT "Lecture";fichier$
      IF ret%=16
        WHILE i%<4
          i%=i%+1
          PRINT " Uid"+num$(i%,1)+"=",hex$(uid&(i%))
        ENDWH
      ELSE
        PRINT " Erreur de lecture : ";
      IF ret%<0
        PRINT err$(ret%)
      ELSE
        PRINT ret%;" octets lus uniquement (4 entiers longs nécessaires)"
      ENDIF
    ENDIF
    IOCLOSE(h%)
    ELSE
      PRINT "Erreur d'ouverture : ";ERR$(ret%)
    ENDIF
  ENDP

Pour céer un document texte à l'aide des commandes IOOPEN ou LOPEN, deux conditions spéciales sont nécessaires :

  • Vous devrez sauvegarder l'entête nécessaire comme première fiche. Cela provoque l'insertion du délimiteur standard des fichiers texte CR LF (hex 0D 0A) à la fin de la fiche.
  • Les 16 octets spécifiques nécessaires pour votre application peuvent néanmoins contenir eux-même le délimiteur CR LF. Comme il est nécessaire de connaître cette information, vous aurez besoin de lire les enregistrements jusqu'au 16ème octet du document. This is clearly not a desirable state de affairs mais is inescapable given that text files were not designed to have headers. Il est recommandé de demander une nouvelle UID pour votre application si elle contientCR LF.

Voir le document ‘Advanced.pdf’.

Voir également GETDOC$.

SETFLAGS

EPOC et Symbian OS uniquement.

> Emploi

  SETFLAGS flags&

Paramètre certains attributs qui affectent le fonctionnement des programmes. La commande CLEARFLAGS permet d'effacer tous les attributs qui ont été précédemment affectés.

Les effets qui peuvent être obtenus selon les valeurs de flags& sont les suivants :

  • 1 – restreint à 64Ko la mémoire disponible pour votre application, émulant le Series 3c. Ce paramétrage ne doit être utilisé, si besoin, qu'au début de votre programme. La modification répétée de ce paramétrage risque d'avoir des effets imprévisibles.
  • 2 – autorise l'auto-compression à la fermeture des bases de données. Cela peut être lent, mais cela est conseillé si de nombreux changements ont été effectués au sein de la base de données.
  • 4 – autorise (pour une rétro-compatibilité) le renvoi d'erreurs de dépassement de capacité pour les valeurs en virgule flottante supérieures ou égales à 1.0E+100 , au lieu d'autoriser les exposants à 3 chiffres.
  • $10000 – autorise les commandes GETEVENT, GETEVENT32 et GETEVENT32A à renvoyer le code $403 dans ev&(1) losque la machine se met en marche.

Les constantes pour ces attributs sont fournies dans le fichier Const.oph. Pour les détails sur la façon d'utiliser ce fichier, voir le paragraphe ‘Calling Procedures’ du document ‘Basics.pdf’ et l'Appendix E du document ‘Appends.pdf’ pour son listing.

Par défaut, ces attributs sont effacés.

Voir le document ‘Advanced.pdf’, et le paragraphe ‘Series 5 Database Handling’ du document ‘Database.pdf’.
Voir également les commandes GETEVENT32, CLEARFLAGS.

SETPATH

> Emploi

  SETPATH name$

Paramètre le chemin d'accès courant pour atteindre les fichiers.

> Exemple

EPOC et Symbian OS :
SETPATH "C:\Documents\"
Serie 3 :
SETPATH "a:\docs\"

L'instruction LOADM continue d'utiliser le chemin d'accès du programme initial, mais l'accès à tous les autres fichier se fera avec le nouveau chemin d'accès.

SIN

> Emploi

  s=SIN(angle)

Retourne le sinus de angle, un angle exprimé en radians.

Pour convertir de degrés en radians, utiliser la fonction RAD.

SIZE

Ce mot-clé n'est supporté en OPL que pour Symbian OS v6 et plus incluant les Series 60 et Series 80.

> Emploi

  a%=SIZE(a$)

Retourne la taille de la chaîne de caractères a$, qui est le double de la longueur de la chaîne de caractères pour une machine utilisant l'Unicode.
De plus,

  CONST KMaxStringLen%=255
  REM // in Const.oph
  PROC PrintLengthAndSize:
    LOCAL a$(KMaxStringLen%)
    a$="Wiki"
    PRINT "Longueur = ";LEN(a$)
    PRINT "Taille = ";SIZE(a$)
    GET
  ENDP

donnera en sortie :

  Longueur = 4
  Taille = 8

SPACE

> Emploi

  s&=SPACE

Retourne le nombre d'octets libres sur le dispositif sur lequel le fchier courant (ouvert) se trouve

> Exemple

EPOC et Symbian OS :

  PROC stock:
    OPEN "c:\stock\stock",A,a$,b%
    PRINT SPACE,"octets libres sur C:"
  ENDP

SQR

> Emploi

  s=SQR(x)

Retourne la racine carrée de x.

STD

> Emplois

  s=STD(list)
  s=STD(array(),element)

Retourne la déviation standard d'une liste d'items numériques.

Cette liste peut être composée :

  • D'une liste de variables, valeurs et expressions, séparées par une virgule ou
  • Des éléments d'un tabeau de nombres en virgule flottante.

Quand vous opérez sur un tableau, le premier argument doit être le nom du tableau suivi par (). Le second argument, séparé du premier par une virgule, correspond au nombre d'éléments du tableau sur lesquels vous souhaitez opérer.

> Exemple

L'instruction m=STD(arr(),3) retourne la déviation standard deviation des éléments arr(1), arr(2) et arr(3).

STOP

> Emploi

  STOP

Finit le programme en cours d'exécution.

> Note

EPOC et Symbian OS :
La commande STOP ne doit pas être utilisée à l'occasion du rappel (callback) d'un OPX et provoquera si c'est le cas une erreur EPOC et Symbian OS de type ‘STOP used in callback’. Voir le document ‘OPX.pdf’.

STYLE

> Emploi

  STYLE style%

Établit le style des caractères dans une fenêtre de texte. style% peut valoir 2 pour souligner, ou 4 pour inverser.

Voir pour plus de détails  le paragraphe ‘The text and graphics windows’ à la fin de ‘Graphics’ partie du document ‘GUI.pdf’.

SUM

> Emploi

  s=SUM(list)  ou s=SUM(array(),element)

Retourne la somme d'une liste d'items numériques.

Cette liste peut être :

  • Une liste de variables, valeurs et expressions, séparé par une virgules
  • Les éléments d'un tableau de nombres en virgule flottante.

Quand opère sur un tableau, le premier argument doit être le nom du tableau suivi par (). Le deuxième argument, séparé du premier par une virgule, est le nombre d'éléments du tableau que vous souhaitez traiter.

>Exemple

m=SUM(arr(),3) doit retourner la somme des éléments arr(1), arr(2) et arr(3).

A B C D E F G H I J K L M N O P Q R S T U V W X Y

TAN

> Emploi


  t=TAN(angle)

Retourne la tangente de angle, un angle exprimé en radians.
Pour convertir de radians à degrés, utiliser la fonction DEG.

TESTEVENT

> Emploi

  t%=TESTEVENT

Retourne ‘True’ (vrai) si un événement est survenu, sinon il retourne ‘False’ (faux). L'événement n'est pas lu TESTEVENT– il peut l'être avec GETEVENT, ou GETEVENT32 ou GETEVENTA32 sur EPOC et Symbian OS.

Sur EPOC et Symbian OS, il est recommandé d'utiliser ou bien GETEVENT32 ou GETEVENTA32 sans TESTEVENT dans la mesure où TESTEVENT peut mobiliser beaucoup de ressources, particulièrement quand on l'utilise comme c'est souvent le cas, au sein d'une boucle.

TRAP

> Emploi

  TRAP command

TRAP est une commande de gestion des erreurs. Elle peut précéder n'importe quelle de ces commandes :

> Exemple

TRAP FIRST.

Toute erreur résultant de l'exécution de la commande qui suit sera piégée. L'exécution du programme va continuer à l'instruction qui suit l'instruction TRAP, mais le code de l'erreur sera enregistré dans ERR.

TRAP prend le pas sur toute instruction ONERR.

TRAP RAISE

EPOC et Symbian OS uniquement.

> Emploi

  TRAP RAISE x%

Affecte à ERR la valeur x% et efface la valeur capturée.

Voir le document ‘Errors.pdf’ pour plus de détails sur l'utilisation de TRAP.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

UADD

> Emploi

  i%=UADD(val1%, val2%)

Ajoute val1% et val2%, comme si les deux nombres étaient des entiers non signés pour des valeurs allant de 0 to 65535. Cela permet d'éviter un éventuellement débordement dans le cadre de l'arithmétique des pointeurs d'adresse sur le Series 3c.

> Exemple

UADD(ADDR(text$),1) doit être utilisé à la place de ADDR(text$)+1.
L'un des arguments doit être le pointeur et l'autre l'offset.

> Note

EPOC et Symbian OS :
Les instructions UADD et USUB ne doivent pas être utilisés sur EPOC et Symbian OS pour l'arithmétique des pointeurs sans que SETFLAGS n'ait été utilisé pour forcer la limite de mémoire à 64 Ko. D'une manière générale, il faut utiliser l'arithmétique des entiers longs pour l'arithmétique des pointeurs sur EPOC et Symbian OS.

Voir également la commande USUB.

UNLOADM

> Emploi

  UNLOADM module$

Décharge de la mémoire le module module$ chargé avec LOADM.

  • module$ est une chaîne de caractères contenant le nom du module chargé en mémoire.

Les procédures d'un module déchargé de la mémoire ne peuvent plus être appelées par une autre procédure.

UNLOADM provoque également le déchargement de la mémoire de toute procédure du module qui n'est pas en cours d'exécution. Les procédures encours d'exécution Running procédures sont unloaded en retour. It is considered bad practice, néanmoins, d'utiliser UNLOADM on a module avec procédures that sont still running. sur le Series 3c, le nom du module et le nom de la procédure ne seront pas disponibles en cas de message d'un trapped error.

EPOC et Symbian OS :
Une fois que LOADM a été appelé, les procédures chargées restent en mémoire jusqu'à ce que le module soit déchargé, afin d'avoir plus de mémoire disponible que sur le Series 3c, où les procédures sont déchargée quand l'antémémoire est pleine (ou en retour si l'antémémoire n'est pas utilisée).

UNTIL

Voir l'instruction de boucle DO...UNTIL.

UPDATE

> Emploi

  UPDATE

Détruit la fiche courante dans le fichier de données courant et sauvegarde les valeurs courantes des champs as une nouvelle fiche à la fin du fichier .
Cette fiche, qui est maintenant la dernière du fichier, reste la fiche courante.

> Exemple

  A.count=129
  A.name$="Brown"
  UPDATE

Utiliser APPEND pour sauvegarder les valeurs courantes des champs dans une nouvelle fiche.

EPOC et Symbian OS :
Les commandes MODIFY, PUT et CANCEL doivent normallement être utilisés à la place de UPDATE sur EPOC et Symbian OS.

UPPER$

> Emploi

  u$=UPPER$(a$)

Convertit tous les caractères minuscules de a$ en majuscule, et retourne la chaîne de caractère complète en majuscule.

> Exemple

  ... CLS :PRINT "Y to continue"
  PRINT "or N to stop."
  g$=UPPER$(GET$)
  IF g$="Y"
    nextproc:
  ELSEIF g$="N"
    RETURN
  ENDIF ...

Utiliser la fonction LOWER$ pour convertir en minuscules.

USE

> Emploi

  USE logical name

Sélectionne le fichier de données qui a pour nom logique name (A-Z pour the Series 5, A,B,C ou D pour le Series 3c). Ce fichier doit préalablement avoir été ouvert avec l'une des commandes OPEN, OPENR ou CREATE et pas encore fermé.

Toutes les commandes de manipulation de fiche (tel que POSITION et UPDATE, et GOTOMARK, INSERT, MODIFY, CANCEL et PUT sur le Series 5) sont opérationnelles sur ce fichier.

USUB

> Emploi

  i%=USUB(val1%,val2%)

Soustrait val2% de val1%, comme si les deux valeur étaient des entiers non signés pour des valeurs allant de 0 à 65535. Cela prévient le dépassement d'entier pour l'arithmétique des pointeurs d'adresse sur le Series 3c.

> Note

EPOC Release 5 :
UADD et USUB ne doivent pas être utilisés pour l'arithmétique des pointeurs d'adresse sur le Series 5 sans que SETFLAGS ait forcé la limite de mémoire à 64Ko. D'une manière générale, on doit utiliser l'arithmétique des entiers longs .

Voir également la fonction UADD.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

VAL

> Emploi

  v=VAL(numérique string)

Retourne le nombre en virgule flottante correspondant à une chaîne de chiffres.

La chaîne de caractères doit être un nombre valide.

  • "5.6.7" , "196f" ou les expressions telles que "45.6*3.1" ne sont pas autorisées.
  • La notation scientifique telle que "1.3E10", est par contre correcte.

> Exemple

VAL("470.0") retourne 470.

Voir également la commande EVAL.

VAR

> Emplois

  v=VAR(list)
  v=VAR(array(),element)

Retourne la variance d'une liste d'items numériques.

La liste peut être constituée :

  • D'une liste de variables, valeurs et expressions, séparées par une virgule
  • Des éléments d'un tableau de nombres en virgule flottante.

Quand on opère sur un tableau, le premier argument doit être le nom du tableau suivi par (). Le second argument, séparé du premier par une virgule, correspond au nombre d'éléments du tableau sur lesquels vous souhaitez opérer.

> Exemple

L'instruction m=VAR(arr(),3) retourne la variance des éléments arr(1), arr(2) et arr(3).

VECTOR

> Emploi

  VECTOR i%
    label1,label2,...,labelN
  ENDV

VECTOR i% saute à l'étiquette numéro i% de la liste . Si i% est égal à 1, ce sera la première étiquette, et ainsi de suite. La liste s'achève par l'instruction ENDV. La liste peut s'étendre sur plusieurs lignes, une virgule séparant les étiquettes entre-elles au sein de chaque ligne mais sans virgule en fin de ligne.

Si i% ne se trouve pas dans l'intervalle 1 à N, où N est le nombre d'étiquettes, le programme enchaîne avec l'instruction située après l'instruction ENDV.

Voir également la commande GOTO.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

WEEK

> Emploi

  w%=WEEK(day%,month%,year%)

Retourne le numéro de la semaine correpondant au jour donné, sous forme d'un nombre entier compris entre 1 et 53.

  • day% doit être compris entre 1 et 31 ;
  • month% entre 1 et 12 ;
  • year% entre 0 et 9999 (1900 et 2155 sur le Series 3c).

On considère que chaque semaine débute sur le jour de ‘Début de semaine' (Start of week), tel qu'il est défini sur le 'Panneau de Configuration' (Control Panel) sur le Series 5 ou dans l'application Time sur le Series 3c. Lorsque l'année débute sur un jour différent du 'Début de semaine', la fonction établit que c'est la semaine 1 si on compte quatre jours ou plus avant le début de la semaine suivante.

WHILE...ENDWH

> Emploi

  WHILE expression
    ...
  ENDWH

Effectue de façon itérative l'ensemble d'instructions comprises entre les instructions WHILE et ENDWH, tant que l'expression testée retourne la valeur logique "Vrai" (différente de zéro).

Lorsque l'expression testée n'est plus vraie (égale à zéro), le programme saute à la ligne qui suit l'instruction ENDWH.

Toute commande WHILE doit être close avec le ENDWH qui lui correspond.

Voir également l'instruction DO...UNTIL et le chapitre ‘Loops et Branches’ du document ‘Basics.pdf’.

A B C D E F G H I J K L M N O P Q R S T U V W X Y

YEAR

> Emploi

  y%=YEAR

Retourne l'année courante sous forme d'un entier à partir de l'horloge système.

> Exemple

À la date du 5 novembre 2005, la fonction YEAR retourne la valeur 2005.