              NOTE IMPORTANTI RELATIVE AL PROGRAMMA "CLUT.EXE"


Contenuti:


1) Files inclusi - Vers. 2.8
2) Informazioni generali
3) Versioni
4) Opzioni
5) Tasti funzionali
6) Aggiornamenti 
7) Errori e/o suggerimenti


1) Files inclusi - Vers. 2.8
  

- CLUT.EXE     1.114.258 bytes - Versione base, modo protetto, del programma.
- R-CLUT.EXE     978.064   "   - Versione del programma per modo reale.
- G-CLUT.EXE   1.208.546   "   - Versione grafica, modo protetto.
- G-CLUT.BML      16.494   "   - Libreria fonts utilizzata da "G-CLUT.EXE".
- CLUT.HLP        30.191   "   - Help funzioni extra, per tutte le versioni.
- CLUT.TXT        26.667   "   - File testo, documentazione esterna.
- CLUT-ENG.TXT    22.859   "   - Versione inglese del file precedente.
- README.1ST       1.285   "   - Informazioni preliminari in lingua inglese.


2) Informazioni generali
  

- "CLUT.EXE"  in programma che intende proporsi come una alternativa pi e-
  voluta ed efficiente al programma "Dbu.Exe", fornito unitamente al prodot-
  to "CA-Clipper". La sua realizzazione  scaturita da esigenze mie persona-
  li ma, visto il risultato, lo metto a disposizione di tutti i programmato-
  ri e utenti evoluti di procedure "CA-Clipper", che come me non sono ancora
  saltati a pi pari sul "Windows 9x". Io faccio un uso intensivo del pro-
  gramma, anche con database "Windows 98" (in modalit DOS), perch  comple-
  to e riesce a fare veramente ogni intervento, senza alcuna limitazione.

- La sua realizzazione inizi nel 1996, quando il "Windows 95" era gi nato,
  ed  proseguita per 3 anni. Solo nel febbraio 2000 ho acquisito Internet,
  ho scaricato i "patch" 5.3b per il "Clipper 5" e dopo la loro applicazione
  ho provveduto ad aggiornare e ricompilare il programma.

- Il suo uso  libero e gratuito. Esso pu essere copiato e distribuito in
  ogni modo, a condizione che ci avvenga gratuitamente e separatamente da
  altri prodotti software o hardware non gratuiti, e che ad esso sia sempre
  abbinato questo testo illustrativo.

- Il programma  "freeware" non "pubblico dominio", pertanto non pu essere
  disassemblato o modificato. Se vi interessa qualche specifica routine per
  vostro uso, chedetemela pure, vi sar inviata gratuitamente.

- Il programma consente l'apertura contemporanea di uno o pi files ".Dbf",
  ciascuno con i propri indici, con un unico "RDD" o con "RDD" diversi, l'im-
  postazione di relazioni fra di essi e la loro visualizzazione ("browse")
  singola o simultanea (viste logiche multi-file).
  Consente inoltre l'esecuzione della maggior parte delle funzioni possibili
  in procedure complesse.

- Gli "RDD" utilizzabili sono il "DbfNtx" standard, il classico "DbfNdx", il
  nuovo (e scarsamente documentato) "DbfCdx" con le innovative caratteristi-
  che "Comix" (memo "FlexFile"/"BLOB") e il "DbfMdx". Quest'ultimo tuttavia
   piuttosto lacunoso; la maggior parte delle funzioni "RDD" relative agli
  indici non operano con esso. Pertanto con tale driver  consentita solo la
  gestione dei files ".Dbf", mentre le opzioni di gestione indici sono disa-
  bilitate.

- Esso include, come opzione extra, l'attivazione di un "prompt" comandi ana-
  logo al classico "punto", per l'immissione e l'esecuzione interattiva di e-
  spressioni algebrico-booleane e funzioni. Esso potr essere utilizzato, fra
  l'altro, per testare il funzionamento di espressioni e funzioni nuove per
  l'utente, prima del loro effettivo utilizzo. Il tasto <F1> nell'ambito del
  "prompt" comandi visualizza uno specifico "help".

  Oltre alle funzioni standard "CA-Clipper", il programma "CLUT.EXE" utilizza
  internamente, e quindi rende disponibili all'utente, alcune funzioni extra
  selezionate dalla mia libreria personale. Un apposito file di help, visua-
  lizzabile con il tasto <F1> (<Alt-F1> dal "prompt" interattivo), riporta la
  lista di tali funzioni e la loro descrizione.

