INFORMAZIONI SULL'UTILIZZO DELLE DLL PER CHIAMARE PROGRAMMI ESTERNI 
===================================================================

Le DLL utilizzabili sono 2:

AGAEXEC.DLL  (Analoga alla AGALIGHT.FLL)
AGA32.DLL     : questa DLL necessita di un secondo componente: AGA16.DLL (vedi sotto la spiegazione)
      


AGALIGHT.DLL viene utilizzata per programmi a 16 bit
AGA32.DLL    viene utilizzata per programmi a 32 bit su piattaforme a 32 bit (Win95 WinNT)
AGA16.DLL    viene utilizzata per programmi a 32 bit su piattaforme con Win32s (Windows 3.11 + Win32s)

AGA32.DLL e AGA16.DLL vanno SEMPRE in coppia in quanto inerenti a programmi a 32 bit.

Quindi per programmi a 16 bit si utilizza AGAEXEC.DLL, mentre per programmi a 32
si utilizza AGA32.DLL, la quale a sua volta si accorgera' automaticamente di quale
tipo di piattaforma si tratti, collegandosi ad AGA16.DLL nel caso vi siano chiamate a funzione
Aga_exec(). Il motivo per il quale e' stata realizzata la versione per Win32s e' che le funzioni del
Kernel di Windows a 32 bit utilizzate in AGA32.DLL non hanno un corretto funzionamento in Win32s.
Pertanto e' stato necessario un thunking a 16 bit.

FUNZIONI ESPORTATE
------------------

int         Aga_setvar(const char* p, const char* u, const char* t)
const char* Aga_workdir()
int         Aga_wakeup()
int         Aga_exec(const char* p)




*******************************************************
Aga_setvar(const char* p, const char* u, const char* t)
*******************************************************

Serve per inizializzare alcune variabili interne alla DLL.
Le stringhe da passare sono, in ordine, le seguenti:

p : contenuto della variabile d'ambiente PREFPATH
u : nome dell'utente con il quale viene chiamato il programma PRASSI
t : contenuto della variabile d'ambiente TMP  o TEMP se non esiste la precedente

La sua chiamata e' obbligatoria se si intende utilizzare anche AGA_WORKDIR(),
solitamente la si applica all'inizio del programma. Se si utilizzano solo
Aga_wakeup() o Aga_exec() non e' necessario il suo utilizzo.

Esempio.
...
  strcpy(a,"");
  strcpy(a,getenv("PREFPATH"));
  if (!strlen(a))
    strcpy(a,"PREFIX.TXT");
  strcpy(b,"PRASSI");
  strcpy(c,"c:\\tmp");
  Aga_setvar(a,b,c);
...




**************************
const char* Aga_workdir()
**************************

Serve a ritornare il prefisso dati corrente dei programmi PRASSI, composto
tramite i contenuti di PATHPREF.INI e il file identificato dal contenuto della
variabile d'ambiente PREFPATH.

Esempio:

Il file PATHPREF.INI presente sotto il direttorio programmi PRASSI contiene f:\dati
La variabile PREFPATH vale c:\prassi\prefix.txt
Il file C:\PRASSI\PREFIX.TXT identificato da PREFPATH contiene 00001a come ditta corrente.
Il risultato della chiamata a AGA_WORKDIR sara'

f:\dati\00001a




****************
int Aga_wakeup()
****************

Serve per togliere dall'attesa il programma chiamante. La chiamata
va effettuata prima dell'uscita del programma. Questa funzione
viene utilizzata all'interno del programma chiamato; e' tipico
l'utilizzo in coppia con la Aga_exec(), che permette di eseguire un
programma figlio e di attendere la fine della sua esecuzione.
Tutti i programmi PRASSI effettuano le stesse istruzioni della Aga_wakeup()
prima della fine, in modo che eventuali programmi chiamanti possano poi
ripristinare il loro stato.

Esempio:

 Programma padre            Programma figlio 

     START
       |
     Istruzione 1
       |
     Aga_exec()---------------> INIZIO
                                  |
                                Istruzione 1
                                  |
                                Aga_wakeup()
                                  |
     Istruzione 2 <------------- FINE
       |
      FINE




***************************
int Aga_exec(const char* p)
***************************

Serve per eseguire un programma figlio ed attendere la sua fine (effettua
una WinExec() sincrona).
Il parametro p contiene il pathname completo del programma da eseguire.


Esempio:

Aga_exec("ba1.exe /uPRASSI");






