ALM - Almanacco edizione 2.42
Almanacco, agenda, fusi, distanze, cronometro,...
Copyright 1994-2011 Giuliano Artico
Dipartimento di Matematica, Università di Padova
Via Trieste 63, 35121 Padova, Italy
Pagina WebScrivi all'autore - Tel. 049/8271409
Guida all'uso del programma

IMPORTANTE

Si dà per scontato che, prima di iniziare a servirsi del programma ALM, ogni utilizzatore prenda visione del file licenza.txt ed accetti e rispetti integralmente le norme in esso contenute. Chi è in disaccordo anche con una sola delle condizioni deve rinunciare a qualunque impiego di questo software.

. Informazioni preliminari

1.1 Introduzione, prelievo e installazione

   Il programma ALM fornisce le informazioni tipiche di un calendario o
almanacco e inoltre gestisce ricorrenze o appuntamenti (a scadenza precisa
oppure periodica secondo vari criteri). ALM può anche conservare nel disco un
elenco con le date e gli orari degli ultimi 400 avvii del calcolatore. Sono
inoltre disponibili altre funzioni, ad esempio per conoscere l'ora attuale
inqualunque località del mondo, per determinare il periodo in cui è in vigore
l'ora legale, per regolare automaticamente l'orologio del calcolatore in
occasione del cambio di ora e per conoscere la distanza in giorni fra due date.
Sono incluse le funzioni di "cronometro", anche con conto alla rovescia, e di
"segnale orario".
   Il programma include un calcolatore valutario universale (funzione
"valuta") e un convertitore di temperatura fra le cinque scale termometriche
note (funzione "temperatura").
   Alcune funzioni sono di particolare interesse per i radioamatori: vedere in
particolare le funzioni "QTH", "contest" e "Morse".
   L'esecuzione di ALM può essere subordinata all'immissione di una parola
d'ordine (password), la cui efficacia può essere limitata a determinate ore in
determinati giorni della settimana (v. "Esecuzione con richiesta di password"
in questo stesso capitolo).
   L'accesso alle varie informazioni è regolato da una sintassi che prevede
un'ampia gamma di alternative. Il programma è corredato di numerosi programmi
batch, ciascuno dei quali attiva una determinata funzione per mezzo di una
sintassi semplificata (v. la descrizione nel file BATCH.TXT). Per conoscere la
funzione svolta dai vari programmi batch, si può eseguire il comando "aiuto":
digitando uno dei nomi compresi nell'elenco che compare sullo schermo, si
ottiene una descrizione del corrispondente comando.
   Se avviato senza alcun parametro, ALM mostra l'almanacco del giorno (ad
esempio, si può aggiungere al file AUTOEXEC.BAT una nuova riga contenente il
comando "ALM" per visualizzare l'almanacco all'avvio del calcolatore). Più
avanti in questo manuale sono illustrate varie opzioni che consentono di
controllare la visualizzazione delle informazioni.
   Il programma ALM può funzionare in abbinamento a un altro programma (GA,
gestione agenda), che permette di gestire un'agenda di appuntamenti più
completa e flessibile. L'interazione fra i due programmi consiste nel fatto che
gli appuntamenti fissati con GA possono essere riconosciuti e visualizzati da
ALM.
Scarica il programma ALM edizione 2.42
Scarica il programma GA edizione 1.31
   Il programma ALM viene distribuito in forma di archivio compresso
autoestraente (formato RAR 2.0) con nome ALM*.EXE, dove "*" denota un numero
che individua la versione. L'esecuzione di questo archivio provoca la comparsa
di un menù che offre la possibilità di installare il programma, eventualmente
scegliendo il nome della directory di installazione. Dopo l'installazione, tale
directory contiene numerosi file: quelli indispensabili sono ALM.EXE
(programma principale), ALM.SAN (nomi dei santi), ALM.LOC e ALM.LOC (dati
geografici), ALM.VAL e LIRA.VAL (file con le parità valutarie). Sono necessari
anche i due file ausiliari ANSWER.COM e SED.EXE, utilizzati rispettivamente dai
programmi AIUTO.BAT e VAR.BAT.
   Per migliorare l'efficienza e la comodità d'uso, conviene inserire la
directory di installazione nel percorso di sistema (comando "PATH" del DOS). Se
per qualche motivo non fosse possibile farlo, si deve assegnare alla variabile
di ambiente ALM_DIR il percorso completo della directory stessa e inoltre la
chiamata del programma deve avvenire con un file batch opportunamente
predisposto. Naturalmente è possibile, anche se scomodo, eseguire il programma
spostandosi ogni volta nella directory di installazione ed eseguire il comando
desiderato da quella posizione.
   Notare che i file batch inclusi nel pacchetto cercano il programma
principale ALM.EXE anche nelle directory C:\ALM e C:\PROGRAMMI\ALM. Perciò, se
si preferisce, è possibile evitare di includere nel percorso di sistema la
directory del programma, se essa coincide con una delle due suddette: basta
copiare uno o più file batch (quelli che interessano) in una qualunque
directory che sia già inclusa nel PATH e poi richiamare questi comandi da una
qualunque posizione, inclusa la casella "Esegui" di Windows.
   Il programma GA è distribuito con un archivio autoestraente dal nome
GA*.EXE, reperibile con le stesse modalità di ALM (v. il file LICENZA.TXT).
   Il programma ALM genera un file dal nome ALM.DAT, che viene collocato nella
directory di installazione e che ospita i dati personali. E' fornito
il programma di configurazione INIZIA, che serve per inizializzare il file dati
memorizzandovi i parametri utili per la personalizzazione del programma (v. il
capitolo 29). Il programma di configurazione richiede la presenza di almeno un
file di dati geografici (file con estensione .LOC). Una volta fatta la
configurazione, la presenza del file INIZIA.EXE non è più indispensabile per il
funzionamento del programma.
   Sono inoltre forniti altri due programmi accessori: UNISCI.EXE serve per
riunire le informazioni contenute in due file dati; SANTI.EXE permette
di modificare l'elenco dei santi.
   Si può ottenere l'elenco riassuntivo dei comandi disponibili aggiungendo un
punto interrogativo come parametro sulla linea di comando DOS.
   Si osservi che la scrittura dello schermo può avvenire sia in modo diretto
sia tramite BIOS (v. il capitolo 27). Eccezion fatta per le funzioni
interattive, le scritte possono essere reindirizzate su di un file.

1.2. Esecuzione con richiesta di password

   L'esecuzione di ogni funzione di ALM può essere subordinata all'immissione
di una "parola d'ordine" (password). Per attivare la richiesta di password ci
sono due modi:

- impostare la variabile di ambiente ALM_PASS assegnandole il valore "~",
  ad esempio aggiungendo al file AUTOEXEC.BAT la riga seguente:
  set alm_pass=~
- aggiungere il carattere "~" al termine del comando con cui si esegue
  il programma. Ad esempio, nel file AUTOEXEC.BAT si può usare il seguente
  comando, che impedisce l'uso del calcolatore fino a quando non è immessa
  la password corretta:
  alm b~

   Occorre naturalmente impostare una password. Per farlo si deve eseguire il
comando:
   alm ~
Nell'inserire la password occorre fare molta attenzione ai tasti che si premono
perché i caratteri non vengono visualizzati sullo schermo (al loro posto
compaiono degli asterischi). Per tale ragione una nuova password viene sempre
chiesta due volte e l'aggiornamento ha luogo soltanto se le due parole inserite
combaciano esattamente (le lettere maiuscole sono considerate distinte dalle
corrispondenti minuscole). E' bene non usare password troppo complicate, per
non correre il rischio di dimenticarsene.

   In ciascun giorno della settimana si possono stabilire gli orari in cui è
attivata la richiesta di password (ad esempio, nel calcolatore dell'ufficio può
aver senso chiedere la password solo durante la notte e nei giorni di sabato e
domenica). La selezione degli orari viene svolta in una tabella cui si accede
con il comando:
   alm ~2
Compare uno schema nel quale si devono indicare con una "x" tutte le ore in
cui la richiesta di password è attivata. I comandi per la modifica e per gli
spostamenti del cursore sono elencati al di sopra del riquadro. Per
completezza di documentazione li riportiamo qui di seguito:

Esc              = uscita senza registrazione delle modifiche;
F0 o Ctrl+Invio = registrazione e uscita;
Su/Giù           = giorno precedente/successivo;
Destra/Sinistra  = ora precedente/successiva;
Home/End         = salta all'ora 0/23;
Ctrl+Home/End    = salta al giorno lunedì/domenica;
0...9,A...N      = salta all'ora 0...23;
lettera "x"      = rende attiva la richiesta di password nell'ora puntata;
spazio o Del     = cancella la "x" nell'ora puntata;
BackSpace        = cancella la "x" nell'ora precedente;
carattere +/-    = attiva/disattiva la password in tutta la giornata;
carattere <      = attiva la password dall'inizio della giornata;
carattere >      = attiva la password fino alla fine della giornata;
Ctrl+Del         = cancella tutte le "x" dello schema;
Invio            = scrive tramite BIOS il giorno e l'ora puntati dal cursore.

Nota.

Il meccanismo di password previsto dal programma ALM non risponde a veri
e propri criteri di segretezza (un utilizzatore con un minimo di esperienza
può facilmente scavalcare la richiesta di password). Tuttavia la funzione può
rivelarsi utile, ad esempio per ostacolare l'accesso al calcolatore in certi
orari.

1.3. Utilizzo in ambiente Windows

   Il programma ALM funziona senza limitazioni in finestra DOS di Windows.
E' anche possibile far comparire i messaggi di ALM all'avvio di Windows
sfruttando il reindirizzamento dei dati in un file su disco. Tale file va
gestito con un opportuno programma di visualizzazione in ambiente grafico. Il
tutto si può governare mediante una procedura che va collocata in una directory
di esecuzione automatica. Ad esempio, in Windows98:
C:\WINDOWS\All Users\Menu Avvio\Programmi\Esecuzione automatica
invece in Windows XP:
C:\Documents and Settings\All Users\Menu Avvio\Programmi\Esecuzione automatica

   Per poter espletare correttamente la funzione suddetta, ALM è in grado di
visualizzare i testi conformemente alla tabella ISO 8859-, convertendo cioè le
lettere accentate secondo la codifica propria di Windows. Questo effetto si può
ottenere stabilmente usando il programma INIZIA, voce 3 del menù. Invece per
ottenere lo stesso effetto senza alterare la configurazione di ALM, basta
assegnare alla variabile di ambiente ALM_WIN il valore , ad esempio preparando
un file batch contenente i seguenti comandi:

@echo off
set alm_win=
alm.exe % %2 %3 %4 %5 %6 %7 %8 %9
set alm_win=

La conversione suddetta riguarda tutte le scritte. In particolare, per le
ricorrenze e per gli appuntamenti devono essere usate le lettere accentate
secondo la tabella 850 di MS-DOS.

2. Sintassi

   L'utilizzo più semplice di ALM consiste nel lanciarlo in esecuzione senza
alcun parametro. In questo caso vengono mostrati sullo schermo i dati seguenti,
ai quali ci riferiremo nel seguito con l'espressione "almanacco del giorno":

- data e ora attuali con giorno della settimana (ora legale, se in vigore);
- l'eventuale indicazione di feste mobili quali la Pasqua e Pentecoste;
- i santi del giorno;
- l'ora in cui sorge e tramonta il sole;
- la fase della luna;
- le ricorrenze e gli appuntamenti relativi al giorno (di qualunque tipo:
  appuntamenti in data fissa, settimanali, mensili, di forma generale
  memorizzati con il programma GA).

   Per attivare altre funzioni occorre aggiungere sulla riga di comando DOS
un'opportuna informazione, che è costituita generalmente da un carattere, che
individua il tipo di funzione, e da alcuni parametri, propri di ciascuna
funzione. Al termine si può aggiungere un comando riguardante la richiesta di
password. La sintassi generale è la seguente:

alm [carattere parametri] [comando_password]

   Qui di seguito è riportato l'elenco delle funzioni possibili, seguite dalla
corrispondente sintassi. Ogni funzione verrà poi descritta in un capitolo
successivo. A ciascuna funzione attribuiamo per maggior chiarezza un nome
convenzionale cui far riferimento nel corso dell'esposizione. Le opzioni "X",
"!" e "$", comuni alle funzioni "oggi", "boot strap" e "giorno", necessitano di
parametri aggiuntivi che sono riportati alla fine dell'elenco. I comandi
riguardanti la password sono descritti nel capitolo .

2.1. Elenco delle funzioni