- Il "prompt"  in grado di gestire pressoch ogni tipo di espressione, pur-
  ch non vengano immessi dei comandi. I comandi, come  noto, non esistono
  a livello di librerie standard, ma vengono convertiti in funzioni in fase
  di precompilazione. Qualora questo meccanismo non fosse chiaro, vedere il
  file "\Clipper5|Clip53\Include\Std.ch"; da esso potr essere rilevata, per
  ciascun comando, la funzione sostitutiva e la corrispondenza fra le opzioni
  del primo e gli argomenti della seconda.

- Il programma  stato realizzato mediante il prodotto "CA-Clipper" (Computer
  Associates) v. 5.3b e pertanto include molte innovazioni introdotte da tale
  versione. Una di queste  il gi citato RDD "DbfCdx/Comix", che rivoluziona
  la gestione dei campi memo rispetto alla precedente versione 5.2 e consente
  l'uso di indici multi-ordine, risparmiando molti file "handles" per la loro
  apertura (basta un unico "handle" per gestire tutti gli ordini inclusi nel-
  lo stesso file indice).

 LA GESTIONE DEGLI INDICI "DBFCDX" E DEI CAMPI MEMO "DBFCDX" DEL PROGRAMMA   
 "CLUT.EXE" E` QUINDI INCOMPATIBILE CON I FILES "DBFCDX" PRODOTTI MEDIANTE   
 LA PRECEDENTE VERSIONE "CLIPPER 5.2". IL PROGRAMMA E` IN GRADO DI LEGGERE   
 DETTI FILES ED EVENTUALMENTE DI CONVERTIRLI NEL NUOVO FORMATO, MA DOPO TALE 
 CONVERSIONE QUESTI NON SARANNO PIU` GESTIBILI CON PROGRAMMI "CLIPPER 5.2".  
 NESSUN PROBLEMA INVECE PER I FILES "CLIPPER 5.2" "DBFNTX" O "DBFNDX" E PER  
 FILES "DBFCDX" SENZA CAMPI MEMO, APERTI CON UN DIVERSO "RDD" O IN ASSENZA   
 DI INDICI. ATTENZIONE! IL DRIVER "DBFCDX/COMIX" SE INDIVIDUA UN INDICE OMO- 
 NIMO DEL ".DBF" (INDICE STRUTTURALE), LO APRE AUTOMATICAMENTE.              

- Molta cura  stata messa per cercare di prevedere ogni possibile errore do-
  vuto ad anomalie del programma o ad azioni errate dell'utente; molti "bugs"
  a carico delle librerie di base, sono stati rilevati e spesso aggirati con
  qualche tortuosit. Non dovrebbero esserci grossi "buchi" residui.

 RACCOMANDO COMUNQUE DI PROCEDERE SEMPRE CON PRUDENZA, SOPRATTUTTO NELLE OP- 
 ZIONI CHE MODIFICANO IL FORMATO O IL CONTENUTO DI FILES ".DBF", PREDISPO-   
 NENDO COPIE DEGLI ORIGINALI DA RIPRISTINARE IN CASO DI ERRORE. OGNI PERDITA 
 DI DATI O DANNEGGIAMENTO DI FILE EVENTUALMENTE PROVOCATO IN ASSENZA DI QUE- 
 STA PRECAUZIONE SARA` SEMPRE E COMUNQUE A CARICO ESCLUSIVO DELL'UTENTE DEL  
 PROGRAMMA E, IN NESSUN CASO, ADDEBITABILE AL SOTTOSCRITTO.                  

- Il programma, integralmente bilingue (Italiano/Inglese),  molto ricco di
  messaggistica, tanto da apparire anche un po' prolisso, ma ho ritenuto op-
  portuno dare all'utente ogni informazione possibile, anche per aiutarlo
  (ove necessario) a comprendere quelle novit proposte dal "CA-Clipper" con
  le quali anche io ho dovuto spesso combattere prima di capire.

  La lingua predifinita  l'Italiano, ma pu essere selezionato l'Inglese dal
  men "Extra", opzione "Lingua". In tal caso all'uscita dal programma verr
  proposto il salvataggio della nuova configurazione. Il file relativo viene
  inserito nello stesso "path" del programma.


