Logo

GNUCOBOL (già OpenCobol) Italian Group

Nuova versione settembre 2019

Change language

Introduzione a Guicobol

before continue... check the translator language 
to get information in your native language

NOTE INFORMATIVE

GuiCOBOL vuole offrire la capacità di poter sviluppare una gui di livello avanzato usando gli oggetti e le relative proprietà disponibili tramite l'utilizzo delle librerie grafiche opensource AGAR Gui toolkit.  Anche se opencobol non dispone (ahime..) del paradigma della programmazione ad oggetti, GUICOBOL implementa tramite il pre-processore l'uso della invoke e delle move per accedere ai metodi e alle proprietà degli oggetti. Questo consente di usare quindi una sintassi quanto piu' possibile standard o perlomeno abbastanza vicina allo standard. Ad esempio quindi l'accesso della proprietà "caption" (titolo della finestra windows) avverrà semplicemente usando un'istruzione tipo:

move "GuiCOBOL TEST with a fixed container + blue" to "caption" of self

dove la prima costante e' la stringa ma mettere e la seconda "title" of ....> self e' la proprietà del relativo oggetto (self specifica sempre il form attivo).

Esempio di programma:

PROCEDURE DIVISION.
invoke SUPER "addform" returning SELF.
invoke SELF "size" using 600 200
move "GuiCOBOL TEST with a fixed container + blue" to "caption" of SELF
move "blue" to "color" of SELF
invoke SELF "show"
invoke SELF "run"
stop run.

e il risultato....

L'apertura di un form avverrà ad esempio con un'istruzione di questo tipo che restituisce un oggetto (self) o altro oggetto definito come object reference:

invoke SUPER "addform" returning SELF.

 

Esempio oggetti nidificati

IDENTIFICATION DIVISION.
PROGRAM-ID.    demo2.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 abox usage pointer external. PROCEDURE DIVISION.
invoke SUPER "addform" returning SELF.
invoke SELF "size" using 600 200
move "GuiCOBOL TEST with box" to "caption" of self
move "darkgreen" to "color" of self
invoke self "addbox" returning abox
move "first box " to "caption" of abox
move "red" to "textcolor" of abox
invoke abox "addbox" returning abox
move "child box" to "caption" of abox
move "magenta" to "textcolor" of abox
invoke abox "addbox" returning abox
move "second child box" to "caption" of abox
move "blue" to "textcolor" of abox
invoke abox "addbox" returning abox
move "third child box" to "caption" of abox
move "yellow" to "textcolor" of abox
move 1 to "homogenous" of abox
invoke self "show"
invoke SELF "Closed" using "exitForm"
invoke SELF "run"
stop run.
end program demo2.
identification division.
program-id. exitForm.
data division.
working-storage section.
procedure division.
invoke self "close".
invoke self "stoprun".
exit program.
end program exitForm.

e il risultato....

Ecco un form un po' piu' complesso

 

 

 

 

 

 

 

 

 

 

 

Un altro esempio di codice (versione ottimizzata in aggiornamento)

IDENTIFICATION DIVISION.
PROGRAM-ID.    demo.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 abox usage pointer external.
01 abutton usage pointer.
PROCEDURE DIVISION.
invoke SUPER "addform" returning SELF.
move "GuiCOBOL TEST" to "caption" of self move "blue" to "color" of self
perform 5 times
invoke self "addtext" using "nome campo" returning abox
end-perform.
invoke self "addbuttonto" using "Hide" "pressedkey" returning abutton
invoke self "addbuttonto" using "show" "pressedkey1" returning abutton
invoke self "show"
invoke SELF "run"
stop run. end program demo.
method-id. pressedkey.
invoke abox "hide".
end method pressedkey.
method-id. pressedkey1.
invoke abox "show".
end method pressedkey1.

NOTE SULLE MODALITA DI INSTALLAZIONE

Con la nuova versione e' stato cambiato il motore della grafica usando le sofisticate librerie AGAR Gui toolkit che sono estremamente potenti e veloci. La nuova versione e' stata modificata usando la versione 1.6 (in fase di pubblicazione) e il prodotto e' stato aggiornato partendo da linux su una distribuzione Ubuntu 16.04 LTS.  La libreria puo' essere agevolmente installata su linux seguendo le istruzioni riportate nel sito. Per lo sviluppo ho usato  visual studio che ha i plugin per visualizzare la sintassi cobol  ed e' un editor, a mio avviso, estremamente comodo e funzionale.

Guicobol usa alcune chiamate che sono realizzate nel modulo agarcob.cbl. In fase di prima installazione e' necessario compilare la libreria e il guicobol con le istruzioni di seguito indicate altre funzioni sono direttamente inserite nel template guicobol.inf che e' il file di configuraazione del pre-processore e quindi vengono inserite direttamente nel sorgente generato da guicobol.

cobc agarcob.cbl $(agar-config --libs) $(agar-core-config --libs) -fno-gen-c-decl-static-call

 

cobc -x guicobol.cbl

il processo di esecuzione guicobol consiste nella creazione dal  preprocessore di un file con estensione .gui che verrà quindi compilato normalmente con gnucobol. di seguito un esempio del file di compilazione su linux, completezza viene inserita anche la compilazione dei moduli agorcob.cbl e guicobol stessi. una volta effettuata la prima installazione e' possibile commentare le righe.

set -x
export COB_LDFLAGS='-Wl,--no-as-needed'
cobc agarcob.cbl $(agar-config --libs) $(agar-core-config --libs) -fno-gen-c-decl-static-call
cobc -x guicobol.cbl ./guicobol $1 cobc -x $1.gui $(agar-config --libs) $(agar-core-config --libs) -fno-gen-c-decl-static-call   -Wall ./$1

per approfondire...