FUNZIONE    CARATTERE E PARAMETRI
oggi        [A][giorno[/mese[/anno]]][A][C][D][F][G][K][X...][Z][&][!...][$...]
calendario  *[/{mese|*}[/anno]][E]
boot strap  B[N numero][C][D][F][G][K][X...][Z][&][!...][$...]
carnevale   C[anno1[-anno2]]
elenco      E{W|M|[mese1][-[mese2]]]}
feste       F[anno1[-anno2]]
giorno      G[[giorno dell'anno][/anno]][A][C][D][F][X...][Z][&][!...][$...]
ora         H[K|[C][D][F][S][Q][/località|/coordinate]]  oppure  [H]U[K][L]
legale      L[anno1[-anno2]]
mensile     M[numero da 1 a 31]
ordina      O[{A|C mese1[-mese2]}] ["parola"] oppure OE
parametri   P[+][FileDati]
QTH         Q{località|coordinate}
ricerca     R[frase]
cerca santo S{nome del santo}
conTest     T[anno1[-anno2]]
vedi boot   V
settimanale W[numero da 1 a 7]
Morse       "[parametri][frase]   oppure   @[parametri]NomeFile
valuta      =[importo] [moneta1] [/ moneta2] [{*|:}tasso]
temperatura °gradi [{C|F|K|R|A}]
cronometro  #[{hh:[mm[:ss]]|durata[d]}[r]]   oppure   #c[z]

Opzione : X[numero[I][W][M]]
Opzione : ![H|-|+][L][O][S]
Opzione : $[n1][,n2]

Come si vede, molti dati sono facoltativi. Rinviando i particolari al seguito,
osserviamo che il programma sopperisce quasi sempre ad eventuali mancanze o
valori incompatibili adottando valori di default, che normalmente risultano
ragionevoli. Ad esempio, supponendo che la data odierna sia 23/10/2004:

alm 5        viene interpretato come   alm 5/10/2004
alm 24/8     viene interpretato come   alm 24/8/2004
alm //5      viene interpretato come   alm 23/10/2005
alm 15//95   viene interpretato come   alm 15/10/1995

Ogni comando può essere concluso con uno dei comandi riguardanti la password:
~  attivazione della richiesta di password;
~1 impostazione o modifica della password;
~2 impostazione degli orari in cui è attiva la password;
~3 entrambe le funzioni svolte da ~1 e ~2.

3. Funzione oggi

   Sintassi:
   ALM [A] [giorno[/mese[/anno]]] [A][C][D][F][G][K][X...][Z][&][!...][$...]
   Opzione : X[numero[I][W][M]]
   Opzione : ![H|-|+][L][O][S]
   Opzione : $[n1][,n2]

   Indicando una data a piacere come parametro, si produce la visualizzazione
dei corrispondenti dati dell'almanacco. L'ora attuale, l'ora dell'alba e del
tramonto e il riferimento per la fase lunare sono calcolati con l'ora legale
nel periodo in cui essa è in vigore (cfr. i paragrafi 3.3, 3.4, 27.4 e 29.7).
Il programma completa la data stessa con i valori presenti nell'orologio del
calcolatore, se qualcuno di essi non viene specificato.
   Dopo i dati dell'almanacco il programma mostra le informazioni personali
relative al giorno indicato. Esse sono di due tipi:
- "ricorrenze" chesi memorizzano con il programma ALM stesso: sono tutte
  periodiche e possono avere cadenza annuale, mensile o settimanale;
  nel seguito le chiameremo ricorrenze annuali, mensili, settimanali;
- "appuntamenti" conservati nel file di testo ALM.APP: gestibili con un editor
  di testi ASCII o con l'apposito programma GA;
  gli appuntamenti possono essere in data fissa, ma possono anche avere cadenza
  periodica come le ricorrenze, delle quali sono una generalizzazione.
E' possibile contrassegnare le ricorrenze annuali con un apposito marcatore, in
modo tale che esse siano visualizzate, a scelta, solo nei giorni festivi oppure
solo nei giorni feriali, decidendo anche quali sono i giorni da considerare
festivi.

   E' possibile arricchire o ridurre le informazioni visualizzate aggiungendo
dopo la data una o più lettere facoltative (opzioni) che consentono un
controllo accurato dei dati che compaiono sullo schermo. Più precisamente:
A  aggiorna l'agenda delle ricorrenze annuali;
C  aggiunge la data dell'ultimo giorno di Carnevale dell'anno indicato;
D  aggiunge la durata del crepuscolo (in minuti);
F  aggiunge le date delle principali feste religiose mobili dell'anno indicato;
G  giorno dell'anno, giorno giuliano e indicazione dell'anno bisestile;
K  elimina la dichiarazione sul tipo di ora (solare/legale);
X  controlla la visualizzazione delle informazioni personali;
Z  aggiunge il segno zodiacale;
!  controlla la visualizzazione dei dati dell'almanacco;
$  controlla la visualizzazione in base ai boot strap registrati;
&  attiva la regolazione automatica dell'orologio al cambio di ora legale.

Le opzioni "X", "&", "!" e "$", ammesse anche nelle funzioni "boot strap" e
"giorno", sono trattate a parte. Si noti che l'opzione "&" viene ignorata se è
presente la "!" seguita da "+".
   Il nome del segno zodiacale è visualizzato insieme con un numero che indica
il numero d'ordine a partire dal giorno iniziale di quel segno (1 per il primo
giorno, 2 per il secondo, eccetera).

3.1. Opzione X

   L'opzione "X" prevede un parametro numerico facoltativo da indicare
immediatamente alla destra della lettera "X" stessa. Se il parametro viene
omesso, l'effetto è quello di escludere la visualizzazione di tutte le
informazioni personali. Al contrario, la presenza del numero, diciamo n, causa
la presentazione delle ricorrenze e degli appuntamenti in data odierna, a cui
vengono aggiunte le ricorrenze annuali e gli appuntamenti che cadono negli n
giorni successivi (ricordare che con il termine "appuntamenti" indichiamo le
informazioni "esterne", cioè quelle memorizzate nel file ALM.APP).
   Per quanto riguarda le date successive alla data odierna, se si vogliono
anche le ricorrenze mensili o settimanali occorre aggiungere rispettivamente
una "M" oppure una "W" dopo il numero; se invece si vogliono escludere gli
appuntamenti basta aggiungere la lettera "I". Alcuni esempi:

alm 10/12/98 x4w   ricorrenze, anche settimanali, dall'11/12 al 14/12;
alm b dzx3wm          ricorrenze e appuntamenti nei prossimi 3 giorni;
alm b dzx3iwm         ricorrenze nei prossimi 3 giorni, senza appuntamenti;

Il massimo valore consentito a destra dell'opzione "X" è 365. Ad esempio, per
trascrivere in un file le ricorrenze e gli appuntamenti di un intero
anno a partire da una certa data, basta eseguire un comando del tipo seguente:

C:\>alm 1/10/2003 x365wm > annata.txt

3.2. Opzione & (regolazione automatica dell'orologio)

   E` possibile affidare al programma ALM il compito di effettuare
automaticamente la regolazione dell'orologio del calcolatore ogni volta che
avviene il cambiamento dell'ora da solare a legale e viceversa. Per far ciò è
sufficiente lanciare ALM con una delle funzioni "oggi", "boot strap" e
"giorno", aggiungendo sulla riga di comando il carattere "&".
   A seconda dei casi, la regolazione consiste nell'avanzare o nell'arretrare
l'orologio di un'ora. ALM esegue la regolazione dopo una richiesta di consenso
alla quale si può rispondere con "S" oppure con "N".
   Il modo più comodo di sfruttare questa caratteristica è di aggiungere il
carattere "&" nella riga del file AUTOEXEC.BAT che contiene la chiamata del
programma ALM.
   Dopo che la regolazione automatica dell'orologio è avvenuta, il carattere
"&" non ha più alcuna efficacia fino al successivo cambiamento di ora in senso
opposto.
   Il programma conserva nel file ALM.DAT un'annotazione per "ricordare" che la
regolazione è stata eseguita. Se accade che l'ora viene impostata manualmente
(con il comando TIME di MS-DOS oppure mediante un altro programma), è possibile
informarne ALM usando l'opzione "&" seguita immediatamente da uno dei caratteri
"s" oppure "l", per indicare che l'ora deve essere interpretata rispettivamente
come solare oppure come legale. L'uso di "&s" o di "&l" è volutamente
incompatibile con altre opzioni coesistenti: in pratica si tratta di due
comandi da usare autonomamente.

Osservazione. Per compatibilità con l'edizione 1.33 di ALM, l'opzione "&" è
equivalente all'opzione "%": quest'ultima creava alcune difficoltà nella
preparazione dei file batch perché, per esigenze del DOS, doveva essere
indicata come "%%".

3.3. Opzione !

   Quando la riga di comando contiene il carattere "!", viene attivato il
controllo selettivo dei dati dell'almanacco. Il carattere "!" deve essere
seguito da uno o più caratteri, in corrispondenza dei dati dell'almanacco che
si vuole compaiano sullo schermo:

H data e ora attuali;
- data e ora attuali, le informazioni sono riferite all'ora solare;
+ data e ora attuali, se l'orologio non è regolato sull'ora legale;
L fase della luna;
O onomastici e feste mobili;
S ora in cui sorge e tramonta il sole.

L'ordine di questi caratteri non è significativo: basta che essi siano indicati
a destra del carattere "!". E' possibile saltare completamente l'almanacco,
omettendo tutti i caratteri (infatti potrebbe interessare solo la
visualizzazione dei dati personali). Esempi:
 alm !hx7     data, ora e dati personali di oggi e dei prossimi 7 giorni;
 alm !-x7     come sopra, ma con informazioni basate sull'ora solare;
 alm 1/1/95!l solo la fase lunare dell'1/1/1995;
 alm Z!HOS    dati completi, esclusa la fase lunare, con zodiaco;
 alm !-LOS    almanacco completo, ma con riferimento all'ora solare.

3.4. Osservazioni sull'applicazione dell'ora legale

   Osservazione a).

   I caratteri "H", "-" e "+" che seguono l'opzione "!" sono incompatibili uno
con l'altro.

   Osservazione b).

   L'effetto delle opzioni "!-" e "!+" può essere ottenuto modificando il
coefficiente "legale" (con il programma di configurazione oppure con la
variabile di ambiente ALM_LEG). L'applicazione dell'ora legale prevede tre
casi:
   1) ora legale attiva: è il caso normale (il calcolatore deve essere regolato
sull'ora legale nel periodo in cui essa è in vigore);
   2) ora legale ignorata: opzione "!-" oppure valore 2 del coefficiente
"legale". In questo caso si presuppone che l'orologio del calcolatore venga
regolato sull'ora legale, nel periodo in cui essa è in vigore, e che
l'utilizzatore, per suoi motivi, voglia invece visualizzare i dati
relativamente all'ora solare, comprese l'ora dell'alba e del tramonto
e l'indicazione della fase lunare (in particolare, la fase lunare viene
riferita alle ore 0 solari e non alla mezzanotte ora legale);
   3) ora legale forzata: opzione "!+" oppure valore 4 del coefficiente
"legale". Si presuppone che l'orologio rimanga sempre regolato sull'ora solare,
anche nel periodo in cui è in vigore l'ora legale. In questo caso il programma
si adegua automaticamente all'ora in uso e presenta l'ora corretta.

   Osservazione c).

   Tutte le considerazioni che riguardano l'ora legale sono applicabili solo
parzialmente alla funzione "ora" (capitolo 11). Più precisamente, dato che non
esiste un criterio universale di applicazione dell'ora legale, il programma non
ne tiene conto quando si utilizza la funzione "ora" abbinata ad una località:
in questo caso il coefficiente "legale" è usato esclusivamente per interpretare
l'ora presente nell'orologio del calcolatore, ma gli orari della località
remota sono quelli solari (eventualmente corretti con gli aggiustamenti che
alcune nazioni adottano scegliendo di appartenere ad un fuso diverso da quello
geografico).

   Osservazione d).

   L'opzione "&", che provoca la regolazione automatica dell'orologio del
calcolatore ad ogni cambio di ora legale, viene ignorata se è simultaneamente
presente l'opzione "!" seguita da "+". Ciò avviene anche quando il coefficiente
"legale" è posto a 4 perché, applicando l'ora legale "forzata", si presuppone
che l'orologio del calcolatore debba rimanere sempre regolato sull'ora solare.

3.5. Opzione $

   La presenza del carattere "$" nella riga di comando DOS provoca la
soppressione delle segnalazioni acustiche che normalmente accompagnano la
visualizzazione delle ricorrenze e degli appuntamenti, senza però alterare la
condizione impostata nel file dati.
   Il carattere "$" può essere seguito da tre numeri separati da virgole,
numeri che hanno un significato concreto solo nella funzione "boot strap" (v.
il capitolo 6). Nelle funzioni "oggi" e "giorno" un valore maggiore di 0 a
destra di "$" produce semplicemente il ripristino delle segnalazioni, come se
l'opzione "$" non fosse presente (la sintassi è stata conservata per ragioni di
coerenza).

3.6. Anni bisestili

   Le date ammesse sono comprese fra il 15 ottobre 1582 (giorno in cui è
iniziata a Roma l'adozione del calendario gregoriano) e il 31 dicembre 8999.
   Per sapere se un anno è bisestile basta usare la funzione "oggi" aggiungendo
a destra della data il carattere "G", che causa anche la visualizzazione del
giorno dell'anno e del giorno giuliano.
   Per gli anni bisestili è stata adottata la regola semplificata, che è
normalmente in uso presso gli astronomi, secondo la quale sono bisestili tutti
gli anni non secolari divisibili per 4 e inoltre gli anni secolari divisibili
per 400 (ad esempio, il 1600 e il 2000 sono bisestili, mentre il 1700, il 1800
e il 1900 non lo sono). E' invece stata ignorata l'eccezione secondo cui gli
anni millenari divisibili per 4000 non sono bisestili: in questo modo si
commette un errore rispetto al calendario gregoriano applicato rigorosamente,
che risulta in anticipo di un giorno dopo il 28 febbraio 4000 e di due giorni
dopo il 28 febbraio 8000 (a questo riguardo, comunque, sembra ragionevole
lasciare che i posteri decidano a tempo debito come comportarsi).

3.7. L'agenda annuale, opzione A

   L'opzione "A", che è prevista anche nella funzione "giorno", produce la
comparsa sullo schermo di uno schema con quindici righe che servono per
l'immissione di altrettante frasi (una per riga), che sono le ricorrenze
annuali, tutte collegate alla data indicata. Chiamiamo "agenda annuale"
l'insieme di tutte le ricorrenze annuali.
   Le eventuali ricorrenze già memorizzate vengono visualizzate e possono
essere liberamente modificate. Sono attivi i normali tasti di correzione;
inoltre con la combinazione Ctrl+Canc si sopprime la riga nella quale si trova
il cursore, mentre Ctrl+FrecciaSu e Ctrl+FrecciaGiù producono rispettivamente
lo scambio di una riga con la precedente e con la successiva. Tutte le righe
vuote vengono ignorate e non sono memorizzate nell'agenda annuale.
   Per memorizzare le ricorrenze su disco si preme F10, ma la registrazione è
preceduta da una richiesta di consenso. Se si preme "N" o Esc il cursore
ritorna sullo schema e si può continuare la modifica dei dati.

3.8. Ricorrenze in giorni festivi e in giorni feriali

   Premendo il tasto Tab si commuta ciclicamente fra le tre condizioni in cui
può trovarsi ciascuna ricorrenza, individuabili sullo schema mediante un
carattere posto all'inizio della riga. Le tre condizioni sono riassunte nel
prossimo prospetto:

Ricorrenza abilitata                    Identificazione
===================================     =================
in qualunque giorno della settimana     carattere spazio;
solo nei giorni festivi                 carattere "+";
solo nei giorni feriali                 carattere "-".

Di norma sono considerati festivi il sabato e la domenica, ma è possibile
dichiarare festivo qualunque giorno della settimana (variabile di ambiente
ALM_F oppure quinta voce del menù nel programma di configurazione INIZIA).
   Si noti che l'opzione "A", contrariamente a tutte le altre, può anche essere
messa prima della data. Inoltre essa è inibita quando è presente l'opzione "X".

4. Ricorrenze più generali e file ALM.APP

   A partire dall'edizione 2.0, il programma ALM consente di utilizzare
ricorrenze collegate ad un insieme più libero di date. Tali ricorrenze vanno
inserite in un apposito file dal nome ALM.APP secondo criteri che sono
descritti in questo capitolo. Per distinguerle dalle precedenti, attribuiamo a
queste ricorrenze il nome di "appuntamenti". Gli appuntamenti costituiscono una
generalizzazione delle ricorrenze perché anch'essi possono essere periodici
con cadenza annuale, mensile o settimanale, però possono essere collegati ad
una data ben precisa o, al contrario, ad un insieme di date più libero.
   Il file ALM.APP è un normale file di testo e può essere gestito con
qualunque programma di elaborazione testi ASCII (ad esempio con EDIT). Esiste
un apposito programma, chiamato "GA", che consente una gestione semplice e
completa del file ALM.APP. Tale programma va acquisito a parte ed è dotato di
una sua propria documentazione.
Scarica qui il programma GA edizione 1.31
   E` possibile utilizzare più di un file di appuntamenti, ad esempio per
distinguere quelli dell'ufficio da quelli di casa. Per adottare un nome di file
diverso da ALM.APP occorre impostare la variabile di ambiente GA_APP, alla
quale va assegnato di volta in volta il nome del file desiderato. Ad esempio,
per far riconoscere ad ALM il file UFFICIO.APP, si deve immettere il seguente
comando al prompt di MS-DOS (o, per maggior comodità, mediante un file batch):

set ga_app=ufficio.app

Sono previste alcune facilitazioni:
- l'estensione ".app" è facoltativa:
  nell'esempio di sopra basta scrivere "ufficio";
- è consentito indicare un percorso completo, ma se il file si trova nella
  directory di installazione è sufficiente indicarne solo il nome;
- invece di un nome di file, nella variabile GA_APP si può indicare un elenco
  di varie directory: in questo caso il programma cerca in tali directory un
  file con nome ALM.APP. Esempi:
  set ga_app=c:\;d:\dati\alm
  set ga_app=%path%

   La prima riga del file ALM.APP funziona da identificatore e deve iniziare
esattamente come segue:

GA - Gestione Agenda

Il file va pensato come un insieme di "schede", ciascuna delle quali è
associata ad una data o ad un insieme di date. L'inizio di una scheda è
determinato da una riga che ha come primo carattere un ";" (punto e virgola),
seguito, sulla stessa riga, da una o più date separate da virgole. Le righe
successive contengono il testo della scheda, la cui fine è determinata
dall'inizio della scheda successiva o, eventualmente, da una riga contenente
esattamente due barre "//". Se la scheda è troppo lunga (più di 25000 byte)
viene troncata. All'inizio, prima della prima scheda, si può mettere una
descrizione del file, da usare come promemoria, anche composta di molte righe.
   Il formato più generale delle date associabili alle schede è il seguente:

;[giorno/mese/anno] [gs[ordine]], ...

   Al posto dei puntini si possono mettere altre date con il medesimo formato
della prima, fino ad un massimo di 19.
   Ciascuno dei tre numeri giorno, mese, anno può essere tralasciato o,
equivalentemente, sostituito con un asterisco: in tal caso si intende che il
valore è arbitrario.
   L'informazione "gs" a destra della data è facoltativa: si tratta del nome di
un giorno della settimana (sono sufficienti i primi due caratteri, DO per
domenica, LU per lunedì, eccetera).
   Si può ulteriormente aggiungere la cifra "ordine", che può variare da 1 a 5
e che può essere preceduta dal segno "-". Tale numero indica, entro il mese, la
posizione del giorno della settimana "gs", che viene contato in avanti quando
"ordine" è positivo, all'indietro quando "ordine" è negativo. Ad esempio,
"gio3" significa "il terzo giovedì del mese", mentre "sab-2" significa "il
penultimo sabato del mese".
   Notare che le date "fisse", cioè quelle prive di asterischi, vengono
automaticamente completate con il giorno della settimana. Ad esempio se si
scrive 23/6/98 oppure 23/6/98LU, il programma intende 23/6/98ma; in questo
caso il giorno della settimana, giusto o sbagliato che sia, è superfluo.

4.1. Esempi di date ammesse nel file ALM.APP

  Gli esempi che seguono mostrano che ad una scheda si può associare un
insieme di date in modo molto vario. La breve descrizione successiva a ciascuna
data spiega quando essa viene visualizzata.

;24/8/98
Questa frase è visualizzata in una data ben precisa.

;24/8/*
Questa frase è visualizzata il 24 agosto di ogni anno, quindi agisce come
le ricorrenze annuali.

;*/8/* lunedì
Tutti i lunedì di agosto di qualunque anno.

;*/8/* lu3
Il terzo lunedì di agosto di ogni anno.

;24/8/98sab
Qui il giorno "sabato" è sbagliato: la data è accettata ugualmente, senza la
precisazione del giorno della settimana.

;*/12 ve-1
L'ultimo venerdì di dicembre di ogni anno.

;*/6/2001sabato-2
Il penultimo sabato di giugno 2001;
notare che 2001 può essere abbreviato con 1, cioè si può scrivere */6/1.

;gio
Ogni giovedì.

;lun,gio-1
Tutti i lunedì e l'ultimo giovedì di ogni mese.

;ven2,ven4
Il secondo e il quarto venerdì di ogni mese.

;31/12/1999, */1/0, sab1,*/3martedì1, */4domenica-2
Date multiple (se ne possono indicare fino a 19). Questo è un esempio, ma è un
po' troppo complesso per gli usi pratici.

5. Funzione calendario

   Sintassi: ALM *[/{mese|*}[/anno]][E]

   Produce un calendario completo per uno o più mesi. Se non si indica il mese
o l'anno, sono usati il mese o l'anno corrente. Se al posto del numero del mese
si mette un asterisco, viene prodotto un calendario completo di tutto l'anno
(v. anche i programmi batch CALEN.BAT e TUTTOCAL.BAT). Ad esempio:

alm */1/99  produce il calendario di gennaio 1999;
alm */*/99  produce il calendario completo del 1999.

   Il calendario è disponibile sia in forma sintetica sia in forma estesa.
La forma sintetica consiste in una tabella nella quale sono indicati i numeri
dei giorni in modo che ogni colonna si riferisca ad un giorno della settimana,
come nei calendari tascabili: è la forma normale.
   Per ottenere il calendario in forma estesa occorre aggiungere una "E" dopo
l'anno. In questo caso ogni riga contiene le informazioni relative ad un giorno
e precisamente:

- numero del giorno;
- giorno della settimana (abbreviato);
- fase lunare (LN=luna nuova, PQ=primo q., LP=luna piena, UQ=ultimo q.);
- indicazione delle feste religiose mobili;
- santi del giorno.

Se i dati superano la capienza dello schermo, la visualizzazione si arresta in
attesa della pressione di un tasto. Può essere utile reindirizzare i dati verso
un file o verso la stampante.

6. Funzione boot strap

   Sintassi: ALM B[N...][C][D][F][G][K][X...][Z][&][!...][$...]
   Opzione : N numero
   Opzione : X[numero[I][W][M]]
   Opzione : ![H|-|+][L][O][S]
   Opzione : $[n1][,n2]

   Permette di memorizzare nel file dati l'elenco delle date e degli orari nei
quali si effettua il boot strap del calcolatore. Questo elenco può essere
esaminato con la funzione "vedi boot". Il file dati può contenere le
informazioni relative ad un numero massimo di 400 boot strap. Quando si
raggiunge tale numero, ad ogni nuovo boot strap si perde l'informazione più
vecchia.
   Quando si attiva questa funzione il programma, oltre ad aggiornare
l'archivio dei dati, visualizza l'almanacco del giorno e inoltre riporta la
data e l'ora del boot strap precedente. Viene anche emesso un segnale acustico
per avvertire che l'operazione di avvio è terminata.
   Sono ammesse le stesse opzioni valide per la funzione "oggi", con
l'eccezione della "A" che in questo caso sarebbe priva di senso.
   Esiste inoltre l'opzione "N" che permette di controllare l'output su
schermo. Ad esempio, è possibile adoperare la funzione "Boot strap"
sopprimendo qualunque scritta. Il controllo viene fatto tramite un parametro
numerico che deve seguire immediatamente la lettera "N". Il suo valore può
andare da -1 a 20 (valori eccedenti sono riportati al più vicino valore
valido). Il valore di default è 1. Alcuni esempi:

alm BN3      sono visualizzati i dati degli ultimi 3 boot strap;
alm BN0      non è visualizzato alcun boot strap precedente;
alm B        equivale a "alm BN1;
alm BN-1     il programma non produce alcuna scritta;
alm BN0X3!H  data e ora, appuntamenti dei prossimi 3 giorni, nessun boot strap.

      Il carattere "$" può essere seguito da tre numeri, tutti facoltativi,
separati da virgole: chiamiamoli rispettivamente n1, n2 e n3. Il programma
confronta questi due numeri con il numero di accensioni del calcolatore già
avvenute nel corso della stessa giornata e si comporta come segue:
 - se il numero di accensioni supera n1 sopprime le segnalazioni acustiche
relative alle informazioni personali (ricorrenze e appuntamenti);
 - se il numero di accensioni supera n2 sopprime anche la visualizzazione ti
tali informazioni personali;
 - se il numero di accensioni supera n3 non vengono visualizzate nemmeno le
informazioni dell'almanacco;
 - se n1 vale 0 o se "$" è seguito da caratteri diversi da cifre e da virgola,
si ha l'esclusione di tutte le segnalazioni acustiche.
   Se le condizioni dette sono soddisfatte, l'opzione "$" ha priorità maggiore
rispetto allo stato delle segnalazioni acustiche impostato stabilmente nel file
dati (capitolo 27). Alcuni esempi:

alm b$1
alm b$1,3
alm b$1,3,10
alm b$,3
alm b$100,3

   Con i primi tre comandi le segnalazioni relative alle ricorrenze e agli
appuntamenti vengono emesse solo se il boot strap è il primo della giornata: se
durante la giornata si ripete lo stesso comando, viene omesso il suono relativo
al boot strap. In questo modo è possibile ridurre il fastidio di segnalazioni
troppo ripetute. Si tenga presente, comunque, che tutti i suoni possono essere
modificati o esclusi selettivamente con le apposite variabili di ambiente; si
veda anche il programma di configurazione INIZIA (capitoli 27 e 29).
   Con il comando del secondo esempio, dopo la terza accensione nella stessa
giornata, non vengono più mostrate le informazioni personali.
   Negli ultimi due esempi il programma interpreta il comando come "$3,3".
Infatti, se n1 è assente o se è maggiore di n2, esso viene posto uguale ad n2.

7. Funzione carnevale

   Sintassi: ALM C[anno1[-anno2]]

   Agisce come la funzione "feste", visualizzando però le date dell'ultimo
giorno di carnevale per gli anni compresi fra anno1 e anno2.
   L'ultimo giorno di carnevale è calcolato come vigilia del mercoledì delle
ceneri. La data non coincide con quella calcolata secondo il calendario
ambrosiano.

8. Funzione elenco

   Sintassi: ALM E{W|M|[mese1][-[mese2]]]}

   Serve per elencare le informazioni contenute nell'agenda annuale. Se la
lettera "E" è seguita da una "W" o da una "M", vengono elencate rispettivamente
tutte le ricorrenze settimanali o mensili.
   Se invece si indicano i numeri d'ordine di due mesi separati dal carattere
"-", si ottiene l'elenco di tutte le ricorrenze comprese fra tali mesi. Se non
si indica il primo mese l'elenco inizia da gennaio, se non si indica il secondo
l'elenco va avanti fino a dicembre. Se dopo la "E" non si indica nulla, si
ottiene l'elenco completo di tutte le ricorrenze annuali.

9. Funzione feste

   Sintassi: ALM F[P]anno1[-anno2]

   Visualizza le date di sette feste religiose mobili. Le prime cinque, Ceneri,
Pasqua, Ascensione, Pentecoste e Corpus Domini, dipendono dalla data della
Pasqua. Le ultime due, Cristo Re e prima domenica di Avvento, dipendono dal
giorno della settimana in cui cade il Santo Natale.
   Sono considerati gli anni compresi fra i due estremi anno1 e anno2, da
indicare di seguito alla lettera "F", separati dal carattere "-". In questo
caso non ha molto senso omettere uno degli estremi: perciò, se si indica un
solo estremo, sono visualizzate soltanto le informazioni relative all'unico
anno specificato.
   La presentazione avviene in modo sintetico, con i nomi dei mesi ridotti a
tre caratteri, in modo da concentrare l'informazione su due sole righe per
ogni anno.
   Se immediatamente a destra di "F" si aggiunge la "P", viene visualizzata
solo la data della Santa Pasqua, per tutti gli anni dell'intervallo specificato
(v. il programma batch PASQUA.BAT).
   Notare che il programma segue il calendario liturgico, secondo il quale
l'Ascensione e il Corpus Domini ricorrono sempre di giovedì, cioè non si tiene
conto del fatto che in Italia, dopo l'abolizione di alcune festività, esse sono
state spostate alla domenica successiva.
   Può essere utile riversare le informazioni su di un file, particolarmente
quando si specifica un intervallo costituito da parecchi anni (v. il capitolo
27).

10. Funzione giorno (dell'anno)

   Sintassi:
      ALM G[[giorno dell'anno][/anno]][A][C][D][F][K][X...][Z][&][!...][$...]
   Opzione : X[numero[I][W][M]]
   Opzione : ![H|-|+][L][O][S]
   Opzione : $[n1][,n2]

   Mediante questa funzione si può indicare la data sostituendo il giorno e il
mese con il numero progressivo del giorno nel corso dell'anno. Ad esempio, il
seguente comando:

alm g311/98

produce lo stesso effetto di:

alm 7/11/98g

Si noti che la funzione "giorno" causa sempre la visualizzazione del giorno
giuliano, ma per il resto si comporta come la funzione "oggi". Come il solito,
i dati omessi vengono integrati con quelli presenti nell'orologio del
calcolatore. Ad esempio, supponiamo che la data odierna sia quella sopra
indicata e consideriamo i seguenti comandi:

alm g34
alm g/99
alm g/2000

Il primo fornisce le informazioni relative al 3 febbraio 1998, il secondo
quelle relative al 7 novembre 1999, il terzo quelle relative al 6 novembre
2000 (infatti quest'ultimo è bisestile).
   Naturalmente il numero del giorno non deve superare 366 negli anni bisestili
e 365 negli altri anni.
   Per altri calcoli riguardanti il conteggio dei giorni si veda la funzione
"numero" (comando "N").

11. Funzione ora

   Sintassi: ALM H[K]
             ALM [H]U[K][L]
             ALM H[C][D][F][S][Q]/[località|coordinate]

   Se la lettera iniziale è "H", il programma mostra la data e l'ora attuali
con il giorno della settimana. Con la "U", da sola oppure dopo la "H", è
mostrata l'ora universale, cioè l'ora del fuso di Greenwich (detta anche
"GMT"). Se si aggiunge la "K", il programma mostra solo l'ora senza precisare
se si tratta di ora solare, legale o universale.
   Notare che l'effetto della funzione "ora" è diverso da quello della funzione
"oggi" usata con l'opzione "!". Infatti il seguente comando:

   alm !h

mostra l'ora e la data attuali, ma in più presenta eventuali informazioni
personali (ricorrenze e appuntamenti).
   Il carattere "L" dopo la "U" indica al programma che l'orologio del
calcolatore non è regolato sull'ora legale (anche se questa è in vigore): in
questo caso, comunque, sarebbe più opportuno ricorrere al coefficiente
"legale" (paragrafi 3.4, 27.4, 29.7). Notare che nella funzione "oggi" non è
prevista un'opzione per visualizzare l'ora universale.

11.1. Fuso orario di altre località

   Attivando la funzione "ora" con la lettera iniziale "H", si può indicare
una località per conoscere alcuni dati che la riguardano (ad esempio, l'ora del
fuso in cui è ubicata, la distanza dalla propria località, l'ora dell'alba e
del tramonto).
   Per identificare la località è possibile immettere una delle informazioni
seguenti, sempre precedute dal carattere "/".

 1) Il nome della località, o parte di esso (che viene cercato nei file dei
dati geografici ALM*.LOC). Ad esempio:
   alm h/melbourne
   alm h/new y
   alm h/ruanda

 2) Le coordinate geografiche della località (latitudine e longitudine separate
da una virgola o da uno spazio). Ad esempio, conoscendo le coordinate di
Londra, si può dare il seguente comando:
   alm h /51.5, 0.12

3) Il QTH locator (normalmente noto ai radioamatori). Il comando precedente
fornisce informazioni sostanzialmente uguali a quelle del prossimo:
   alm h /IO91WM

   Le informazioni di tipo 2 e 3 possono essere completate con il suffisso "@"
seguito da un numero intero multiplo di 15 (minuti) per indicare che quella
località appartiene ad un fuso orario diverso da quello geografico (cfr. il
paragrafo 29.11). Ad esempio, indicando le coordinate di Barcellona si dovrebbe
scrivere:
   alm h /41.69, 2.23 @60

   Fra la lettera "H" e il carattere "/" si possono aggiungere alcuni caratteri
facoltativi per arricchire le informazioni visualizzate:
 C  coordinate geografiche;
 D  differenza oraria dalla propria località (formato: ore.minuti);
 F  fuso orario, cioè differenza in ore.minuti dall'ora universale;
 S  orario dell'alba e del tramonto nella località indicata;
 Q  distanza e azimut (v. i commenti più avanti, cfr. la funzione "QTH");
 *  attiva la funzione "QTH" (equivale al comando "Q", capitolo 18).

I file con estensione .LOC contengono le informazioni geografiche. Il programma
viene fornito con due file:
 - ALM.LOC  con circa 5200 località italiane;
 - ALM1.LOC con circa 1400 località estere.
Gli utilizzatori possono arricchire i dati geografici aggiungendo altre
località (v. i capitoli 27 e 29).
   Quando è presente il carattere "Q", il programma visualizza anche le
seguenti informazioni (cfr. la funzione "QTH", capitolo 18):

 - la distanza in chilometri fra la località indicata e la propria località;
 - il QTH locator della località indicata;
 - l'azimut, cioè la direzione in cui si dovrebbe dirigersi per andare verso la
località lungo il percorso più breve.

   Note.

   1) L'azimut è un angolo che si misura a partire da Nord (0 gradi) ruotando
in senso orario sul piano tangente alla superficie terrestre. Ad esempio, 90
gradi indica la direzione Est, mentre 270 gradi significa Ovest.
   2) La barra può essere omessa se si usa la lettera "Q" e la località è
indicata con le coordinate geografiche. Ad esempio: alm hq45.41, 11.88.
   3) L'opzione "U" (ora universale) è ignorata quando si indica il nome di una
località.

12. Funzione julian (giorno giuliano)

   Sintassi: ALM J[giorno giuliano]

   Determina la data ordinaria (giorno, mese, anno e giorno della settimana)
corrispondente al giorno giuliano indicato. Se non si indica alcun valore dopo
la "J", viene mostrata la data odierna con il corrispondente giorno giuliano.
   Anche in questo caso il giorno giuliano è sempre considerato e visualizzato
con il decimale ".5", che corrisponde alle ore 0 del giorno considerato (il
giorno giuliano inizia a mezzogiorno).
   Il valore minimo consentito è 2299160, che il programma interpreta come
2299160.5, corrispondente al 15/10/1582.

13. Funzione legale

   Sintassi: ALM L[anno1[-anno2]]

   Mostra il periodo dell'anno in cui è in vigore l'ora legale, secondo i
criteri adottati in Italia a partire dal 1965. Dopo la lettera "L" è possibile
indicare un solo anno oppure l'intervallo degli anni compresi fra due estremi:
sotto questo aspetto la sintassi è analoga a quella della funzione "feste".
   In Italia l'ora legale (estiva) cambia nella notte fra un sabato ed una
domenica, nell'ultima fine settimana dei mesi sottoindicati (per semplicità il
programma valuta solo la data, ignorando l'ora del cambiamento):
 1965 da maggio a settembre;
 1980 da marzo a settembre;
 1996 da marzo a ottobre.
Questi dati sono assunti per default, ma è possibile personalizzare il criterio
fissandone liberamente fino a 20 modifiche. La voce 8 del programma di
configurazione permette di stabilire gli anni in cui il criterio subisce una
modifica, definendo il mese e la settimana in cui inizia e finisce il periodo
di applicazione dell'ora legale.

14. Funzioni mensile e settimanale

   Sintassi: ALM M[numero da 1 a 31]
             ALM W[numero da 1 a 7]

   Con queste funzioni si attiva l'immissione di una ricorrenza da visualizzare
rispettivamente in un determinato giorno del mese e in un determinato giorno
della settimana. Il numero da indicare dopo la lettera è rispettivamente il
numero d'ordine del giorno nel mese e del giorno nella settimana. Per
quest'ultimo, si deve contare Lunedì come 1 e Domenica come 7. Se non si indica
alcun numero, viene adottato quello corrispondente al giorno attuale.
   Se il file dati contiene già un appuntamento, esso viene visualizzato e può
essere conservato, modificato o cancellato. Si termina l'immissione con Invio o
con F10. La registrazione su disco avviene solo dopo aver risposto con "S" alla
successiva richiesta di consenso. Rispondendo con "N" si possono effettuare
altre modifiche, mentre la pressione di Esc fa ritornare al DOS.
   Le ricorrenze mensili e settimanali corrispondenti ai comandi "M" e "W" sono
memorizzate nel file ALM.DAT e ciascuna di esse è di una sola riga. Per
ricorrenze di cadenza analoga, ma di maggiore lunghezza, si devono utilizzare
appuntamenti memorizzati nel file ALM.APP: quelli mensili sono individuati da
date del tipo giorno/*/*, quelli settimanali da date del tipo LU, MA, ME,
eccetera.

15. Funzione numero

   Sintassi: ALM N[data1][:data2]
             ALM N[data]{+|-}numero

   Questa funzione, a seconda della sintassi usata, svolge le seguenti azioni:
- determina la differenza fra due date, cioè il numero di giorni che
  intercorrono fra di esse;
- calcola l'incremento rispetto ad una data, cioè fornisce la data che
  differisce dalla prima di un certo numero di giorni.

   Come il solito, alcune informazioni possono essere sottintese e vengono
integrate con i valori presenti nell'orologio del calcolatore. Facciamo alcuni
esempi.

1) Differenza fra due date. Con i due prossimi comandi il programma mostra il
numero di giorni fra la data indicata e la data odierna:
   alm n31/12/99
   alm n20/9/1988
Con i due prossimi comandi il programma mostra la differenza in giorni fra le
due date indicate (notare che è indifferente l'ordine in cui le date sono
disposte):
   alm n19/6/98:31/12/99
   alm n31/12/99:19/6/98
Sono leciti anche i comandi seguenti:
   alm n 31/12
   alm n19/6:31/12

2) Incremento rispetto ad una data. Il numero di giorni da aggiungere o da
togliere va preceduto dal segno "+" o dal segno "-": nei due casi si ha
rispettivamente un incremento futuro ed un incremento passato.
Con i due prossimi comandi si ottiene rispettivamente la data che differisce di
15 giorni in più o in meno a partire dalla data odierna:
   alm n+15
   alm n-15