3) Versioni
  

- Esistono 3 versioni del programma. La versione base, "CLUT.EXE",  esegui-
  bile in modo protetto, in memoria estesa XMS; pu girare anche in memoria
  base DOS, ma molto lentamente, se non trova XMS sufficiente.

  La seconda versione, "R-CLUT.EXE"  realizzata per il modo reale (memoria
  base DOS) e richiede alla attivazione 389 Kb di RAM disponibili.

  La terza versione "G-CLUT.EXE", come "CLUT-EXE",  eseguibile in modo pro-
  tetto, in memoria XMS; essa tuttavia utilizza funzioni della libreria gra-
  fica "LLIBG.LIB", fornita col "CA-Clipper 5.3", ed  quindi una versione
  grafica.

  A partire dalla versione 2.7a, i 3 programmi girano tutti senza errori an-
  che in ambiente Windows 32 bit. Vedere a questo proposito la descrizione
  degli aggiornamenti intervenuti con tale versione, di seguito.
  
  Per il corretto funzionamento della versione grafica, "G-CLUT.EXE",  ne-
  cessario il file "G-CLUT.BML" che deve trovarsi nello stesso indirizzario
  del programma eseguibile sul disco fisso, o nello stesso dischetto, se il
  programma viene caricato da un drive per dischi rimovibili. Se questo file
  non  disponibile, i previsti fonts grafici alternativi non vengono cari-
  cati e viene utilizzato in ogni caso il font standard.

  Per tutte le versioni, la presenza del file "CLUT.HLP" consentir la vi-
  sualizzazione, con il tasto <F1>, della lista delle funzioni extra dispo-
  nibili nell'ambito del programma, come sopra indicato. Anche questa lista
   bilingue (spero che il mio Inglese non contenga troppi errori).


4) Opzioni
  

- Il programma accetta due parametri (eventuali) sulla linea di comando DOS;
  il primo di essi  il nome del file ".Dbf" da aprire e visualizzare diret-
  tamente, il secondo  il nome del driver "RDD" da utilizzare.

                            CLUT <file> <rdd>

  Il programma tenta in ogni caso di individuare autonomamente l'"RDD" cor-
  retto per il file da aprire (sia nella chiamata diretta, come sopra, sia
  nell'opzione "DbFile/Apri" da men) e se la richiesta dell'utente  incom-
  patibile, propone l'"RDD" appropriato. L'opzione utente  utile invece se
  il file  di tipo compatibile.

  Se nessuna opzione viene immessa, il programma si ferma al men generale.


5) Tasti funzionali
  

- L'uso delle opzioni di men non richiede spiegazioni particolari, essendo
  del tutto in linea con gli standard correnti. Molte opzioni non sono atti-
  ve quando  aperto un "browse"; alcune altre sono invece attive solo con
  un file visualizzato.

  Lungo tutto il programma il tasto <Esc> ha la funzione di tasto di uscita e
  analoga funzione ha il tasto destro del mouse; entrambi possono quindi es-
  sere utilizzati per uscire dal pannello di una opzione o da un "browse".

  Tutte le liste di selezione, realizzate mediante oggetti "browse", e tutte
  le "scroll-bar" sono sensibili al mouse.

- Riguardo alle "scroll-bar"  opportuno precisare che in esse il mouse  at-
  tivo sia sui pulsanti (frecce) alle due estremit che nell'area di scorri-
  mento del cursore. Nel primo caso, con tutte le versioni del programma, un
  "click" singolo provoca lo scorrimento di un elemento in alto o in basso,
  mentre la pressione continua del tasto provoca lo scorrimento continuo solo
  nelle due versioni non grafiche; nella versione grafica, infatti, tale ri-
  sultato non  stato possibile per anomalie operative in alcune funzioni i-
  nerenti la gestione del mouse; in particolare, il rilascio del tasto non
  viene rilevato e lo scorrimento continuerebbe anche dopo di esso.

  Se il "click" avviene nel corpo della barra il risultato varia in base alla
  posizione effettiva del puntatore: un "click" sul primo segmento superiore
  (prima riga) o sinistro (prima colonna) della barra determina lo scorrimen-
  to al primo elemento della lista; se il segmento "cliccato"  l'ultimo in
  basso o a destra, si ottiene lo scorrimento all'ultimo elemento della li-
  sta; ogni altra posizione intermedia provoca lo scorrimento alla posizione
  intermedia proporzionalmente equivalente nell'ambito della lista.

