Commandes OPL
|
| 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 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é.
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.
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 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
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 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
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é.
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.
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 :
Voir pour plus de détails le chapitre ‘Advanced Topics’ d'OPL applications.
Voir également la fonction GETCMD$.
COMMITTRANS
Effectue la transaction sur la vue courant de la base de données.
Voir également les commandes BEGINTRANS, ROLLBACK, INTRANS.
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 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.
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
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.
Voir également la commande BREAK.
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.
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 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.
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).
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’.
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 .
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).
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.
CREATE "clients FIELDS nom(40), tel to telephone", log, n$, t$
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.
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 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.
Si vous ne précisez rien, les valeurs par défaut suivantes sont affectées :
Quand la variable type% est précisée, on peut observer les effets :
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.
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.
d$=DATIM$
Retourne la dte et l'heure courante à partir de l'horloge système sous forme de chaîne de caractères
"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 .
d%=DAY
Retourne le jour courant du mois (de 1 à 31) à partir de l'horloge système.
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.
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.
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.
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 .
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 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.
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.
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 :
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 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 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.
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.
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 lg&,p$,min&,max&
Définit une case d'édition pour une date qui peut être utilisée dans un dialogue.
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
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.
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 opxname,opxUid&,opxVersion&
...
END DECLARE
Instruction qui permet de déclarer un OPX.
dEDIT string$,prompt$,len%
dEDIT string$,prompy$
Définit une case d'édition pour du texte utilisable dans un dialogue.
Voir également l'instruction dTEXT.
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.
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.
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.
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 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.
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.
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.
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:
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
La commande DELETE possède deux syntaxes, l'une pour les fichiers et l'autre pour les bases de données.
DELETE filename$
Détruit tout type de fichier.
Vous pouvez vous servir de jockers.
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.
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 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.
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.
Le premier item de la liste est le plus crucial.
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.
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 floatpoint,prompt$,min,max
Définit une case d'édition pour nombre ne virgule flottante utilisable dans un dialogue.
Voir également l'instruction dINIT.
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 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 pos%,str1$,str2$,...
Initialise la liste [insert image] (en éliminant toute liste préexistante).
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.
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.
Les constantes pour ces arguments sont fournies dans le fichier Const.oph.
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
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 :
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 ("").
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 long&,prompt$,min&,max&
Définit une case d'édition pour un entier long, utilisable dans un dialogue.
Voir également l'instruction dINIT.
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).
d%=DOW(day%,month%,year%)
Retourne le jour de la semaine de 1 (Lundi) à 7 (Samedi) correspondant à la date donnée.
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 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.
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 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 prompt$,body$,t%
dTEXT prompt$,body$
Définit une ligne de texte à afficher dans un dialogue.
EPOC et Symbian OS :
Les constantes pour les types de texte sont fournies dans le fichier Const.oph.
Voir les instructions dEDIT, dINIT
dTIME long&,prompt$,t%,min&,max&
Définit une case d'édition spécifiquement dédiée aux heures, utilisable dans les dialogues.
EPOC et Symbian OS :
Les constantes pour types de dTIME sont fournies
dans Const.oph.
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.
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 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.
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.
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.
Voir l'instruction IF
Voir l'instruction IF
Voir l'instruction IF
Voir l'instruction APP
Voir l'instruction PROC
Voir l'instruction VECTOR
Voir l'instruction WHILE
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.
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.
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.
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
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'.
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.
... 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.
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.
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.
x$=ERRX$
Retourne le message intégral de l'erreur courante (lorsqu'une erreur a été « trappée »).
'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
...
ESCAPE ON
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'.
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.
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).
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.
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
...
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 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’.
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.
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.
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 :
Cette commande ne fonctionne qu'avec des champs de type chaîne de caractères.
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.
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.
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.
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’.
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
Positionne le pointeur de fiche sur la première fiche de la base de données (ou vue sur EPOC et Symbian) courante.
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 .
FIX$(123.456,2,7) retourne "123.46".
Voir également les commandes GEN$, NUM$, SCI$.
FLAGS flags%
Remplace TYPE depuis les machines SIBO. L'argument flags% peut avoir les valeurs suivantes :
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’.
f=FLT(x&)
Convertit une expression entière (soit entier ou entier long) en nombre en virgule flottante.
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.
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’.
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.
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 flags%,width%,height%
gBORDER flags%
Trace une bordure noire d'un pixel de largeur autour du dessin (drawable) courant.
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).
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 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 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).
Sur les machines SIBO, l'absence de plan gris dans la fenêtre courante provoque une erreur.
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 :
On peut rajouter les constantes suivantes pour spécifier comment l'espace en excès doit être alloué sur le bouton :
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.
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'.
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 radius%
gCIRCLE radius%,fill%
Trace dans le dessin courant un cercle centré sur la position courante du curseur.
Voir les commandes gELLIPSE, gCOLOR.
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.
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 :
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.
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.
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’.
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é :
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 :
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 :
Les chaînes de formatages donnent les résulats suivants :
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 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
Efface la totalité du dessin courant et positionne le curseur aux coordonnées
' 0,0', c'est-à-dire le coin gauche.
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.
Si les valeurs de red%, green% et blue% sont égales, vous obtenez un gris pur allant du noir (0) au blanc (255).
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 :
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 :
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.
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.
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 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 :
An error is raised if la fenêtre courante has no grey plane.
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.
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.
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$.
g%=GET
Attend qu'une touche soit enfoncée et retourne le code du caractère correspondant à cette touche.
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.
g$=GET$
Attend jusqu'à ce qu'une touche soit enfoncée et retourne la touche sous forme de chaîne de caractères.
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.
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 :
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$.
docname$=GETDOC$
Retourne le nom du document courant.
Voir également la commande SETDOC.
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 :
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 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 :
À 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
Pour les événements « stylet », ev&(4) peut prendre l'une des valeurs suivantes :
Autres valeurs :
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.
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 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(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’.
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 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 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.
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 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 :
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.
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 mode%
Change la couleur du curseur de noir à gris. L'attribut mode% possède les propriétés suivantes :
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.
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.
height%=gHEIGHT
Retourne la hauteur du dessin (drawable) courant.
id%=gIDENTITY
Retourne l'identité ID du dessin (drawable) courant.
La fenêtre par défaut a une ID=1.
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%(8) permet de spécifier une combinaison des caractéristiques de fonte suivantes :
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 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,
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 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 str$,c%
gIPRINT str$
Affiche un message d'information pendant environ deux secondes, dans le coin inférieur droit de l'écran.
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.
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 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 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%).
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.
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$.
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.
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.
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 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 :
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 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 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.
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.
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 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 :
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 b%
Makes the record avec bookmark b%, as returned by BOOKMARK, la fiche courante. b% doit être a bookmark in the current view.
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 :
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
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 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 :
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.
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 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 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.
En l'absence de valeurs fournies pour certains arguments, les valeurs par défauts sont les suivantes :
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.
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.
rank%=gRANK
Retourne l'ordre ou rang (rank) de la fenêtre courante entre premier plan / arrière-plans :
Provoque une erreur si le dessin (drawable) courant est un bitmap.
Voir également la commande gORDER.
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 dx%,dy%
gSCROLL dx%,dy%,x%,y%,wd%,ht%
Fait glisser les pixels du dessin (drawable) courant par décallage (scroll) de dx%,dy% :
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 width%
Paramètre la largeur du curseur à la valeur de width% pixels dans le dessin (drawable) courant.
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 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 :
Il est possible de combiner ces styles par addition des valeurs.
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 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 :
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.
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 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 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.
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 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 ON
gVISIBLE OFF
Rend visible ou invisible la fenêtre courante.
Retourne une erreur si le dessin (drawable) courant est un bitmap.
width%=gWIDTH
Retourne la largeur du dessin (drawable) courant .
x%=gX
Retourne l'abcisse x courante (à partir de la gauche) dans le dessin (drawable) courant.
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.
Les valeurs possibles pour l'argument flags% et leurs effets sur le Series 5 sont les suivantes :
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 :
Si on affecte simultanément par erreur les valeurs $400 et $200 , c'est la valeur qui est prioritaire.
Voir également la commande gBORDER.
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.
gXBORDER32 flags&[,w%,h%]
Les constantes pour les différents types de bordure sont définies dans le fichier CONST.OPH.
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 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.
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.
y%=gY
Retourne l'ordonnée courante y (à partir du sommet vers le bas) du dessin courant.
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&.
L'instruction HEX$(255) retourne la chaîne de caractères "FF".
La manière de compter en hexadécimal se fait comme suit :
0, 1,
2, 3,
4, 5,
6, 7,
8, 9,
A, B,
C, D,
E, F,
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) = (2 x 256)+(5 x 16)+(3 x 1) = 512+80+3 = 595 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+11 = 2667 en notation décimale.
La table suivante peut donc vous être également utile pour les conversions hexa / décimale :
Par exemple, &20F9 correspond à (2x&1000)+(0x&100)+(15x&10)+9, soit en notation décimale (2 x 4096)+(0 x 256)+(15 x16)+9 = 8441.
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.
h%=HOUR
Retourne le nombre correspondant aux heures de l'horloge système sous forme d'un entier compris entre 0 et 23.
i&=IABS(x&)
Retourne la valeur absolue - c'est-à-dire sans aucun signe - de l'expression de type entier ou entier long x&.
L'expression IABS(-10) retourne la valeur 10.
Voir également ABS, qui retourne la valeur absolue des nombres en virgule flottante.
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.
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 condition1
...
ELSEIF condition2
...
ELSE
...
ENDIF
Effectue :
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 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 variable
INPUT log.field
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
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.
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
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.
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.
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.
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.
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.
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.
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’ .
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.
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$.
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.
err%=KEYC(var stat%)
Abandonne l'appel précédent de la fonction KEYA avec l'état stat%.
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 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.
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 :
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.
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
LAST
Positionne à la dernière fiche d'un fichier de données.
LCLOSE
Ferme le périphérique ouvert avec la commande LOPEN. (Le périphérique est également fermé automatiquement à la fermeture du programme.)
b$=LEFT$(a$,x%)
Retourne les x% caractères les plus à gauche de la chaîne de caractères a$.
Si n$ contient la chaîne "Charles", l'instruction b$=LEFT$(n$,3) assigne "Cha" à b$.
a%=LEN(a$)
Retourne le nombre de caractères contenus dans la variable a$.
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
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 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’.
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.
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.
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.
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.
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.
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 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 :
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 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.
a=LOG(x)
Retourne le logarithme base 10 de x.
Utilisez la fonction LN pour avoir le logarithme naturel (en base e).
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 :
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.
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.
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 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.
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 :
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.
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 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.
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 :
Ces propriétés supplémentaires sont contrôlées en addtionnant les valeurs hexadécimales suivantes au code du raccourci clavier :
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.
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 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.
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.
m=MEAN(list)
m=MEAN(array(),element)
Retourne la moyenne arithmétique (average) d'une liste d'items numériques.
Cette liste peut être :
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)
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.
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’
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%.
Si la variable name$="Mc Connell" , l'instruction MID$(name$,3,4) va retourner la chaîne de caractères "Conn".
m=MIN(list)
m=MIN(array(),element)
Retourne la plus petite valeur d'une liste d'items numériques.
La liste peut être :
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
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.
m%=MINUTE
Retourne le nombre de minutes courantes à partir de l'horloge système (entre 0 et 59).
Pour 8.54am, la fonction MINUTE retourne 54.
MKDIR name$
Crée un nouveau dossier/répertoire.
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
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.
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.
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 .
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.
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(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) .
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'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.
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'.
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
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).
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.
Voir également les commandes FIX$, GEN$, SCI$.
OFF
OFF x%
Eteind l'appareil.
Quand vous rallumez l'appareil, l'instruction qui suit la commande OFF est alors exécutée.
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 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.
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’.
> EPOC et Symbian OS :
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.
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’.
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 :
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.
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.
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.
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 :
Les valeurs possibles pour l'attribut de off%(6) sont :
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.
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 x%
Met le programme en pause pour un certain temps, dépendant de la
valeur de x% :
Effets de x%
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.
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&.
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).
p=PI
Retourne la valeur de pi (3.14... ).
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 :
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.
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.
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 :
Afin d'afficher les numéros de fiche, vous pouvez utiliser les instructions suivantes :
IF POS<0
PRINT 65536+POS
ELSE
PRINT POS
ENDIF
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 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 list d'expressions
Affiche une liste d'expressions sur l'écran. La liste peut être ponctuée de l'une des manières suivantes :
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.
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.
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.
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.
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 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 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.
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
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 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.
INPUT a :b=a*.175 REM b=TAX
INPUT a :b=a*.175 :REM b=TAX
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.
PRINT "Ancien nom :" :INPUT a$
PRINT "Nouveau nom :" :INPUT b$
RENAME a$,b$
r$=REPT$(a$,x%)
Retourne une chaîne de caractères composée de x% répétitions de la chaîne a$.
Si on a a$="ex", l'instruction r$=REPT$(a$,5) retourne exexexexex.
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("").
r$=RIGHT$(a$,x%)
Retourne x% caractères les plus à droite de la chaîne de caractères a$.
PRINT "Enter name/ref",
INPUT c$
ref$=RIGHT$(c$,4)
name$=LEFT$(c$,LEN(c$)-4)
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.
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 ).
PROC rndvals:
LOCAL i%
PRINT "Random test des valeurs :"
DO
PRINT RND
i%=i%+1
GET
UNTIL i%=10
ENDP
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.
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.
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 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 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 :
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).
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).
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.
s%=SECOND
Retourne le nombre de secondes de l'heure courante récupérée sur l'horloge système (valeur de 0 à 59).
À 6:00:33, la fonction SECOND retourne 33.
EPOC et Symbian OS uniquement.
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.
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 :
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 :
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 :
Voir le document ‘Advanced.pdf’.
Voir également GETDOC$.
EPOC et Symbian OS uniquement.
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 :
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 name$
Paramètre le chemin d'accès courant pour atteindre les fichiers.
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.
s=SIN(angle)
Retourne le sinus de angle, un angle exprimé en radians.
Pour convertir de degrés en radians, utiliser la fonction RAD.
Ce mot-clé n'est supporté en OPL que pour Symbian OS v6 et plus incluant les Series 60 et Series 80.
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
s&=SPACE
Retourne le nombre d'octets libres sur le dispositif sur lequel le fchier courant (ouvert) se trouve
EPOC et Symbian OS :
PROC stock:
OPEN "c:\stock\stock",A,a$,b%
PRINT SPACE,"octets libres sur C:"
ENDP
s=SQR(x)
Retourne la racine carrée de x.
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 :
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.
L'instruction m=STD(arr(),3) retourne la déviation standard deviation des éléments arr(1), arr(2) et arr(3).
STOP
Finit le programme en cours d'exécution.
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 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’.
s=SUM(list) ou s=SUM(array(),element)
Retourne la somme d'une liste d'items numériques.
Cette liste peut être :
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.
m=SUM(arr(),3) doit retourner la somme des éléments arr(1), arr(2) et arr(3).
t=TAN(angle)
Retourne la tangente de angle, un angle exprimé
en radians.
Pour convertir de radians à degrés, utiliser la fonction DEG.
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 command
TRAP est une commande de gestion des erreurs. Elle peut précéder n'importe quelle de ces commandes :
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.
EPOC et Symbian OS uniquement.
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.
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.
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.
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 module$
Décharge de la mémoire le module module$ chargé avec LOADM.
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).
Voir l'instruction de boucle DO...UNTIL.
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.
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.
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.
... 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 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.
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.
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.
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.
VAL("470.0") retourne 470.
Voir également la commande EVAL.
v=VAR(list)
v=VAR(array(),element)
Retourne la variance d'une liste d'items numériques.
La liste peut être constituée :
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.
L'instruction m=VAR(arr(),3) retourne la variance des éléments arr(1), arr(2) et arr(3).
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.
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.
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 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’.
y%=YEAR
Retourne l'année courante sous forme d'un entier à partir de l'horloge système.
À la date du 5 novembre 2005, la fonction YEAR retourne la valeur 2005.