Altri comandi validi sono i seguenti:
   alm n19/6/98+1000
   alm n/6/98+1000
   alm n19-1000
   alm //99-100

16. Funzione ordina

   Sintassi: ALM O[A] ["parola"]
             ALM OC mese1[-mese2] ["parola"]
             ALM OE

   La funzione "ordina" effettua l'ordinamento e la riorganizzazione globale o
parziale delle ricorrenze annuali contenute nel file dati ALM.DAT. Possono
essere svolte tre azioni in corrispondenza alle tre sintassi sopra riportate
(si veda il seguito per la descrizione particolareggiata):

- recupero delle ricorrenze cancellate (nessuna opzione, opzione "A");
- cancellazione rapida delle ricorrenze relative ad uno o più mesi (C);
- eliminazione definitiva di tutte le ricorrenze cancellate (E).

Per le prime due voci (recupero e cancellazione) si può specificare una parola
o frase fra virgolette e in tal caso il comando ha effetto solo sulle
ricorrenze il cui testo contiene la parola o frase indicata (è indifferente
usare caratteri maiuscoli o minuscoli).
   Quando si adopera la funzione "ordina" con una delle opzioni "A", "E", "C",
il programma chiede conferma prima di procedere e l'esecuzione automatica è
subordinata al consenso che, come il solito, si dà con la lettera "S".