- Esistono inoltre delle scorciatoie per alcune opzioni dei gruppi "DbFile"
  e "Indice"; esse sono collegate allo stato della finestra di "browse" aree,
  attiva permanentemente nella met inferiore del pannello generale, e alla
  posizione della barra di selezione su di essa.

  Quando tale "browse"  vuoto (nessun file aperto) e la barra di selezione
  si trova sulla prima colonna ("File Dbf"), la pressione di un tasto alfanu-
  merico o l'immissione di uno degli altri caratteri consentiti (DOS) nei no-
  mi di file provoca l'accesso in input ("get"), sulla posizione stessa, del
  nome del file da aprire e la conseguente apertura dello stesso; la scelta
  del driver "RDD"  automatica.

  Sulla stessa posizione, sempre con il "browse" vuoto, il tasto <Enter> (da
  solo) determina l'attivazione dell'opzione "DbFile/Apri" per la selezione
  interattiva del file e del suo "RDD".

  Identico risultato si ottiene con un "click" del tasto sinistro del mouse
  sulla stessa posizione (sempre col "browse" vuoto), o con il tasto cursore
  <Gi>, quando la barra di selezione  sull'ultima riga (qualunque colonna)
  occupata da un file (tentata selezione area successiva, vuota).

  La stessa funzione viene attivata dal tasto <Ins>, indipendentemente dalla
  posizione della barra di selezione, sia col "browse" vuoto, che con uno o
  pi files aperti.

  Il tasto <Canc>, con la barra di selezione sulla prima colonna di un file
  aperto, determina la chiusura del file stesso.

  Un invio o un click col mouse su una delle prime due colonne ("File Dbf" o
  "Alias") di una riga occupata dai dati di un file aperto, provoca l'atti-
  vazione del "browse" di quel file; quello solo, anche se esistono altri fi-
  les aperti relazionati con esso. Per visualizzare solo alcune colonne di
  quel file, o tutte ma in un diverso ordine, o colonne di due o pi files
  relazionati, occorre attivare l'apposita opzione di men "Vista/Browse".

  Un invio o un click col mouse su una delle ultime due colonne ("Indice" o
  "Ordine") di una riga occupata dai dati di un file, provoca l'attivazione
  rispettivamente delle opzioni "Indice/Apri" e "Indice/OrdSetFocus".

  Il tasto <Ins>, con la barra sulla colonna "Indice" di un file aperto, ri-
  chiama l'opzione "Indice/Apri"; il tasto <Canc> sulla stessa posizione pro-
  voca invece la chiusura degli indici eventualmente aperti per quel file.

  Sulle colonne centrali il tasto invio non ha alcun effetto, mentre il ta-
  sto sinistro del mouse provoca la selezione della riga/colonna e, paralle-
  lamente la selezione della "work area" corrispondente.

  Quando  attivo il browse di un file, il tasto <Del> effettua la commuta-
  zione del "flag" "deleted" del record corrente (cancellazione logica ovve-
  ro "recall").


6) Aggiornamenti 
  

