Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Area di linkage

Salve a tutti, ho il seguente problema da porvi.
Ho intenzione di convertire delle procedure Cobol in VB 6. Queste procedure,
dalle più piccole alle più grandi,
sono formate da molti moduli (o programmi), il primo programma è un
eseguibile (e funge da menu) che richiama
tutti gli altri tramite un'istruzione Call la quale permette anche di
passare dei dati ai programmi chiamati:
i dati passati risiedono in un'area di memoria speciale chiamata (come in
oggetto) area di Linkage e non sono
scritti su disco.
Come posso ottenere lo stesso sistema in VB 6 ?
Io ho pensato questo. Potrei strutturare l'applicazione in un programma
eseguibile (che funge, come il relativo
in Cobol, da menu) che a sua volta richiama dei moduli dll ActiveX oppure
exe ActiveX (a seconda dell'esigenza),
ma come posso passare dei dati dal primo programma a tutti i moduli
richiamati ?
In effetti avevo pensato anche ad utilizzare la funzione API di Windows
CreateProcess per chiamare i moduli,
(che in questo caso sarebbero stati tutti quanti tandard exe) ma la strada
mi sembra anche più complicata
della precedente, infatti non mi sembra che si possano passare dai dati
tramite la suddetta funzione
(ma potrei sbagliare!). Per ultimo aggiungo che (mi sembra) la grandezza
dell'area di Linkage del Cobol
sia di 64K (Microfocus Cobol e/o AcuCobol, ma su quest'ultimo non ci
giurerei) quindi cerco una soluzione
che possa soddisfare anche questo requisito.
Qualcuno di voi mi sa aiutare ?
Grazie in anticipo.
Alessandro.

richiamati ?
Premesso che non so nulla di Cobol, e quindi non ho idea di cosa
significhi portare il codice preesistente verso vb, l'idea dei moduli
activeX e' praticabile.
Per passarti i dati da un oggetto all' altro puoi sfruttare appositi
metodi e proprieta' personalizzati, da decidere in base alle tue
esigenze.
Come tipi di dato per i parametri puoi usare praticamente di tutto,
dai tipi di dato semplici fino a quelli piu' sofisticati (intere
gerarchie di oggetti).
Un discorso a parte sono ovviamente le performance, la stabilita'
e la manutenzione del software, che ottieni con una adeguata
progettazione (ma questo vale per tutti i linguaggi).
-- 
ciao, hal


Grazie hal per aver preso in considerazione il mio problema.
Quello che mi hai detto č interessante e sto cercando di trovare
il modo di trasformare le idee in istruzioni (anche pseudo va bene).
Forse potrei utilizzare questo sistema.
Il programma principale crea un'istanza dell'oggetto che si trova nella
dll ActiveX, dato che l'evento Initialize non ha parametri sono costretto
a creare un mio metodo che potrei chiamare Start(<struttura-parametri
da passare>) da richiamare sempre dopo aver creato l'oggetto. Quindi
la chiamata del metodo passa i dati al metodo, il metodo a sua volta
passa i dati in una struttura globale della classe; in questa maniera mi
sembra proprio di ricalcare il sistema Cobol (anche se lě il tutto č
automatico).
L'unica cosa che mi impensierisce un pň č il fatto che devo includere
per forza in ogni dll (o meglio, in ogni classe) un metodo Start e che
questo
deve essere richiamato.
Mentre scrivevo queste cose ho avuto un'altra idea.
E se dichiarassi tutte le variabili necessarie ai vari componenti nel modulo
principale, cioč l'exe standard ? Le dichiarerei in questo caso tutte come
Public. Non č possibile, forse, accedervi dai moduli richiamati tramite
l'handle del form ? (Forse qui l'ho sparata grossa eh....)
Saluti.
Alessandro Di Carlo