16.1. Recupero delle ricorrenze cancellate

   Si è detto che, durante l'immissione dei dati nell'agenda annuale, è
possibile usare la combinazione di tasti Ctrl+Canc che serve per cancellare una
delle frasi già registrate nel file dati. Non si tratta però di una
cancellazione definitiva perché l'informazione non viene eliminata (viene solo
azzerato un puntatore). Questo comporta che i dati cancellati sono resi
temporaneamente inaccessibili, ma possono essere recuperati qualora si desideri
farlo.
   Per recuperare i dati uno alla volta basta immettere la "O" da sola: in
questo modo il programma presenta ogni singola ricorrenza, chiedendo se la si
vuole ripristinare. Oltre alle usuali risposte "N" e "S" è prevista anche la
risposta "A" che attiva il recupero automatico di tutti i rimanenti dati
cancellati. Se all'avvio la lettera "O" è fatta seguire da una "A", si attiva
direttamente il recupero automatico.
   Esiste una circostanza nella quale una ricorrenza cancellata può essere
irrecuperabile. Ciò avviene se nella data di quella ricorrenza ci sono già 15
ricorrenze attive e di conseguenza manca lo spazio per poter collocare quella
recuperata. Rimane naturalmente la possibilità di cancellare una delle
ricorrenze attive, ripetendo poi l'operazione di recupero.
   Si può richiedere il recupero delle sole ricorrenze il cui testo contiene
una determinata parola o frase, che va messa fra virgolette. Ad esempio:

alm o"anniversario"

16.2. Cancellazione rapida delle ricorrenze annuali

   Si attiva aggiungendo l'opzione "C", dopo la quale è obbligatorio indicare
il numero di un mese o un intervallo di mesi. In questo caso non sono assunti
valori per default, onde prevenire la cancellazione accidentale dei dati. Si
consiglia di servirsi di questa funzione con un po' di cautela.
   Ad esempio, sono validi i seguenti comandi:

alm oc4
alm oc4-10

Invece nei seguenti comandi la sintassi è considerata errata:

alm oc
alm oc-6
alm oc5-13

Come per il recupero, anche la cancellazione può essere ristretta a quelle
ricorrenze che contengono una determinata stringa. Ad esempio:

alm oc1-12 "zia Cunegonda"

16.3. Eliminazione definitiva delle ricorrenze cancellate

   Quando il file dati contiene molte ricorrenze cancellate, è conveniente
eliminarle anche fisicamente per non occupare inutilmente spazio nel disco.
L'eliminazione avviene utilizzando la funzione "ordina" con l'opzione "E" come
segue:

alm OE

L'eliminazione fisica dei dati cancellati ha un secondo effetto positivo che è
quello di ordinare cronologicamente le ricorrenze nel file dati, cosicché
l'accesso può in certi casi risultare un po' più veloce. L'eliminazione dei
dati viene effettuata utilizzando una copia temporanea e solo al termine il
vecchio file viene eliminato: per questo è necessario che il disco corrente
disponga di una sufficiente quantità di spazio libero. Perciò, prima di
utilizzare questa funzione, è opportuno accertarsi che sia disponibile spazio
libero in quantità pari alla dimensione dell'attuale file ALM.DAT.

17. Funzione parametri

   Sintassi: ALM P[+][FileDati]

   Serve per fissare in modo stabile in un file dati di ALM le coordinate
geografiche della propria località, la modalità di emissione delle segnalazioni
acustiche, la modalità di scrittura dello schermo e il parametro per la
dichiarazione dei giorni festivi. Il programma ALM riconosce alcune variabili
di ambiente che gli consentono l'acquisizione di questi parametri (capitolo
27). Si può predisporre una certa configurazione e fissarla poi nel file dati,
cosicché in seguito si possono ignorare le variabili di ambiente relative ai
parametri suddetti, risparmiando così un po' di byte nell'ambiente DOS.
   Usando la lettera "P" da sola si ottiene semplicemente la visualizzazione
delle condizioni attuali, inclusa la versione del file dati; se si vuole
analizzare un file dati presente in una collocazione diversa da quella
stabilita durante l'installazione, si può aggiungere un nome di file
immediatamente alla destra della lettera "P". Ad esempio:

alm p a:\alm.dat

   Se la lettera "P" è seguita immediatamente dal carattere "+", i parametri
definiti con le variabili di ambiente vengono fissati stabilmente nel file
ALM.DAT, se non viene precisato un nome di file diverso a destra del carattere
"+". Si noti però che, quando il nome viene indicato esplicitamente, il file
deve già esistere.
   La funzione "parametri" fornisce anche un rapporto sul numero di
informazioni registrate nel file dati. Più precisamente sono indicati il numero
di boot strap, il numero di ricorrenze (annuali, mensili, settimanali) e, per
le ricorrenze annuali, la specificazione se sono attive, cancellate, festive,
feriali. Viene anche mostrato il nome del file degli appuntamenti, se
esistente.
   Per maggior comodità è fornito il programma batch FISSA.BAT che aiuta a
determinare la configurazione desiderata. In questo batch file occorre adattare
le righe con i comandi SET seguendo le istruzioni date nel capitolo 27.

18. Funzione QTH

   Sintassi: ALM Q {località}
             ALM H*{località}

   Questa funzione individua nei file dei dati geografici ALM*.LOC tutte le
località che contengono la stringa "località" e visualizza le relative
informazioni (cfr. 11.1):

 - la distanza in chilometri fra la località indicata e la propria località;
 - il QTH locator della località indicata;
 - l'azimut.

Se vengono individuate più località corrispondenti alla stringa indicata, si
può scorrerle usando alcuni tasti:

 - frecce su/giù per passare alla voce precedente/successiva;
 - Home/End per saltare alla prima/ultima voce;
 - numero seguito da Invio per saltare alla voce corrispondente.

L'ordine di presentazione è il seguente:

 - per prime compaiono le voci che iniziano con la stringa richiesta;
 - seguono le voci che contengono la stringa in qualunque posizione
   (con PgUp/PgDn si seleziona la prima di queste).

La funzione "QTH" è compatibile con il reindirizzamento
dell'uscita. Perciò sono ammessi comandi dei tipi seguenti:
   alm q monte|more
   alm q mare >file.txt

   L'espressione "località" usata nella sintassi è obbligatoria. Essa può anche
consistere nelle coordinate geografiche (indicate come coppia di numeri
separati da virgola oppure mediante il QTH locator).
   La funzione "QTH" fornisce informazioni simili alla funzione "ora" usata con
l'opzione "Q", permettendo però la consultazione dei dati riguardanti numerose
località.
   Notare infine che invece del comando "Q" si può usare equivalentemente il
comando "H*".

19. Funzione ricerca

   Sintassi: ALM R[@][frase]

   Ricerca e scrive sullo schermo tutte le ricorrenze contenenti la frase
indicata. La frase viene cercata indipendentemente dai caratteri maiuscoli e
minuscoli. Si noti che l'omissione della frase causa la visualizzazione di
tutte le ricorrenze e quindi i comandi "Elenco" e "ricerca" si equivalgono,
qualora siano utilizzati senza alcun parametro.
   Se il comando "R" è seguito immediatamente da "@", i dati vengono presentati
in un formato compatibile con quello del file degli appuntamenti ALM.APP. Ciò
permette di estrarre i dati preesistenti e di utilizzarli poi nel file ALM.APP
(v. il programma batch GENAPP.BAT).

20. Funzione cerca santo

   Sintassi: ALM S{nome del santo}

   Questa funzione serve per ricercare il nome di un santo nel file ALM.SAN e
per visualizzare sullo schermo tutte le date in cui esso ricorre. Il nome, che
può essere costituito anche da più parole o da una porzione del nome, va
digitato immediatamente dopo la lettera "S". Anche in questo caso, come per la
funzione "ricerca", non ha importanza rispettare le maiuscole/minuscole. Invece
è obbligatorio immettere almeno un carattere dopo la "S".
   Si osservi che il file ALM.SAN deve trovarsi nella stessa directory in cui
si trova l'eseguibile ALM.EXE. Inoltre esso è riconosciuto come valido soltanto
se inizia con una sequenza ben precisa di caratteri, che agisce quindi come una
chiave. Perciò si abbia cura di non modificare o sostituire questo file.
   L'aggiornamento del file ALM.SAN può essere svolto con il programma
SANTI.EXE.

21. Funzione contest

   Sintassi: ALM T[anno1[-anno2]]

   Questa funzione interessa esclusivamente i radioamatori appassionati di
contest internazionali. La data di alcune di tali gare è stabilita con un
criterio ben preciso. Il programma mostra il calendario dei cinque
contest internazionali organizzati dalla IARU regione 1 sulle bande VHF e
superiori (prima fine settimana dei mesi di marzo, maggio, luglio, settembre e
novembre). Mostra inoltre le date dei contest mondiali CQWWPX e CQWWDX, sia in
SSB sia in CW, sulle bande HF.
   Con la sola lettera "T" si ottiene il calendario dell'anno in corso; è
possibile indicare un anno a piacere o anche un intervallo di anni compresi fra
due estremi (analogamente a quanto accade, ad esempio, per la funzione
"feste").

22. Funzione vedi boot

   Sintassi: ALM V

   Questa funzione permette di consultare l'elenco degli avvii del calcolatore.
Ogni riga ospita le informazioni relative ad un boot strap ed è possibile
spostare il cursore di una riga (frecce verticali), di una videata (PaginaSu e
PaginaGiù) e lo si può portare a inizio e fine elenco (Home e End) oppure a
inizio e fine schermo (Ctrl+Home e Ctrl+End).
   Premendo il tasto Invio si ottiene l'almanacco odierno, mentre con
Ctrl+Invio compare l'almanacco del giorno su cui è posizionato il cursore . La
pressione del tasto Esc provoca il ritorno al DOS.
   Questa funzione è compatibile con il reindirizzamento dell'uscita.
   Nella funzione "vedi boot" la scrittura dello schermo avviene in modo
diretto e non tramite BIOS, indipendentemente dallo stato della variabile di
ambiente ALM_BIOS. Quindi l'intercettazione immediata dei caratteri da parte di
un sintetizzatore vocale è esclusa (v. capitolo 27).

23. Funzione Morse

   Sintassi : ALM "[parametri][frase]
              ALM @[parametri]NomeFile
   parametri: +n o -n per la velocità, *n o :n per la frequenza della nota.

   La frase immessa dopo il carattere " (virgolette) viene tradotta in
telegrafia Morse attraverso l'altoparlante del calcolatore. I caratteri vengono
anche mostrati uno alla volta man mano che sono emessi. E' inoltre possibile
tradurre in Morse il contenuto di un file qualunque: si usa il carattere "@"
(in luogo delle virgolette) seguito dal nome del file da sonorizzare (v. il
programma batch MORSE.BAT).
   Durante la riproduzione è possibile premere alcuni tasti per svolgere le
azioni seguenti:

   Azione da svolgere                 Tasti da premere
   =================================  =================
   ritornare al DOS                   Esc
   sospendere/riattivare l'emissione  barra spaziatrice
   aumentare la velocità              + oppure F1
   diminuire la velocità              - oppure F2
   aumentare la frequenza             *  < F3
   diminuire la frequenza             :  > F4
   ripristinare le condizioni base    =

   La velocità viene aumentata o diminuita a passi del 10%, la frequenza viene
aumentata o diminuita a passi di un semitono (cioè moltiplicata o divisa per la
radice dodicesima di 2). E' possibile impostare i valori di partenza della
velocità e della frequenza mediante opportuni parametri indicati sulla riga di
comando DOS a sinistra della stringa o del nome del file (i valori base sono
rispettivamente di 80 lettere al minuto e di 880 Hz):

 +n aumenta la velocità base di n gradi;
 -n diminuisce la velocità base di n gradi;
 *n aumenta la frequenza base di n semitoni;
 :n diminuisce la frequenza base di n semitoni.

Fra i caratteri non alfanumerici, soltanto i seguenti vengono sonorizzati (gli
altri sono semplicemente ignorati):

   '  ,  -  .  /  ?

Alcuni esempi di comandi validi:
   alm "
   alm "-1*3
   alm "prova
   alm ":3 prova
   alm @file.txt
   alm @+4*10 file.txt
I parametri di velocità e frequenza possono essere impostati anche con la
variabile di ambiente ALM_MRS. Lo stesso effetto dell'ultimo comando si ottiene
anche con i due comandi seguenti:
   set alm_mrs=+4*10
   alm @file.txt

   Se il carattere " non è seguito da alcuna frase, il programma si predispone
ad accettare un input da tastiera e in questo caso vengono tradotti in Morse
tutti i caratteri alfanumerici man mano che vengono digitati dall'operatore.
   Se è in corso la sonorizzazione di una frase o di un file, la pressione
della barra spaziatrice fa passare al modo di immissione da tastiera. Una
nuova pressione fa riprendere il testo lasciato in sospeso.
   Questa funzione non ha alcun legame con l'almanacco. La sua presenza è
motivata dalla disponibilità del codice Morse usato per le segnalazioni
acustiche (v. il capitolo 27). Può essere una curiosità ma può anche fornire
l'occasione di apprendere il Morse.

24. Funzione valuta

   Sintassi: ALM =importo moneta1 / moneta2
             ALM =importo moneta1
             ALM =importo /moneta2
             ALM =moneta1
             ALM =/moneta2
             ALM =importo [moneta1] [/ moneta2] [{*|:}tasso]
             ALM =+ FileOrigine [FileRisultante]

   Mediante questa funzione si possono effettuare le conversioni valutarie fra
due monete qualunque. Giocando sulla presenza o meno dei singoli elementi
indicati nella sintassi, è possibile ottenere vari effetti.
   Il termine "importo" è un numero che indica una somma di denaro da
convertire da una valuta ad un'altra valuta. I termini "moneta1" e "moneta2"
indicano i nomi delle due monete fra le quali si vuole effettuare la
conversione. Normalmente il tasso di cambio non deve essere indicato perché le
parità delle monete sono elencate tutte nel file ALM.VAL, che è un file di puro
testo facilmente aggiornabile.
   Il carattere iniziale "=" che identifica la funzione "valuta" può essere
sostituito con "_". Ciò può essere utile nei casi in cui il DOS non accetta il
carattere "=", ad esempio nelle variabili di ambiente o nei parametri di un
file batch.

24.1. Conversione di valuta

   Questo caso esige che venga indicato esplicitamente l'importo della somma da
convertire. Uno dei nomi delle monete può essere sottinteso e in questo caso il
programma adotta il nome della moneta di default. Se non vi sono ambiguità, si
può indicare una moneta con una parte iniziale del suo nome (ad esempio "tall"
in luogo di "tallero"). Occorre utilizzare nomi di monete presenti nel file
ALM.VAL, aggiungendo i dati mancanti eventualmente necessari. Oltre al calcolo
dell'importo corrispondente, il programma mostra anche i tassi di cambio
diretto e inverso fra le due monete. Alcuni esempi:

   alm = 250 doll
   alm = 100000 lira/dollaro
   alm = 100000/tallero
   alm = 4.6 dollaro aus / yen