- Vers. 2.8:

  1) Le seguenti opzioni, tuttora non implementate, sono state rimosse dal me-
  n del programma:

  - "Indice" / "OrdScope (Set scope)",
  - "Indice" / "OrdSetRelation".

  Esse, infatti, erano basate su nuove funzioni del Clipper 5.3, che si sono
  dimostrate non del tutto affidabili a causa di bugs.

  2) Implementata memorizzazione e riproposizione stringhe lunghe relative ad
  espressioni varie ed opzioni "FOR" e "WHILE", lungo tutto il programma, nel
  corso di una stessa esecuzione. Se il primo tasto premuto su di esse  un
  tasto cursore, le stringhe vengono conservate e possono essere editate, ogni
  altro tasto provoca la cancellazione totale e la reimmissione ex novo.

  3) Migliorato il contrasto colore fra opzioni abilitate e non abilitate sul
  men generale e i sub-men.

  4) L'opzione "Struttura"/"Modifica", per l'operazione di "Rinomina campi",
   stata modificata in modo da utilizzare una funzione di lettura/scrittura
  a basso livello dell'"header" del file, anzich il metodo standard di gene-
  razione nuovo file ".Dbf", esportazione dati e sostituzione file. Col nuovo
  metodo l'operazione  pressoch istantanea e consente anche la rinomina di
  campi che presentino nel nome caratteri anomali per il Clipper, consentiti
  da altri dialetti Xbase.

  5) Quando un file "A"  relazionato con un file "B" e filtrato in base ad
  una espressione che fa riferimento a dati sul file "B" stesso, in caso di
  chiusura del file "B", si verificava a carico del file "A" un errore "BASE/
  1002 - Undefined alias" alla prima successiva valutazione del filtro.
  Sulla routine standard di chiusura files  stato inserito un apposito con-
  trollo, in base al quale, se sulle aree parallele esistono filtrature con
  espressioni non pi risolvibili ("Type(DbFilter())=='U'"), tali filtrature
  vengono rimosse previa emissione di un apposito box informativo.

- Vers. 2.7a:

  Le due versioni per il modo protetto, "CLUT.EXE" e "G-CLUT.EXE" sono state
  manipolate con il programma "OptEdit.Exe", attivando l'opzione "-EXTRAMIN
  4096".

  In ambito DOS, la memoria estesa da assegnare a un eseguibile viene calco-
  lata automaticamente all'avvio e l'opzione "-EXTRAMIN" viene ignorata dal
  sistema VMM del Clipper. In Windows tale sistema  disabilitato e, senza
  l'opzione, si avevano errori del tipo "Internal error 8002" nella manipo-
  lazione di files con molti campi, nella creazione di indici "DbfCdx", nel-
  lo "swap" delle aree video ("SaveScreen()"/"RestScreen()") in modo grafi-
  co ("G-CLUT.EXE"). Tutti questi problemi sono stati risolti e i 2 program-
  mi sono ora utilizzabili anche in Windows, senza richiedere un riavvio in
  modalit DOS.

  Ovviamente i 4096 Kb. di memoria estesa devono essere disponibili anche in
  ambito DOS. Chi non ne fosse provvisto (vecchi PC) e non disponesse della
  utility "OptEdit.Exe" per ripristinare l'impostazione standard, potr uti-
  lizzare la versione in modo reale "R-CLUT.EXE", o richiedere via e-mail un
  aiuto.

- Vers. 2.7:

  1) Ampliata da 3 a 4 cifre la colonna del progressivo campo nei box di vi-
  sualizzazione/variazione/creazione e nell'opzione di lista struttura, per
  consentire una corretta gestione dei files con pi di 999 campi (qualcuno
  ne ha).

  2) Nelle stesse opzioni, la colonna relativa alla dimensione dei campi 
  stata portata da 3 a 5 cifre. In Clipper, i campi carattere possono avere
  una dimensione fino a 65535 bytes (64 Kb -1 byte), anche se ci sono pro-
  blemi di memoria nella gestione di files con campi di tale dimensione.

  3) Nell'opzione "File"/"Confronta"  stata rivista la riga relativa alla
  struttura dei due files confrontati (numero campi per ciascun tipo), onde
  consentire la visualizzazione di quantit a pi di 2 cifre, quando neces-
  sario.

  4) L'opzione "Muovi"/"Skip"  stata revisionata per consentire la gestione
  e la visualizzazione di limiti di salto pi aderenti alle varie posizioni
  di partenza nell'ambito del file.

  5) Le opzioni "Seek", "Locate", "Goto" e "Skip" del men "Muovi", dopo lo
  spostamento del puntatore al file, con il "browse" attivo, non aggiornava-
  no la posizione della "scroll bar" verticale e il numero record fisico/lo-
  gico sulla barra di stato. Il problema  stato rilevato e corretto.

  6) Nei box gestiti mediante "TBrowse", diversi dal "browse" di files "Dbf"
  (box selezione file da aprire, box di struttura, ecc.), un "click" col ta-
  sto sinistro del mouse nella porzione centrale della "scroll bar" vertica-
  le non produceva alcuna azione. Il problema  stato rilevato e corretto.

