Text content (OCR)
La revue francophone indépendante pour les utilisateurs d'Apple
BASE DE
DONNEES
APPLEWORKS
UTILITAIRES
MAcINTOSH
ET APPLE II
WORDING...
‘ *y :
Mil
...LA solution pour relier aux Apple //e et ][+ :
un “Apple 3.5 GS Platinum” 800Ko
un lecteur Macintosh 800Ko
un lecteur Macintosh 400Ko
un lecteur Chinon 800Ko
un Unidisk 5,25” 140Ko
Connectée a n‘importe quel port, elle pilote deux lecteurs (méme
différents, pouvant totaliser 1,6 méga). Elle permet le travail bit
bit avec tous les lecteurs d’aujourd’hui (ce travail était impos-
sible avec l’Unidisk 3.5”).
Carte UDC : 1 050,00 F TTC franco
Tarif carte Pom’s Joker : 945,00 F TTC
Logma S.A. — 12, rue d’Anjou — 78000 Versailles — Tél : 39 51 24 43
Numéro 45
Domaine Public Mac
novembre-décembre 1989 Disquette Mac J
Editorial e: & fo Jean-Christophe Krust
Hervé Thiriez Page 5S Pears Sse Page 34
Then —_ 2 MacroMind Director
EERE St BOGE ; AuthorWare
[les J ile WG Tey Hae fre] = Philippe Mathieu
ay =) ey Page 6 = == Page 36
AppleWorks 3. Word et Laser
Dimitri Geystor it
ae Wording
Aiwa ———= | Page 9 fre] ‘al Christian Piard
aa) ae Page 40
Base de Données
Programmation AppleWorks Domaine Public
[z Dimitri Geystor Share-Free-Ware ;
e Jean-Yves Bourdin
i
ys) (ae Page 10 “Me We
=, =) eas Page 42
Organiseur II WMacihIOgh
J.-L. Schmitt
Page 17 Les News
frase] fre) Ariel Sebban
Math : e & Pythagore a a= Page 46
We Paul Canal
ee] 7 Page 21
TimeOut ReportWriter
Dimitri Geystor
Lies} (ell re
ag (=) (eee Page 23
Les nouveaux supports
Lemps-Machine
Echanitillon
= Alain Raynaud
C= Page 26
= ce Ariel Sebban
a) TS) Page 5S
Apple // for ever
Jean-Yves Bourdin
Ics He a
pag =) Page 57
Sondage Page 70
Courrier des lecteurs Page 71
Petites annonces Page 74
Mots croisés Page 74
Les annonceurs ; Bréjoux : page 8 ; Gribouille S.A. : page 16 ; Logitech : page 76 ; ToolBox : page 7.
Editions MEV - 12, rue d'Anjou - 78000 Versailles. Tél. : (1) 39 51 24 43, Directeur de la publication : Hervé Thiriez
Pom’s n° 45
Granp Concours pu Logic, GS
GS Cuus v’OR
Lr GS CLUB ORGANISE LE CONCOURS DU MEILLEUR LOGICIEL POUR APPLE IIGs, A COMPTER DU
1ER DECEMBRE 1989. CE CONCOURS EST OUVERT A TOUS.
| Des Prix EARS
| AU
| TROPHEE
TER PRIX UN DISQUE DUR INTERNE VULCAN 40 MEGAS GS Cuus :
2eME PRIX UN DISQUE DUR INTERNE VULCAN 20 MEGAS
3EME PRIX UNE CARTE ACCELERATRICE TRANSWARP Brejoux AE.
Lyon
Le Concours Peary.
VERSAILLES
Ce concours ne concerne que des logiciels dits “sérieux”
(voire professionnels) capables d’intéresser un grand
nombre d’utilisateurs. Les programmes proposés devront
étre en langue francaise, fonctionner sous ProDOS 16 en
mode Desktop (écran graphique, menus déroulants, ctc.)
et étre compatibles avec le GS/OS 5.0.
Quelques exemples et idées :
— utilitaires de gestion-disques ;
— ultilitaires de gestion de l’Ensoniq et du son ;
— base de données, gestion de fichiers ;
— comptabilité ;
— outils graphiques ;
— ete,
Les candidats au concours sont invités & présenter d’abord
au GS Club un projet écrit, détaillé, décrivant le but et les
finalités du programme, ceci dans le courant de janvier 90.
Le jury statuera sur la validité du projet, suggérera au
| CALENDRIER
REMISE AU CLUB DU PROJET |
— Janvier 1990
—Jun 1990 REMISE AU CLUB D’UNE
PREVERSION |
| —Sepremprt 1990 REMISE DE LA VERSION
DEFINITIVE
—Ocrosri 1990 — REMISE DES PRIX (APPLE
Expo) |
besoin aux candidats quelques idées ou modifications du projet et
décidera alors de I’habilitation du candidat 4 concourir.
Les programmes déja diffusés au 31 décembre 1989, que ce soit de
fagon commerciale ou en FreeWare/Share Ware, ne pourront étre
retenus, Les améliorations simples de produits déja existants &
cette date sont aussi exclues.
Si le projet est accepté, aucune diffusion publique du produit —
méme en pré-version—, ne devra étre faite avant la remise des prix
sous peine d’exclusion du concours.
Aucune contrainte concernant le langage de programmation n’est
imposée.
Les candidats devront prévoir un manuel expliquant les fonctions,
astuces et contraintes du programme.
Leur logiciel devra pouvoir se traduire facilement dans une autre
langueet,encas d’édition, le source devra étre remis a1’éditeur.En
outre, l’autcur s’engagera a assurer un suivi de son ceuvre.
Les trois logiciels primés feront l'objet d’une diffusion officielle
par la revue Pom’s.
CONTACT, RENSEIGNEMENTS, REGLEMENT :
GS Cius
Mr Denis MELCHIOR
6, IMPASSE DE LA CROIX POMMIER
94120 FonTenay sous Bots
Ont collaboré a ce numéro
Jean-Luc Bazanegue
Jean-Yves Bourdin - Jay Han
Dimitri Geystor - Olivier Herz
Jean-Christophe Krust - Nathalie Laudat
Daniel Lurot - Philippe Mathieu
Gérard Michel - Christian Piard
Joélle Piard - Alain Raynaud
Jean-Luc Schmitt - Ariel Sebban.
Directeur de la publication
rédacteur en chef
Hervé Thiriez
Rédacteurs
Jean-Luc Bazanegue - Christian Piard
Sidge social
Editions MEV — 12, rue d’ Anjou
78000 Versailles _ (1) 39 51 24 43
Serveur Minitel (1) 39 53 04 40
Publicité
Editions MEV
Diffusion
N.M.P.P.
impression
Mame — 49, boulevard Preuilly
BP 1701 —37017 Tours Cedex
® 4737.08.08
Photos
CP & JLB
Dessins
Gilles Coursier
Photogravure
Graphotec — 21, chemin de la Tour
92350 Le Plessis-Robinson
B (1) 46 30.44.49
Pom’s est une revue indépendante non
rattachée & Apple Computer, Inc. ni
4 Apple Computer France S.A-R.L.
Apple, le logo Apple, Mac et le
logo Macintosh sont des
marques déposées
d’Apple Computer, Inc.
IBM est une marque déposée de
International Business Machine.
PC et AT sont des marques déposées
de la Société IBM.
@Editions MEV 1989
Toute reproduction intégrale ou partielle,
effectuée par quelque procédé que ce soit,
sans l'accord écrit Editions MEV,
constituc une contrefagon.
Loi du 11 mars 1957, articles 425 et
suivants du Code Pénal.
Droits de traduction, de reproduction et
d'adaptation réservés pour tous pays.
Editorial
Apple Expo
Une débauche d'écrans 4 faire palir le Cinémascope, des
nuances 4 y perdre un coloriste, des versions 8 4 surprendre
votre disque dur de 600 mégas, des 68HC000 a surprendre
votre banquier, des streptomycines anti-dernier-virus... Des
Ilyper-HyperCard aussi. Des mégahertz encore. Et surtout
des visiteurs passionnés a la grand'messe Apple de plus en
plus orientée carte-de-crédit-épanouie.
Des Apple //? Un peu, trop peu, mais un Emile Schwarz bien
efficace au stand Apple. Et de bonnes nouvelles, une nouvelle
boutique 4 Paris : Bréjoux. Une a Argenteuil : ToolBox.
L'Apple // est toujours jeune, dopé par la passion.
Bréjoux et Pom/’s siassocient 4 l'initiative du GS Club
d'organiser un grand concours : le Trophée GS Club. Les
gagnants recevront des prix, mais ils ont aussi l'assurance de
voir leurs ceuvres logicielles éditées par votre revue préférée ;
les pré-projets déja recus laissent augurer du meilleur...
Au chapitre émotion, Jean-Luc Bazanegue nous abandonne
lachement, il est en route vers de nouvelles aventures, en
restant toutefois un rédacteur privilégié de la revue : nous
voyons poindre déja un programme Mac en C. Pour pratiquer
son humour dévastateur, nous aurions da ouvrir a cette
occasion une rubrique nécrologie ! Bonne route.
Un peu d'ordre dans les news s'avérait nécessaire : sur la
disquette Apple //, vous trouverez désormais un fichier
AppleWorks ordonnant les sujets abordés dans Apple // for
ever, ct sur la disquette Mac, le méme travail concernant les
News Mac sera confié 4 une pile HyperCard.
Hervé Thiriez
Pom’s n° 45
Discret :
L heure en
Votre Apple // n'a pas d'horloge ?
Voici une petite routine, discréte
puisqu'elle se cache dans la page 2,
avec laquelle vous indiquerez le
jour et l'heure 4 ProDOS : plus de
fichiers ‘sans date’, et pas de
conflit avec d'autres routines en
assembleur...
Introduction
Pour utiliser pleinement les possibilités de datation du
ProDOS, on peut, sous Basic, utiliser l’excellent Datheur
de Bruno Frénart paru dans le Pom’s 24. Mais j’ai souvent
rencontré des problémes de conflit avec d’autres aides a la
programmation en Rasic. Ainsi, Datheur on ces aides se
plantaient en présence de l'autre (souvent, sans qu’on
sache Iequel des deux I’avait causé, le Basic plantait, et on
perdait la main). Le petit utilitaire de mise a I"heure que je
vous propose a, quant a lui, une grosse qualité : il est uts
sommaire et offre des fonctions limitées.
Comment ¢a marche
Le fait que le programme soit ‘léger’ apporte ici un
avantage : il peut se loger tout entier dans le buffer
d’entrée en $200, endroit que tout le monde respecte
(contrairement a l’espace jamais libre en $300). En effet,
le Basic et ProDOS ne cessent pas de l’utiliser et de
chambouler ce qui y est, et personne n’ose y mettre ses
routines. Mais si ce n’est qu’un petit utilitaire de mise A
Vheure de la date et de I’heure du ProDOS, un petit
programme qui ne dure que le temps de la mise & I’heure et
qui est abandonné ensuite, comme aucune entrée au clavier
n’intervient pendant son déroulement, on peut y travailler
tranquillement. D’oii l’idée de ce programme.
Il faut toutefois apporter un bémol au ‘tranquillement’. En
effet, des que l’interpréteur de commandes ProDOS est
sollicité, il s’empresse d’ utiliser un zone commangant en
$280 pour y mettre le ‘pathname’ complet du fichier
1e 2
Jay Han
anquel on accéde. N’ayant pu comprimer le code de
manitre & ce qu'il n’y ail aucun conflit, je me suis
contenté d’y laisser un espace de maneuvre assez large
pour les utilisations courantes. Cependant, il ne faudra pas
que le nom du fichier (seul, sans préfixe) dépasse 12
caractéres, et que le nom complet avec préfixe dépasse 23
caractéres, sans quoi I’interpréteur de commandes (le Basic
Interpreter) se mettrait a ‘écraser’ le code.
Cette remarque ne vaut que pour ceux qui entreront la
récapitulation hexadécimale a la main puis la sauveront
avec un ‘Bsave’. Pour les autres, aucune crainte ; une fois
le programme chargé, le BI. n' écrit plus rien en $200.
Mode d’emploi
Tl est des plus simples. Pour lancer le programme, faire un
‘BRUN’ ou, micux, utilisez la commande “tirct”. Le
programme affiche alors une série de cinq chiffres,
respectivement : le jour, le mois, l'année, I"heure, et la
minute. Réglez ces chiffres avec les fléches gauche, droite,
haut, bas, puis validez le tout avec un <return>. C’est
fait, la date est enregisurée, vous pouvez faire le ‘SAVE’
salvateur et tout-a-fait 4 I’heure. Un conseil pour une
utilisation agréable : mettez cet utilitaire dans le disque
virluel /RAM, et appelez-le d'un nom court ; taper
-/RAM/T par exemple ne prend qu'un instant.
Comment saisir
la récapitulation
C’est un peu compliqué. Suivez bien le guide, ou achetez
la disquette d’accompagnement Pom’s, qui contient
d'ailleurs, comme d’habitude, bien des choses fort utiles.
Pour commencer, videz la mémoire de tout programme
Basic. Puis faites cALZ-151 pour entrer dans le Moniteur.
Tapez la récapitulation, sans omettre d’cspaccs, ni cn
rajouter. Puis faites :
BSAVE<nom>,A3912, B39FF
212<912, 9FFMJ
BSAVE<nom>,A$212,ES2FFI
Pom’s n° 45
Faites encore attention que <nom> ne dépasse pas les 12
caractéres, ct que le nom du fichicr complet, avec son
préfixe, ne dépasse pas 23 caractéres. Une fois ceci fait,
vous pouvez copier le fichier dans tous les sens sans
risque ; son nom peut avoir la longueur que vous désirez,
4 l’'intérieur toutefois des limitations du ProDOS.
En guise de conclusion
Cette utilisation possible de la zone $200 donne des idées.
Ainsi, on pourrait penser & une sorte de TimeOut sous
Basic, commengant par un petit module qui se chargera en
$200 et qui s’occupera de sauvegarder un portion de
mémoire sur disque puis de charger et lancer une
application a l’endroit sauvegardé. Cette application fera
certaines choses, et sortira en appelant un autre module en
$200 qui rappellera la portion de mémoire sauvegardéc
avant de rendre la main au ProDOS. A ce prix, il est
malheureusement impensable d’utiliser de tels systemes
sans Ics mettre préalablement sur Ic disque virtucl...
Source Time.Sce
+4* TIMER
*** RAPPELLE, MODIFIE, SAUVEGARDE LA DATE
*** PAR JAY HAN, AVEC PRODOS EDASM
4#** AVANT D'ENTRER LE CODE, 'BSAVE NOM, AS2
#** SAISIR PUIS SAUVEGARDER AVEC 'BSAVENOM!
*** OU LE NOM A UNE LONGUEUR DE ...:
ORG $212 712 CARACT.
#DONNEES ET PO.
DATE EQU $BF90
TAB zou $0
STORE = FQU $1
MINUTES EQU $1
HEURES QU $2
ANNEE = FQ $3
MOIS EQu 34
sour EQU $5
INVFLAG EQU $32
cH EQU $24
FQUELQUES ROUTINES DU
cHeo EQu $578
PRBYTE QU SFDDA
INKEY = EQU $FD1D
7 SAUVEGAROE
Lx £5
SAVE IDA TAB, X
PHA
DEX
BPL SAVE
#RECHERCHE DE LA DATE EN COURS
LDA DATE
PHA
AND iSiF
STA JOUR
ISR DATE+1
AND £SE0
La pomme sans les pépins
TOOLBOX
6, rue Henri Barbusse
95100 ARGENTEUIL
©: (1) 30 76 18 64
Le Magasin de I'Apple II
Vente directe et par correspondance
Toutes les nouveautés chaque semaine directement des USA
Achat et Dépot Vente de matériel d'oceasion
Démonstration de Matériels et de Logiciels
Avantagcs pour Ics Membres de TAssociation ToolBox
Disque dur 32MB Tempsd’accés 40Ms-SCSI 5920 Fr(TTC)
avec carte SCSI ProDOSS - ProDOS16 - GS/OS 5.0
- Tous les logiciels de qualité sont disponibles chez TOOLBOX.
Hyperstudio - Merlin 8/16+ - Publish it - Prosel 16 Instant
synthe - Tul Pascal Il- Appleworks GS - Printshop GS, ETC ...
Arkanoid II - Test Drive - Sword of Sodan - Dungeon Master -
Rocket Ranger - Zany Golf - Gnarly Golf ...
- Documentation francaise complate et support technique sur
nos produits
Programmes Freeware et Shareware
- Reprise des logiciels achetés chez TOOLBOX
- Catalogue de cartes d’extension RAM - Disques Durs - Librairie
Cours d'initiation : Systeme ProDOS/GSOS - Appleworks +
Timeout - Langages
Demander contre 50,00 Fr. notre catalogue complet (Nov. 89)
ISR
STA MOIS
EDA DATE+1
STA ANNEE
LDA DATE+2
STA MINUTES
LDA DATE+3
STA HEURES
#CONVERSION HEX EN DCB
conv
#BNE ASSURE C=0
BNE CONVi
conv2 STA STORE,X
BPL CONV
#POINTS DIENTREE A LA BOUCLE
OUCLE GENERALE
BIGLOOP LbY £4
sTY cH
Loop cpy TAB
BNE PRINT
ISR INVFLAG
PRINT LDA STORE,¥
USR PRBYTE
sE87F
Pom’s n° 45
IGS:
HIE:
me:
( BREJOUX.AE... ct
TOUS VOS APPLE II
SONT EN FETE!
Extensions mémoire (GS Ram et GS Ram Plus),
Alimentation permanente (RamKeeper)
Accélérateur 6.25 Mhz (TransWarp GS)
Compatibilité MS-DOS avec PC-Transporter,
Disque Dur interne 20/40/100 Mo Vulcan
Co-processeur mathématique (FastMath)
Le son avee Sonic Blaster, Audio Animator.
Extensions mémoire, Alimentation permanente
Disque Dur interne 20/40/100 Mv Vulcan
Disque dur winchester 3.5" externe 20 Mo
Accélérateur 3,6 Mhz (TransWarp) ete ...
Extension mémoire avec ou sans horloge et
CP/AM, UniDisk 800K et kit de mise a niveau.
TOUT LE MATERIEL APPLE II sur mesure:
Apple II GS, LaserWriter, ImugeWriter II...
LES MEILLEURS LOGICIELS a des prix U.S.A
dont en exclusivité: ProSel 16, HyperStudio
AppleWorks GS, AppleWorks 3.0
Nombreux prix 4 la baisse. Profitez en!
BREJOUX.AE
29 A rue Montribloud 69009 LYON
Tel: 78.36.52.69 Fax: 78.25.50.84
Récapitulation Time.Obj
Apreés avoir saisi ces codes sous monileur, vous les
Sauvegarderez par :
Bsave
0912:8F
o910:4a
0920785
0928:93
0930784
93a:n8
9940:ED
0948:24
0950:02
0958:5E
0960:20
vyee:co
0970:a7
0978:a9
0980:a0
o9a:e0
Time.obj, a$912, e$9f6
68 29 £0 6A 4A
4a 4A 85 04 AD 91 BF
03 AD 92 BF 85 01 AD 0990:D9 CC Fé 69 00 DB 95 U1
BF 85 02 A2 04 A900 0998:4C 57 02 FS EO 01 4c A?
01 FO 08 F8 18 69 01 69R0:02 CA 10 9F 30 9B EB EO
AA DO FA 95 01 CA 10 08A8:05 DO 98 A2 00 FO 94 AZ
AZ 04 86 00 AO 0¢ 84 —0980:05 AD 90 BS 00 FO 08 ce
C4 00 DO 02 46 32 B9 0988:F8 38 £9 01 DE DO Fa 96
90 20 DA ED 38 26 32 99C0:95 99 CA DO EC 6D 92 BE
7B 05 86 10 EB AI AQ O9CEZAS 03 OA 85 00 AS 04 OA
1B FD AB AG 00 BS 01 99D0:0A OA OR OA OS OS BD 90
88 FO 3A D0 14C5 AO 998: BF BA 2A > 00 BD 91 BF
D9 AN AD AO AD AO AO —O9ED:AS 07 BD 93 AF 68 95 00
AQ AD AO AO CS AU CY O9EBZE8 EO 06 D0 F8 60 68 95
AO CO 95 FO 18.CO 8A 99F 0:00 E8 £0 06 DO FB 60 84
11 C0 8D FO 21 CO 8D © «09F 8:22 56 4F 40 55 4D 45 3A
STO. VAL
BAS
RET?
REST
ome
SED
SRC
oMP
SBC
sya
DEX
ANE,
STA
LDA
ASL
STA
LDA
ASL
ASI.
ASL
ASL
ORA
TxA
ROI,
PLA
STA
INK
cex
BNE
Rrs
HAUT
£895 ECHE DROITE
pKOLTE
ESER
BAS
£98D
RET
£588
INPUT IGNORE LE RES?
FAUGMENTE LA VALEUR.
a) 2RFQ ASSURE C=1
STORE, x
BIGLOOP
#DIMINUE LA VALEUR
#1 #BEQ ASSURE C-
STO, VAL
{DECREMENTE TA.
STO,LOOP ;X>0 OK
RST.LOOP ;X<0 ALORS X=4
#INCREMENTE TA:
£5
STO.L00P —3X<5:0K
£0 #X-5 ALORS X-0
SYO.LUOP TOUJOURS PRIS
B
B
SCONVERSTON NCR RN HEX
£5
£0
STORE-1,X
RET
1
RET2
SYUKE=1,
RRTT 2A LA SORITE, X=0
GMISE DANS LA PAGE:
DATE+2 ¢A CONTIENT LES MINUTES
ANNE
TAB #ANNEE
MOIS
Jour
DATE sMOIS ET JOUR
2X0
TAB + TAB=TAMPON
DATE+1
HEURES HEURES
DATE+3
F410 Xe
#RESTITUTION
TAB, X
£6
REST
Pom’s n° 45
GLOBALE PRODOS
Dimitri Geystor
Nous vous le laissions déja entendre, et cette fois-ci c’cst
une confirmation.
Tl est temps de lever un coin du voile, maintenant que I’on
commence a y voir plus clair. C’est que |'histoire
“secréte” de la francisation d’AppleWorks 3.0 a été,
jusqu’a présent, pleine de rebondissements.
Vous comprendrez mieux les choses si je rappelais que
I’un des auteurs du nouvel AppleWorks 3.0 est Randy
Brandt — ce méme Randy Brandt qui, lorsqu’il avait congu
SuperMacroWorks, en avait fait une variante francaise
(pour AppleWorks 1.4), sans méme savoir, m’a-t-il
confié, si quclqu’un 1’utiliscrait jamais... Le hasard a
voulu que, grace 4 pas mal d’efforts de ma part et & un
moment décisif, grace a l’entrée en sctne de Pom’s, la
prémonition de Randy devienne réalité.
Toujours grace 4 Randy, qui a su me mettre en contact
avec Daniel Lurot (mais je vous ai déja conté cette histoire
—voir le numéro 38 de Pom’s—), les TimeOut francais
ont vu le jour et vous en étes les bénéficiaircs privilégiés.
Je n’ai donc été qu’a moitié surpris quand, il y a trois
mois, j’ai regu de Claris USA un coup de téléphone de la
directrice de marketing des produits Apple //. Elle
m’appclait de Ia part de Randy, et voulait savoir quelles
étaient les perspectives pour une version francisée
d’AppleWorks 3.0. En fait, ses projets étaient encore plus
ambitieux, car elle souhaitait une véritable “localisation”
multilingue (comme on le dit dans le jargon de ces boites)
sous l’égide et l’étiquette de Claris : emballage, manuel,
service aprés-vente, et tout, et tout.
Pressenti, Daniel Lurot se faisait fort de réaliser la version
frangaise (et aussi I’allemande, soit dit en passant). Des
pourparlers s’engagérent — et qui dans ces pourparlers
flancha le premier ? Claris soi-méme : son département
juridique aurait soufflé a l’oreille de la direction
commerciale qu’un logiciel sous emballage Claris voudrait
dire que Claris y engagerait non seulement beaucoup
d’argent, mais aussi toute sa responsabilité. Prise en
tenaille entre les juristes et les financiers de I’ entreprise (et
quelle entreprise, c’est un “machin” atteint de gigantisme a
l'image d’Apple), la directrice idéaliste dut tempérer sa
vision.
Plus question donc, pour quiconque, de vendre un
AppleWorks 3.0 frangais complet, En revanche, si
quelqu’un était capable —me dit-on— de franciser un
leWorks 3.0
AppleWorks 3.0 américain (sans vendre un AppleWorks
pour autant, nuance !), Claris n’y voyait aucun inconvé-
nient, et donnait sa bénédiction des deux mains. Quand a
l’AppleWorks 3.0 américain, et lui seul, ii serait
disponible par le réseau des distributeurs habituels Claris.
Aprés avoir versé une larme sur un beau projet mort-né,
on pouvail quand-méme publier les bans d'une future
union entre l’AppleWorks 3.0 américain, vendu cn France
par Bréjoux, et un logiciel de francisation congu et
commercialisé par Pom's (qui, lui, ne se dédisait pas).
Mais attention, les futurs époux faisant chambre A part,
chaque utilisateur devra acheter les deux logiciels.
Dvailleurs, Bréjoux s’étant fort bien débrouillé, tout
possesseur d’un AppleWorks authentique quelle qu’en soit
la version (1.2, 1.3 ou 1.4 et méme 2.0) peut d’ores et
déja l’échanger contre la somme vraiment trés modique de
970 F TTC. Faute de quoi il devra eu faire l’acquisition
pour le prix normal, et encore trés abordable, de 1770 F
TTC. Vu ce que représente l’AppleWorks 3.0, c’est une
aubaine.
Pour amplifier l’aubaine, Pom's proposera de son cOié, en
méme temps qu’une francisation de cet AppleWorks, Ic
nouveau et plus puissant UltraMacros 3.0 (lui aussi
francisé). A quel prix, me direz vous ? Il n'est pas encore
décidé, car la francisation est en cours et fixer un prix
risquerait d’étre préjudiciable soit 4 ceux qui font le travail,
soit aux acheteurs. Disons que ce sera le plus juste prix,
pour que nul n’y trouve & redire.
La date ? Au tout début de I’annéc prochaine — I’horizon
s’approche.
Et les TimeOut actuels ? Une chose est certaine, ils ne
seront compatibles qu’avec l’AppleWorks 1.4
(actucllement €puisé, mais dont Bréjoux essaie de faire
ré-imprimer un certain nombre d’exemplaires). Pom’s
continuera donc a les diffuser. Il y aura sans doute aussi
quelques TimeOut 3.0 francisés parmi les plus puissants
et les plus professionnels : SpreadTools, ReportWriter,
SuperFonts, Graph, etc. Mais j’empiéte sur I’avenir,
évitons de tirer des plans sur la cométe.
Pour l’heure, fid@le 4 sa vocation, Pom’s a relevé seul le
défi de l’AppleWorks 3.0 francisé. Comme naguére Randy
Brandt pour SuperMacroWorks, misons sur son succes.
G
Pom’s n° 45
——
PL
10
Programmation AppleWorks
Dimitri Geystor
Quoi de plus naivement innocent qu’une base
de données AppleWorks - et quoi de plus rétif
A manier, en vérité.
Cet article yous propose un ensemble de
macro-commandes qui yous faciliteront la
tache ; ces commandes sont décrites et
commentées ci-dessous. Il est recommandé d’en
faire un fichier Task, & la maniére du fichier
Task pour Traitement de textes présenté dans
le numéro 43 de Pom’s. Ce numéro 43 donne
des explications complétes sur les fichiers
Task d*UltraMacros.
En préambule, voici un rappel de quelques notions :
® Un fichier ‘lask est un fichier de macros, de type
SYS, que vous pouvez créer avec I’application Macro
Options d’UltraMacros. Une fois créé, ce fichier réside aux
cétés du fichier ULTRA.SYSTEM sur votre disquette
AppleWorks. Il conticnt vos macros pré-compilées prétes
& ’emploi, et n’a pas besoin d’étre chargé sur le Bureau
d' AppleWorks pour €ire activé.
> On peut lactiver instantoe*mcni a partir d’Apple-
Works par l’application Macro Options du menu
TimeOut, Dans ce cas, la deuxitme macro du fichier sera
automatiquement exécutée. On peut aussi l’activer avant
de démarrer AppleWorks au moyen d'un sélecteur de
programmes du type ProSel ou Bird’s Better Bye. Dans ce
cas, le fichier Task provoque automatiquement le démar
rage d’AppleWorks, et exécute la premiére macro qu’il
contient.
"Le fichicr “source” (c’est-d-dire les macros écrites en
Tdt AppleWorks) est nécessaire une seule fois, a la
création du fichier Task, Ensuite, on n’en a plus besoin
pour activer les macros, mais il est sage de I’archiver pour
pouvoir relire les commentaires en cas de modifications.
La disquette Pom’s 45 contient le fichier Task nommé
BDD.TSK, qui correspond aux macros décritcs dans cet
article.
Elle contient aussi le fichier d’aide TO. AIDE. BDD,a
placer dans le méme sous-catalogue que vos autres
applications TimeOut. Vous pourrez l’appeler avec la
commande Option-?.
Macros de démarrage du fichier Task
<ba-$>:<all (Envoie au Menu principal d'Apple
ks, en cas de démarrage par sé
lecteur, hors AppleWorks)
(correspond 4 la pause pour insér
er le disque Programme }
(valide le date)
(enchaine sur la deuxiéme macro)
Note : Si vous avez un lecteur 5,25”, e/ou si vous n’avez
pas d’horloge, faites précéder les <rin> correspondants
d'une commande <input> afin qu’AppleWorks fasse la
pose qui permettra de retourner la disquette eYou insérer la
date.
<ba
<all (Démarrage avec Macro Options)
msg ' Macros BdD activées '>!
Dans cet exemple, la deuxitme macro contient
simplement un message d’information. Comme la
premiére macro renvoie aussi a la deuxiéme, ce message
s’affichera dans tous les cas de lancement du fichier Task.
Macro de lancement des fichiers Task
Cette macro s’utilise & partir d’ AppleWorks. Elle affiche
une liste des fichiers Task disponibles.
<ba &>:<all
$0="Macro Options"
oa-Esc find rtn rtn
msg ' Choix = tléches.
ESC pour abandonner ':
KIN pour valider,
begin k=key
if k=10 down rpt olse if k=11 up rpt el
se
if k=13 rtn stop clse if k=27 esc esc s
top >!
Macro d’aide (appel de To.Aide.BdD)
?:<adb
$0-"Aide.Bdp"
oa-esc sa-ctrl-f (cherche $0; resultat da
ns 2)
if z = 0 then msg $0 +
'n @ pas été touve
: stop (on arréte tout si la recherch
e est négative )
elseoff : rtn>! (démarrer l'application)
Les deux macros ci-aprés sont le nouveau “module de
recherche ZMM v2.0”.
La recherche passe successivement en rcvuc tous les
menus TO, jusqu’& ce que l’application demandée soit
trouvée, ou la liste épuisée.
hell
Pom’s n° 45
<ctri-f>:<all ; y - peek 7794 * 256 + peek 779
3 (identif.le premier menu)
begin
sa-ctrl-z (recherche avec ZMM v1.0 )
if z = 0 then tab (négatf, changer de menu)
x = peek 7794 * 256 + peek 7793 (identifica
tion. du menu actuel)
ifnot x = y then (si nouvean menu, continue
la recherche)
ept>!
NOTE: si x = y on est revenu au premier men
u, il nty a pins qu'a abandonner...
éctrl-z>:<all : 2 = 0: find : z= 1>!
Module simple (pour liste unique), donne le
résultat booléen dans Z : 0 = pas trouvé, 1
= trouve.
Macros concernant
les bases de données
Rappel de quelques notions
Un fichier BdD contient un ensemble d’ informations,
regroupées en “fiches”, dont chacune contient A son tour
un méme nombre de “rubriques”, ou “catégories”. Ces
catégorics sont les données élémentaires dont la Base est
composée.
On peut consulter directement ces informations a l’écran,
soit fiche aprés fiche (format monofiche), soit sous forme
d’un tableau od chaque fiche occupe une ligne (format
multifiches). On passe d’une présentation a |’autre au
moyen de la commande @-Z.
Alors que la souris d’UltraMacros permet de circuler sans
entraves dans un fichier Tableur, il n’en est pas de méme
dans unc Base de données en format multifiches :
@® Les fléches (donc la souris) déplacent le curseur &
Vintéricur d’une seule rubrique ; Ce sont les
commandes TAR et @-TAB qui font sauter le curseur de
catégorie en catégorie, vers la droite et vers la gauche
respectivement,
® Ensuite, ct c’est une limitation beaucoup plus
génante, quand le curseur arrive 4 l’extréme droite de
l’écran, un TAB de plus le fait passer au début de la ligne
suivante. De méme, si le curscur est 4 gauche de I’écran,
@-TAB le fait remonter A l’extréme droite de la ligne
précédente. Si votre fiche est longue, il y a de bonnes
chances qu’un certain nombre de catégories restent
toujours hors le vue, 4 la droite du tableau.
Que faire ? De deux choses l'une : soit passer en mode
monofiche avec @-Z (et on perd le bénéfice de la vuc
d’ensemble), soit restructurer le format multifiches avec la
commande @-X d’AppleWorks : c’est possible, mais
fastidieux.
Mon premicr souci a donc été de construire quelques
macros qui contourneraient ces inconvénients.
Nous allons voir tout d’abord quelques macros de
déplacement rapide du curseur, en format multifiches, dans
la limite des catégories visibles. Pour faire sauter le
curseur en début de ligne (ou de fiche), il suffit de tirer
parti d’un comportement “inné” d’ AppleWorks : si l’on
fait @-X et qu’on revienne aussitét a l’écran de départ, le
curseur est toujours renvoyé a la premitre catégorie de la
ligne (ou de la fiche).
Curseur sur la premiére catégorie visible
de la fiche
pi<adb
oa-x esc esc>!
(curseur sur lére catégorie visible)
Pour envoyer le curseur a la derniére catégorie (visible) de
la ligne, les choses sont moins simples. On procéde
comme suit : on envoie d’abord le curseur sur la premitre
catégorie de la ligne avec <sa-p>, on fait <oa-tab> pour
reculer 4 la catégorie visible précédente c’est-a-dire
justement la derniére catégorie de la ligne au-dessus, puis
on fait <down> pour revenir a la ligne de départ.
Comme toujours, pour une bonne programmation, il faut
essayer de prévoir Ic cas particulicr qui fait exception : si
Je curseur est au début de la premiére ligne, impossible de
reculer avec <oa-lab>. II faut taper d’abord <down>, et
<oa-tab> cnsuitc. Et comment savoir si I’on est sur la
premiére ligne ? La commande UltraMacros <posn x,y>
renvoie, fort heureusement en “‘y” le numéro de la fiche.
Au fait, comme la commande <sa-p> fonctionne aussi en
format monofiche, pourquoi ne pas concevoir une
commande <sa-d> capable de renvoyer a la derniére
catégorie visible, quel que soit le format ? Aussitét dit,
aussit6t fait, et voici le résultat :
Curseur sur la derniére catégorie visible
de la fiche
d:<adb (curseur sur derniére catégorie visib
le de la fiche)
Pposn x,y (y est le numéro de la fiche)
p=peek $7020 (quel format ?)
if p=82 goto ba-4 else (si monofiche, aller
en ba-4)
if y=1 sa-p down oa-tab else (si 1ére lign)
Sa-p oa-tab down >! (sinon)
Note : A tout moment, la commande k=peek $7¢20
d'UltraMacros permet de connaitre le type d' affichage :
Pom’s n° 45
11
12
monofiche si k = 82, multifiches si k = 47. Par exemple :
<ba-9>:<adb
k-peck $7c20
if k=82 bell msg ' Mettez-vous en format
multifiches avec Pomme-Z ' +
stop>!
(verifier format)
<ba-4>:<adb (sous-routine : format monofiche)
if y-1 sa-p oa-down up else
Sa-p up oa-down >!
Déplacements rapides en format multi-
fiches
| Pour des déplacements rapides dans ensemble d’ un format
multifiches (toujours dans la limite des catégories
| visibles) essayez la macro suivante :
| 2seadp (déplacement du curseur dans tableau av
ee fléches)
(format multifiches, svp)
‘ Fléches/souris déplacent curseur, BSC
revient au mode normal ':
begin k-key (cette boucle réaffecte les t
zoom
msg
ouches)
if k=@ va-lab cpt else
down rpt else
| up ipl else
tab rpt else
msg "": stop
else rpt>!
Organisation d’une présentation
Rappel : La commande @-X sert A modifier l’organisation
des catégories d'une fiche. En format monofiche, on peut
seulement déplacer les catégories. En format multifiches,
on peut non seulement déplacer les catégories avec
@-{léches, mais aussi en effacer certaines avec @-E ; une
catégorie effacée ne disparait que provisoircment, ct on
peut la faire réapparaitre avec
Par conséquent, un format multifiches qui a subi des
manipulations peut afficher un nombre de catégories
inférieur au nombre de catégories définies lors de la
création du fichier, En outre, il peut les afficher dans un
ordre différent de celui des catégories définies initialement.
AppleWorks se souvient, cependant, du nombre de
catégorics définies initialement, et de leur ordre.
Dans UluaMacros, lacommande <posn x, y> donne en
x le numéro de la catégorie telle que définie initialement,
et en y le numéro de la fiche.
<peek $7c23 * 256 + peek $7c?7> donne le no
mbre Lotal de fiches,
<peek $7221> donne le nombre de catégorie d
éfinies initialemeat,
<peek $?cdc> donne le nombre de catégories
lement présentes en format multifi
ches.
Par exemple, la macro suivante (en format multifiches)
donne plusieurs renseignements.
Renseignements sur une fiche
fi<adb (renseignements sur la fiche)
zoom (format multifiches, svp)
insert oa~a (rend le curseur plus visible)
peek $7¢23*256 tpeek $7c22 $1 = str$a
peek $721 $2 - strget
v=peek $7ede $3-str$v:
posn o,f $4 - str$c: $5 - str$ fi:
msg ' Fiche '+$5 + ' de '+$1+4"' fiches
+ Cat.définie No ' + $4 + ', Tot.Cat.= '
+ S2EEyisibles = 9 + 83+ * ¢
key msg "">!
Daas les macros qui vont suivre nous allons tirer parti de
la commande @-X pour réorganiser le format mullifiches,
Note : Pour minimiser les clignotements d' écrans lors
de Il’ exécution des diverses commandes successives,
nous utiliserons aussi deux sous-routines spéciales
proposées par Randy Brandt pour déconnecter, puis
reconnecter I écran. Ces routines spéciales font partie
des nombreux exemples de la récente disquette
MacroTools II, disponible en version francaise auprés
de Pom's.
Voici ces deux sous-routines. Elles fonctionnent partout
dans AppleWorks. Amusez-vous & les essayer : vous leur
trouverez sirement d’autres emplois.
Connecter et déconnecter I’écran
inhiber 1'écran)
poke 4114, 96>!
i:¢all :
poke 4112,169 :
(sons-rontine +
poke 4113,0:
2:<all (sous-routine : désinhiber 1'écran)
poke 4112,96 >!
Passons maintenant a une application simple. La macro
sa-x échange les colonnes | et 2 du format multifiches.
Echanger les deux premiéres colonnes
xz<adb (échanger col.1 et col.?)
zoom
sa-1 (inhiber 1'écran)
coax ca->escesc (échanyer les 2 col.)
{reconnecter 1‘écran)
(nécessaire pour “valider")
sa-2
esc esc!
Voici maintenant quelques macros un peu plus complexes.
Cette fois-ci, on ne déconnecte pas I'écran, car l’opération
Pom’s n° 45
est contrélée visuellement. @-x envoie A I'écran
“CHANGER ORGANISATION”, on est invité & placer le
curseur sur la catégorie voulue, puis chaque macro fait son
travail.
Ces macros sont pilotées par souris (Clic = RTN), mais
elles peuvent aussi tre commandées du clavier.
Effacer une catégorie
(effacer une catégorie)
ba-1 (sélection de la catégorie)
oa-E (effacement)
esc esc >! (retour)
Insérer une catégorie
Note : la catégorie est insérée ala gauche du curseur.
iz<adb (insérer une catégorle)
x=peek $7c21 (nombre de catégories définies)
yo-peek $7cede (nombre de catégories visibles)
if x=y bell msq ' Toutes les catégories défin
ies sont visibles ‘:
stop else fon arréte si rien 4 insérer)
bal (sous-routine : sélection positiun)
oa-i (écran "Insérer catégorie)
msg ‘ Sélectionner la caléyurie 4 insérer, va
lider avec CLIC ':
begin k-key
if k=27 esc esc esc stop else
if k=10 down ret else
if k=11 up rpt else
ifnot k=13 tpt else
rtn (validation)
esc escr! (etuur)
Les deux macros suivantes sont congues pour enchainer
plusieurs modifications successives, sans jamais quitter
V’écran “CHANGER ORGANISATION” : quand on a
changé une largeur de colonne, ou déplacé une catégorie on
clique et on retombe sur le début de la macro ; on peut
alors soit modifier une autre catégorie, soit quitter avec
ESC.
Note : il est aussi possible de quitter toutes ces
macros avec ESC @ tout moment, méme si le
message ne le dit pas.
Modifier une largeur de colonne
Li<adb (modifier une largeur de colonne)
ba-1 (sélection de 1a catégorie)
bell
msg * Fléches Dr/Gauche pour Ela
rgir/Rétrécir ; CLIC pour terminer ':
begin k=key
if k=27 esc esc stop else
if k=8 oa-left pt else
if k=21 oa-right
if k-13 goto sa-b
rpt>!
rpt else
else
Déplacer une catégorie
b:<adb (bouger une catégorie)
ba-l Slection de la catégorie)
bell
mog * Fléches Dr/Gauche pour dép
Jacer la cat.; CLIC pour terminer ':
begin k-key
if k=27 esc esc stop else
if k-21 oa-> rpt else
if k=8 oa-< rpt else
if k-13 goto sa-b else
rpt>!
Astuce : Comme il n’existe pas de commande simple pour
revenir a l’ordre initial des catégories, il est recommandé
de créer une premiére fiche ob chaque catégorie contiendra
son numéro d'ordre initial : 1, 2, etc. Si cette fiche est
placéc au début du format monofiche, elle sera
constamment visible sur l’écran “CHANGER
ORGANISATION” (celui que fait apparaitre #-X), et il
yous sera alors trés facile de rétablir l'ordre initial avec la
macro <ba-d>.
Routine de sélection pour les macros
précédentes
<ba-1>:<adb (sélection de la catégoric)
zoom (format multifiches, svp)
bell
insert oa-a (rend le curseur + apparent)
mag ' Position avec Fléches.D/G
+ CLIC = Valider ; ESC = Stop
oa-x
begin ctrl-x k=key (ctrl-x sert 4 réaff
icher le curseur)
if k=27 esc esc stop else
if k-21 right tpt else
if k=@ left rpt else
ifnot k-13 rpta!
Nous sommes maintenant préts & écrire les macros qui
permettront de faire circuler un format monofiche de
gauche a droite et de droite 4 gauche, avec Option-Fléche
droite et Option-Fléche gauche.
Le principe est le suivant :
® On commence par lire le nombre de catégories
actuellement affichées avec peck $7cdc. On déconnecte
Lécran, on fait @-X, et on met un compteur a zéro.
@ Ensuite, les deux macros sont différentes
Option-FLéche gauche, qui décale une catégorie vers
la gauche, se contente d’une boucle unique qui déplace la
Pom’s n° 45
13
catégorie la plus a gauche de n positions vers la droite ;
Option-Fléche droite a besoin d'abord (premitre boucle), de
Placer le curseur sur la catégorie 4 déplacer, puis d’une
dcuxiéme boucle qui raméne cette catégorie de n positions
vers la gauche.
® Enfin, on revicnt au format multifiches, on reconnecte
l’écran et on fait <esc esc> pour valider l'opération.
Décaler un
gauche
liste multifiches vers la
<left>:<adb (décaler une liste vers la gauche)
zoom (format multifiches, svp)
n=peek $7ede (nb de catégories affichées)
sa-l (on déconnecte 1'écran)
Oa-x x=0 (CHANGE ORGANISATION, compt 4 0)
begin (déplacer catégorie : boucle jus
qu'a x=n)
x=x+1 ifnot x=n oa-> rpt else
esc esc sa-2 (retour 4 la liste et reconn
ecter 1'écran)
esc esc >! (valider)
Décaler une liste multifiches vers la
droite
<right>:<adb (décale une liste vers la droite)
zoom (format muititicnes, svp)
n=peek $7cde (nb de catégories affichées)
sa-1 (on déconnecte 1'écran)
oa-x x-0 (CHANGE ORCANISATION, compt 4 0)
begin (boucle 1 : curseur sur catégori
e 4 déplacer)
x=x+1 ifnot x=n right rpt else
begin (boucle 2 : déplacer catégorie)
x=x-1 ifnot x=0 oa-< rpt else
esc esc sa-Z (retour 4 la liste et reconn
ecter 1'écran)
esc esc >! (valider)
Moins il y a de catégories dans une fiche, et plus ces
macros s’exécutent rapidement. On ne peut pas éviter le
léger clignotement di a <esc esc>, mais on a bel et bien
réalisé un “scrolling” horizontal, et surmonté l'une des
carences les plus agagantes de la base de données
d'AppleWorks 1.4... En fait, ce “scrolling” est une boucle
sans fin, et si vous répétez la méme commande n fois,
vous vous retrouvez au point de départ.
Avant de passer & autre chose, trois petites macros bien
utiles pour la saisie :
Return envoie vers le bas
(format multifiches)
Note : C'est le bon choix pour utiliser la commande
AppleWorks @-", qui recopie la cellule de la ligne placée
juste au-dessus.
<ba-down>:<adb (return - vers le bas )
poke $7cld,68 >!
Return envoi la droite
(format mu
vers
‘iches)
<ba-right>:<adb (return = vers la droite)
poke $7cld,A2>!
Copier une rubrique
(tous formats)
e:<adb (copier une catégorie)
cell
msg ' Placez le curseur sur la destinatio
n, puis RTN '
input sa-0 rtn msg
Localiser ou rechercher ?
La Base de données, comme les deux autres modules
d’AppleWorks, est dotée d’une commande @-L pour
“Jocaliser”. Mais cette commande fonctionne de fagon un
peu différente :
® La référence & chercher ne peut étre qu'une chaine de
caractéres (max 30 car), sans distinction de majuscules
ou minuscules,
® Larecherche se fait d'un coup, du début jusqu’a la fin
de la liste des fiches.
® Si la liste a été préalablement sélectionnée par @-R,
la recherche ne portera que sur la sélection ainsi
obtenue. L'inverse n'est pas vrai ; si vous faites d'abord
une recherche par @-L, et aussit6t apres une sélection par
@-R, la sélection ne ticndra pas compte du résultat de la
recherche précédente. Autrement dit, le résultat de @-L est
éphémére, a simple valeur indicative, alors que le
remaniement par #-R reste en vigucur jusqu’a la sélection
suivante (le résultat de @-R est méme conservé sur disque,
si vous sauvegardez le fichier 4 ce moment-la).
® Toutes les fiches répondant au critére de recherche sont
affichées immédiatement (pas de “Chercher suivant ?”
comme dans le TdT). Moralité : il vaut toujours mieux
faire la recherche & partir d’un format multifiches, pour
apprécier le résultat d'un seul coup d’oeil.
® L'objet de la recherche est toujours une fiche entiére.
et la demande de recherche #-L ne permet pas de se
limiter & telle ou telle catégorie. C’est sans doute le plus
grave défaut de cette commande, par ailleurs fort efficace.
La commande @-R de la Base de données n‘est pas une
commande de recherche a proprement parler, mais une
14
Pom’s n° 45
commande de sélection. Elle permet de choisir la catégorie
qui fera l’objet de la sélection, le type de la sélection (égal
A, contient, commence par, etc.), et opére, si on le
souhaite, sur trois niveaux de sélection successifs liés
entre cux par Ics opérateurs booléens “et” et “ou”, plus un
opérateur “A” qui sélectionne toutes les catégories
comprises entre deux valeurs données.
C'est donc un outil trés puissant, et de ce fait plus “lourd”
a manicr. Rien ne vous empéche, évidemment, de
construire des macros congues pour accomplir une
sélection particuliére, en fonction de vos besoins, bien au
contraire ! Mais c'est du travail sur mesure, que vous seul
pourrez faire. Cependant, les macros ci-aprés sont des
exemples que vous pourrez facilement adapter a vos désirs.
La macro qui suit a un réle bien délimité : utiliser la
commande @-R (régles de sélection) pour faire une
recherche, comme avec @-L (localiser), mais avec la
faculté de choisir d'abord la catégorie sur laquelle se fera la
recherche. J'ai utilisé 4 cette fin le critére “Commence
par...”, & concurrence de 10 caractéres, qui permet une
recherche trés souple. Par exemple, dans un fichier
Adresses, on pourra faire une recherche immédiate sur la
ou les premiéres lettres soit du nom, soit du prénom, soit
de la localité, etc. On pourra méme retrouver un numéro
de téléphone dont on se rappelle les premiers chiffres.
Recherche rapide d’un mot dans une
catégorie donnée
Note : J’ai choisi délibérément de sélectionner la catégorie
de référence a partir d’une liste en format multifich€s. Ceci
exclut les catégories non visibles a !’écran. Par contre,
dans Ia variante sa-g donnée plus bas, le choix est possible
& partir de toutes les catégories définies.
m<adb (recherche d'un mot dans une carégorie)
zoom fon cherche en format multifiches)
insert oa-a (rendre le curseur + visible)
bell msg ‘ Fléches = Curseur sur 1a colon
ne 4 prospecter. RIN = Valider ':
begin ctrl-x k=key (boucle : choix de la
eatégorie)
if k=27 bell msg ‘ Abandon ‘ : stop else
if k=21 tab rpt else
if k=8 oa-tab rpt else
ifnot k=13 rpt else
posn x,y (x est 1a catégorie choisie}
poke $7edd,0 oa-r (sélection - toutes les
fiches)
print str$ x : (catégorie sur laquelle se
fait la recherche)
rtn
>8< (régle de sélect = "Commence par...")
rtn
msg ' Tapez le début du mot cherché, vali
dez avec RTN ':
$l=getstr 10 print $1 : rtn
esc (pas d'autre sélection)
$i=screen 20,13,3 if $1="Pas" : msg "" :
key ese osc stop
(test : échec de la recherche)
else bell {sinon, recherche réussie, fin)
msq ' Terminé ; faire SA-T pour revenir 4
"Toutes les fiches" ‘>!
Comme Ic résultat est permanent (a la différence de #-L),
il faut un moyen rapide de revenir A I'affichage “Toutes les
fiches”.
Le voici :
Retour 4 la sélection “Toutes les fiches”
ti<adb {sélection ; toutes les fiches)
poke $7cdd,0 esc esc >!
Voici une autre macro, qui sélectionne une ““gamme” de
fiches, située entre deux critéres que vous indiquerez, et ce
sans qu'il soit nécessaire de faire un ti (@-T) sur la
catégorie en question,
Par exemple, supposons que dans votre liste d’adresses,
vous ayez fait un wi alphabétique sur les prénoms, et que
yous souhaiticz trouver (sans modifier la présentation)
toutes les fiches od les noms commencent par D, E, F et
G : actionnez la macro ci-aprés, et donnez comme
premiére référence “d”, et comme deuxitme référence “g”.
Elle fera le reste.
Sélection d'une gamme_ de fiches dans
une catégorie
g:<adb (sélection d'une gamme de fichos dans u
ne categorie)
zoom oa-z (cherche en format monofiche)
insert oa-a (rendre le curseur + visible)
bell msg ' Fléches H/B - Cursecur sur la cat
egorie 4 prospecter. RIN = Valider ':
bogin -x k-key (boucle : choix de la ca
tégorie)
if k-27 bell msg ' Abandon ' : stop else
if k=11 up rpt else
if k-10 down rpt else
ifnot k=13 rpt else
posn x,y (x est la catégorie choisie)
zoom fon revient en format multifiches)
poke $7cdd,0 oa-r (sélection — toutes les
fiches)
print str$ x: (catéyorie sur laquelle se f
ait la recherche)
rtn
>8< (régle de sélect = "Commence par.
rtn
msg ' Tapez le critére de début de gamme, v
alidez avec RTN
Sl=getstr 10 print $1 : rtn
down down rtn (céygle "a")
msq ' Tapez le critére de fin de gamme, val
idez avec RIN ‘*:
Pom’s n° 45
15
ee
7
.
i
|
”
Sl=getstr 10 print 51 :
esc (pas on)
Si=screen 20,13,3 if $1= key esc esc
(test : échee de 1,
else bell (si
msg ' Terminé
Vous aurez sirement noté les similitudes entre les macros N et G. Elles vous serviront
de modéle pour construire vos propres macros de sélection “A la carte”.
A propos : les régles de sélection des macros précédentes concernent la base de données
elle-méme (c’est-a-dire |’écran REVUE/ AJOUT/MODIF.). Elles ne changent en rien
les régles de sélection qui pourraicnt étre en vigueur dans d’éventucls formats de
rapports.
Quand vous crécz un rapport, vous déterminez a partir de zéro sa présentation et ses
régles de sélection. Autrement dit, quel que soit l’'agencement de I’écran REVUF/
AJOUT/MODFF., votre point de départ pour chaque nouveau rapport est la sélection
“Toutes les fiches”, ainsi que la totalité des catégorics du fichicr, dans leur ordre initial
tel que défini 4 la création du fichier lui-méme.
D’aillcurs, si jamais vous modificz la structure initiale du fichier de Bases de Données,
vous perdez nécessairement tous les formats de rapports existants (il peut y en avoir
jusqu’a 8). En revanche, vous avez le droit de changer le nom du fichier, le nom des
catégorics aussi bicn que leur agencement.
: Nw Lu /remaaamas |
Pour Apple //e, Apple //c, Apple Gs.
Frappe au kilométre, rapidité d'écriture, souplesse de correction.
Glossaire puissant, recherche - remplacement.
Creation de caractéres téléchargeables sur Image Writer
(notation mathématique, alphabets étrangers etc...)
Impression rapide, pilotage précis de mise en page.
Coupure correcte des mots, justification en proportionnel,
condensé et expansé.
Gribouille, une valeur sre pour un public averti.
Pour recevoir Gribouille, envoyez ce bon de commande a:
As , rue Humbiol
Je vous prie de m'envoyer a l'adresse Be
le logiciel Gribouille Prix (port compris)
* version //e - /ic pour lecteur de disquettes 5 1/4 SO9frH.T. 710 fr 7.7.0.
* version //e - /ic pour lecteur de disquettes 31/2 632 f HT. 750frT.TC.
* version GS 835 fr H.T. 990M TTC.
Ci-joint un cheque de.. ..dtancs libellé a l'ordre de GRIBOUILLE SARL
Jl est donc sage, lors de la
création d’un fichier BdD, de
prévoir un certain nombre de
calégories vides, que vous serez
peut-€tre bien content d’utiliser
plus tard.
Les
commandes du
fichier
BDD.TSK
G-@-& — Macro de lancement
des fichiers TASK
6-2 Appel de Aide.BdD
é-P Curseur sur premitre
catégorie visible
€D Curscur sur demitre
catégorie visible
éZ Déplacements
rapides du curseur
dans liste-tableau
€-F Renseignements sur
une fiche
pL PLAT EEE ex Echange les deux
premiéres colonnes
d'une liste-tableau
GE Efface une catégorie
€-1 Instre une catégorie
eL Modifie une largeur
de colonne
€B Bouge (déplace) une
catégorie
é-— Décale une liste
multifiches vers la
gauche
€— Decale une liste
multifiches vers la
droite
"RTN" envoic vers
le bas
"RTN" envoie vers
la droite
ec Copie une cellule
(rubrique)
€M Recherche d'un mot
dans une catégorie
€-T Retour a la sélection
“Toutes les fiches"
€-G _ Sélectionne d'une
gamme de fiches
dans une catégorie
G
G-6-L
G-€-5
16
Pom’s n° 45
Un de mes ordinateurs préférés, peut-érre
celui dont je me sers le plus souvent...
n’est pas un Apple. I] s‘agit du
Psion-Organiseur, d’Aware. C'est
pourtant dans Pom’s que je souhaite en
faire I'éloge : c’est & mon avis le
périphérique le plus intelligent de
T’Apple.
De la taille d’une calculette ou d’un
agenda, il tient dans la poche. Nous
révons tous d’avoir notre Apple en
permanence avec nous. Mais “portable”
n'est pas du tout synonyme de
“portatif”: vus l’encombrement et le
poids, on n’a pas son //e ou son Mac
portable sur soi en permanence. Le
Psion, c’est une maniére d’avoir son
Apple dans la poche...
Présentation
Le Psion Organiseur est un véritable
ordinateur de poche de 13,7 centimétres
de long sur 7,5 de large, la taille d’une
calculette, son poids est négligeable
(250g). Il est du coup parfaitement
conforme aux réglements des examens
francais, et sera accepté (sauf réglement
contraire spécifique, ou surveillant
d’examen possédant lui-méme un Psion)
dans toutes les épreuves od la calculette
est acceptée. I] est connectable
directement a tout ordinateur muni d’une
sortie RS 232, donc & tous les Apple
comme aux “compatibles” des
“galériens”.
Tl existe quatre modéles d'Organiseur.
Dans l’ordre de prix et de performance :
le CM, XP, LZ et LZ 64. D’aspect
extérieur les quatre se ressemblent, mais
sous le capot, la différence se fait jour.
Les modéles
CM et XP
Ils sont de la méme génération. Munis
tous deux de 32Ko de Rom, ils se
différencient par la taille de la mémoire
vive (Ram) : 32Ko pour le XP, 8Ko pour
le CM. Ces deux Psions peuvent
seulement afficher 2 lignes de 16
caracitres sur l’écran LCD type
calculette.
rganiseur II
Quand on appuie sur la touche ON, un
menu apparait. On peut alors :
> calculer avec la fonction CALC : le
Psion peut servir de machine &
calculer avec des fonctions comme
sinus, cosinus, racine carrée etc.
> utiliser un agenda et un réveil
sophistiqués : ces deux Psions sont
équipés d’une horloge interne, pouvant
vous donner Ja date et I’heure a tout
moment. Une fonction alarme peut vous
réveiller au moment désiré. Une fonction
agenda, permet de mémoriser des
rendez-vous, de lister l'ensemble des
rendez-vous de la semaine, d’cffectucr un
recherche sur ces rendez-vous, et de
déclencher unc alarme quelque temps
avant le rendez-vous.
> programmer : le Psion étant un
micro-ordinateur de poche, il a bien
entendu son langage de programmation.
C'est l'OPL, un Basic d'aujourd"hui bien
influencé par le Pascal (c’est-a-dire
structuré, avec Do/Until, Goto étiquette,
iffelse/endif, et des procédures). Ce
langage est assez facile d'utilisation, les
initiés & l'AppleSoft programmeront en
OPL sans problme majeur et feront leurs
propres applications : je le répéte, c'est
un ordinateur, pas une calculette.
A noter : des procédures OPL peuvent
étre appelées directement dans la
calculette."TVA : 2000” ou “TTC :
2000”...
Les fonctions les plus intéressantes de
ce langage sont RECH pour Rechercher
et SAUV, pour Sanvegarder. Chaque fois
que vous voulez enregistrer quelque
chose, téléphone, notes de cours,
“antiséches”, etc. Vous entrez dans le
menu SAUY, et vous sauvegardez votre
fiche.
Point important : le Psion n’a pas de
lecteur de disqueties. II sauve donc dans
de la ram alimentée en permanence par
une pile. La mémoire n‘est effacée que
lorsque vous retirez la pile, mais si vous
voulez seulement changer une pile usée,
vous avez quelques secondes pour le
faire, sans que les données soient
perdues.
La fonction RECH permet de rechercher
un enregistrement dans la mémoire du
J.-L. Schmitt
Psion, ou d’y lister fiche aprés fiche wut
ce que vous y avez entré. De plus,
lorsqu’& Vintérieur de cette fonction
vous appuyez sur “Mode”, vous pouvez
modifier cette fiche, et la resauvegarder
immédiatement. L'idéal pour modifier
une fiche. En quelque sorte, AppleWorks
dans la Rom de la calculette...
Bien entendu, vous n’étes pas obligés de
tout conserver : RAZ vous permet de
réinitialiser votre Psion et de tout y
effacer, et EFFACE vous permet d’effacer
un enregistrement dans la mémoire
sauvegardée.
Les Musts :
Psion LZ et LZ 64
Ces deux Psions nouveaux vicnnent
d’arriver en France, et ont été présentés &
l’Apple Expo. Aware ct le fabricant
anglais, proposent une mise & jour de
votre ancien modéle, contre un prix
variant entre 1293 F et 1886 F suivant le
Psion que vous avez déja. Je ne connais
qu’une autre marque d’ordinateurs qui
propose A ses clients ces mises & jour
systématiques : devinez laquelle...
En fait, Aware fait carrément l’échange
de votre ancien Psion contre un neuf.
Utilisateurs de Psion qui avez un modéle
XP ou CM, je vous donnerais le méme
conseil qu'aux utilisateurs d’Apple :
faites l’échange, cela vaut le coup. Vous
avez un Psion neuf, une année de
garantie nouvelle, un mois d’assistance
téléphonique gratuite, et vous étes a
jour.
Les Psions LZ et LZ 64 reprennent bien
évidemment toute les options du XP et
CM. Cependant quand vous allumez
voure LZ, la différence saute aux yeux :
vous avez 4 lignes de 20 caractéres, et
une foule d’options supplémentaires.
Vous pouvez choisir la langue
d'utilisation : Anglais, Francais, Alle-
mand.
Les grands voyageurs pourront savoir
Vheure et le code téléphonique de 400
villes dans le monde, ceci afin de ne plus
réveiller en pleine nuit votre
corespondant & Anchorage ou Osaka,
Pom’s n° 45
17
=
;
=
4
;
z
:
3
:
=
=
z
;
4
:
Votre “Psion” peut désormais étre
protégé par un mot de passe dés
V’allumage, et vos données pourront
@tre protégées par encrytage, ceci pour
€viter que des petits curicux ne volent
les informations dans le Psion, ou que
le surveillant de l’examen ne
comprenne quelque chose 4 votre
calculette.
Un conseil 4 ce sujet : commencez par
mettre un mot de passe & votre Psion.
Sinon, tant que cette fonction reste
vierge, quelqu’un d’autre risque d’en
mettre un & votre place. Or,
évidemment, il faut donner le mot de
passe pour pouvoir le changer
ensuite...
Le Psion dispose également avec ces
nouveaux modéles d'un chronométre
et d’un compte a rebours.
Une des fonctions nouvelles est le
bloc-notes. Le bloc-notes, ou plus
exactement les blocs-notes, sont les
endroits idéaux pour dresser des listes
de taches. Ils posstdent leur propre
calculatrice, pour tenir 4 jour le
montant de vos frais par exemple. De
plus, vos données pourront étre
protégées (par un mot de passe dif-
férent bien entendu de celui utilisé lors
de l’allumage). Le bloc-notes peut
également étre trié par ordre alpha-
bétique.
Le langage de programmation s'est
enrichi de nouvelles commandes : 21
au total !
L’agenda s'est enrichi de fonctions
bien utiles : “Couper et Coller” pour
reporter vos rendez-vous par exemple
(c’est vraiment l’Apple dans la
poche...), L’agenda offre également un
planning hebdomadaire graphique,
divisé en 4 tranches horaires, mais
entiérement paramétrable.
L’option alarme se subdivise dans le
nouvel Organiseur en trois types
d’alarme différents, pour vous réveiller
en douceur.
La hase de données a été étendue :
loption XFICH permet de créer
différents fichiers (par exemple :
“Mathématiques”, “Prix des articles”,
“Téléphone”). On peut limiter les
recherches a l’intérieur de ces fichiers,
et non sur l’ensemble de la mémoire
de l’Organiseur, comme c’était Ic cas
avec les modéles CM et XP.
Pour aller —
plus loin
| Si yous souhaitez devenir un
utilisateur expérimenté de |’Orga-
niseur II, et un programmeur en
OPL:
tw Deux ouvrages (en anglais) sont
diffusés par Aware.
%* On peut recevoir un bullctin
technique trimestriel_d’Aware
au prix de 250 FHT par an.
** JI n’existe pas, a notre connais-
sance, de “Pom’s-Psion”. Mais
si vous @tes nombreux & vous
Jaisser séduire par le Psion, peut-
tre nous demanderez-vous une
rubrique OPL dans Pom’s...
* En tout cas, Pom’s suggére tout
de suite un intéressant exercicea
ses lecteurs programmeurs : un
simulateur de Psion/interpréteur
OPL sur Apple.
* Le microprocesseur de Psion est
un HD6303X 8 bits. Il fait du
“bank-switching” entre $8000 et
SC000 pour ses 64Ko de Rom,
entre $4000 et $8000 pour ses
64Ko de Ram utilisateurs
d’Apple //, cela devrait vous rap-
| peler quelque chose...
Le “Psion” s’est également enrichi
d'une fonction “outils” qui permet,
non seulement de désactiver le son,
mais est une sorte de “DOS”, en tout
cas un systéme, complet : formatage
des RamPak, catalogues, copie de
fichiers, etc. Je suis méme parvenu a
taper sur le Psion des choses comme
“DIR A” : sans avoir de boutons...
Le Psion LZ fait d’origine 32Ko de
mémoire et le LZ 64, comme son
nom I’indique, 64Ko. Autant qu’un
Apple //e... La Rom quant a elle a é1é
poussée 4 64Ko sur les deux modéles.
Les petits freres
Je me dois, pour étre complet, de
mentionner l’existence d'autres
Psions, réservés A des usages
spécialisés : ils ne peuvent fonction-
ner qu’avec des “dataPaks” pré-
programmés, et ne disposent ni de
l'agenda, ni de la calculatrice, ni de la
base de donnée,
Le “POS 350” posséde 96 kilos de
ram pour les saisies importantes,
“|’Alphapos” privilégie lui la saisie
numérique.
Les périphériques
du périphérique
Les “Iectcurs de disquettes” du Psion,
ce sont ses deux ports (slots), dans
lesquels, sans augmenter I’encombre-
ment, on peut insérer deux sortes de
“mémoires de masse” : les “Data-
Paks” et les “RamPaks”.
Les DataPaks sont des modules ot
vous pouvez enregiser vos données.
Vous pouvez effacer ensuite ces
données, mais attention, le DataPak
ne vous restitue pas l’espace que vous
avez effacé. Celui-ci n’apparaitra plus
Jors d’une recherche, mais la capacité
de youre DataPak ira en diminuant.
Vous pouvez utiliser un effaceur 4
ultra-violets (il faut alors sortir le
DataPak de son port) : celui-ci vous
restituera la place perdue, mais vous
enlévera toutes les données a
Vintérieur de votre DataPak (les
DataPak sont des Eproms). Cela parait
poser probleme : en fait, la solution,
c’est Apple (voir ci-dessous).
Les RamPaks ne sont ajoutables
qu’aux modéles XP, LZ, et LZ 64.
C’est cn fait de la Ram alimentéc que
vous ajoutez dans l’un des deux ports
prévus a cet effet. Méme lorsque vous
enlevez la pile principale du Psion, les
RamPaks ne s’effacent pas : ils sont
auto-alimentés. L’avantage du
RamPak est donc que vous pouvez
effacer des données sans aucun
probleme, et récupérer la mémoire
libérée sans sortir le RamPak de son
port, tout comme. passer le RamPak
avec son contenu d'un Psion a
Tautre : c’est la Speedisk du Psion.
18
Pom’s n° 45
Les DataPaks existent en version 16,
32, 64 et 128 kilos. Les RamPaks
n’cxistent qu’en version de 32 Kilos,
mais Aware pense améliorer sa
gamme d’ici peu.
Une imprimante thermique de 80
colonnes peut étre adjointe au Psion.
Elle est trés petite également, puisque
qu’elle fait avec le Psion moins de 26
em dc long pour 16 cm de large. Elle
peut imprimer en 20, 40, 60 ou 80
colonnes, des caractéres en double
hautcur ou soulignés ou encore des
graphiques points par points. Elle est
cependant assez lente, et limprimante
est souvent interdite dans les examens.
La Comms-Link permet aussi
d’imprimer directement sur Image-
Writer, un interface série/paralléle
permet de connecter le Psion sur unc
imprimante paralléle. Mais la vraie
solution pour l’impression, c'est
l’Apple et son imprimante : envoyez
dans l’Apple, sauvez sur disque, et
imprimez.
Les logiciels
du Psion
Aware propose également bon nombre
de logiciels, sous forme de “Paks” a
enfiler dans l’un des deux ports de
votre Psion.
“MathPak” peut résondre des équa-
tions linéaires jusqu’a 10 inconnues,
calculer un Khi-carré, résoudre des
équations du 3¢me degré.
“Formulateur” est capable de résoudre
n’importe quelle opération, a partir du
moment oi elle peut s’écrire sous la
forme d’une formule mathématique.
Pour les financiers, “Top finance”
effectue une gestion de compte
bancaire, des conversions de deviscs,
et le calcul d’intéréts simples ou
composés. “Portfulio”, gestion de
portefeuille boursier, calculera vos
plus values ou moins values sur les
titres que vous avez achetés, déduira
les commissions, et pourra calculer au
jour le jour la valeur de votre
portcfeuille,
Des logiciels de gestion de fichier, des
vérificateurs d’orthographe anglaise,
ainsi qu’un petit dictionnaire
multilingue de 700 mots — anglais,
francais, espagnol, italien, allemand—
appelé “Travel Pak”, sont également
disponibles.
Le meilleur logiciel est & mon avis
“SpreadSheet”, qui est un véritable
tablcur dans votre Psion. Ses tableaux
sont compatibles avec Multiplan,
Excel, et Lotus 123. Moyennant
quciqucs astuces, on peut aussi les
récupérer dans le tableur d’ Apple-
Works Gs.
Ah... Psion!
S€duit, il faut ’avouer, par! article
de J..L. Schmitt, et par le Psion,
Pom’s a conclu un accord spécial
avec un revendeur Apple qui est
aussi un revendeur Psion.
Tout abonné de Pom’s a droit, sur
présentation de sa carte joker, a
une réduction de 10% sur la
gamme Psion chez :
KA -—L’'Informatique Douce
14, rue Magellan —75008 Paris |
2 (1)4723 7200 |
(Monsieur J.C. Muscat)
“SpreadSheet” offre cn fait toutes les
fonctionnalités d’un véritable tableur
Apple : format fixe, scientifique, re-
calcul automatique, référenccs ab-
solues ou relatives, largeur de colon-
nes variable, etc.
La communication
le hard
Je Pai dit dans V'introduction, le Psion
se connecte 4 tout Apple muni d’une
sortie RS 232. Cette connexion se fait
par l’intermédiaire d'une “Comms-
Link”, qui est un cable reliant Ic
Psion a votre Apple.
Pour les Apple, il est cependant
nécessaire d'utiliser également un
cable de liaison dit “cable de modem
croisé” ou “nul modem”, entre le cable
“Comms-Link” et votre sortie
communication.
Le vendeur de Comms-Link devrait
vous fournir ce cable. S’il ne le fait
pas, changez de magasin. Ce service
vous sera effectué par Binary
Informatique & Strasbourg ou par
Dassuciation Toolbox.
Pour les adeptes du fer 4 souder, le
schéma de ce cable est le suivant :
De la mini din vers le connecteur de la
Comms-Link ;
Mini din 8 Comms-Link
2
7
3
vides
1
a
4
5
La communication
le soft
Lorsque vous connectez la
Comms-Link au Psion, un menu
supplémentaire apparait dans le
Psion : “Comms”. “Comms” permet
de paramétrer vos transferts, en
choisissant la vitesse de transfert, le
protocole de communication, la parité
etc, La “Comms-Link” est fournie
avec un livre facile d’accts qui vous
permettra de faire communiquer
aisément Apple et Psion.
Pour les utilisateurs du J[+, //e, ou
//c, faites vos uansfert en 1200 bauds,
Pour les utilisateurs de Mac ou de GS,
la vitesse peut sans problémes étre
portée 4 2400 bauds.
Tl faut cependant savoir que le Psion
n’accepte que des fiches de 254
caractéres maximum 4 l’intérieur de
votre fichier, avec au maximum 16
lignes. Le Psion coupcra la fiche si
vous ne respectez. pas ces impératifs.
Possesseurs de Macintosh, vous
trouverez sur la disquette Mac de ce
numéro un programme (en ShareWare)
pour communiquer entre le Psion et le
Mac. Deux avantages : c’est un
accessoire de bureau, ct il cst
parfaitement fiahle.
Pom’s n° 45
19
Les possesseurs de GS ont aussi leur
programme en ShareWare, il s’agit de
FreeTerm, qui est performant et
facilement paramétrable, Pour ceux
qui sont néanmoins allergique a la
langue de Shakespeare, je conscillerais
VS Com, dans sa version 1.14 (qui
est, grace aux efforts d’Apple France,
désormais non protégée, quoi qu’en
aient dit quelques imprudents),
Je souhaite cependant souligner ici la
valeur d'un programme de commu-
nication entre le Psion et |’ Apple. Ce
programme fait de l’Apple //GS la
meilleure machine du marché pour la
communication avec le Psion : il
s’agit tout simplement... d’Apple-
Works-Gs.
On a souvent entendu dire que le
module de communication d’Apple-
Works-GS ne sert pas, ici en France.
Avec le Psion, vous ne pourrez plus
vous passez de ce module.
AppleWorks-GS permet une souplesse
Wutilisation inégalée, méme sur
Macintosh, J’entends déja les cris des
lecteurs macintoshiens, mais c’est un
fait.
Aprés le transfert Psion vers Apple
/IGS, on passe directement du module
communication au traitement en
textes, sans avoir & sauvegarder quoi
que ce soit sur disque. On peut
modifier chaque fiche, repasser Ie tout
dans le module de communication, et
je retransférer en bloc dans le Psion,
Le tout en Ram... Et en quelques
secondes,
Sur Macintosh, il faut sauvegarder et
recharger votre fichier au moins 2
fois. Sans compter qu’Apple-
Works-GS reprend directement tous les
fichiers que je mettais dans mon Psion
sous l’ancien format d’Apple- Works
8 bits : il est donc inutile de convertir
les fichiers AppleWorks cn fichiers
texte.
L’intégration, voila le secret qui rend
AppleWorks-GS imbattable. Que je
n’entende plus jamais dire que certains
modules d’AppleWorks-GS ne sont
pas utiles en France! Le Psion, le GS
et AppleWorks-GS constituent un
ensemble parfaitement intégré.
Les programmes que je conseillerais
aux utilisateurs d’un Apple // 8 bits
(je considére I’Apple // 8 bits, avec
disquettes et imprimante, comme un
u’s bon... périphérique du Psion!)
sont Version Tel ou Access II.
Possesscurs d’ Apple //, vous trouverez
sur la disquette 3,5 de ce numéro, dans
le sous-catalogue /COM.PSION, un
certain nombre d’applications, Free-
Ware ou ShareWare, qui devraient
marcher pour la communication avec
le Psion. Mais ricn ne vaut, je le
répete, AppleWorks-GS.
Les périphériques
du périphérique :
suite...
Sachez que vous pouvez, si vous le
désirez, alimenter votre Psion a partir
de l’allume cigare de votre voiture.
Le Psion est connectable directement
au minitel, par l'intermédiaire d’un
adaptateur minitel qui permet d’ utiliser
le minitel comme modem pour
envoyer les données renfermées dans le
Psion.
On peut également adjoindre au Psion
un crayon optique qui le transforme en
lecteur de code barres intelligent.
L’Apple...
dans la poche
A quoi cela sert-il d’avoir un
ordinateur, si nos fichiers utilisés et
consultés le plus souvent (agenda,
liste de téléphones, liste et prix des
articles, etc.), soit sont sur papier et
méme pas sur |’ordinateur, comme
vos liste d’adresses et de téléphones,
soit doivent étre réimprimés sur papier
chaque semaine, comme vos listes de
prix ?
Ce qu’il nous faut, c’est évident, ce
n'est pas un “portable” encombrant de
quelques kilos : c’est un Apple dans la
poche.
20
|
| Des Prog de Comm...
| Surla disquette Apple // quiac-
compagne optionnellement ce
| numéro, vous trouverez deux
programmes de communica-
tion :
* FreeTerm, en freeware et:
¢ TIC 2.03, en shareware a $30.
Cet Apple dans la poche, vous en
révez : moi, je l’ai (qui Il’aurait cru !).
Je consulte et modifie mes données ot
je veux, quand je veux. Rentré prés de
mon Apple, je les transfére, les
manipule et les retravaille 4 ma guise,
puis je me les remets dans la poche.
Plus de papier, et méme plus de
disquettes.
Je ne rajouterai
que deux choses
> Cela fait plusieurs années que je
transporte et utilise le Psion.
L’cmballage, fort solide, témoigne
pourtant de quelques chutes
retentissantes : il fonctionne
toujours...
=> C'est bientét Noél. Que
préférez-vous : la 827@me bouteille
d'aprés-rasage, ou l’Apple dans la
poche ?
Adresses
Aware
7/9, rue des Petites Ecuries
75010 Paris
Binary Informatique
8, rue du Travail
67000 Strasbourg.
KA - L’Informatique Douce
14, rue Magellan — 75008 Paris
Toolbox
35, boulevard Richard Wallace
92800 Puteaux
SG;
Pom’s n° 45
Maths : e & Pythagore
Calcul de e
Des deux nombres transcendants les plus
connus, z et e, c'est le premier qui a fait
l'objet des recherches les plus
nombreuses car il est plus ancien et plus
difficile 4 calculer. Des programmes de
calcul de a sont relativement faciles a
trouver et Pom’s en a déja publié un.
Bien que le calcul de e soit plus facile, il est rare de trouver
un programme qui lui soit consacré ; celui-ci est basé sur le
développement en série :
j et
e=l+q tart
sous la forme
1 1 1 1 TD ivscd
a(t+ay Otay d+ x (++ Q))))
Le nombre de décimales exactes est lié au nombre de
factorielles calculées. Le calcul de ¢ est done précédé du
calcul du nombre d'itérations nécessaires.
Alors que pour 7, avec un programme compilé, il ne faut
guére penser pouvoir calculer plus de 1 000 décimales (en
plusicurs heures) sur un micro-ordinateur, pour e, il n'est
pas absurde, dans les mémes conditions, den obtenir
10 000, la série convergeant rapidement.
Le Programme
On détermine le nombre de factorielles a calculer par le
sous-programme de la ligne 690... et on passe au calcul.
Le reste du programme n’est que détails concernant
l'affichage : alignement des décimales par groupes de 10 en
colonnes suivant la longueur de la ligne, arrét de l'affichage
au nombre exact de décimales demandé, car on en calcule
quelques unes de plus par mesure de sécurité et les dernigres
pourraient étre fausses. Quelques remarques dans le
programme précisent certains détails.
Le calcul étant tres simple pour la machine, I'expérience
montre qu'on ne gagne que trés peu de temps en compilant
le programme... sauf si l'on veut obtenir plusieurs milliers
de décimales !
Le programme calcule les décimales par paires, quel que
soit M on aura donc toujours un nombre pair de décimales).
Paul Canal
Notons cnfin que le ‘logiciel’ proposé constitue
essentiellement un ‘noyau’ ; l'ergonomie maximale n'est
peut-éire pas au rendez-vous !
Programme ‘DEC.E’
VIAB (22): PRINT "Pour démarrer le program
me, APPUYER SUR UNE TOUCHE": GET AS
200 CLEAR : HOME
0 INPUT "TAPEZ 40 OU 80 suivant que vous ete
sen mode 40 ou 80 colonnes, ou bien 120 s
i vous etes sur imprimantes 120 caractéres
par ligne
INPUT “NOMBRE DE DECIMALES DESIREES ?";M:
IF M < 10 THEN M = 10
30 DIM N(M)
40 GOSUB 690
50 NFAC = INT (1.4 * INT (NA + 1))
60 KEM NFAU est le nombre de tactorielles ca
leulées du dévellopement en série de e.
OR S = NFAC TO 1 STEP - 1
N(1) N(i) +1
PRINT "gi REM Afttichage inutile : pe
rmet cependant de surveiller la marche du
calcul : affiche l'argument de la tactorie
lle calculée. La ligne peut etre supprimée
300 MM =M-1
FOR H = 1 TO MM
329 @ INT (N(H) / S)
330 R = N(H) -S* 9
340 N(H + 1) = R * 100 + N(H + 1)
350 N(H) = @
360 NEXT H
370 NEXT 5
380 PRINT
390 N(1) = N(L) + 4
400 HOME
410 PRINT "e = "ZN(1);",
420 FOR I - 2 TO uM
430K = 1-2
410 IF C = 80 GOTO 550
450 IF C = 120 GOTO 620
460 IF K/5- INT (K / 5) = 0 THEN PRINT "
470 IF K>0O AND K/15- INT (K / 15) - 0 TH
EN PRINT CHR$ (13);" "7
490 IFK12> =M/2 4 2 THEN 530
490 IF N(I) < 10 THEN PRINT "
500 REM Les décimales sont valculées par 2 a
la fois : si la premiére des ? est un zéro
celui-ci ne s'affiche pas, la ligne 470 (
OU 550 OU 630, SUIVANT LE CAS) force 1'impr
ession de ce zéro.
Pom’s n° 45
21
22
510
520
530
PRINT N(I);
NEXT I
VTAB (22): HTAB (20)
(O/N) 2": GET AS:
THEN 200
SEPAS oe
EPORAL Six
TF K > 0 AND K / 35 - INT (K / 35) = 0 TH
EN PRINT CHR (13)7¢" "7
T1eeK +2 =M / 2 + 2 THEN 530
IF N(I) < 10 THEN PRINT "0";
PRINT N(T);
NEXT I
GOTO 530
LOK G So
IF K>0OANDK/ 55 - INT (K / 55) — ©
EN PRINT CHR$ (13);7" "+
IF K+2> =M/2 + 2 THEN 530
IF N(I) < 10 THEN PRINT "0";
PRINT N(I)?
NEXT I
GOTO 530
NI - 1:NS = M
NA = (NI + NS) / 2
V- NA * LOG (NA) / LOG (10)
IF ABS (V - M) < 10E - 8 THEN
IF V < M THEN NI ~ NA: GOTO 700
IF V > M THEN NS = NA: GOTO 700
T “Autre valeur
540
550
“on
INT
THEN
® 73) =
560
570
580
590
600
610
620
INT (K / 5) - 017
630
640
650
660
670
680
690
700
710
770
730
740
RETURN
Nombres de Pythagore
Les nombres de Pythagore sont bien
connus, ce sont ceux qui correspondent A
la relation :
AA2Z4+BA2=CA2
Les programmes qui les donnent sont nombreux ; ils
donnent en général une liste par ordre croissant, A partir de
3, 4 et 5. Il y a cependant un moyen rapide et simple d'en
trouver & coup sar et, par la méme méthode, de trouver 3
nombres correspondant a la relation plus générale :
ANN+BAN=CAN
La méthode a été décritc par un mathématicien russe B.
Kordiemsky, dans l'ouvrage Matematicheskaia Smekalta,
paru aux Editions d’Etat de Littérature technico-
mathématiques - Moscou. Une traduction de cet ouvrage par
I. Demidoff a été éditée en 1963 par Dunod, c'est 1a que je
Tai découverte.
Le programme est basé sur I'égalité complexe ou :
(a+ b*i)82 =a%24+b%24+2*i%2*a*b
Cest-a-dire :
(at+i*b)42=a%2-bA24+2* at bri
On pose :
ar2-b*2=x
et:
2*a*b=y
On a négligé le i, c'est 1a l'essentiel ! Et le programme se
réduit a:
XA2 4 YA2 =(AA2 +BA2)42
Les trois nombres :
X, Yet (A%2 +B%2)%2
forment toujours un triplet de Pythagore.
L’ égalité générale en puissance n conduit de méme a:
xA2+y%2=(a%2+b%2)0n
C
Programme
‘PYTHAGORE’
10 HOME
20 PRINT : PRINT “1- Nombres de Pythagore :A*2
+ B*2 = c*2"
30 PRINT : PRIN - A*2 + B*Z = c*3"
40 PRINT : PRINT "3- A*2 + B42 = 074"
IF 2$ “ THEN 90
"2" THEN 170
THEN 250
80 HOME
90 PRINT " Pour terminer donner 4 A et B la va
leur 0" .
100 INPUT "A = "7As invur = “7B
110 IF A - 0 AND B = 0 THEN END
120X=A*A-B* BY=2*A*B
130 X - ABS (X):¥ — ABS (Y)
140N=A*At+B*B
150 PRINT : PRINT X;" RENE or
+ 12Y: BYP 7N TN
PRINT : COTO 100
180 INPUT "A = "7A: INPUT "B ~ "7B
190 IF A= 0 AND B = 0 THEN END
200 =A ]2 ~~ 2A Ro BY Be 2-3 * B
RA 2
210N=A*A1B*B
220 X = ABS (X):Y¥ = ABS (Y)
230 PRINT : PRINT X¢" "7¥7" "pN" -> "7X *
KES FORE RUS EN EON
240 PRINT ; PRINT ; GOTO 180
250 HOME
260 INPUT "A = ";A:; INPUT “B = "7D
270 TF A= 0 AND B = 0 THEN END
2B0X=A*A*A*A-G*A*A*D*BIB*
B*B* BY =4%* (ATA A*B-A*B
*~B* B)
2O0N=A*A+B*B
300 X = ABS (X):¥ = ABS (¥)
310 PRINT : PRINT X;" Li
320
Pom’s n° 45
imeOut Re
Trés bientét le nouveau TimeOut “ReportWriter”,
version frangaise, sera au catalogue de Pom’s.
En fait il est déja prét, et il tourne dans sa version
préliminaire. Nous attendons pour le mettre en
vente que nous parvienne la nouvelle version
“propre” des Beagle, afin d’éliminer les quelques
petits défauts d’enfance qui entachaient encore la
premiére version américaine.
Il est donc temps de faire les présentations...
«L’événement le plus important dans
lunivers du ProDOS 8 al’AppleFest de
mai 1989 a Boston»
C’est dans ces termes que le saluait la revue A2-Central du
mois de juin. S’ajoutant 4 Spreadlools (déja commer-
cialisé par Pom’s en version frangaise), ce nouveau
TimeOut donne a AppleWorks ses véritables lettres de
noblesse professionnelles.
Ceci ne fait que souligner le paradoxe de la double
€volution des Apple //: alors qu’en mode 16 bits le GS
joue encore dans la cour des petits (malgré la complexité
croissante de son nouveau systéme d’exploitation), le
ProDOS 8, dans son incarnation AppleWorks/TimeOut
est parfaitement rodé, et également a I’aise aussi bien a la
maison qu’au bureau, dans les professions libérales, &
l’école, dans I’ atelier ou la petite entreprisc. Ses grands
atouts : un systéme d’exploitation familier et simple, une
interface homogéne, un écran texte rapide et sans
fanfreluches inutiles.
Ceci dit, ReportWriter vous demandera quand méme
quelques efforts d’apprentissage. Son manuel, le plus épais
de tous les TimeOut, mérite d’étre lu et relu.
Mais que fait donc
au juste ReportWriter ?
Pour mieux comprendre ce que ReportWriter apporte de
neuf, retournons-nous vers AppleWorks tcl que nous le
connaissons encore actuecllement. Pour imprimer un
“rapport” a partir d’une Base de données, AppleWorks ne
vous laisse que deux choix : soit un format “tableau”, soit
ore
Dimitri Geystor
un format “étiquette”. Autrement dit vous pouvez
imprimer vos données soit cn tableau avec unc fiche par
ligne, soit fiche aprés fiche, A raison d’une “page” par
fiche.
En format tableau, vous pouvez créer au maximum trois
colonnes calculées & partir des données (au moyen
d’opérations arithmétiques simples). Dans un format
comme dans |’autre vous interviendrez avec une certaine
maitrise sur l’aspect (largeur, emplacement) des rubriques,
et une faculté de tri et de sélection par catégories. Ce n’est
déja pas mal.
Mais vous ne pourrez jamais travailler que sur les données
que conticnt le fichicr Base de données auqucl cst
indissolublement lié le “format de rapport” que vous avez
créé.
ReportWriter a émancipé les formats de rapports, et les a
rendus relationnels.
Désormais, vous pourrez construire vos rapports en
puisant vos données dans des fichiers Base de données,
‘Tableur ou ‘Iraitement de texte (et méme a partir du
clavier). En les puisant dans un seul fichier, ou dans
plusieurs fichiers 4 la fois. Vous pourrez définir des liens,
appliquer des opérations arithmétiques, mathématiques et
logiques (individuclles ou en cascade). Enfin, si vous le
désirez, vous pourrez méme répercuter le résultat de vos
calculs dans les fichiers oi: vous aurez puisé vos données,
Le modile de rapport créé est un fichier indépendant, que
vous pouvez sauver — donc auquel vous pourrez revenir &
tout moment. Et chaque rapport que vous créez est
lui-méme une fichier ASCII sur disque, done archivé ct
toujours disponible.
Genése d’un rapport
avec ReportWriter
Chaque création de rapport est articulée sur un fichier
principal, que l’on appelle “Fichier Pilote”. Ce fichier
peut &tre une Base de données ou un Tableur. C’est ce
fichier qui pilote la création du rapport (fiche par fiche ou
ligne par ligne), tout en suivant Ics indications du modtle
de rapport que vous aurez. défini.
Le Modéle de rapport
est votre cuvre
C'est une sorte de “calque” dans lequel vous définissez
toutes les caractéristiques du futur rapport. A l’impression,
Pom’s n° 45
23
ee
ce modéle sera répété autant de fois que ReportWriter lira
de fiches (ou de lignes) dans le Fichier Pilote :
> Vous construisez ce modéle dans un éditeur, qui
ressemble & un éditeur de traitement de textes, en y
introduisant d’une part du texte, qui sera reproduil avec
chaque fiche du rapport, et d’autre part des “champs”, c’est-
a-dire des espaces spéciaux oi iront s"inscrire
successivement les diverses données du rapport.
> Une fois que vous avez fait la “mise en page” du
modéle, il vous reste a définir le contenu de chaque
champ, afin que ReportWriter sache quelles données y
inscrire lors de la genése du rapport.
> Ces données pourront étre puisées soit dans le
Fichier Pilote, soit dans un autre fichier AppleWorks
(dit “fichier de renvoi”) situé sur le Bureau (TdT, BdD ou
T), ou encore calculées d’aprés une formule contenue dans
la définition du champ, ou enfin tapées au clavicr.
Lors de la genése du rapport, ReportWriter suit un ordre
bicn précis : si vous avez prévu des saisics au clavier, il
les demande d’abord. Puis il préléve les données
nécessaires dans le Fichier Pilote. Ensuite, il parcourt les
champs du Modéle (dans leur ordre de définition), et selon
leurs indications consulte les fichiers de renvoi et fait les
calculs. Votre Modéle peut contenir des champs “de
travail”, qui ne seront jamais imprimés, mais serviront a
faire des calculs intermédiaires.
ReportWriter vous offre aussi la faculté, si vous le
souhaitez, de répercuter (reporter) le contenu d'un champ
dans un fichicr de renvoi (par exemple, si le rapport est
une facture, vous pouvez “reporter” dans votre fichier
“Clients” la date d’établissement de la facture, et son
montant).
Enfin, le rapport ainsi créé cst aussit6t cnregistré sous la
forme d’un fichier ASCII sur disque, que vous pourrez
imprimer a loisir avec l’option “Imprimer” de
ReportWriter.
En résumé, pour créer un rapport :
On choisit le Fichier Pilote (obligatoirement)
On va dans !’éditeur, et on fait la mise cn page du
Modble
On définit les paramétres de chaque Champ du
Modéle
On met (facultativement) sur le Bureau les fichiers de
renvol
On déclenche la genése du Rapport
On imprime le rapport quand on veut (a I’écran ou
sur papier) avec l’option d’impression de Report-
Writer.
©® © © ®8
Ces étapes élémentaires constituent les opérations de base.
A Vintéricur des étapes 2 et 3, vous disposez d’une
multiplicité de variantes ob votre créativité n’aura que
lembarras du choix pour s’exprimer, C’est pourquoi je
conseille de lire attentivement le manuel, et d’y revenir
réguligrement tant que vous n’aurez pas acquis la maitrise
de ReportWriter : c’est un logiciel d’une richesse
extraordinaire, qu’on découvre —et savoure— progres-
sivement.
Comment fonctionne un “renyoi”
en mode relationnel ?
Supposons que vous ayez un fichier BdD (nommé
CLIENTS) d’adresses de clients, dont les catégories sont :
Nom, Prénom, Numéro et Rue, Lieudit, Code postal,
Localité, etc.
Supposons que vous ayez par ailleurs un Tableur (nommé
SOLDES.CLIENTS), oi vous inscrivez dans une colonne
Ics noms de vos clients, et dans une autre le montant de
leur compte (débiteur ou créditeur).
Supposons que vous souhaitiez relancer ceux de vos
clients dont le solde est débiteur. ReportWriter vous
permet de Ie faire, en créant un Modéle qui sera
précisément votre lettre de relance !
Reprenons plus en détail les étapes
générales décrites plus haut :
@ Le fichier pilote sera Clients. Vous le. mettez donc
sur le Bureau d’ AppleWorks, Pendant que vous y
étes, mettez-y aussi Ic fichicr Soldes.Clicnts, puisque
vous en aurez besoin pour les renvois.
@ Vous appelez ReportWriter avec Pomme-Escape : le
menu principal de ReportWriter s’affiche, et vous y
choisissez l’option “Editer un modéle”. Vous étes aussitdt
envoyé dans |’éditeur.
Comme dans un traitement de textes, vous y tapez votre
lettre de rappel, sauf que pour les parties variables (nom,
prénom, adresse, montant du solde débiteur si vous
souhaitez le mentionner, etc.) vous ménagez des “champs”
au moyen d’un caractére spécial. Ce sera le “corps” de
votre rapport.
® Maintenant vous allez définir successivement chacun
des champs : vous placez le curseur sur le premier
caractére d’un champ, et vous tapez Pomme-N : un
nouveau menu apparait, qui vous invite a donner les
indications dont ReportWriter a besoin pour retrouver les
données : le nom du champ, puis la source des données.
Pour les données contenues dans le fichier pilote, la source
est, si j’ose dire, déja sous la main : il suffit d’indiquer la
catégorie (BdD) ou la colonne (Tableur).
Mais il nous faut aussi ordonner & ReportWriter de lire le
solde du client dans le Tableur Soldes.Clients. Voici
Pom’s n° 45
comment se fait Ie renvoi :
> On indique la nature de la source : “Index par clé” ; la
clé é1ant par exemple le champ NOM.
> ReportWriter saura qu’il faut rechercher une clé
identique dans une colonne du fichier Soldes.Clicnts ;
la valeur correspondante, contenue dans une colonne du
lableur que vous spécifiez également, sera renvoyée dans le
champ que vous aurez nommé, par exemple, “SOLDE”
dans le Modéle :
Modéle Tableur Soldes.Clients
—— Colonne “Nom”
|
Champ “‘Solde” «<——— Colonne “‘Solde”
Champ “Nom”
A ce point, vous avez indiqué 4 KeportWriter les
cheminements qu’il doit suivie.
Il reste a lui dire quelles fiches il faut qu’il imprime (en
effet, vous ne voulez pas relancer les clients dont le solde
est positif). Il faut done écrire une “régle de sélection”
pour n'imprimer que les fichiers o SOLDE est inférieur &
zéro.
Comme il s’agit de “cuisine interne”, on ne mettra pas ces
renseignements dans le corps du rapport, mais dans la
“zone de travail”, qui elle ne s’imprime jamais.
Vous allez donc créer un champ, dans cette zone, en
précisant que sa source est un “calcul”, et le définir par la
formule ARULES(SOLDE<V). C’est tout simple. Report-
Writer se le tiendra pour dit.
® Le fichier Soldes.Clients, je le rappelle, doit étre sur
Je Bureau.
® Le Modéle étant prét, il reste a créer le rapport. Vous
tapez Pomme-G (comme “genése”) et indiquez sur
quel disque écrire le rapport (car le rapport se crée
directement sur disque). Un “thermométre” apparait &
l’écran, qui se remplit au fur et 4 mesure du travail de
création (plus ou moins long selon la longueur du fichier
pilote et la complexité du modele).
Et voila, vous étes préts 4 imprimer. ReportWriter vous
sortira —mieux qu’un listing— une série intelligente de
lettres de relance.
Et si vous voulez vraiment faire du “cousu main”, vous
pourrez inclure dans votre Modéle (qui peut lui aussi étre
sauvé sur disque, bien entendu, pour y revenir d’autres
fois) un champ de “report”, avec une indication qui sera
reportée dans le fichier tableur “Soldes.Clients”, par
exemple : “Relance faite”,
Calculs et fonctions
dans ReportWriter
Divers calculs et fonctions peuvent étre insérés dans la
définition du Modéle. Quand on ne veut pas qu’ils
apparaissent, il suffit de les inclure dans la zone de travail
au licu du corps du rapport.
En plus des quatre opérations
arithmétiques, on dispose :
» de fonctions donnant la valeur absolue dune
expression, son inversc, sa valcur cntitre, sa partie
décimale, sa racine carrée ;
> — de fonctions donnant le minimum ou le maximum de
deux valeurs ;
> d’une fonction d’arrondi, d’arrondi par défaut ou
d’arrondi par excés ;
» de fonctions portant sur une série de valeurs : moyen-
ne, nombre de valeurs, valeur maximale, valeur
minimalc, somme des valeurs ;
> de fonctions sur chaines “texte” : concaténer, re-
chercher une chaine dans un champ (‘“‘contient”),
tronquer & droite, onquer & gauche, extraire au centre,
convertir en majuscules ou minuscules, définir une chaine
de caractéres, transformer une valeur numérique en texte ;
> de fonctions spéciales : renvoyer un paragraphe entier
dun fichier TdT, renvoyer le Nigme mot d’unc liste,
renvoyer la position d’un mot dans une liste, appliquer la
fonction conditionnelle IF (assortie du ET et du OU
logiques), appliquer unc régle de sélection (voir ARULES
de l’exemple ci-dessus) ;
> = d'une douzaine de fonctions date et heure différentes.
Présentation d’un rapport
En plus du corps du rapport, et de sa “zone de travail”
€voqués ci-dessus, vous pourrez (facultativernent) ajouter 4
votre rapport un tite et/ou une conclusion (qui ne
s’imprimeront qu’une fois), des hauts et/ou bas de page
(qui s'imprimeront 4 chaque page), ainsi que des
sous-totaux.
Et bien entendu ReportWriter posséde son propre choix
d’options d’impression (ni gras ni souligné,
malheureusement). Au fait, vous ai-je dit que le format de
Téditeur permet de tavailler sur 127 colonnes et 240
lignes (défilement vertical mais aussi horizontal par
figéches ou souris, mieux que l’éditeur du TdT
d’AppleWorks !).
Alors, un petit peu de patience encore —d’ici le prochain
numéro de Pom’s, ct peut-¢tre méme avant— pensez a
consulter son serveur Minitel au (1) 39 53 04 40.
Pom’s n° 45
—————————————— ee ee ee a a
:
;
:
:
:
;
;
dl
Temps-Machine
Présentation
Maintenant que le MultiFinder s’est imposé, chacun
dispose sur le bureau de son Macintosh de plusieurs
applications simultanément. Le plus souvent, on a
impression qu’une seule d’entre-elles travaille réellement &
un moment donné, méme si certaines sont programmées de
maniére & partager Ie temps machine disponible. Ainsi, on
peut effectuer une compilation compléte avec MPW en
tache de fond. Le but du programme Echantillon est de
mesurer la part réclle de temps que chaque application
consomme pendant une période précisée a l’avance.
Utilisation
Une fois l’application Echantillon lancée, il convient
d'indiquer cette période, par l’intermédiaire de deux
indications : la durée effective pendant laquelle le
programme réalise ses mesures, et la pause avant que
commence la premiére mesure, Celle-ci est comptée a partir
du moment od on choisit Echantilloner dans le menu
Fichier . Aprés ce choix, il convient de quitter le
programme, et d’installer l'environnement tel qu’on veut le
mesurer. Lorsque la période s'est écoulée, il faut relancer
Vapplication Echantillon et choisir le menu Récupérer les
résultats .
Comme les logicicls de présentation graphiques proposent
une puissance difficilement égalable (camemberts en relief
French Exce...
Finder
Echantilton
Alain Raynaud
et en couleurs !), le programme ne propose aucun dessin en
sortie. Il enregistre dans un fichier le temps utilisé par
chaque application, fichier qui sera alors utilisable par tout
logiciel spécialisé, pour obtenir le graphique ci-contre.
A noter ; le programme tronque le nom des applications au
12éme caractére, remplacant la partie absente par *...’ . II
peut éue utile d’avoir une indication sur la période
d’échantillonage : celle-ci peut correspondre a la présence en
haut a gauche d’un trait noir (dans la barre des menus).
Pour cela, il faut cocher l’option ‘Signaler la période
réelle...’ dans le premier dialogue. I] est également possible
de changer la signature de I’application afin qu'un double
clic charge directement une application capable de
représenter les résultats.
Il peut étre utile d’avoir une indication sur la période
d’échantillonnage : celle-ci peut correspondre & la présence
en haut & gauche d’un trait noir (dans la barre des menus).
Pour cela, il faut cocher l’option ‘Signaler la période
réelle...’ dans le premier dialogue. I] est également possible
de changer la signature de l’application afin qu’un double
clic charge directement une application capable de
représenter les résultats,
De plus, tous ces réglages peuvent étre enregisirés afin de
devenir permancnis,
Qu’en conclure ? En observant, avec Echantillon,
Lutilisation du Macintosh, on risque d’avoir quelques
surprises : tel programme qu’on imaginait ne faisant rien
utilise 30% de la machine, ou inversement tel autre qu’on
avait éliminé le pensant grand consommateur se révéle étre
raisonnable. Par exemple, il faut se méfier de MPW qui
méme ne faisant rien occupe beaucoup de temps.
Comment ¢a marche ?
Le programme installe une VBLTask dans la System Heap,
qui est appelée tous les 60émes de seconde. Cette routine
note dans un buffer a la fois l'heure, par Ticks et le nom de
l’application courante par CurApName. En effet, le
MultiFinder ne réalise pas de changement de contexte lors
de ces interruptions. Lorsque les mesures sont finies, le
programme principal explore le buffer et calcule le temps
de chacun : il stocke, dans un fichier utilisable par un
Pom’s n° 45
tableur, le nombre de fois oi il a interrompu chaque
application. Dans certains cas, il se peut que des
interruptions aient été manquées, si l’on formate une
disquette par exemple. II est possible de comptabiliser aussi
ccs temps morts. Le rdle du programme s’achéve 1a,
La donnée indispensable —qui est l’adresse du buffer
Jorsqu’on quitte le programme— est enregistrée dans la
ressource “BPtr’ afin de pouvoir s‘en souvenir lorsque
Vutilisateur revient chercher les résultats de I’échantil-
Jonnage. Le premier élément du buffer est un Magic
Number, c’est-a-dire un nombre d'une valeur fixée a
Vavance pour point de référence, qui sert a indiquer si les
mesures sont finies ou non. Le deuxiéme élément est le
pointeur sur la zone mémoire oii réside la VBLTask. Il n'y
a ainsi aucun probléme pour désallouer les deux blocs logés
dans la System Heap.
Les réglages sont enregistrés dans la ressource ‘Sttg’.
Classiquement, trois /ong (durée, délai, creator) sont
d’abord stockés. Par contre, les booléens (signaler,
manques, Efface) sont tous trois compactés en un seul long
(un bit chacun donc il reste encore de la place pour 29
autres) au licu de consacrer un word a chacun. II faut
cependant noter que cette méthode qui consiste a utiliser des
ressources de l'application pour les réglages interdit le
fonctionnement en multi-utilisateurs.
La structure du fichier en sortie est ués simple : on wouve
d’abord les noms des applications rencontrées, séparés les
uns des autres par une tabulation (ASCII 09). Aprés un
retour chariot (ASCII 13), figurent les temps de chaque
application, également séparés par une tabulation.
Si, aprés un échantillonnage non effacé de la mémoire, on
charge le programme sur une autre machine disposant de
beaucoup moins de mémoire, il se peut qu’il il y ait un
plantage. En effet, dans ce cas le programme ira chercher
des données & une adresse qui, correspondant a l’ancienne
machine, peut étre trés haute dans la mémoire et n’existe
pas dans la nouvelle machine. D’oi un Bus Error par
exemple.
Il €tait spécialement important que les statistiques
rapportées par le programme correspondent a la situation
réelle d’utilisation. C’est pourquoi il a fallut utiliser cette
méthode en ‘temps différé’. Si on avait écrit un accessoire
de bureau du méme genre que le A propos du Finder,
affichant en permanence la consommation, il se serait
trouvé que, cet accessoire étant lui-méme un consom-
mateur, il aurait faussé les conditions de la mesure.
Choix d’un langage
Le corps principal du programme, contenant essentiel-
lement I"interface utilisateur est écrit en MPW C. La
VBLTask cst écrite cn MPW Assembler, mettant ainsi en
évidence l'utilisation de plusieurs langages différents dans
la réalisation d’un méme programme.
L’assembleur posséde l’avantage d'une grande sécurité :
scules Ics instructions du fichier source intervicnnent, alors
qu’avec un langage évolué, il faut tenir compte des
agissements du compilateur : on n’est jamais
complétement stir de ce qui va se passer, on est obligé de
tatonner. En langage machine, ce qui se passe est
entitrement écrit. Ainsi, il était pratiquement impératif
d’écrire la routine qui reloge sa voisine en assembleur, Par
contre, il faut reconnaitre que les langages évolués offrent
une rapidité d’écriture incomparable.
Les fichiers source
Le programme se batit a l'aide de wois fichiers source.
Echantillon.a, Echantillon.c et Echantillon.r décrivant
respectivement la partie en langage machine, langage C, et
ressource du programme, Le fichier qui permet de réunir
l'ensemble est un script de MPW : Echantillon.make. Il
suffit de demander & MPW de batir (Build) Echantillon :
tout se passe automatiquement, et en tache de fond si
désiré. Pour obtenir Echantillon.r, on peut utiliser la
commande DeRez Echantillon.Rsrc > Echantillon.r : le
fichier résultat (.r ) est nettement plus gros que le fichier
initial (.Rsrc ).
oe,
GS
| .
| Comment faire ?
@ lancez l'application ‘Echantillon’ par un
double ‘clic’ depuis le Finder ;
| @ sélectionnez l'article = ‘Paramétres
d'échantillonnage’ dans le menu ‘Réglages’ ;
@ fixezlapause avantle début du traitement (par
défaut 10 secondes) ainsi que la durée dudit
traitement (par défaut 300 secondes). Norons
que le résultat ne sera exploitable q'une fois ce
délai écoulé ;
@ sélectionnez l'article ‘Echantillonner’ dans le
menu ‘Fichier’ ;
@ une fois le délai écoulé, quittez l'application ;
@ lancez nouveau I'application ‘Echantillon’
par un double ‘clic’ depuis le Finder ;
€ sélectionnez l'article ‘Récupérer les résultats’
dans le menu ‘Fichier’ ;
© vous disposez maintenant d'un fichier ‘texte’
utilisable depuis n'importe quel programme
Mac.
Pom’s n° 45
27
Source ‘Echantillon.make’
4 File: chant 111on.make
# Target Echant ition
# Source: Echantillon.c Echantillon.r Echantillon.a
# Created: — Lundi 11 Septembre 1989 11:30:07
Echantillon.c.o f Echantillon.make Echantilion.c
© -w Echantilion.c
Echantillon ff Echantillon.make Echantillon.r
Rez Fchantillon.r -append -o Echantillon
échantillon.a.o f Echantillon.make Echantillon.a
Asm “wh -1 -font monaco, 9 Echantillon.a
SOURCES = Echantillon.c Echantillon.r Echantillon.a
ORIFCTS = Echantillon.c.o Echantillon.a.o
Echantillon ff Echantillon.make {OBJECTS}
Link -w -t APPL -c '22227@
{OBJECTS} 0
"(CLibraries}*CRunt ime.o a
"(Librarica)"Interface.o 9
"(CLibraries)"stdcLib.o 2
"(CLibraries) "CSANELib.o 9
"(CLibraries}"Math.o 0
"(Clibraries)"CInterface.o 3
~o Bchantilion
Source ‘Echantillon.c’
p
*
échantillonage : temps CPU consacré 4 chaque application *
* partie en langage C : interface utilisateur et extraction*
* des données enregist rées *
sf
vold Debug (vold) = OxASFF ;
dong ECHRUN (long, long) extern;
include <Limlts.h>
finclude — <Types.h>
finclude — <Resources.h>
finclude —— <QuickDraw.h>
include — <Fonts.h>
finclude <tvents.h>
finclude <Windows.h>
finclude — <Menus.h>
Hnclude —<Text Edit .h>
finclude <Dialogs.h>
finclude Desk. h>
finclude —<ToolUti1s.h>
include <Memory.h>
include <Files.h>
Haoclude — <osutils.h>
finclude <Controls.h>
finclude —<Packages.h>
Monuandle menu[4) ;
Windowtr — PresWindow ;
Dialogrtr — EchDialog, Calcbialog +
Handle BPrRes ;
Boolean signaler, Temps Inva! ide=false,manques,
NoBufhvail, Efface 7
tong duree, delal, bullet, creator ¢
Result ()
{
Jong Nom [16], Nom2 [16], Nom3 [16], Cuz Bul, other Bul;
Jeng Temp1, Temp2, Temp3, CurTime, OldTime, J, ks
Nbre[16];
int A,match, free ;
Point where 7
srReply reply ¢
StringHandle prompt, orgName,ManqName ;
osErr error ;
Jong fileType='TEXT' ;
refNun ;
nombre ;
Curkufebuffert® 2
For (1-0;1<16741++)
{
Nom [i]=0
Nom2 [i ]=
Nom3[4]=0 ¢
Nbre[i]-0
)
BlockMove ( (Ptr) CurBuf, (Ptr) &CurT:
OldTime=CurTime-1 3
while (CurTime!=0)
{
BlockMove ( (ver) (curBuf+4), (Ptr) sTempl, 4) ¢
BlockMove ( (Ptr) (CurBuf+8), (Ptr) &Temp2,4) 7
BlockMave( (Ptr) (CurBuftl2), (Ptr) &Temp3, 4) ;
match=-1 7
for(i=1;i<l6s4++) Lf (Nom [1J--Templ66Nom2{i]--
Temp2¢éNom3[iJ==Temp3) match=1 +
4f (natch==-1)
{
free—1 7
for(iml;i<16;1++) 1£ (tam (1]~-086Nom2 [i ]-—
066Nom3[i]==0) free=i +
Nol [free]=Temol ;
Nom2[free]=Temp2 ;
Nom3{free]—Temp3 ;
match=free ;
}
Nore[match]=Nbre [match] +1 7
Nore[0}-Nbre[0]+(CurTime-OldTime-1) +
CurBuf=CurBultl6 ;
OldTinme=CurTime +
BlockMove ( (Ptr) CurBuf, (Ptr) &CurTime, 4) ;
}
where.h=200 ¢ where.v-100 7
prompt=GetString (1000)
orgNane=GetString (1001) ;
SFPutFile (where, (Str255) *prompt, (Str255) torgName,
(DlgHookProcPtr) 0, sreply) +
41£ (reply.good)
t
error=FsDelete((str255) reply. fName, reply. vRefNum) ;
error=Create( (Str255) reply. fNane, reply. vRefNum,
(OsType) creator, (OSType) FileType) ;
4£ (error—-noErr)
(
error=FSOpen ( (Str255) reply. fName, reply. vRefNum,
érefNum) ;
4f (error—-noErr)
{
for (4=1;4<16;4++)
de
4f (Nhre[1}!=0)
t
JoNom1 (1]/ (long) 16777216 +
Uf ($23) ke3 ; else kej ;
if (j>1) error=Fsitrite (refNum, 6k,
(Ptr) 1+ (Ptr) éNem1[1]) +
4£(j>2) kd 7 else k-j-3 +
1f(j23) exror=Fswrite (refNum, sk, (Ptr) sNom2(1]) 7
Af(f>11) k=4 7 else k=j-7 7
if (j>7) error=FsWrite(refNum, &k, (Ptr) éNom3[1])
Pom’s n° 45
4£($>11)
{
k-201 ¢ fre
error=tswrite (refNum, &}, (Ptr) 3+ (Ptr}&ék) ¢
J
ke9: jolt
error=FSWrite (refNum, £3, (Ptr)3+(Ptr)&k) +
}
)
4f (manques)
f
MangName=Gat String (1002) ;
§-(Str255) *ManqName [0] ;
error=FSWrite (retNum, &j, (Ptr}1+{Ptr) *angName) 7
}
kel}: fale
error-FSWrite (refNum, & J, (Ptr) 3+ (Ptr) sk) +
Lor (1-1; 1816;.144)
{
4 (Nom1[41/ (ong) 16777216) !=0 }
{
NumTostring (Nbre |i}, nombre) +
kenombre[0] +
error=FSWrite(refNum, &k, (Ptr) 1+(Ptr}snombre) ;
ke9 ¢ Jali
error-Fsirite (refNum, £3, (Ptr)3+(Ptr)&k) +
}
J
4f (manques)
€.
NumTostring (Nbre [0], nombre) +
kenombre {0} 7
error=FSWrite (retNum, &k, (Ptr}1+ (Ptr) énombre) +
t
kel3 3 jel;
error-[owrite (refNum, 6}, (Ptr) 31 (Ptr)ék) 7
error=rstlose(refnum) ;
if (Ef face)
i
BlockMove ( (Ptr) 4+ (Ptr) buffer, (Ptr)sotherBuf, 4) +
DispusPts ((Ptr) buffer) +
DisposPtr ((PtrjotherBut} 7
buffer=0 ;
RlockMove( (Ptr) sbuffer, (Ptr) *BPrRes, 4) 7
ChangedResource (BPrRes) 7
wWriteResource (BPrRes) ;
DisableItem(menu[2],2) +
Dowenu (cholx)
Jong choix ;
t
int chotxl,chotx?,t 2
Ste255 name, tempStr 7
Grafptr port ;
Boolean result=false ;
Rect box ¢
ControlHandle item ;
short hit, itemtype +
Handle settings ;
Jong booleens ;
choixl-Hiword(choix) +
LE (choLxi!=0)
fi
choix2=Loword (choix) ;
if ( (choixtm==1) && (choix?>) )
t
SetItem (menu[1], chotx2, sname) ;
GetPort (sport) ;
choixl=OpenDeskAcc (name)
SetPort (port) ;
)
if( (choixi==1) && (choix2=-1) )
Showiindow(Preswindow) ;
Af¢ (choixl==2) && (choix2==1) }
Pom’s n° 45
if (signales)
but ter=ECHRUN ( (long) 60"duree,
(Jong) 60*delai + (1ong)0x80000001) +
else
buf fer-ECHRUN ( (long) 60*duree,
(dong) 604delat+(ong}1) +
if (butter !=0)
Move ( (Ptr) khnffer, (Ptr) #RPrRes, 4) 2
ChangedResource (SPzRes) +
writeResource(aPrRes) ;
}
}
1f( (chotxt==?) && (chotx?==?) } Result 2
4£( (choixl--2) 55 (choix2—-t) )
t
booleens=
(ong) signaler+2* (long) manques+4* (long) Efface ;
settings=GetResource('Sttg', 1000) ;
MLock {settings} 7
BlockMove ((Ptr)éduree, (Ptr) ‘settings, 4) +
BlockMove ( (Ptr) sdelai, (Ptr)4+ (Ptr) *settings,4) 7
BlockMove ( (Ptr) écreator, (Ptr) 8+ (Ptr) *settings, 4) +
AlockMave ( (Ptr) éboaleens, (Ptr) 12+ (Ptr) *settings, 4)
HUnlock (settings) 7
ChangedResource (settings) ;
WriteResource (settings) ;
}
4£{ (choixiee2) && (choix:
4f( (choixl==4) s6 (choix2-
{
BringToFront (EchDialog) +
ShowiWindow (EchDialog) +
hited;
while( (hit!-1) &@ (hit!-2) }
{
BringToFront (EchDialog) +
ModalDialog (0, shit) +
if (hit--8)
{
GetDItem (EchDialog, hit, éitentype,
& (Handle) item, &box) ;
SetCt lValue (item, 1-GetCtlv
Showing the first 100000 of 291664 characters.