Si può usare il programma batch CAMBIO.BAT.

24.2. Elenco dei tassi di cambio rispetto a una moneta

   Se l'importo non è indicato o vale 0, il programma presenta la lista delle
monete affiancate da un numero. In questo caso si deve indicare il nome di una
sola moneta (eventualmente abbreviato). Ci sono due possibilita.

Primo caso. Se il nome della moneta è indicato semplicemente, viene mostrato il
valore di tutte le monete nei confronti della moneta indicata. Esempi:
   alm = lira
   alm = kuna

Secondo caso. Se il nome della moneta è preceduto dal carattere "/", viene
mostrato il valore di una unità della moneta data rispetto a tutte le altre
monete. Esempi:
   alm =/lira
   alm =/peseta

   L'intero elenco visualizzato può essere riversato in un file usando il
reindirizzamento dell'uscita. Ad esempio:
   ALM =lira>e:\elenco.txt
E' anche possibile aumentare la precisione dei valori visualizzati: basta
assegnare alla variabile ALM_PRE un valore numerico intero compreso fra 6 e 16,
a seconda della precisione desiderata. Ad esempio:
   set alm_pre=8

24.3. Impostazione dei nomi e dei tassi di cambio

   I nomi delle monete e le parità sono elencati in un apposito file dal nome
ALM.VAL. A parte le monete aderenti all'euro, che hanno un tasso di cambio
fisso, le parità sono suscettibili di variazioni e vanno quindi aggiornate
periodicamente: l'operazione è relativamente semplice perché il file è un file
di puro testo ASCII.
   La prima riga del file ALM.VAL deve iniziare con l'etichetta di
identificazione [ALM_VAL].
   Per indicare il nome della moneta sottintesa (adoperata quando sulla riga di
comando DOS non viene espresso esplicitamente il nome di una moneta) occorre
una riga simile alla seguente:

BASE_VAL = LIRA

Si elencano poi, una per riga, tutte le monete, seguite dal segno di "=" e da
un numero decimale che esprime il tasso di cambio rispetto ad una stessa moneta
di riferimento. La consuetudine ormai consolidata (nel rispetto delle
disposizioni del Consiglio dell'Unione Europea del 31/12/1998) vuole che la
moneta di riferimento sia l'euro e che accanto a ogni moneta si indichi il
valore di un euro in quella moneta. Nel file ALM.VAL fornito con il programma
la moneta di riferimento è appunto l'euro, ma può essere usata un'altra moneta
qualunque, come pure si potrebbe invertire l'interpretazione dei tassi (v. il
paragrafo 24.3.1). Ecco alcuni esempi di tassi di cambio:

EURO                = 1
LIRA                = 1936.27
YEN GIAPPONESE      = 133.72
CORONA CECA         = 32.56

   Notare che la moneta di riferimento non deve necessariamente coincidere con
la moneta sottintesa descritta più sopra (si potrebbe addirittura usare come
riferimento una moneta non citata esplicitamente nell'elenco).
   Si può usare un diverso file con l'elenco delle parità: basta impostarne il
nome con la variabile di ambiente ALM_VAL. Ad esempio:
set alm_val=d:\dati\monete.txt

24.3.1. Altri particolari sul file ALM.VAL - Inversione dei tassi

   Se si volesse adottare la lira come moneta di riferimento, occorrerebbe
indicare i tassi come nei seguenti esempi (notare che è opportuno "abbondare"
con il numero di cifre decimali per assicurare la precisione dei calcoli):

EURO                = 0.0005164569
LIRA                = 1
YEN GIAPPONESE      = 0.06906062
CORONA CECA         = 0.01681584

In questa circostanza risulta preferibile indicare nel file ALM.VAL i tassi
inversi rispetto all'interpretazione usuale. A tale scopo occorre premettere
all'elenco dei tassi di cambio il seguente comando, con una "S" o una "Y"
a destra del segno di "=":

TASSI_INVERSI = S

Se tale comando è presente, il numero accanto alla moneta viene interpretato
come il valore di una unità di quella moneta rispetto alla moneta di
riferimento. Perciò ciascun valore  x  delle righe precedenti deve essere
sostituito con il suo reciproco  1/x  e cioè:

EURO           = 1936.27
LIRA           = 1
YEN GIAPPONESE = 14.48
CORONA CECA    = 59.4678

   Il comando TASSI_INVERSI agisce "globalmente", cioè ha effetto su tutte le
monete elencate nelle righe successive e può comparire più volte nello stesso
file. Se è accompagnato dalla lettera "N", esso ripristina l'interpretazione
ordinaria dei tassi nelle righe successive; in tutti gli altri casi viene
ignorato.
   Si può adottare il tasso inverso in modo "locale", cioè eseguire la
variazione solo per una o più monete: basta anteporre al tasso il carattere
"/". Se però i tassi sono già interpretati come inversi per effetto del comando
TASSI_INVERSI, tale carattere ripristina l'interpretazione ordinaria di quel
tasso (una doppia inversione lascia il valore invariato).
   E' anche possibile indicare un tasso relativo a una moneta diversa da quella
di riferimento, purché essa sia compresa fra le monete elencate nelle righe
precedenti. Ad esempio, se sono presenti i due prossimi comandi, il tasso di
"VECCHIO FRANCO" viene interpretato come il tasso del franco francese
moltiplicato per 100:

FRANCO FRANCESE = 6.55957
VECCHIO FRANCO  = 100 FRANCO FRANCESE

Questa caratteristica può essere utile anche per prevedere denominazioni
diverse di una stessa moneta, senza dover indicare più volte il tasso. Ad
esempio, sono validi i seguenti tassi, dove il valore numerico è adottato
implicitamente come uguale a 1:

DOLLARO = DOLLARO USA
DOLLARI = DOLLARO

Riassumendo, per esprimere un tasso di cambio nel file delle parità valutarie
si usano righe con uno dei seguenti formati (le parti fra parentesi quadre sono
facoltative e le parentesi non vanno scritte):

NOME_MONETA = [/] tasso [MONETA_PRECEDENTE]
NOME_MONETA = MONETA_PRECEDENTE

24.4. Tasso di cambio sulla linea di comando

   Talvolta può essere utile impostare momentaneamente un tasso di cambio non
previsto nel file delle parità ALM.VAL. A tale scopo è sufficiente completare
il comando già descritto con il tasso di cambio preceduto dal carattere "*"
(asterisco) oppure dal carattere ":" (due punti), a seconda che il tasso sia
diretto oppure inverso. Facciamo tre esempi.

   1) Supponiamo di sapere che una certa moneta vale 255 lire. Per calcolare il
corrispettivo di 100000 lire in quella moneta basta eseguire il seguente
comando:
   alm =100000 : 255
Il carattere ":" dell'esempio precedente suggerisce che l'operazione da
eseguire è una divisione.

   2) Supponiamo che il tasso odierno di un dollaro USA sia di 1.2496 per un
euro. Per conoscere l'importo in dollari di 300 euro si esegue il comando
seguente:
   alm =300 * 1.2496
Il carattere "*" suggerisce che l'operazione da eseguire è una
moltiplicazione. Si ottiene in risposta:
   300 EURO = 374.88 MONETA IMPRECISATA
dove il nome "EURO" è desunto dal file ALM.VAL, che lo prevede come moneta
sottintesa (anche se in questo caso tutti i tassi elencati in tale file sono
ignorati). Volendo visualizzare una frase con i nomi delle monete esatte,
occorre arricchire il comando:
   alm =300 euro/dollari * 1.2496
Per maggior comodità si può utilizzare il file batch DOLLARI.BAT.

  3) Il tasso di cambio euro/lira è pari a 1936.27. Se vogliamo sapere a quante
lire corrispondono 285 euro possiamo eseguire il comando:
   alm =285 euri/lire * 1936.27
Se viceversa vogliamo sapere a quanti euro corrisponde un milione di lire:
   alm =1000000 lire/euri :1936.27
Usando il file batch EURO.BAT, i due comandi si trasformano rispettivamente in:
   euro 285
   euro 1000000 x
Notare che la conversione fra lira e euro non richiede la precisazione
esplicita del tasso di cambio, dato che il tasso stesso è fissato e
irrevocabile. Perciò gli stessi risultati si ottengono anche con i due seguenti
comandi (purché sia presente il file ALM.VAL):
   alm =285 eur/li
   alm =1000000 li/eu

   Notare che, quando si indica un tasso di cambio sulla linea di comando,
tutti i tassi registrati nel file delle parità sono ignorati. Il programma
utilizza soltanto i nomi delle monete per completare eventuali nomi immessi
parzialmente.
   Il programma ALM, che non sa come fare i plurali dei nomi, utilizza le
denominazioni al singolare memorizzate nel file ALM.VAL, cosicché le frasi che
compaiono sullo schermo hanno talvolta un aspetto alquanto buffo.

24.5. Aggiornamento facilitato del file delle parità valutarie

 Si può aggiornare il file delle parità valutarie ALM.VAL a partire da un file
di testo contenente in ciascuna riga il nome di una moneta con il relativo
tasso di cambio. Per svolgere questa funzione si usa l'ultima sintassi indicata
e cioè:
   ALM =+ FileOrigine [FileRisultante]
Il file FileOrigine deve essere un file di testo con righe simili alle
seguenti (almeno il primo carattere della moneta deve essere maiuscolo):

   STERLINA CIPRIOTA    0.5862
   TALLERO SLOVENO      236.85
   YEN GIAPPONESE       133.72

Tutto il contenuto di ALM.VAL viene trascritto in File Risultante, sostituendo
i valori delle monete elencate in FileOrigine. In mancanza di indicazione
esplicita, come FileRisultante viene usato il nome ALM_VAL.TMP.

   Aggiornamento con i dati di Televideo.

   L'aggiornamento facilitato può essere eseguito utilizzando come FileOrigine
il contenuto della pagina 332 di Televideo RAI riversata in un file di testo
ASCII mediante una scheda di acquisizione Teletext (v. il file batch allegato
AGGVAL.BAT).
   Dato che gli importi vengono trascritti senza eseguire alcuna conversione,
il procedimento è applicabile solo quando le monete elencate in FileOrigine
corrispondono a righe del file ALM.VAL espresse nel modo più semplice, vale a
dire "MONETA = tasso" (senza la barra iniziale e senza un nome di moneta a
destra del valore numerico, v. 24.3.1). Il file ALM.VAL allegato rispetta
questi requisiti nei confronti del file ricavato da Televideo.
   Infine, se all'inizio del file ALM.VAL è attivata l'interpretazione globale
dei tassi come inversi (comando "TASSI_INVERSI = S"), tutti i tassi elencati in
FileOrigine devono essere inversi.

24.6. Svalutazione della lira a partire dal 1861

   A partire dalla data 1 gennaio 2002 la lira è stata sostituita dall'euro, ma
naturalmente essa rimane per tutti noi un importante riferimento mentale.
   Nel calcolare i valori corrispondenti di euro in lire e viceversa, si
utilizza il tasso ufficiale di 1936.27 lire per un euro. Se però si vuole
raffrontare il valore corrispondente di una somma di danaro in anni diversi,
occorre tener conto della svalutazione della lira fino al 2002 e di quella
dell'euro successivamente.
   Tutti i tassi ufficiali di svalutazione a partire dal 1861 sono riportati
nel file LIRA.VAL, dove per i vari anni sono utilizzate le denominazioni
LIRE_1861, LIRE_1862,... LIRE_2004. Come valore di riferimento è usato quello
di LIRE_2002, che è posto a 1, mentre la moneta sottintesa è LIRE_2004 (v. il
paragrafo 24.3). Chiaramente questi valori non rispecchiano esattamente
l'andamento della svalutazione reale, che non è facilmente quantificabile.
Facciamo alcuni esempi di utilizzo.

ALM = 3500 LIRE_1925
Mostra il valore in lire del 2004 di 3500 lire del 1925.

ALM = 3500 LIRE_1925 /euro
Mostra il valore in euro della stessa somma dell'esempio precedente.

ALM = 1 LIRE_1980 / LIRE_2000
Mostra il valore nel 2000 di una lira del 1980.

Per il calcolo dei valori attuali (2004) si può utilizzare il file batch
LIRA.BAT (lo si esegua senza parametri per visualizzare alcune spiegazioni).

25. Funzione temperatura

   Sintassi: ALM °temperatura [scala]

   Mediante questa funzione si possono eseguire le conversioni di temperatura
fra le varie scale termometriche conosciute (Celsius, Fahrenheit, Kelvin,
Réaumur, Rankine). Il comando che identifica questa funzione è il simbolo di
"gradi", indifferentemente nella codifica DOS (ASCII 248) oppure in quella
Windows (ASCII 176).
   Il termine facoltativo "scala" può essere una fra le lettere "C", "F", "K",
"R" e "A", in corrispondenza alle cinque scale termometriche previste. Se non
si precisa alcuna scala, il programma assume implicitamente che la temperatura
indicata è  espressa in gradi centigradi (scala Celsius).
   L'effetto del comando è la visualizzazione delle temperature nelle quattro
scale diverse da quella indicata sulla riga di comando. Per maggior comodità si
può utilizzare il file batch allegato GRADI.BAT.

25.1. Le scale termometriche

   Le scale termometriche comunemente usate sono la Celsius (detta anche scala
centigrada) e la Fahrenheit (impiegata soprattutto negli USA). Le scale Kelvin
e Rankine sono scale di temperatura assoluta usate in ambito scientifico,
mentre la scala Réaumur è attualmente in disuso.

   Scale Celsius e Fahrenheit.

   La scala Celsius fu introdotta dall'astronomo svedese Andres Celsius
(1701-1744). Essa divide in 100 parti l'intervallo di temperatura che va dal
punto di congelamento (0 gradi) al punto di ebollizione (100 gradi) dell'acqua
pura al livello del mare e alla pressione di 760 millimetri di mercurio.
   La scala Fahrenheit, introdotta nel 1714 dallo scienziato tedesco di origine
polacca Gabriel Fahrenheit                                 (1686-1736), divide
lo stesso intervallo di temperatura in 180 gradi, ponendo però a 32 gradi la
temperatura di congelamento e di conseguenza a 212 gradi quella di ebollizione.
Questo valore un po' strano è dovuto al fatto che Fahrenheit pose a 0 la
temperatura di un'opportuna miscela di ghiaccio e di cloruro di ammonio.
   Indicando con TC e con TF la temperatura di un corpo rispettivamente nelle
scale Celsius e Fahrenheit, le due formule di conversione sono:

   TC = (5/9)*(TF-32)
   TF = (9/5)*TC+32

   Scale Kelvin e Rankine.

   Sono entrambe scale che adottano come valore 0 della temperatura il
cosiddetto "zero assoluto", la condizione della materia nella quale il
movimento molecolare si arresta. Tale condizione, corrispondente alla
temperatura di -273.15 gradi Celsius, non può essere raggiunta in modo esatto,
anche se vi si può arrivare molto vicino: infatti la più piccola perturbazione
(ad esempio il transito di un fotone) impedirebbe all'agitazione molecolare di
essere perfettamente nulla.
   Nelle scale Kelvin e Rankine la variazione di un grado di temperatura
coincide rispettivamente con la variazione di un grado nelle scale Celsius e
Fahrenheit. La temperatura di 0 gradi Celsius corrisponde a 273.15 gradi Kelvin
e a 491.67 gradi Rankine. Le temperature TK e TA nelle scale Kelvin e Rankine
si ottengono rispettivamente dalle temperature TC e TF con le formule seguenti:

   TK = TC+273.15
   TA = TF+459.67

La scala Kelvin fu inventata da William Thomson, noto anche come Lord Kelvin
(1824-1907), uno scienziato irlandese che compì importanti studi di
termodinamica.
La scala introdotta dall'ingegnere scozzese William John Macquorn Rankine
(1820-1872) è sostanzialmente simile alla scala Kelvin ed è poco usata.

   La scala Réaumur.

   La scala Réaumur, introdotta dallo scienziato francese Réné-Antoine
Ferchault de Réaumur (1683-1757), fu usata soprattutto in Francia nei secoli
XVIII e XIX. In tale scala il punto di congelamento dell'acqua è posto a 0
gradi mentre quello di ebollizione è posto a 80 gradi. Detta TR la temperatura
nella scala Réaumur, le formule di conversione rispetto alla temperatura
Celsius TC sono:

   TR = TC*4/5
   TC = TR*5/4

26. Funzioni segnale orario, cronometro, conto alla rovescia

   Sintassi: ALM #                 (segnale orario)
             ALM #c[z]             (cronometro)
             ALM #hh:[mm[:ss]][r]  (conto alla rovescia fino all'ora indicata)
             ALM #secondi [r]      (conto alla rovescia per il tempo indicato)
             ALM #d [hh:]mm:ss     (idem per hh ore, mm minuti, ss secondi)

   A seconda della sintassi usata, viene svolta una delle funzioni indicate a