- Vers. 2.6:

  1) Inserito un controllo sul numero di colonne da visualizzare sul "browse"
  dei files.
  
  Le 2 versioni in modo protetto, "CLUT.EXE" e "G-CLUT.EXE", non hanno diffi-
  colt nell'apertura e nella visualizzazione struttura dei files estremamen-
  te grandi (220 campi o pi), ma all'apertura del "browse" si verificava un
  errore per "Limit exceeded", a carico delle routines interne Clipper prepo-
  ste alla gestione del "TBrowse()". In esse viene evidentemente posto un li-
  mite al numero delle colonne, in base alla memoria preliminarmente allocata
  di volta in volta, a seconda della dimensione del programma e dei ".Dbf" a-
  perti.
  
  Generalmente non ci sono ragioni per generare o gestire files di dimensioni
  cos spropositate. Se accade  da supporre che questi non siano ridotti al-
  la "forma normale", come esige un database relazionale ben progettato. Tut-
  tavia qualche utente mi ha sottoposto questo problema.
  
  Il problema  stato risolto con un controllo "BEGIN/END SEQUENCE" sulla ri-
  ga relativa al congelamento delle 2 colonne fisse ("oBrowse:Freeze"), a ca-
  rico della quale si verificava l'errore, e con la riduzione progressiva dei
  campi da visualizzare, fino al superamento dell'errore. L'utente viene av-
  visato da un apposito box informativo che le colonne visualizzate sono meno
  di quelle esistenti.
  
  La versione in modo reale "R-CLUT.EXE" ha grossi problemi operativi nell'a-
  pertura di files molto grandi e l'inserimento del controllo di cui sopra si
  risolve in un peggioramento della situazione: il programma impiega un tempo
  enorme nello "swap" di memoria col disco fisso e infine va in errore per e-
  saurimento della memoria, o per errori di indirizzamento, accusando, in tal
  caso, inesistenti "bugs" del tipo "Variable not found". Per non appesantire
  inutilmente il programma, su di esso non viene fatto alcun controllo per e-
  vitare l'errore relativo all'eccesso di colonne. In ogni caso, la versione
  base in modo protetto, "CLUT.EXE", sembra lavorare bene anche senza XMS, in
  memoria base DOS, se qualcuno ha ancora a disposizione un computer cos an-
  tiquato.
  
  2) Corrette alcune piccole incongruenze nella versione linguistica inglese.

- Vers. 2.5:

  1) Per l'opzione "Lingua inglese", nei seguenti 3 casi era stata omessa, ed
   stata ora eseguita, la traduzione delle stringhe originali dall'Italiano;

    - Testata della 1 colonna ("N Rec.") sul "browse" dei files.
    - Messaggio di richiesta specifica tipo di memo "flex" dopo l'editazione
  di un campo memo di file "DbfCdx" e la pressione del tasto <Ctrl-W>.
    - Prima riga di testata del prospetto "Lista struttura" di un file ".Dbf"
  in stampa o su file.

  2) Sulla visualizzazione dell'"header" di campo, opzione <F2> sul pannello
  di visualizzazione struttura file,  stata inserita la decodifica dei dati
  letti, come gi avveniva per l'"header" di file, opzione <F2> sul pannello
  di apertura file. La visualizzazione di entrambi gli "headers"  stata mi-
  gliorata.

  3) Aggirato "bug" del Clipper correlato ai blocchi "BEGIN/END SEQUENCE": In
  alcuni casi, in base alla variazione di dimensione dell'eseguibile, si ve-
  rifica un errato passaggio del riferimento all'oggetto "oErr" da parte del-
  la funzione "Break()" al blocco "RECOVER USING ...".

       " bErr:=ErrorBlock({|oE| Break(oE)})
         *
         BEGIN SEQUENCE
           (operazioni che possono causare un errore)
         RECOVER USING oErr
           (operazioni di recupero che utilizzano la variabile <oErr>)
         END SEQUENCE
         *
         ErrorBlock(bErr) "

  Appena si verifica un errore nel blocco compreso fra "BEGIN SEQUENCE" e "RE-
  COVER USING...", viene valutato l'"ErrorBlock()" fornendo il corretto para-
  metro <oE>, corrispondente all'oggetto "errore"; ma, in alcune occasioni,
  dopo l'esecuzione del "Break()" e la caduta nel blocco "RECOVER", la varia-
  bile <oErr> non coincide con l'oggetto <oE>, ma contiene (di solito) un va-
  lore numerico, per cui la successiva analisi delle variabili istanza del-
  l'oggetto (presunto) provoca un errore del tipo "BASE/1004 - No exported
  method...".
  
  Tutti i blocchi "BEGIN/END SEQUENCE" sono stati modificati come segue, as-
  segnando direttamente la variabile <oErr> entro l'"ErrorBlock()", prima di
  eseguire il "Break()", ed evitando a quest'ultimo l'onere di passare il da-
  to al blocco "RECOVER":

       " bErr:=ErrorBlock({|oE| oErr:=oE, Break(NIL)})
         *
         BEGIN SEQUENCE
           (operazioni che possono causare un errore)
         RECOVER
           (operazioni di recupero che utilizzano la variabile <oErr>)
         END SEQUENCE
         *
         ErrorBlock(bErr) "

