FTPService

This form connects to a nominated remote FTP server.  Once the FTP connection is established, files can be retrieved from the remote server using the GET command or files can be copied from the local server onto the remote server using the PUT command.  The current directory on the remote server can be changed as required.

Modify the default values to be displayed to suit your site.

* Uses Integrator Services: FTPService

 

* 1. Allows connection to a remote FTP server

* 2. Change the current directory on the remote server

* 3. GET a file from or PUT a file onto the remote server

 

* The following fields must be defined in your data dictionary to support this function:

* filname         alpha     10

* filnbr          alpha      6

* jobname         alpha     10

* jobuser         alpha     10

* jobnbr          alpha      6

* status          alpha     10

* jsmserver       alpha     20

* jsmpsswrd       alpha     10

* jsmuserid       alpha     10

* jsmsts          alpha     20

* jsmmsg          alpha    255

* jsmpath         alpha    150

* jsmfrom         alpha    150

* jsmto           alpha    150

* jsmhdle         char     500

* jsmcmd          alpha      4

 

* Beginning of RDML commands **********

 

function options(*DIRECT)

begin_com role(*EXTENDS #PRIM_FORM) clientheight(260) clientwidth(615) framestyle(Dialog) height(294) left(459) top(150) width(623)

 

define_com class(#PRIM_GPBX) name(#GPBX_1) caption('Connect to FTP server') displayposition(1) height(45) left(5) parent(#COM_OWNER) tabposition(1) tabstop(False) top(5) width(600)

define_com class(#PRIM_GPBX) name(#GPBX_2) caption('FTP details ') displayposition(2) height(117) left(5) parent(#COM_OWNER) tabposition(2) tabstop(False) top(60) width(600)

 

define_com class(#jsmserver.Visual) name(#jsmserver) displayposition(1) left(8) marginleft(50) parent(#GPBX_1) tabposition(1) top(16) width(209)

define_com class(#jsmuserid.Visual) name(#jsmuserid) displayposition(2) left(224) marginleft(50) parent(#GPBX_1) tabposition(2) top(16) width(150)

define_com class(#jsmpsswrd.Visual) name(#jsmpsswrd) displayposition(3) left(400) marginleft(50) parent(#GPBX_1) tabposition(3) top(16) width(150)

define_com class(#jsmpath.Visual) name(#jsmpath) caption('Current Directory') displayposition(1) height(19) labeltype(Caption) left(9) marginleft(100) parent(#GPBX_2) tabposition(1) top(18) usepicklist(False) width(555)

define_com class(#jsmfrom.Visual) name(#jsmfrom) displayposition(2) left(9) marginleft(100) parent(#GPBX_2) tabposition(2) top(47)

define_com class(#jsmto.Visual) name(#jsmto) displayposition(3) left(9) marginleft(100) parent(#GPBX_2) tabposition(3) top(76)

 

define_com class(#PRIM_PHBN) name(#Connect) caption('Connect') displayposition(1) left(5) parent(#PANL_1) tabposition(1) top(5) width(100)

define_com class(#PRIM_PHBN) name(#Get) caption('Get File') displayposition(4) enabled(False) left(335) parent(#PANL_1) tabposition(4) top(5) width(100)

define_com class(#PRIM_PHBN) name(#Put) caption('Put File') displayposition(3) enabled(False) left(225) parent(#PANL_1) tabposition(3) top(5) width(100)

define_com class(#PRIM_PHBN) name(#Disconnect) caption('Disconnect') displayposition(5) enabled(False) left(445) parent(#PANL_1) tabposition(5) top(5) width(100)

define_com class(#PRIM_PHBN) name(#SetDirectory) caption('Change Directory') displayposition(2) enabled(False) left(115) parent(#PANL_1) tabposition(2) top(5) width(100)

define_com class(#PRIM_STBR) name(#STBR_1) displayposition(4) height(24) left(0) messageposition(1) parent(#COM_OWNER) tabposition(4) tabstop(False) top(236) width(615)

define_com class(#PRIM_PANL) name(#PANL_1) displayposition(3) height(32) left(5) parent(#COM_OWNER) tabposition(3) tabstop(False) top(187) width(600)

 

evtroutine handling(#com_owner.Initialize)

set com(#com_owner) caption(*component_desc)

 

#jsmhdle := *default

 

* default values

* #jsmserver := '<server>'

* #jsmuserid := '<user id>'

* #jsmpsswrd := '<password>'

 

#jsmserver := SERVER1

#jsmuserid := USER12

#jsmpsswrd := BINGO

 

endroutine

 

mthroutine name(Connect)

 

if (#jsmhdle.IsNull)

 

* connect the JSMX client to the Java Service Manager and start a thread for the service

 

* Start local JSM server

use builtin(jsmx_open) to_get(#jsmsts #jsmmsg #jsmhdle)

#com_owner.check( #jsmsts #jsmmsg )

 

* Load the service

#jsmcmd := 'Service_Load Service(FTPService)'

use builtin(jsmx_command) with_args(#jsmhdle #jsmcmd) to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

* Connect to remote FTP server

#jsmcmd := 'Connect Host(' + #jsmserver + ')'

use builtin(jsmx_command) with_args(#jsmhdle #jsmcmd) to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

* Login

#jsmcmd := 'Login User(' + #jsmuserid + ') password(' + #jsmpsswrd + ')'

use builtin(jsmx_command) with_args(#jsmhdle #jsmcmd) to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

* get the current directory

use builtin(jsmx_command) with_args(#jsmhdle GetDir) to_get(#jsmsts #jsmmsg)

#jsmpath := #jsmmsg

 

endif

 

endroutine

 

mthroutine name(DisConnect)

 

* Quit

use builtin(jsmx_command) with_args(#jsmhdle 'Quit') to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

* Unload service

use builtin(jsmx_command) with_args(#jsmhdle 'Service_Unload') to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

* Close the thread

use builtin(jsmx_close) with_args(#jsmhdle) to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

#jsmhdle := *null

 

endroutine

 

mthroutine name(GetFile)

 

* Binary mode

use builtin(jsmx_command) with_args(#jsmhdle 'Binary') to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

* Get file from remote server

#jsmcmd := 'get from(' + #jsmfrom + ') to(' + #jsmto + ')'

use builtin(jsmx_command) with_args(#jsmhdle #jsmcmd) to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

endroutine

 

mthroutine name(PutFile)

 

* Binary mode

use builtin(jsmx_command) with_args(#jsmhdle 'Binary') to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

 

* Put file onto remote server

#jsmcmd := 'put from(' + #jsmfrom + ') to(' + #jsmto + ')'

use builtin(jsmx_command) with_args(#jsmhdle #jsmcmd) to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

endroutine

 

evtroutine handling(#Connect.Click)

 

#com_owner.Connect

 

if (#jsmsts = OK)

 

#Connect.enabled := false

#SetDirectory.enabled := true

#Put.enabled := true

#Get.enabled := true

#Disconnect.enabled := true

 

endif

 

endroutine

 

evtroutine handling(#SetDirectory.Click)

 

* Change the current directory

#jsmcmd := 'chgdir path(' + #jsmpath + ')'

use builtin(jsmx_command) with_args(#jsmhdle #jsmcmd) to_get(#jsmsts #jsmmsg)

#com_owner.check( #jsmsts #jsmmsg )

 

endroutine

 

evtroutine handling(#Get.Click)

 

#com_owner.GetFile

 

endroutine

 

evtroutine handling(#Put.Click)

 

#com_owner.PutFile

 

endroutine

 

evtroutine handling(#Disconnect.Click)

 

#com_owner.DisConnect

 

if (#jsmsts = OK)

 

#Connect.enabled := true

#SetDirectory.enabled := false

#Put.enabled := false

#Get.enabled := false

#Disconnect.enabled := false

 

endif

 

endroutine

 

* check the JSM return status

 

mthroutine name(check)

define_map for(*input) class(#jsmsts) name(#i_status)

define_map for(*input) class(#prim_alph) name(#i_message)

 

message msgtxt(#i_status + ' : ' + #i_message)

 

endroutine

 

end_com