destra fra parentesi tonde nel prospetto precedente (segnale orario, cronometro
oppure conto alla rovescia).
   Lo scorrere del tempo è evidenziato con segnalazioni acustiche (v. lo schema
più avanti), la cui quantità può essere regolata durante l'esecuzione premendo
una cifra compresa fra 0 (segnalazioni complete) e 7 (segnalazioni del tutto
assenti). Per tali segnalazioni è adottata una "frequenza base" che può essere
variata a passi di un semitono con i tasti "+" e "-".
   Ogni cinque secondi il programma mostra il tempo con l'attributo "reverse"
(scritta nera su sfondo bianco) e invia tale scritta al BIOS: la scrittura
tramite BIOS può essere alternativamente esclusa e ripristinata premendo il
tasto "B".
   Premendo il tasto Invio si ripristinano le condizioni predefinite (0 per la
quantità di segnalazioni, frequenza base di 1000 Hz, BIOS attivato).
   Se non è in corso il conto alla rovescia, si può premere la barra
spaziatrice per avviare il cronometro, che si può fermare in ogni momento con
la barra spaziatrice stessa. Il cronometro mostra il tempo parziale e quello
totale (se diversi tra loro): per chiarezza di visualizzazione, durante il
conteggio compaiono solo i secondi, mentre alla fine del conteggio sono
mostrati i tempi in modo preciso (approssimazione di un millesimo).
   Il valore del tempo totale viene conservato nel disco: in tal modo è
possibile accumulare le misurazioni anche in momenti diversi. Tale valore può
essere azzerato in due modi:

 - avviando la funzione cronometro direttamente da DOS con il comando "alm #cz"
   (con "alm #c" il cronometro parte senza azzerare il tempo totale);
 - avviando la funzione "segnale orario" (comando "alm #") e premendo poi
   il tasto "Z".

   Se a destra di "#" viene indicato un valore numerico, il programma attiva la
funzione di "conto alla rovescia". Il valore indicato può assumere tre forme:
 - un semplice valore numerico (anche con cifre decimali)
indica una durata espressa in secondi; ad esempio:
alm #21.5
richiede il conto alla rovescia per 21.5 secondi.
 - valori della forma mm:ss oppure hh:mm:ss accompagnati dalla lettera "D"
indicano una durata nella quale si possono precisare i minuti ed eventualmente
le ore; ad esempio, i seguenti quattro comandi richiedono il conto alla
rovescia per la durata indicata:
alm #d 2:10     (2 minuti e 10 secondi, equivalente a "alm #130");
alm #d 3:20:30  (3 ore, 20 minuti, 30 secondi);
alm #d 3::      (3 ore esatte, si può anche usare "alm #3:0:0d");
alm #d :1:5.5   (un minuto e 5.5 secondi).
 - un valore nella forma hh:mm:ss
indica l'orario nel quale deve aver termine il conto allarovescia; ad esempio:
alm #8:15
alm #21:5:30
I minuti e i secondi, se omessi, in questo caso vengono interpretati come "0".
   L'effettivo avvio del conto alla rovescia può essere subordinato
all'ulteriore pressione di un tasto: a tale scopo basta aggiungere la lettera
"R" sulla riga di comando.
   Al termine del conto alla rovescia il programma emette per circa due minuti
un segnale consistente in una sequenza di otto impulsi a 1500 Hz, ripetuto ogni
cinque secondi: si può ritornare al segnale orario premendo la barra
spaziatrice oppure uscire dal programma con Esc.

26.1. Segnalazioni acustiche relative al cronometro

   Durante l'esecuzione si può premere una cifra n compresa fra 0 e 7: in tal
caso vengono escluse le segnalazioni identificate nello schema seguente con un
progressivo minore di n, mentre le rimanenti vengono attivate. Perciò, in
particolare, la pressione di 0 comporta la riattivazione di tutte le
segnalazioni e la pressione di 7 comporta l'esclusione di tutte.
   Le frequenze indicate nello schema fanno riferimento alla frequenza base
predefinita di 1000 Hz e variano proporzionalmente ad essa quando la si
modifica.

0) un impulso a 4000 Hz ogni secondo;
1) un impulso a 1500 Hz ogni cinque secondi;
2) 2, 3 e 4 impulsi a 1500 Hz ai secondi 15, 30 e 45 di ogni minuto;
3) un impulso a 1000 Hz ai secondi fra 54 e 58 (come il segnale orario RAI);
4) impulso prolungato di frequenza 2000 Hz allo scadere di ogni minuto;
5) arpeggio discendente allo scadere dell'ora e della mezz'ora;
6) 8 impulsi ripetuti a 1500 Hz al termine del conto alla rovescia;
7) tutte le segnalazioni sono escluse.

   Oltre alle segnalazioni acustiche già descritte, è possibile attivare una
segnalazione facoltativa con cadenza a piacere determinata da un valore
numerico attribuito alla variabile di ambiente ALM_CAD. Ad esempio, si può
impostare il valore 60 con il seguente comando DOS:

   set alm_cad=60
   alm #

In tal modo il programma emette ogni 60 secondi una scala di cinque note,
alternativamente ascendente e discendente. Questa segnalazione
aggiuntiva sostituisce le segnalazioni "regolari" negli istanti in cui cade.
Essa viene esclusa quando tutte le segnalazioni del segnale orario sono escluse
(valore 7 dello schema precedente) e naturalmente non è attivata se la
variabile ALM_CAD non è definita.

27. Configurazione e variabili di ambiente

   In questo capitolo è descritto il modo in cui il programma ALM può acquisire
alcuni dati che ne consentono la personalizzazione e il corretto funzionamento.
Anche in questo caso il programma supplisce con valori di default in mancanza
di assegnazioni esplicite.
   I dati in questione sono il nome della propria località con le sue
coordinate geografiche (latitudine nord e longitudine est) e cinque
coefficienti che riguardano rispettivamente le segnalazioni acustiche emesse
dall'altoparlante del calcolatore, il modo di scrittura dello schermo, la
visualizzazione dei caratteri ASCII estesi, i giorni della settimana da
considerare festivi e l'applicazione dell'ora legale. Altre informazioni che si
possono indicare esplicitamente sono:
 - il nome della directory che contiene il programma;
 - il file degli appuntamenti liberi (in sostituzione di ALM.APP);
 - il file dei dati geografici;
 - il file con l'elenco delle parità valutarie;
 - le stringhe che definiscono le segnalazioni acustiche;
 - i parametri di velocità e frequenza per la funzione Morse;
 - la cadenza di una segnalazione aggiuntiva nella funzione "segnale orario".
I parametri principali possono essere definiti più comodamente usando il
programma di configurazione INIZIA (v. capitolo 29).
   Il programma ALM riconosce le seguenti variabili di ambiente DOS:

ALM_DIR    directory contenente i file del programma;
GA_APP     file ASCII degli appuntamenti liberi;
ALM_LAT    latitudine della propria località;
ALM_LONG   longitudine della propria località;
ALM_BIOS   parametro per la modalità di scrittura dello schermo;
ALM_F      parametro per indicare quali sono i giorni festivi;
ALM_LEG    coefficiente per determinare l'applicazione dell'ora legale;
ALM_PASS   attivazione permanente della richiesta di password;
ALM_S      parametro per l'emissione delle segnalazioni acustiche;
ALM_1, ALM_2,... ALM_5  stringhe che definiscono le segnalazioni;
ALM_MRS    parametri di velocità e frequenza per la funzione Morse;
ALM_LOC    scelta del file dei dati geografici (numero da 0 a 9);
ALM_VAL    nome del file contenente le parità fra le monete;
ALM_WIN    se vale 1 visualizza le lettere accentate con la tabella ISO 8859-1;
ALM_CAD    cadenza di una segnalazione extra nella funzione "segnale orario".

   Per assegnare un valore a una variabile di ambiente si usa il comando SET
(v. il manuale o il comando HELP del DOS alla voce SET). Ad esempio, se i file
ALM.EXE, ALM.SAN, ALM*.LOC e ALM.VAL si trovano nella directory C:\DATI e se
questa directory non è fra quelle elencate nel path di sistema, prima di
lanciare in esecuzione il programma si deve dare il seguente comando al prompt
del DOS o, eventualmente, mettere tale riga nel file AUTOEXEC.BAT (v. anche il
programma batch VAR.BAT):

set alm_dir=c:\dati

Inoltre, ipotizzando ancorache la directory non sia inclusa nel path, si deve
lanciare in esecuzione il programma facendone precedere il nome dal percorso
completo e cioè immettendo il comando:

c:\dati\alm ...

   Per quanto riguarda gli altri parametri di configurazione, conviene
assegnarli mediante il programma di configurazione INIZIA, che li presenta in
modo analitico e ne permette la modifica con comandi semplici e guidati.
   Un modo alternativo di assegnare i valori dei parametri è quello di
predisporre i valori desiderati, fissandoli poi nel file dati ALM.DAT mediante
la funzione "parametri" (comando "P"). Ad esempio, supponiamo di eseguire i
seguenti comandi:

set alm_lat=45.4
set alm_long=12.38
set alm_bios=1
set alm_f=192
set alm_s=1
alm p+

In questo modo vengono memorizzati le coordinate geografiche di Venezia e gli
altri parametri, cosicché in seguito non occorrerà più usare le corrispondenti
variabili di ambiente, a meno che non si voglia cambiare qualcosa.

27.1. Coordinate geografiche

   Il procedimento descritto sopra permette di adottare coordinate geografiche
a piacere. Tuttavia il modo più semplice di compiere questa assegnazione è
quello di lanciare in esecuzione il programma di configurazione INIZIA (v. più
avanti), che si avvale delle informazioni presenti nei file ALM*.LOC dei dati
geografici. I dati di questi file sono sfruttati direttamente anche dal
programma ALM (v. i file batch FUSO.BAT, FUSO1.BAT, DISTA.BAT e ORA.BAT).
   Il programma di configurazione INIZIA consente anche di memorizzare il nome
della propria località (per questa assegnazione non è prevista una variabile di
ambiente).
   E' importante indicare al programma le proprie coordinate geografiche
(latitudine nord e longitudine est) perché in tal modo si ottengono valori più
accurati per l'ora dell'alba e del tramonto del sole.
   Le coordinate devono essere espresse in gradi: se si vuole tener conto anche
dei primi e dei secondi occorre riportare i valori sessagesimali alla frazione
di grado. Ad esempio, 45 gradi, 24 primi e 15 secondi diventano 45.40417 gradi
utilizzando la seguente formula:

45 + 24/60 + 15/3600 = 45.40417

I radioamatori, i quali normalmente conoscono il proprio QTH locator, possono
impostare le coordinate geografiche semplicemente immettendo tale informazione
(v. il formato del file ALM.LOC e la voce 2 nel menù del programma INIZIA).
   In mancanza di una dichiarazione esplicita, viene adottata per default la
località di Roma (41.9 gradi di latitudine e 12.48 gradi di longitudine).
   Per controllare quali sono le coordinate in uso basta servirsi della
funzione "parametri" (senza il carattere "+").
   I file ALM.LOC e ALM1.LOC ospitano i dati geografici (si possono aggiungere
altri file ALM2.LOC...ALM9.LOC): sono elenchi di località con le rispettive
coordinate geografiche (v. capitolo 29).

27.2. Segnalazioni acustiche generali

   Il programma ALM produce varie segnalazioni acustiche, differenziate in base
alla natura dei messaggi cui sono associate. Qui consideriamo tutte le
segnalazioni acustiche, ad eccezione di quelle relative alle funzioni "segnale
orario", "cronometro" e "conto alla rovescia", che sono controllate in modo
indipendente (v. capitolo 26).
   Esistono due modi per decidere quali segnalazioni vanno lasciate attive e
quali vanno escluse. Il modo più comodo è quello di utilizzare il programma di
configurazione INIZIA (v. più avanti). In alternativa basta attribuire alla
variabile ALM_S un valore numerico opportuno: come per le coordinate, occorre
compiere l'assegnazione una sola volta, purché si fissi il valore nel file
ALM.DAT usando la funzione "parametri". Sono previste segnalazioni distinte per
le seguenti circostanze:

0) errori;
1) ricorrenze annuali e appuntamenti liberi;
2) ricorrenze settimanali;
3) ricorrenze mensili;
4) avvenuta registrazione su disco;
5) boot strap.

   E' prevista la possibilità di modificare tutte le segnalazioni, esclusa
quella di errore. Esistono infatti cinque variabili di ambiente dai nomi
ALM_1, ALM_2,... ALM_5, corrispondenti alle voci 1-5 del prospetto di sopra,
alle quali vanno assegnate le istruzioni necessarie per eseguire una melodia
diversa da quella di default. Le istruzioni vanno predisposte seguendo la
sintassi del comando PLAY del Quick Basic. Vedere i file batch SUONI*.BAT, nei
quali sono impostati insiemi di segnalazioni diverse da quelle predefinite.
   Le segnalazioni acustiche possono anche consistere in segnali in codice
Morse. Infatti il programma traduce in Morse le parole contenute nelle
variabili ALM_1,... ALM_5, se queste contengono in qualunque posizione il
carattere " (virgolette). E' possibile impostare valori particolari per la
velocità del codice Morse e per la frequenza della nota (capitolo 23). Esempi:

set alm_1="r
set alm_5=+3:4"boot

   Infine per la codifica del parametro che determina l'emissione dei suoni si
veda il capitolo 32.

27.3. Modalità di scrittura dello schermo

   Il programma ALM offre la possibilità di scegliere fra due modalità di
scrittura dello schermo: quella diretta e quella tramite le routine di BIOS del
sistema. La prima modalità è più veloce, ma la seconda è molto utile per gli
operatori non vedenti che si servono di un sintetizzatore vocale collegato
all'elaboratore. Perciò quest'ultima modalità è adottata per default.
   Per selezionare la scrittura diretta basta assegnare alla variabile di
ambiente ALM_BIOS un qualunque valore numerico intero diverso da 0. I file
SIBIOS.BAT e NOBIOS.BAT possono essere usati rispettivamente per attivare ed
escludere la scrittura tramite BIOS, con memorizzazione nel file ALM.DAT.
   Qualora si opti per il modo diretto, i dati possono anche essere riversati