- Vers. 2.4:

  1) Corretto il mancato aggiornamento abilitazioni opzioni sulla "top-bar"
  dopo l'apertura di un file mediante input del nome sulla 1 riga/1 colon-
  na del "browse" aree.

  2) Aggirato "bug del millennio" a carico della funzione "LUpdate()". Sul-
  l'"header" dei files ".Dbf" (32 bytes iniziali) la data di ultimo aggior-
  namento occupa 3 bytes, uno per ciascun elemento (anno, mese, giorno), per
  cui l'anno non pu essere inserito che su 2 sole cifre. "LUpdate()" assume
  che le prime 2 cifre siano, in ogni caso, "19", per cui lo "00" di 2000 
  tradotto 1900, "01" 1901, ecc. Con una funzione utente intermedia l'esito
  di "LUpdate()" viene esaminato ed, eventualmente, corretto.

  3) Migliorata la visualizzazione dell'"header" dei files ".Dbf", di cui a
  opzione <F2> sul pannello di apertura file. Viene ora indicata, per ciascun
  elemento, oltre al valore convertito in decimale, anche lo schema di lettu-
  ra in esadecimale.

  4) Migliorato il pannello di confronto fra due files ".Dbf" aperti contem-
  poraneamente (opzione "DbFile"/"Confronta"). Riguardo al numero records, il
  pannello propone ora il confronto, nell'ambito di ciascun file, fra i re-
  cords indicati sull'"header" e quelli riportati dalla funzione "LastRec()".
  Quest'ultima, infatti, determina il suo valore in base alla formula:

         " Int( ( <dim. file> - <dim. "header"> ) / <dim. record> ) ".

  Se, ad esempio, si recupera un file ".Dbf" da un file ".Chk" prodotto dal
  programma DOS/Windows "Scandisk", si ottiene un file la cui dimensione cor-
  risponde esattamente alla dimensione totale dei "cluster" impegnati, anche
  se l'ultimo di essi era occupato solo in parte. In questo caso, mentre il
  numero dei records di cui all'"header" pu essere corretto, "LastRec()" in-
  dicher un numero maggiore, e tali ulteriori records (errati) potranno an-
  che essere listati da un "browse", seppure con dati spazzatura.
  N.B.: Sul "browse" aree, nella parte inferiore del pannello programma, il
  numero records di ciascun file  comunque quello riportato da "LastRec()".
  
  
7) Errori e/o suggerimenti
  

- Per eventuali segnalazioni di errori o per ogni altra esigenza fare rife-
  rimento al recapito postale indicato sull'ultima opzione del men del pro-
  gramma, oppure all'indirizzo E-Mail ripetuto qui sotto. Sar data risposta
  solo mediante E-Mail, se fornito.

  Buon lavoro.


Reggello (FI), 20/10/2002

                                                      Sergio Cocci
                                             -------------------------------
                                             E-Mail: sergio.cocci@tiscali.it
