home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 3 / CDASC03.ISO / maj / 1798 / bas / aerbasic.doc next >
Text File  |  1993-04-01  |  24KB  |  593 lines

  1. Jacques LAVAU Automatique et Logiciels à votre service.
  2. 14 rue de l'Est   02100 Saint-Quentin.
  3.  
  4.  
  5.  
  6.  
  7.                     Documentation de AERBASIC.EXE
  8.                        Version Libre-Essai 2.3
  9.                        Version Registrée 1.2.
  10.  
  11.  
  12.  
  13.  
  14. REQUIS:
  15.  
  16. 256 ko de mémoire, un lecteur ou disque dur, MS-DOS 3.0 ou supérieur, ou
  17. DR-DOS.
  18.  
  19.  
  20.  
  21. BUT
  22.  
  23. AERBASIC, version 2.3, du 20 mars 1992, est un filtre pour fichier
  24. source BASIC. AERBASIC réalise sept à onze opérations en une fois, qui
  25. sont toutes préliminaires à la reprise de vieux programmes BASIC illi-
  26. sibles (BASIC interprété, ou BASCOM d'avant 1987), pour modernisation.
  27. Ceci est notamment utile pour convertir du GWBASIC ou du BASICA vers le
  28. nouveau QBASIC de MS-DOS 5.
  29.  
  30. Voici ces sept étapes:
  31.  
  32. - Inclure les fichiers inclus selon la directive $INCLUDE (syntaxe Mi-
  33. croSoft ou Borland, qu'importe, toutes deux sont décodées). C'est inévi-
  34. table, car selon la nouvelle syntaxe MicroSoft, il n'est plus permis
  35. d'avoir des instructions exécutables dans un inclus. Le mot-clé $INCLUDE
  36. est remplacé par #INCLUDE, afin d'éviter toute réinterprétation ulté-
  37. rieure.
  38.  
  39. - Enlever les numéros de lignes superflus, ne laissant que les indis-
  40. pensables. (Arracher aussi les commentaires, si d'aventure vous l'aviez
  41. demandé.)
  42.  
  43. - Documenter chaque ligne appelée, par la liste triée des anciens
  44. numéros de ligne appelant celle-ci. Ceci vous donne presque le dessin
  45. de l'organigramme.
  46.  
  47. - si vous ne l'avez interdit, préciser après chacun de ces numéros de
  48. lignes appelantes, la nature de l'appel: GOSUB, GOTO (GOTO, THEN, ELSE,
  49. RETURN numéro de ligne), RESUME, DATA (RESTORE), RUN ou ERL.
  50.  
  51. - Aérer les lignes, en s'interdisant de laisser plus d'une instruction par
  52. ligne. Ceci vous raccourcit chaque ligne, et doit vous laisser donc la
  53. place de remplacer les identificateurs trop brefs et obscurs par de plus
  54. parlants.
  55.  
  56. - Rendre multilignes toutes les structures IF THEN ELSE, et les indenter
  57. correctement, même en cas d'imbrication. Ainsi:
  58.  
  59. IF condition THEN action1 ELSE action2: If Condition2 THEN 315
  60.  
  61. devient:
  62.  
  63. IF condition THEN
  64.   action1
  65. ELSE
  66.   action2
  67.   If Condition2 THEN
  68.     GOTO 315
  69.   END IF
  70. END IF
  71.  
  72. - documenter quelle est l'entrée de subroutine close par un RETURN:
  73.       RETURN
  74. ' Clot la subroutine 400
  75. Le code mort est dénoncé:
  76.       RETURN
  77. ' Clot la subroutine 0.
  78. Sans toutefois déjouer le piège d'un RETURN dans une alternative, qui
  79. est signalé dans la version registrée par un point d'interrogation.
  80.  
  81. La version registrée accomplit quatre autres tâches:
  82. - Diviser à la demande les longues instructions DIM multivariables.
  83. - Diviser à la demande les longues instructions COMMON multivariables.
  84. - fournir un rapport hiérarchique des subroutines: qui appelle qui.
  85. - fournir un rapport algorithmique limité: quels GOTO ou assimilés (THEN
  86.   n°, ELSE n°, RETURN n°) font des répétitives et lesquels des
  87.   alternatives.
  88.  
  89. Elle donne aussi des options sur le style d'indentation, et sur le style
  90. d'insertion des renseignements sur les lignes appelées. Elle peut four-
  91. nir des résumés "Jivaro" réduits aux seuls branchements.
  92.  
  93.  
  94.  
  95.  
  96.  
  97. CONCURRENCE:
  98.  
  99. Pour fixer les idées, MicroSoft donne avec chaque version de Quick-
  100. BASIC, un programme nommé REMLINE.BAS, dont l'exécutable est deux fois
  101. plus gros, qui ne réalise qu'une seule des onze tâches d'AERBASIC, qui
  102. se laisse abuser par des morceaux de code mis en commentaires, et qui
  103. met plus cinq fois plus de temps pour cela... C'est cela la supériorité
  104. du Pascal assaisonné d'assembleur...
  105.  
  106.  
  107.  
  108.  
  109.  
  110. USAGE:
  111.  
  112. N'oubliez pas que ce source doit avoir été sauvé sous forme ASCII...
  113. S'il est en format "tokénisé", chargez-le dans votre interpréteur,
  114. sauvez-le convenablement:
  115. SAVE "NomFichier", A
  116.  
  117. AERBASIC demande un ou plusieurs arguments en ligne de commande:
  118. - obligatoirement: un ou plusieurs noms de fichier(s) source BASIC.
  119. Ceux-ci sont supposés être de ces pénibles fichiers en BASIC-spaghetti
  120. avec numéros de lignes partout, bourrages multi-instruction, multi-IFs,
  121. et des noms de variables aussi brefs et obscurs que possible...
  122. - de zéro à six options - de zéro à treize (plus deux variantes) pour la
  123. version registrée. Une est vraiment très utile: Spécifier le répertoire-
  124. cible, sous la syntaxe /Rrépertoire.
  125.  
  126. AERBASIC retourne sur le répertoire-cible un fichier intermédiaire avec
  127. l'extension NOL (comme "No Lines"), débarrassé des numéros de lignes
  128. supeflus.
  129.  
  130. Même des pièges rarissimes comme ceux-ci sont déjoués:
  131. 71  PRINT "GOTO 69"
  132. 72  PRINT "C'est un piège": 'GOSUB 52
  133.  
  134.  
  135. AERBASIC retourne surtout, avec l'extension EPU (comme "épuré") le fi-
  136. chier final, contenant les inclusions, ne contenant que les numéros de
  137. lignes indispensables, où il n'y a plus qu'une seule instruction par
  138. ligne, et où les IF sont aérés selon la syntaxe modernisée, et obliga-
  139. toirement terminés par un END IF.
  140.  
  141. AERBASIC recalcule intégralement toute l'indentation sur critères
  142. rationnels, et réussit tout à la perfection. Ainsi:
  143.  
  144. 7810  FOR I=1 TO 8:FOR J=1 TO 8:
  145. 7820  INPUT #1,IAT(I,J,1),IAT(I,J,2),IAT(I,J,3):NEXT J,I
  146.  
  147. devient:
  148.     FOR I=1 TO 8
  149.       FOR J=1 TO 8
  150.         INPUT #1,IAT(I,J,1),IAT(I,J,2),IAT(I,J,3)
  151.     NEXT J,I
  152.  
  153. Simplement, la version Libre-Essai, non payée, renonce définitivement à
  154. indenter au bout d'environ trois pages. C'est ma façon de vous inciter à
  155. payer votre licence. Le but étant... qu'il vous revienne bien moins cher
  156. de payer votre licence, que de corriger manuellement ce qui sort de la
  157. version en diffusion gratuite...
  158.  
  159.  
  160. Les commentaires sont laissés intacts.
  161.  
  162. Il vous reste ensuite à remanier en profondeur les anciennes inclusions,
  163. et à les transformer en collections de SUBs et de FUNCTIONs.
  164.  
  165. Voilà qui fait gagner pas mal de jours de travail pour la modernisation
  166. de gros programmes-spaghettis illisibles. Bien testé sur du code destiné
  167. à l'origine à tourner en interprété et en compilé sur des BASICs Micro-
  168. Soft de l'ère 1983-1984, AERBASIC n'ajoute aucune faute de logique. Au
  169. contraire, il mettra en évidence de nombreuses aberrations logiques que
  170. vous ne soupçonniez pas encore. C'est bien là son utilité... Il dénonce
  171. aussi impitoyablement les morceaux de code mort.
  172.  
  173. Si vous en trouvez l'utilité, vous pouvez préciser aussi par ces options
  174. en ligne de commande:
  175.  
  176. - que vous voulez ne pas commencer au début, mais à l'étape 2 ou 3, par
  177.   l'argument /D2 ou /D3,
  178. - que vous voulez stopper avant la dernière étape, en spécifiant
  179.   l'argument /F2 ou /F3,
  180. - que vous voulez éviter d'écrire le fichier intermédiaire échenillé
  181.   avant écriture du fichier final aéré, argument /S. 
  182. - combien de termes par ligne documentant une ligne appelée, par /Nn,
  183.   avec N allant de 0 à 9. 0 signifiant que vous ne voulez aucune docu-
  184.   mentation autre que le numéro de ligne appelante, et 0 désarmant aussi
  185.   la documentation des RETURNs. Les valeurs 5 et 6 sont recommandées, et
  186.   5 est pris par défaut.
  187. - si vous voulez être débarrassé des commentaires laissés par le pro-
  188.   grammeur précédent, par /A.
  189.  
  190. Voici comment retenir ces chiffres:
  191. Le fichier source brut .BAS porte le numéro 1,
  192. Le fichier collecteur  .COL porte le numéro 2, mais n'est plus écrit,
  193. sauf si on spécifie l'arrêt sur lui, par /F2,
  194. Le fichier échenillé   .NOL porte le numéro 3,
  195. Le fichier aéré final  .EPU porte le numéro 4.
  196.  
  197. Donc le réglage par défaut correspondrait aux arguments: /D1 /F4.
  198.  
  199.  
  200. Dans la version registrée et payée, vous disposerez de neuf autres
  201. options:
  202.  
  203. - option /J, comme Jivaro. Celle-ci vous délivre une version "Jivaro",
  204. réduite et non exécutable, et dont le but est donner à l'humain en un
  205. coup d'oeil la structure logique du programme. La version Jivaro
  206. (extension .JIV) est réduite aux lignes appelantes, aux lignes appelées,
  207. et aux listes triées de numéros de lignes appelantes. Aucune de ces
  208. lignes n'est dépouillée de son numéro.
  209.  
  210. - Sa variante /JC: inclut aussi les lignes de commentaire dépourvues
  211. d'instructions exécutables.
  212.  
  213. - Option /Mn: décompose les instructions DIM multivariables en mono-
  214. variables si n est absent ou égal à 1, multivariables limitées à n,
  215. sinon. n <=9.
  216.  
  217. - Option /Cn: décompose les instructions COMMON multivariables en mono-
  218. variables si n est absent ou égal à 1, multivariables limitées à n,
  219. sinon.
  220.  
  221. - Option /P: elle vous débarrasse de l'impression des "pense-bêtes" dans
  222. les fichiers-cibles.
  223.  
  224. - Option /V: permet de retourner au Vieux style de documentation des
  225. numéros de lignes appelantes (Le numéro reste avec sa ligne d'origine),
  226. au lieu du nouveau style, par défaut dans la version registrée (le
  227. numéro va devant la ligne de commentaire portant la liste des lignes
  228. appelantes, qui précède la ligne d'origine).
  229.  
  230. Soit:
  231.  
  232. '<--   6240
  233. 7510      NEXT IP
  234.         NEXT ITYP
  235. au lieu de:
  236.  
  237. 7510 '<--   6240
  238.           NEXT IP                                                               
  239.         NEXT ITYP                                                               
  240. à partir de :
  241.  
  242. 7510 NEXT IP                                                                    
  243. 7520 NEXT ITYP                                                                  
  244.  
  245. - Option /Ixy où "x" et "y" sont des chiffres compris entre 0 et 9, pour
  246. changer l'indentation par défaut. "x" représente le décalage de base, et
  247. y l'incrément d'indentation. Par défaut, y vaut 2. En vieux style x vaut
  248. 6, et x vaut 4 en nouveau style. C'est ce qui donne l'optimum de
  249. lisibilité et d'encombrement.
  250.  
  251. - Option /H pour demander en fin de fichier un rapport hiérarchique des
  252. routines appelées par un GOSUB. Les fonction FN ne sont pas prises en
  253. compte. Ni les traitements d'erreur par ON ERROR GOTO xx.
  254.  
  255. - Sa variante /HS qui vous donne en plus le classement des branchements
  256. GOTO et assimilés entre branchements amont (donc probablement des
  257. répétitives), et branchements aval (donc des termes d'alternative).
  258. (Toutefois, les conditions logiques n'étant pas analysées, le programme
  259. ne saura pas vous dire que tel WHILE est en fait une simple alternative
  260. multiligne glissée dans l'habit dans une répétitive, parce que le BASIC
  261. de l'époque ne répondait pas du tout aux besoins du programmeur.)
  262.  
  263. AERBASIC considère que tout argument commençant par une barre inclinée à
  264. gauche ('slash') est une option. Toutes les options sont lues en une
  265. fois. Si elles sont contradictoires, la dernière a le dernier mot. 
  266.  
  267. Tout autre argument est lu comme un nom de fichier-source. Chacun de ces
  268. noms peut comporter une spécification de chemin, et AERBASIC utilise
  269. cette spécification pour trouver les éventuels fichiers à inclure, s'il
  270. ne les trouve sur le répertoire par défaut. Comme une ligne de commande
  271. est bridée à 79 caractères d'arguments, la version enregistrée vous
  272. autorise aux caractères "joker": '?' et '*'.
  273.  
  274.  
  275. AERBASIC ne fonctionne qu'en ligne de commande, sans menu: parce que
  276. c'est de loin le plus rapide, pour vous qui êtes assez dégourdis pour
  277. composer une ligne de commande. Il vous permet de spécifier autant de
  278. fichiers-sources qu'il en tient sur la ligne de commande. S'il n'en
  279. trouve aucun - tout en ayant trouvé des options - il vous en demande un.
  280.  
  281. La version en Libre-Essai n'autorisant pas les caractères "joker", on
  282. peut déporter plusieurs des tâches de composition de la ligne de
  283. commande vers un fichier BATch qui appelle AERBASIC et lui fournit son
  284. argument, ou successivement ses arguments. Et c'est élémentaire. Au
  285. pire, cela donne quelque chose comme ça:
  286.  
  287. :debut
  288. AERBASIC /RA: /S %1.bas
  289. if errorlevel==1 goto fin
  290. @shift
  291. @goto debut
  292. :fin
  293.  
  294. ou comme ça:
  295. :debut
  296. AERBASIC /RA: %1.bas %2.bas %3.bas
  297. if errorlevel==1 goto fin
  298. @shift
  299. @shift
  300. @shift
  301. @goto debut
  302. :fin
  303.  
  304. en supposant:
  305. 1)      que A: est la disquette destinée à recevoir les résultats,
  306. 2)      que les sources sont sur le répertoire courant,
  307. 3)      que AERBASIC.EXE est sur un chemin accessible,
  308. 4)      et que la suite des fichiers à convertir est donnée en ligne de
  309.         commande du fichier BATch, que leurs extensions sont toutes BAS.
  310.  
  311. Alors la procédure écrit toutes les traductions dans le répertoire spé-
  312. cifié, puis s'arrête correctement dès que la liste à convertir, est
  313. épuisée. L'inconvénient d'utiliser un fichier procédure, du moins sous
  314. un DOS inférieur à DR DOS 6, est que le nombre de "handles" est alors
  315. limité.
  316.  
  317.  
  318. Après passage par AERBASIC, il vous reste les tâches suivantes:
  319.  
  320. - Remplacer les noms de variables trop brefs par des noms significatifs.
  321. Or, vos nouveaux noms seront presque toujours plus longs. Mais
  322. maintenant, ils ne peuvent plus faire sauter les lignes BASIC,
  323. puisqu'elles ont amplement raccourci. Seules exceptions embêtantes, avec
  324. lesquelles vous devrez ruser: les instructions FIELD, et certains
  325. WRITE #fichier,longue_liste_de_variables.
  326.  
  327.  
  328.  
  329. - Si vous n'avez jamais registré votre version Libre-Essai, programmer
  330. deux macros de votre éditeur, pour diviser les longues instructions DIM
  331. et COMMON.
  332.  
  333. - Remplacer les labels numéros par des labels significatifs.
  334.  
  335. - modulariser d'abondance, en déversant un maximum de code dans des Pro-
  336. cédures et des Fonctions, au lieu des tronçons appelés par GOSUB.
  337.  
  338. - Passer ces procédures et fonctions en librairie.
  339.  
  340. - presque toujours: moderniser l'interface, etc...
  341.  
  342.  
  343.  
  344.  
  345.  
  346. VITESSE: 
  347.  
  348. Bien que périmées, les mesures suivantes n'ont été refaites que
  349. partiellement: mes configurations ont changé depuis.
  350.  
  351. Sur un AT 286 à 16 Mhz, avec un disque CONNER 3104 de 100 Meg, testé
  352. avec ou sans cache-disque (et 8 buffers DOS seulement), un groupe de
  353. fichiers totalisant 40 ko était converti en:
  354.  
  355. ┌────┬─────────────────────────────────────┬──────────────────────────┐
  356. │    │       Version registrée 1.0         │ Version Libre-Essai 2.1a │
  357. ├────┼───────────┬────────────┬────────────┼────────────┬─────────────┤
  358. │    │ Option /S │ avec cache │ sans cache │ avec cache │ sans cache  │
  359. ├────┼───────────┼────────────┼────────────┼────────────┼─────────────┤
  360. │ DD │   8 à 9"  │    10,5"   │    11"     │     16"    │     17"     │
  361. ├────┼───────────┼────────────┼────────────┼────────────┼─────────────┤
  362. │ 5'¼│    24"    │    29"     │    31"     │     33"    │     32"     │
  363. ├────┼───────────┼────────────┼────────────┼────────────┼─────────────┤
  364. │ 3'½│    28"    │    34"     │    36"     │     37"    │     38"     │
  365. └────┴───────────┴────────────┴────────────┴────────────┴─────────────┘
  366.  
  367.  
  368. La version registrée 1.2 en fait nettement plus, et est à peine moins
  369. rapide: 8,3" sur mon 386 SX, avec option /S.
  370. La version Libre-Essai 2.3 est maintenant beaucoup plus proche de la
  371. version registrée que les versions précédentes ne l'étaient; elle n'est
  372. plus bridée que par quelques routines critiques volontairement laissées
  373. en Pascal standard au lieu d'assembleur. Temps: 9,2".
  374.  
  375. La version registrée est optimisée à l'extrême sur les temps de calculs,
  376. grâce à de nombreuses routines codées sur mesure en assembleur.
  377. Si l'on écrit sur disquette, dont les temps d'accès masquent les temps
  378. de calculs, l'option /S (pas de fichier intermédiaire) donne un très
  379. fort avantage en vitesse.
  380.  
  381. Enfin, la version registrée économise énormément de temps et de soins
  382. dans les travaux par lots avec carte blanche, par "*" et "?" .
  383.  
  384.  
  385. Soit de 3,5 minutes à 12 minutes pour traiter 1 Meg de sources: et voilà
  386. une semaine de travail d'édition déblayée!  Tandis que les étapes
  387. manuelles ultérieures de clarification des variables et des labels sur
  388. un tel volume de source, vous prendront encore quelques jours...
  389.  
  390.  
  391.  
  392.  
  393. MEMOIRE:
  394.  
  395. Afin d'obtenir sa vitesse maximale, foudroyante, AERBASIC cherche à uti-
  396. liser toute la mémoire DOS nécessaire. Une seule opération posait un
  397. subtil problème d'allocation mémoire: la prise des inclusions.
  398.  
  399. Cas favorable: vous avez un DOS qui autorise un processus à détenir plus
  400. de 15 "handles" libres, c'est à dire de numéros de fichiers qu'il peut
  401. ouvrir, Alors AERBASIC choisit la stratégie d'allocation de "handles" et
  402. de tampons, donnant la vitesse maximale. Cela pour MS-DOS 3.3 ou supérieur,
  403. ou DR-DOS 5.0 ou supérieur.
  404.  
  405. Sinon, s'il ne peut disposer de plus de 15 "handles", AERBASIC en
  406. réserve 13 pour 13 niveaux d'imbrication des inclusions. Autant dire que
  407. les risques d'échec sont nuls en conditions réelles... En revanche,
  408. l'exécution sera un peu moins rapide, sauf par le secours d'un bon
  409. cache-disque, accédant à de la mémoire EMS ou étendue.
  410.  
  411. Dans le cas d'un DOS 3.3 ou supérieur, AERBASIC cherchera à conserver
  412. en mémoire dans ses tampons tous les fichiers lus lors de la première
  413. étape, afin de n'avoir à en relire aucun durant la seconde étape. Les
  414. deux limitations portent alors sur:
  415. - le nombre de fichiers inclus en tout depuis le fichier-source racine:
  416. environ 42, plus ou moins selon votre mémoire DOS libre au départ.
  417. - l'encombrement total de tous ces fichiers-sources, environ 480 k...
  418.  
  419. Ces chiffres sont en pratique énormes, et ne seront certainement jamais
  420. rencontrés en conditions réelles. Ces stratégies n'ont pas prévu le cas
  421. de figure multi-tâche, où la mémoire mesurée libre au démarrage serait
  422. ensuite dévorée par un autre programme. AERBASIC ne plantera pas pour
  423. autant, mais sera désoptimisé et ralenti.
  424.  
  425. Autre limitation, la table des numéros de lignes est limitée
  426. arbitrairement à 1000. Faîtes-moi savoir si jamais vous avez buté sur
  427. cette limite en conditions réelles.
  428.  
  429.  
  430.  
  431.  
  432. ENCOMBREMENT SUR DISQUE:
  433.  
  434. AERBASIC, version Libre-Essai, crée un fichier intermédiaire, qu'il
  435. n'effacera que si vous lui en donnez l'ordre. Prévoir donc de l'ordre de
  436. 230 ko libres sur disque pour traduire un fichier de 100 ko (y compris
  437. toutes ses inclusions). L'option /S conduit au moindre volume final, en
  438. évitant d'écrire ce fichier intermédiaire, économisant temps et place.
  439.  
  440. Excepté le source en cours, AERBASIC écrase sans avertissement tout
  441. fichier totalement homonyme de ses fichiers-cibles, et qui serait
  442. imprudemment situé sur le répertoire-cible.
  443.  
  444.  
  445.  
  446.  
  447. COPYRIGHT:
  448.  
  449. Cette version de AERBASIC.EXE est diffusée en libre-essai: sa copie est
  450. gratuite, mais pas son usage. Si AERBASIC ne vous fait gagner ne serait-
  451. ce qu'une seule demi-journée de travail, alors vous devez m'envoyer
  452. votre paiement de licence: 75 F TTC. Vous recevrez votre facture en
  453. retour, ainsi que la version registrée, qui elle, vous permet d'éviter ces
  454. "pense-bête" agaçants, qui vous rappelent l'obligation de payer votre licence,
  455. qui vous donne de précieuses options supplémentaires, etc. etc. bref! qui est
  456. bien meilleure...
  457.  
  458. Respectez rigoureusement la mention de mon nom d'auteur. La vente de ce
  459. programme est interdite sans mon accord écrit. Il est interdit de donner
  460. ou distribuer ce programme même gratuitement, sans cette présente docu-
  461. mentation intégrale. J'ai donné la permission de la distribution de la
  462. version Libre-Essai au club OUF, et à DP-Tool Club. Qui a seul réalisé
  463. l'essentiel des ventes.
  464.  
  465. Je suis lassé des petits indélicats qui, non contents de ne pas payer un
  466. programme, se dépèchent d'effacer le nom de l'auteur. Je déteste aussi
  467. de risquer d'aider à véhiculer quelque virus. C'est pourquoi AERBASIC
  468. bénéficie d'un verrouillage anti-virus et anti-truands. Il est non
  469. seulement illégal, mais aussi très très déconseillé d'y tenter quelque
  470. chirurgie bitale sous DEBUG ni par quelque autre moyen. En contre-
  471. partie, il ne peut s'exécuter sous un DOS de version inférieure à 3.
  472.  
  473.  
  474. Il est devenu superflu de vérifier que la somme de contrôle soit restée
  475. la même qu'à la sortie de mon bureau:  - 269 672 843 pour la version
  476. mise en Libre-Essai. Utilisez pour cela le programme joint: CRC1.EXE,
  477. avec la syntaxe évidente: CRC1 chemin\AERBASIC.EXE
  478.  
  479.  
  480. La version registrée est interdite de circulation et de reproduction,
  481. sinon la copie de sauvegarde à l'usage exclusif de l'acheteur enre-
  482. gistré, selon les termes des lois françaises et européennes en vigueur.
  483.  
  484. Le fichier ci-joint AERBASIC.FAC contient une facture PRO FORMA (pour les
  485. administrations) et un modèle de bon de commande. Utilisez ce modèle.
  486.  
  487.  
  488.  
  489.  
  490. Versions successives:
  491.  
  492. Registrée 1.2:  Corrigé bogues:
  493. Mauvaise réinitialisation pour le traitement des fichiers autres que le
  494. premier sur la ligne de commande. La documentation des RETURN laissait
  495. énormément à désirer: réécrit complètement l'algorithme. Le mode "Vieux
  496. Style" était incorrect.
  497.  
  498. Libre-Essai 2.3:
  499. Suppression de presque tous les archaïsmes volontaires. Un seul fichier
  500. source pour les versions Libre-Essai et registrée; avec profusion de
  501. directives de compilations conditionnelles... L'indentation imparfaite
  502. est donc remplacée par une indentation parfaite, mais limitée à trois
  503. pages. 
  504.  
  505.  
  506. Registrée 1.1d:
  507. Les RETURN dans une alternative sont signalés. Un fichier-source
  508. inexistant ne crée plus de fichier-cible. Registrée 1.1d et Libre-Essai
  509. 2.2d: meilleure garantie anti-virus.
  510.  
  511. Libre-Essai 2.2c; registrée 1.1c: Corrigé 3 bogues.
  512. - Corrigé "ENDIF" inexcusable, en "END IF".
  513. - Une fin de ligne en "ELSE 305 ELSE 310" était incorrectement traduite.
  514. - (Libre-Essai uniquement): les numéros multiples ON XX% GOTO etc...
  515. étaient maltraités.
  516.  
  517. Libre-Essai 2.2b, registrée 1.1b, correction cosmétique:
  518. - On ne suppose plus que l'écran DOS fût en noir et blanc. Mais on l'y
  519. force pour le temps du programme, afin de ressortir les autres couleurs.
  520.  
  521. Libre-Essai 2.2a, registrée 1.1a, corrigé bug:
  522. - Dans la combinaison suivante, les lignes 395 et 405 n'étaient pas
  523. prises comme appelées: IF xxx THEN GOSUB 395 ELSE 405
  524.  
  525. Libre-Essai 2.2, ajouté trois tâches:
  526. - documenter non seulement quelle ligne appelle, mais de plus la nature
  527.   de l'appel.
  528. - documenter les RETURN.
  529. - éventuellement arracher les commentaires.
  530. - Sur la version registrée uniquement: ajouté les deux rapports hiérar-
  531. chique et algorithmique (limité aux seuls GOTO et assimilés).
  532. - Bien meilleure aide en ligne de commande, en couleurs selon le mode
  533. texte présent. Elle déjoue les pièges suivants: le prompt peut être sur
  534. une ou deux lignes. La largeur d'écran peut être supérieure à 80 colon-
  535. nes.
  536. Corrigés bugs:
  537. - Corrigé l'erreur d'allocation mémoire qui se manifestait en cas de
  538.   travail par lots.
  539. - Corrigé sortie fort peu gracieuse si l'opérateur refuse de donner un
  540.   nom de fichier-source.
  541.  
  542.  
  543. de Libre-Essai 2.1 à Libre-Essai 2.1a, 6 bogues corrigées:
  544. - dans la transformation de
  545.   "IF xx THEN 310 ELSE 325" en:
  546.                   IF xx THEN
  547.                     GOTO 310
  548.                   ELSE
  549.                     GOTO 325
  550.                   END IF
  551.   elle oubliait le numéro 310.
  552. - Inversement: "IF xx GOTO 310" n'était pas transformé.
  553. - Les prescriptions de tâches incomplètes étaient incorrectement gérées.
  554. - Il fallait terminer l'argument /Rxx par un "\".
  555. - Il était impossible d'enchainer sur plusieurs fichiers-sources depuis
  556.   la ligne de commande.
  557. - L'aide en ligne de commande était incorrecte et insuffisante.
  558. - J'ai transfusé plusieurs gains de vitesse de la version enregistrée
  559.   vers la version Libre-Essai: celle-ci est passée de 21" à 17" au test.
  560.  
  561.  
  562.  
  563.  
  564.  
  565. L'AVENIR: Non.
  566.  
  567. J'ai pensé à une version plus ambitieuse, nommée STRUCT_B, qui ne verra jamais
  568. le jour. Je rembourse les clients qui ont souscrit à cette version fantôme. Le
  569. nombre de licences d'AERBASIC payées est d'ailleurs décourageant.
  570.  
  571. Et puis, si AERBASIC est né d'un projet en BASIC, je deviens vite grossier
  572. s'il m'arrive de dire ce que je pense du BASIC et surtout du BASIC Microsoft.
  573. Songez qu'il fallait quitter QBX et passer par un autre éditeur pour pouvoir
  574. passer des # au clavier (spécifique à la rencontre de QBX et de DR DOS 5.
  575. Disparu sous DR DOS 6.0)! Et pas de pointeurs stables sous QBX: vous ne savez
  576. jamais quand BASIC vous a tiré les variables de dessous les pieds... Le format
  577. des chaînes lointaines est gardé secret... Pas d'arguments procédures (je
  578. publierai un jour l'astuce en assembleur qui m'a permis de contourner cette
  579. bogue), pas d'indirection des procédures... Pas de contrôle des variables:
  580. tout dérapage au clavier crée immédiatement une nouvelle variable clandestine.
  581. Et la taille apoplectique des exécutables!
  582.  
  583.  
  584.  
  585.  
  586. 25 mai 1992, 14 h 26.
  587.  
  588. Jacques LAVAU Automatique et Logiciels à votre service.
  589. 14 rue de l'Est   02100 Saint-Quentin.
  590.  
  591. Fin de document.
  592.  
  593.