su un file per un esame successivo: a tale scopo basta usare il normale comando
di reindirizzamento dell'uscita verso il file desiderato (volendo, anche la
stampante). Ad esempio:
   alm f1970-2010 > file.txt
   alm */*/2000e >> file.txt
   alm e4- > prn
Se si usa il reindirizzamento, le funzioni interattive "mensile", "ordina",
"settimanale", "morse" sono inibite. Lo stesso dicasi per "oggi", "boot strap"
e "giorno" quando si aggiorna l'agenda annuale (opzione A).

27.4. Applicazione dell'ora legale

   Il normale funzionamento del programma ALM presuppone che l'orologio del
calcolatore sia regolato sull'ora legale nel periodo in cui essa è in vigore.
Ciò implica che gli orari mostrati (ora dell'alba e del tramonto e fase lunare)
fanno automaticamente riferimento all'ora legale e non all'ora solare. Con
questo automatismo la presentazione delle informazioni è la più naturale
possibile, ma si possono verificare circostanze molto particolari nelle quali
questo criterio non è soddisfacente. Ad esempio:
 - si vogliono vedere i dati riferiti all'ora solare;
 - non è consentita la modifica dell'ora presente nell'orologio.
L'automatismo può essere escluso in modo stabile usando il programma di
configurazione o la variabile di ambiente ALM_LEG oppure in modo temporaneo con
le opzioni "!-" e "!+" (v. 3.3, 3.4, 29.8). Le tre situazioni possibili sono
riassunte nello schema seguente:

Ora legale    Variabile ALM_LEG    Opzione equivalente
==========    =================    ===================
attiva                0                  default
ignorata              2                     !-
forzata               4                     !+

Se l'ora legale è ignorata (seconda riga dello schema), la condizione può
essere modificata solo agendo sulla variabile di ambiente ALM_LEG oppure usando
il programma di configurazione INIZIA. Se invece è impostata la condizione
della terza riga, allora l'opzione "!-" ha la priorità.

27.5. Gli algoritmi impiegati

   Gli algoritmi per il calcolo delle fasi lunari sono stati dedotti da formule
contenute nel volume di Pierre Kohler dal titolo "Atlante dell'Universo", edito
da Rizzoli, Milano, 1984. Dallo stesso volume sono state tratte le formule per
il calcolo della durata del giorno e del crepuscolo. I valori dell'inclinazione
dell'asse terrestre sul piano dell'ecclittica sono stati ricavati con i
coefficienti forniti da J. H. Lieske, T. Lederle, W. Fricke, e B. Morando in
"Expressions for the Precession Quantities Based upon the IAU (1976) System of
Astronomical Constants", Astronomy and Astrophysics 58, 1-16 (1977). Per gli
anni prima del 1800 e dopo il 2200 la formula usata è di J. Laskar, "Secular
terms of classical planetary theories using the results of general theory",
Astronomy and Astrophysics 157, 59070 (1986).
   Infine, per l'orario di transito del sole sul meridiano locale sono stati
usati valori ricavati per l'anno 2000 con l'eccellente programma AA v5.1 di
Stephen L. Moshier: la variazione di questi valori nel corso di un secolo è
insignificante, mentre per l'anno 3000 provocano un errore massimo di circa un
minuto primo.
   L'ora usata per la fase lunare è l'ora solare del fuso dell'Europa centrale,
cui l'Italia appartiene. Si noti che per i giorni di novilunio, plenilunio,
primo e ultimo quarto il programma fornisce l'ora della fase. Per gli altri
giorni indica invece il numero di giorni dalla fase più vicina: in tal caso il
dato è espresso in valore decimale approssimato al centesimo di giorno ed è
riferito alle ore 0 (ora solare o legale, a seconda dei casi) del giorno in
questione. Ad esempio, per il giorno 6/10/1994 si ottiene la risposta "0.64
giorni dopo la luna nuova": questo dato significa che alle ore 0 del 6/10/1994
(cioè alle 24 del 5/10/1994) è trascorsa una frazione di giorno pari al 64% dal
momento dell'ultimo plenilunio.
   Gli orari dell'alba e del tramonto del sole combaciano con quelli
osservabili in una data località solo se si forniscono al programma le
coordinate geografiche del luogo (v. capitolo 27). In mancanza di tale
informazione, il programma calcola gli orari per la città di Roma. L'ora legale
viene determinata in base ai criteri adottati in Italia a partire dal 1965 (la
regola può essere personalizzata mediante il programma INIZIA).
   Per quanto riguarda il crepuscolo, la sua durata è fornita a parte qualora
si indichi l'opzione "D" sulla riga di comando DOS. Essa è calcolata secondo il
criterio civile, in base al quale il crepuscolo dura fino al momento in cui il
sole si trova 6 gradi sotto l'orizzonte. Per il coefficiente di rifrazione
dell'atmosfera si è usato il valore medio di 0.6 gradi, indipendentemente dai
valori di pressione, temperatura e umidità, che comunque possono influire al
più per un decimo di grado.

28. File allegati al programma

   Il pacchetto ALM è costituito dai seguenti file:

- ALM.EXE      programma principale;
- INIZIA.EXE   programma di configurazione;
- UNISCI.EXE   programma per riunire i dati di due file (merge);
- SANTI.EXE    programma per aggiornare l'elenco dei santi;
- ALM.TXT      questo manuale;
- ALM.SAN      elenco dei Santi per i singoli giorni dell'anno;
- ALM.LOC      lista di località italiane con coordinate geografiche;
- ALM1.LOC     lista di località estere con coordinate geografiche;
- ALM.VAL      elenco delle parità monetarie;
- LICENZA.TXT  licenza d'uso;
- una serie di programmi batch;
- BATCH.TXT    descrizione dei programmi batch allegati;
- il programma GA.EXE (gestione degli appuntamenti) è reperibile separatamente.
- due programmi di altri autori, usati nei file batch come programmi ausiliari:
  SED.EXE      "stream editor" in stile Unix (versione DOS di Howard Helman);
  ANSWER.COM   piccolo programma per acquisire una stringa da tastiera.

   I programmi batch (detti anche "file batch") allegati ad ALM sono descritti
nel file BATCH.TXT, dove essi sono distinti in varie categorie in base alla
funzione svolta. Il loro scopo è richiamare le funzioni del programma per mezzo
di una sintassi semplificata. I nomi dei file batch sono scelti in modo da
suggerire la funzione svolta. Ciascun programma è corredato di una funzione di
aiuto che si attiva indicando il carattere "?" oppure l'opzione "/?" sulla
linea di comando dopo il nome del programma batch stesso. Ad esempio, per
sapere a che cosa serve il programma DIFF.BAT, basta eseguire il comando
seguente:

   diff.bat ?
   E' inoltre disponibile il programma batch AIUTO.BAT, che fornisce un aiuto
generale su tutti gli altri programmi batch inclusi nel pacchetto. Dopo aver
lanciato in esecuzione tale programma, basta digitare uno dei nomi (il cui
elenco viene visualizzato sullo schermo) per ottenere la corrispondente
spiegazione. Notare che il programma AIUTO.BAT si avvale di un piccolo
programma ausiliario di nome ANSWER.COM, fornito da un altro autore, per
acquisire i dati immessi da tastiera (funzione che, com'è noto, non è gestibile
direttamente con i comandi DOS).
   Quando si attiva il reindirizzamento del DOS, il programma disattiva la
scrittura tramite BIOS (alcune funzioni interattive di ALM non sono compatibili
con il reindirizzamento). Notare comunque che, a partire dall'edizione 2.0 di
ALM, non è più necessario usare il "piping" del DOS (comando |more) per fermare
lo scorrimento dei dati: la visualizzazione si arresta automaticamente a fine
schermo.

29. Configurazione mediante il programma INIZIA

   Il programma INIZIA consente la configurazione di ALM in modo semplice e
guidato. Non è necessario eseguire il programma nella directory in cui è
collocato il file dati ALM.DAT: è sufficiente che tale file sia contenuto in
una delle directory del path di sistema oppure in una directory indicata nella
variabile di ambiente ALM_DIR; si può anche indicare il nome della directory
al prompt del DOS quando si avvia il programma. Nella stessa directory deve
anche trovarsi almeno uno dei file ALM.LOC ALM1.LOC ... ALM9.LOC.
   Le principali funzioni svolte dal programma di configurazione si attivano da
un menù interattivo selezionando le voci con le frecce e battendo poi il tasto
Invio; la selezione si può fare anche battendo il numero corrispondente alla
voce desiderata.
   Oltre alle varie funzioni, che vengono descritte più sotto, il programma
INIZIA prevede alcune opzioni da indicare sulla linea di comando DOS:

 /B           mostra l'elenco completo delle accensioni del calcolatore;
 /B-          stesso elenco, ma in ordine cronologico inverso;
 /C           per memorizzare rapidamente il nome di una località;
 /1 /2 ... /9 per accedere direttamente alla voce 1 2 ... 9 del menù.

Gli elenchi che si ottengono con le opzioni /B e /B- possono essere
reindirizzati verso un file o una stampante oppure filtrati mediante il piping
del DOS (v. il file batch ELENCO.BAT).

29.1. Voce 1: elenco città

   Permette di selezionare una città e di fissarne le coordinate nel file dati
(cfr. la voce 2 e l'opzione "/C"). Le informazioni sulle città sono contenute
nei file ALM.LOC, ALM1.LOC ... ALM9.LOC (il formato di questi file è descritto
più avanti). In ogni momento è visibile uno solo di questi file: si può
sceglierne un altro con la voce 9. Ci sono alcuni comandi che permettono di
scorrere l'elenco (frecce, Home, End, lettera da A a Z).

29.2. Voce 2: impostazione manuale dei dati geografici

   Permette ancora di impostare i dati geografici, immettendoli però
manualmente. Viene presentata una maschera con sei voci (città, latitudine,
longitudine, locator, offset, ricerca) con i dati attualmente memorizzati
oppure, in loro assenza, con i dati di default.
   Posizionandosi nel campo "ricerca" si può immettere un nome di città, o
parte di esso, e poi premere Invio per effettuare una ricerca fra i nomi
presenti nel file dei dati geografici attualmente selezionato; si può poi
proseguire la ricerca all'indietro o in avanti usando Ctrl+PgUp/PgDn. Si può
anche scorrere l'elenco delle città, indipendentemente dalla stringa di
ricerca, premendo Ctrl insieme con le frecce verticali, con Home o con End. Il
tasto F1 assegna come stringa di ricerca il contenuto del campo "città".
   Le coordinate possono essere impostate separatamente nel secondo e terzo
campo oppure simultaneamente nel quarto campo (in quest'ultimo caso occorre
conoscere il QTH locator della località). In ogni caso l'impostazione delle
coordinate in una forma provoca l'aggiornamento automatico delle coordinate
nell'altra forma.
   Il campo "offset" permette l'aggiustamento del fuso, qualora la località
appartenga ad un fuso diverso da quello geografico in cui effettivamente è
ubicata (ad esempio come in Spagna). Questo valore deve essere un multiplo
intero di 15 e può anche essere negativo.

   Quando si è sicuri di aver impostato i dati corretti, si preme la
combinazione Ctrl+Invio per la registrazione su disco.

29.3. Voce 3: modalità di visualizzazione

   Permette di scegliere le condizioni di visualizzazione sotto due aspetti:
 - modo di scrittura dello schermo; le scelte possibili sono "modo tramite
   BIOS" e "modo diretto".
 - codifica dei caratteri ASCII estesi (in particolare le lettere accentate);
   le scelte possibili sono "testo con caratteri DOS" e "testo con caratteri
   Windows".

In entrambi i casi, scegliendo questa voce del menù è visualizzata la
condizione attuale: con la barra spaziatrice si cambia la condizione, con le
frecce verticali si passa da una riga all'altra. La pressione di Invio provoca
la registrazione su disco mentre con Esc si ritorna al menù senza effettuare la
memorizzazione.

29.4. Voce 4: segnalazioni acustiche

   Permette di decidere quali segnalazioni acustiche vanno lasciate attive e
quali vanno escluse. In questo caso si porta il cursore con le frecce sulla
riga corrispondente ad un tipo di segnalazione: battendo la barra spaziatrice
si commuta alternativamente fra le condizioni "Sì" e "No". Al termine si batte
Invio per accettare la condizione visualizzata o Esc per lasciare inalterato il
valore precedente.
   Notare che è possibile fare in modo che tutte le segnalazioni consistano
semplicemente in un breve beep: basta portare a "Sì" l'ultima voce.

29.5. Voce 5: impostazione dei giorni festivi

   Permette di decidere quali giorni della settimana sono da considerare
festivi. Come nella voce precedente, si porta il cursore sulla riga con il nome
di un giorno e si batte la barra spaziatrice per commutare alternativamente fra
le condizioni "festivo" e "feriale"; dopo aver predisposto la condizione
voluta, si dà la conferma con il tasto Invio.

29.6. Voce 6: elenco delle accensioni del calcolatore

   Si ottiene l'elenco delle accensioni del calcolatore in modo analogo a
quanto  fatto dalla funzione "vedi boot" del programma ALM. Qui però sono
previsti due comandi aggiuntivi per la correzione dei dati: con Ctrl+Canc si
cancella il dato su cui si trova il cursore, con Ctrl+Invio si registrano
eventuali modifiche nel file ALM.DAT.
   Notare che questi due comandi volutamente non sono inclusi fra i
suggerimenti (l'intenzione è di nascondere questa possibilità agli utilizzatori
occasionali).

29.7. Voce 7: applicazione dell'ora legale

   Una volta selezionata questa voce, viene offerta la possibilità di commutare
alternativamente fra le tre condizioni di applicazione dell'ora legale: attiva,
ignorata, forzata. Come al solito, la commutazione avviene battendo la barra
spaziatrice, con Invio si registra su disco, con Esc si annulla.

29.8. Voce 8: impostazione degli anni in cui cambia l'ora legale

   Questa voce permette di personalizzare il criterio secondo cui è calcolato
il periodo il cui è in vigore l'ora legale. Viene chiesto di indicare un anno:
se questo è compreso nella lista degli anni già inseriti, vengono mostrati i
valori precedentemente memorizzati, altrimenti sono mostrati i valori di
default. A questo punto si possono usare vari tasti:
- le frecce verticali per gli spostamenti;
- Ctrl insieme con le frecce verticali per cambiare il mese;
- la barra spaziatrice per cambiare la settimana;
- Home per disattivare l'ora legale per tutto l'anno;
- End per renderla al contrario sempre attiva.
I valori memorizzati per un certo anno sono validi per tutti gli anni
successivi, fino ad un eventuale anno per il quale sono indicati esplicitamente
altri dati. Complessivamente si possono indicare i dati per 20 anni. Per
default sono adottati il 1965, il 1980 e il 1996, anni nei quali in Italia sono
avvenuti i cambiamenti riguardanti l'ora legale.

29.9. Voce 9: scelta di un altro elenco di località

   Permette di cambiare l'elenco delle località scegliendo fra uno dei dieci
possibili (ALM.LOC, ALM1.LOC,... ALM9.LOC, sono forniti solo i primi due). La
scelta si fa premendo una delle cifre da 0 a 9, dove 0 corrisponde ad ALM.LOC.
Notare che non si ottiene alcun effetto quando si preme la cifra associata al
file che è caricato in quel momento.

Nota: è stata eliminata la vecchia voce 9 (recupero dei dati prodotti con il
programma BOOTLOG).

29.10. Opzione /C

   Permette di memorizzare rapidamente una località nel file ALM.DAT, purché il
nome della località sia previsto in uno dei file dei dati geografici. Esempio:

   inizia /c padova

Usare questa opzione con cautela perché la memorizzazione avviene senza alcuna
richiesta di consenso.

29.11. Formato dei file dei dati geografici

   I file ALM.LOC, ALM1.LOC,... ALM9.LOC contengono le informazioni
geografiche, che sono utilizzate da INIZIA per la configurazione della località
ordinaria, nonché dal programma ALM per determinare il fuso orario delle
varie località. Chi non dovesse trovare la propria località negli elenchi
allegati può scegliere una località vicina: un errore di 50 chilometri provoca
un errore inferiore a due minuti nell'orario dell'alba e del tramonto.
   I file dei dati geografici sono file di puro testo ASCII, che possono essere
modificati con un comune editor. Ognuno di essi deve iniziare con l'etichetta
di identificazione [ALM_LOC] che può essere seguita, sulla stessa riga, da una
breve frase descrittiva. Ad esempio, la prima riga del file ALM1.LOC potrebbe
essere:

   [ALM_LOC] Elenco di località estere

Ciascuna delle righe successive contiene nell'ordine il nome di una città, la
sua latitudine e la sua longitudine, separate da virgole come nel seguente
esempio:

Padova, 45.41, 11.88

Si può inoltre aggiungere il suffisso "@" seguito da un multiplo intero di 15.
Questo valore è un aggiustamento orario espresso in minuti che serve per le
località che adottano un fuso diverso da quello geografico. Se il numero è
positivo si intende che l'ora viene incrementata, in caso contrario che l'ora
viene ritardata (per brevità, nella voce 2 di INIZIA l'aggiustamento è chiamato
"offset"). Ad esempio, la Spagna adotta la stessa ora dell'Italia e quindi
occorre aggiungere 60 minuti a tutte le località spagnole (Canarie escluse):

Barcellona (Spagna),   41.69,   2.23   @60

   Alcune località adottano aggiustamenti pari a una frazione di ora. Ad
esempio Bombay (+30 minuti), Calcutta (-30 minuti), Chatham (+24 ore e 45
minuti).
   Le località che prevedono l'aggiustamento sono considerate effettivamente
appartenenti ad un fuso orario sfasato rispetto a quello geografico.

I radioamatori, che conoscono il QTH locator, possono usarlo in luogo delle
coordinate geografiche. L'informazione dell'esempio precedente può essere
tradotta come segue:

Barcellona (Spagna),   JN11CQ   @60

   Nota. In effetti il QTH locator è un po' meno preciso delle coordinate
geografiche, visto che alla nostra latitudine comporta un errore che può
arrivare a quasi 4 Km, ma si tratta di una tolleranza più che accettabile.

   Le righe che contengono valori inammissibili sono ignorate. Ad esempio, le
seguenti righe non sono valide:

Padova, 91.5, 11.88
Padova, 45.41, 3000
Padova, SS65ZZ

   Chi desidera modificare gli elenchi, può avvalersi di più file per
distribuire le località secondo criteri particolari (ad esempio, un file per le
località europee, uno per quelle americane, eccetera). Il programma INIZIA
riconosce solo le prime 32766 voci valide di ciascun file, mentre il programma
ALM ammette qualunque numero di voci.
   Tanto INIZIA quanto ALM riconoscono la variabile di ambiente ALM_LOC, che
serve per indicare qual è il file di dati geografici che va analizzato per
primo. Ad esempio, il programma batch FUSO1.BAT imposta la variabile al valore
1 allo scopo di rendere più veloce la ricerca delle località estere (contenute
nel file ALM1.LOC).

30. Fusione di due file dati di ALM

   Il programma di utilità UNISCI serve per riunire in un unico file i dati di
ALM contenuti in due file distinti. La necessità di una simile operazione si
verifica, ad esempio, quando il programma è stato utilizzato su due calcolatori
diversi e, ad un certo punto, si decide di riunire le informazioni memorizzate.
Per usare correttamente il programma UNISCI si tenga presente quanto segue:

 - il file principale è sempre ALM.DAT ed esso deve trovarsi nella directory
corrente nel momento in cui si esegue UNISCI;

 - il nome del file secondario deve essere indicato come primo parametro sulla
linea di comando DOS e può includere un percorso (unità disco e directory).
Entrambi i file devono essere stati prodotti con ALM (il programma controlla il
loro formato prima di procedere alla fusione);

 - il nome del file risultante, che va indicato come secondo parametro, è
facoltativo. Anch'esso può comprendere un percorso DOS a piacere. Se lo si
omette, il programma adotta il nome ALM.MRG e lo colloca nella directory
corrente. Se si indica solo il nome di una directory già esistente, viene
prodotto un file con nome ALM.DAT in tale directory;

 - il programma lavora su un file temporaneo e solo alla fine dell'operazione
gli attribuisce il nome voluto: per questo è necessario che l'unità disco
destinazione disponga di una quantità sufficiente di spazio libero.

 - se il file secondario contiene una ricorrenza che è presente anche nel file
principale, essa viene riportata una volta sola: ciò accade anche quando la
ricorrenza è ripetuta più di una volta nel file secondario (sono considerate
ripetute due ricorrenze quando la loro differenza consiste unicamente in
qualche carattere maiuscolo nell'una e minuscolo nell'altra). Notare che le
ricorrenze del file principale sono riportate tutte, compresi i doppioni;

 - se per una certa data il numero di ricorrenze complessive dei due file è
maggiore di 15, allora le ricorrenze eccedenti del file secondario sono
riportate come ricorrenze cancellate nel file risultante;

 - per quanto riguarda le ricorrenze cancellate, quelle del file principale
ALM.DAT vengono comunque trasferite nel file risultante; invece quelle del file
secondario vengono trasferite soltanto se la linea di comando DOS contiene
l'opzione "/C";

 - nel file risultante vengono anche trasferite le altre informazioni
(parametri, boot strap, ricorrenze settimanali e mensili). Ognuna di tali
informazioni, se presente nel file secondario, viene trasferita nel file
risultante solo quando la corrispondente informazione nel file principale
ALM.DAT ha il valore di default oppure è assente. Ad esempio, se in entrambi i
file è memorizzata una ricorrenza che cade ogni sabato, viene presa in
considerazione solo quella del file ALM.DAT;

 - è ammesso che il file risultante abbia lo stesso nome di un file già
esistente: in questo caso, però, l'eliminazione del file preesistente è
subordinata al consenso da parte dell'operatore (tasto "S" per eliminare,
qualunque altro tasto per conservare);

 - alla conclusione è presentato un rapporto che riassume la situazione delle
ricorrenze, dei boot strap e dei parametri nei due file di partenza e nel file
risultante.

31. Modifica dell'elenco dei santi

   ALM è corredato del programma di utilità SANTI.EXE che serve per modificare
L'elenco dei santi. Il programma presenta i dati contenuti nel file ALM.SAN,
dedicando una riga ad ogni giorno dell'anno, e ne permette la correzione con le
modalità tipiche di un editor a tutto schermo.
   Il file ALM.SAN, per essere rintracciato, deve trovarsi nella directory
corrente oppure in una delle directory presenti nel path di sistema o nella
variabile di ambiente ALM_DIR.
   I movimenti del cursore, oltre che dalle frecce, sono assicurati da vari
tasti, con significato abbastanza naturale: Home e End portano il cursore a
inizio e fine riga, PgUp e PgDn spostano la data mese per mese, Ctrl+Home e
Ctrl+End portano all'inizio e alla fine del mese, Ctrl+F1,... Ctrl+F12 portano
sul primo giorno del mese 1,... 12. Per saltare ad una data qualunque si batte
il tasto F3 e poi si immette la data con il formato giorno/mese.
   E' anche possibile effettuare la ricerca di un nome con i tasti F2
(inserimento di un nome da cercare), Ctrl+PgUp e Ctrl+PgDn (ricerca
indietro/avanti del nome già inserito). Premendo F1 si ottiene un breve
promemoria con l'elenco dei tasti disponibili.
   Una volta effettuate tutte le modifiche volute, si preme F10 e, dopo il
consenso (lettera "S"), il file ALM.SAN viene aggiornato. Se il file è stato
protetto contro la scrittura, i dati vengono ricopiati con le modifiche fatte
in un file dal nome ALM*.SAN, dove l'asterisco sta per un numero da 1 a 999.
   Si noti che è possibile specificare un nome di file diverso da ALM.SAN,
indicandolo come primo parametro sulla riga di comando DOS all'avvio. Ad
esempio:

C:\ALM>santi a:\alm.san

In mancanza di un'indicazione esplicita, il programma lavora sul file ALM.SAN
che viene cercato nell'ordine:
 - nella directory corrente;
 - nelle directory indicate con il path di sistema;
 - nella directory definita con la variabile di ambiente ALM_DIR.

   Qualunque sia il file, il suo formato viene controllato onde evitarne
l'alterazione accidentale. Le condizioni da rispettare sono le seguenti:

   1) la dimensione deve essere di 367*63=23121 byte (il file è costituito da
367 record di 63 byte);
   2) il primo record del file deve essere composto come segue: carattere ^A
(codice ASCII 1), frase "Almanacco - Santi", carattere ^Z (codice 26), numero
intero 100 (due byte), stringa di 42 spazi.

32. Struttura del file dati

   Tutti i dati elaborati dal programma sono conservati nel file dati ALM.DAT,
la cui struttura è piuttosto articolata. Si noti che, volendo, si può anche
dotare il file dell'attributo "hidden" (ad esempio con i comandi ATTRIB del DOS
o FA delle Norton Utilities) in modo da renderlo invisibile al semplice comando
DIR del DOS: il programma può ugualmente accedervi.
   In questo capitolo sono riportate le caratteristiche del file ALM.DAT, con
la disposizione particolareggiata dei dati al suo interno. Trattandosi di
informazioni piuttosto tecniche, si può ometterne la lettura.
   I dati sono suddivisi in due zone. La prima, detta "zona fissa", occupa
16636 byte, indipendentemente dalla quantità di dati registrati. Nella seconda
zona, che inizia dal byte 16637, vengono registrate le informazioni relative
alle ricorrenze dell'agenda annuale.

31.1. La zona fissa

   La zona fissa è suddivisa come segue:

   a) 30 byte riservati alla chiave di riconoscimento del file. Questo segmento
deve iniziare con il carattere ^A (codice ASCII 1), seguito immediatamente
dalla frase "Almanacco - Dati personali" (escluse le virgolette), altrimenti il
file non viene considerato valido e non può essere né letto né scritto; è anche
aggiunto un carattere ^Z (codice 26) per inibire la lettura del file con il
comando TYPE del DOS. I byte rimanenti, fino al trentesimo, sono liberi.

   b) Un numero intero (due byte): usato dal programma ALM per identificare il
numero di versione del file dati. I moduli eseguibili ALM.EXE, INIZIA.EXE e
UNISCI.EXE riconoscono i file dati generati con le versioni precedenti. Nella
prossima tabella sono elencati i formati possibili (il numero di edizione è
riferito al file ALM.EXE):

edizione   numero   modifiche
  1.0       100     versione iniziale;
  1.2       120     aggiunto il parametro relativo ai giorni festivi;
  1.3       130     aggiunti il nome della località e il coefficiente "legale";
  1.32      132     aggiunti i dati per il calcolo dell'ora legale;
  2.10      210     aggiunti i dati relativi alla password.

   c) Due numeri in singola precisione Codificati secondo il formato IEEE (4
byte ciascuno): sono rispettivamente la latitudine e la longitudine della
località in cui si trova l'utilizzatore, espresse in gradi. I primi e secondi
di grado devono essere ridotti in forma decimale. I valori di default sono 41.9
e 12.48. Si noti che il programma memorizza le coordinate aumentandole di 360
gradi: quindi per la latitudine risulta un valore compreso fra 270 e 450,
estremi esclusi; per la longitudine un valore fra 180 e 540, estremi inclusi.
L'alterazione consente di applicare il default in presenza di valori che sono
nulli in quanto non ancora inizializzati.

   d) Un numero intero (due byte): è un codice che determina l'emissione delle
segnalazioni acustiche. Esso è determinato come segue: si sommano le potenze
con base 2 ed esponente uguale al numero d'ordine della segnalazione che si
vuole escludere, secondo il prospetto riportato al capitolo 27; poi si somma 1
se si vuole che tutte le segnalazioni attive siano ridotte ad un breve beep.
Risulta che i valori possibili sono i numeri compresi fra 0 e 127. Il valore di
default è 0 e comporta che tutte le segnalazioni sono attive. (Cfr. punto "k"
più avanti.)

   e) Un numero intero (due byte): determina la modalità di scrittura durante
l'immissione di un dato, 0 per sostituzione, diverso da 0 per inserimento.
Questo valore viene modificato durante l'esecuzione di ALM quando si preme il
tasto Ins. Il valore di default è 1.

   f) Un numero intero (due byte). Sono utilizzati solo cinque bit per
svolgere quattro funzioni:
 - bit 0: determina la modalità di scrittura dello schermo, 0 per la modalità
attraverso BIOS, 1 per quella diretta. Il valore di default è 0; (cfr. punto
"k" più avanti);
 - bit 1 e 2: determinano il valore del coefficiente "legale", che è definibile
anche con la variabile di ambiente ALM_LEG. Riprendiamo lo schema riportato nel
paragrafo 24.4, aggiungendo una colonna per i due bit di cui stiamo parlando:

Ora legale    Variabile ALM_LEG    Bit alzato    Opzione equivalente
==========    =================    ==========    ===================
attiva                0              nessuno            default
ignorata              2                 1                 !-
forzata               4                 2                 !+

 - bit 3: è collegato all'opzione "&" per la regolazione automatica
dell'orologio in concomitanza dei cambiamenti dell'ora legale. Il programma
alza il bit quando regola l'orologio sull'ora legale e lo abbassa quando lo
regola sull'ora solare, cosicché il cambiamento di ora può essere completamente
automatizzato;
 - bit 4: se è alzato, le lettere accentate vengono convertite secondo la
tabella ISO 8859-1, che è la codifica propria di Windows (v. paragrafo 1.3).

   g) un numero intero (due byte): contiene la condizione di giorno festivo o
feriale per i singoli giorni della settimana. Ai giorni da lunedì a domenica
sono associati nell'ordine i bit dal secondo (bit 1) all'ottavo (bit 7). Il bit
è alzato se il giorno è considerato festivo. Poiché questo parametro non era
previsto nelle edizioni anteriori alla 1.20, se esso vale 0, gli viene
attribuito il valore di default 192 (festivi sabato e domenica). Per
distinguere il caso 0 da quello in cui tutti i giorni sono feriali viene alzato
il primo bit (bit 0), che altrimenti è ininfluente. Il valore può essere
settato direttamente con la variabile di ambiente ALM_F oppure con il programma
di configurazione INIZIA.

   h) una stringa di 36 byte contenente il nome della località. Questo dato è
previsto solo a partire dall'edizione 1.3. Nelle precedenti edizioni questo
segmento era costituito da byte di codice 0.

   i) 20 record di 5 byte ciascuno (a partire dall'edizione 1.32). Ogni record
rappresenta un anno con l'indicazione dell'inizio e della fine del periodo di
applicazione dell'ora legale. Ciascun record è composto come segue:
 - un numero intero (due byte): anno, dal 1583 all'8999;
 - un byte così suddiviso: 4 bit indicano un numero da 0 a 13 per il mese
d'inizio (0 significa che l'ora legale non è mai applicata, 13 che è applicata
tutto l'anno); tre bit indicano un numero da 0 a 7 con il seguente significato:
   0 = ultima fine settimana del mese;
   1 = penultima fine settimana;
   2 = terzultima fine settimana;
   3 = quartultima fine settimana;
   4 = prima fine settimana;
   5 = seconda fine settimana;
   6 = terza fine settimana;
   7 = quarta fine settimana.
L'ottavo bit di questo byte non è utilizzato.
   - un byte così suddiviso: quattro bit indicano un numero da 1 a 12 per
l'ultimo mese di applicazione; tre bit indicano un numero da 0 a 7 con lo
stesso codice di sopra; l'ultimo bit  non è utilizzato.
 - il quinto byte è libero.

   j) un numero intero (2 byte), a partire dall'edizione 2.2: è il cosiddetto
"offset" (aggiustamento usato nelle località che appartengono a un fuso orario
diverso da quello geografico); è un multiplo intero di 15 minuti compreso fra
-1485 e 1485.

   k) 18 byte relativi alle funzioni "cronometro" e "segnale orario", a partire
dalla versione 2.42. I byte sono utilizzati nel modo seguente:
 - un single (4 byte) per la frequenza base (default = 1000 Hz);
 - un double (8 byte) per il tempo cronometrato totale;
 - un numero intero (2 byte) per controllare la quantità di segnalazioni
acustiche. Può assumere i valori compresi fra 0 e 6, con il significato
descritto nel capitolo 26.
 - un numero intero (2 byte) per controllare la scrittura tramite BIOS. E'
usato solo il primo bit: 0 per la modalità tramite BIOS (condizione
predefinita), 1 per quella diretta.
   Nota bene. Il controllo delle segnalazioni acustiche e della scrittura
tramite BIOS nelle funzioni "cronometro" e "segnale orario" sono indipendenti
da quelle generali del programma (v. punti "d" e "f").

   l) 720 byte liberi inizializzati con il codice 0 (insieme con i byte della
password del punto "m" completano un segmento di 1024 byte).

   m) 102 byte riservati alla password e utilizzati come segue:
 - un byte di controllo, cui è assegnato il carattere di codice ASCII 1 quando
il file dati viene scritto con ALM 2.10;
 - 7 stringhe di tre caratteri ciascuna, una per ogni giorno della settimana da
lunedì a domenica: ognuno dei 24 bit, se alzato, indica che nell'ora
corrispondente di quella giornata la richiesta di password è abilitata;
 - 80 byte per la frase di password opportunamente cifrata.

   n) 2010 byte per i dati dei boot strap. La memorizzazione di un boot strap
occupa 5 byte, i codici ASCII dei quali rappresentano nell'ordine l'ora, i
minuti, il giorno, il mese e le ultime due cifre dell'anno in cui è avvenuto il
boot strap. La sequenza di dati registrati è completata con la stringa chiave
di dieci caratteri "_.+fInE+._" (escluse le virgolette). I dati sono
memorizzati in ordine cronologico rovescio, dal più recente al più vecchio.

   o) 5490 numeri interi, quindici per ogni giorno dell'anno, incluso il 29
febbraio (2 byte ciascuno): contengono i puntatori ai dati dell'agenda e il
marcatore di giorno festivo/feriale.
I 16 bit di ciascun numero sono usati come segue: 13 bit rappresentano il
puntatore, i bit 14 e 15 sono alzati rispettivamente quando la ricorrenza è
festiva e feriale, l'ultimo bit è inutilizzato. Se un puntatore vale 0,
significa che non punta ad alcun dato. Ogni puntatore maggiore di 0 indica la
posizione di un record contato a partire dal byte 16637 del file dati, con
record di 71 byte. La posizione di ogni puntatore deve essere coerente con il
puntatore inverso memorizzato nel record. Per default tutti i puntatori sono
posti a 0 e i bit di giorno festivo/feriale sono abbassati.

   p) 7 stringhe di 69 caratteri ciascuna: sono le frasi relative alle
ricorrenze settimanali. Il programma considera vuote ed ignora le stringhe
costituite da soli spazi vuoti (codice 32). Inizialmente tutte le stringhe sono
vuote.

   q) 31 stringhe di 69 caratteri ciascuna: sono le frasi relative alle
ricorrenze mensili. Vale quanto detto al punto precedente.

30.2. La zona dell'agenda annuale

   I record memorizzati nell'agenda sono di 71 byte ciascuno e il programma li
aggiunge in coda al file man mano che l'operatore li immette. Quindi,
supponendo che l'agenda contenga n ricorrenze, la dimensione complessiva del
file ALM.DAT è fornita dalla seguente formula:

dimensione = 16636 + n * 71

Ad esempio, se per ogni giorno dell'anno si memorizzano tutte e quindici le
ricorrenze consentite, ammesso che non vi siano ricorrenze cancellate, la
dimensione del file dati risulta:

dimensione massima = 16636 + 366*15*71 = 406426 byte

Ogni record è costituito da:

   a) un numero intero (due byte): i suoi 16 bit sono usati come nei puntatori
della zona fissa (vedi il punto "k" più sopra). Il puntatore (primi 13 bit)
indica la posizione del corrispondente puntatore contenuto nella zona fissa.

   b) una stringa di 69 caratteri: sono le frasi immesse dall'operatore in
relazione alle varie ricorrenze.

   Questa struttura comporta che la disposizione fisica delle ricorrenze può
essere anche molto disordinata, perché le ricorrenze non devono essere
necessariamente immesse in ordine cronologico e non è nemmeno necessario che
ricorrenze relative ad una stessa data siano fisicamente contigue. L'ordine
cronologico è garantito dai 5490 puntatori contenuti nella zona fissa. La
flessibilità del sistema viene "pagata" con un'occupazione di spazio per i
puntatori, che ammonta a 10980 byte fissi più 2 byte per ogni ricorrenza
memorizzata.
   Notare che la cancellazione di un dato precedentemente memorizzato consiste
semplicemente nell'azzeramento del corrispondente puntatore della zona fissa e
non nell'eliminazione dell'informazione memorizzata. Dopo che il puntatore
della zona fissa relativo ad una certa ricorrenza è stato azzerato, la
possibilità di associare la ricorrenza a quella data durante la fase di
recupero è garantita dal puntatore presente nel record della ricorrenza.


Università Registrazioni Ciechi File I3LGP Religione Scrivi Inizio