This FAQ contains some answers to Frequently asked questions about FTP in the
AS/400 environment.
The FAQ is currently maintained by perni@centrum.dk if you have a topic you would like to see on this list, feel free to
mail me.
This FAQ was reformatted by Efrain Ortiz, Jr.
This list is delivered as is, with no warranties what so ever. Regards Per Nielsen
FAQ for FTP on the AS/400
YOURLIB/FTPSCRIPTS is a AS/400 sourcefile i.e. created with CRTSRCPF
Enter the ftp commands in member Script in file YOURLIB/FTPSCRIPTS using SEU
or equivalent.
Add a member FTPLOG to YOURLIB/FTPSCRIPTS
Pgm
ClrPfm File(YOURLIB/FTPSCRIPTS) Mbr(FTPLOG)
OvrDbf INPUT ToFile(YOURLIB/FTPSCRIPTS) Mbr(SCRIPT)
OvrDbf OUTPUT ToFile(YOURLIB/FTPSCRIPTS) Mbr(FTPLOG)
Ftp TargetSystem
DltOvr INPUT
/* The Logfile could now optionally be parsed in a program */
DltOvr OUTPUT
EndPgm
It is vital to use the names INPUT and OUTPUT which is the only names AS/400
FTP will react on. This is pretty much like stdin and stdout as it is known in
the dos/unix world.
Checkout the IBM-reference material on this:
http://publib.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/QB3ANL03/7.11.4
Try to use:
FTP loopback
This will start a session where the remote machine is actually the local
AS/400
PCFile: C:\YOURPATH\TEXTFILE.CLP
Open host
Ascii
Put C:\YOURPATH\TEXTFILE.CLP YOURLIB/QCLSRC.TEXTMBR
Quit
This will transfer the Textfile.clp i directory C:\YOURPATH to the member
TEXTMBR in Sourcefile QCLSRC in library YOURLIB on the AS/400
PCFile: C:\YOURPATH\TEXTFILE.CLP
Open host
Ascii
get YOURLIB/QCLSRC.TEXTMBR C:\YOURPATH\TEXTFILE.CLP
Quit
This will transfer the sourcemember TEXTMBR in sourcefile QCLSRC in library
YOURLIB to Textfile.clp in directory C:\YOURPATH.
An example of a put:
Put c:\frompath\pcfile.ext YOURLIB/YOURFILE.YOURMEMBER
This will transfer the file pcfile.ext in directory c:\frompath to member
YOURMEMBER in file YOURFILE in Library YOURLIB.
An example of get:
Get YOURLIB/YOURFILE.YOURMEMBER c:\topath\tofile.ext
This will transfer the member YOURMEMBER in File YOURFILE in Library YOURLIB
to the file tofile.ext in directory c:\topath
From local AS/400 to AS/400
Transfering Savefile FROMLIB/FROMSAVF to savefile TOLIB/TOSAVF
Assuming that the target savefile does not exist.
ftp host
namefmt 1
bin
put /QSYS.LIB/FROMLIB.LIB/FROMSAVF.SAVF /QSYS.LIB/TOLIB.LIB/TOSAVF.SAVF
quit
Creating the Savefile using a remote command i.e. quote.
ftp host
qoute "CRTSAVF File(TOLIB/TOSAVF)
binary
put FROMLIB/FROMSAVF TOLIB/TOSAVF
quit
From remote AS/400 to local AS/400
Getting Savefile FROMLIB/FROMSAVF to savefile TOLIB/TOSAVF
ftp host
namefmt 1
bin
get /QSYS.LIB/FROMLIB.LIB/FROMSAVF.SAVF /QSYS.LIB/TOLIB.LIB/TOSAVF.SAVF (REPLACE
quit
ftp host
syscmd "CRTSAVF FILE(TOLIB/TOSAVF) "
bin
get FROMLIB/FROMSAVF TOLIB/TOSAVF (REPLACE
quit
Convert a savefile to a PF using FTP
CrtPf MYLIB/MYPF RCDLEN(528)
FTP LOOPBACK
bin
Put MYLIB/MYSAVF MYLIB/MYPF
Quit
Convert a pf to a savefile using
FTP
CrtSavf MYLIB/MYSAVF
FTP loopback
Bin
Get MYLIB/MYPF MYLIB/MYSAVF (Replace
Quit
Download from AS/400 to PC
Download the savefile FROMLIB/FROMSAVF to file tofile in
directory c:\topath
On the PC
ftp host
bin
get FROMLIB/FROMSAVF c:\topath\tofile
quit
Upload to AS/400 from PC
Upload the file fromfile in directory c:\frompath to Savefile TOLIB/TOSAVF
Creating the savefile first if it doesn’t exist using quote
On the PC
ftp host
bin
quote "CRTSAVF File(TOLIB/TOSAVF"
put c:\frompath\fromfile TOLIB/TOSAVF
quit
FTP on the AS/400 can transfer between the different filesystem ,Qopensys, QDLS, Qroot and the default
filesystem.
This is done with the FTP-command Namefmt or NM for short
A file in library filesystem is in namefmt 1 called,
File YOURLIB
Library YOURFILE
Member YOURMEMBER
Will be the following in IFS terms
/QSYS.LIB/YOURLIB.LIB/YOURFILE.FILE/YOURMEMBER.MBR
A file in Officevision is in the QDLS filesystem
Assume that you have a document YOURDOC.XYZ in folder YOURFLR in officevision. The name of this will in IFS terms be:
/QDLS/YOURFLR/YOURDOC.XYZ
So transfering file(YOURLIB/YOURFILE) Mbr(YOURMEMBER) to document TODOC.XYZ
in folder YOURFLR would in FTP could be done with
FTP target
Namefmt 1
Put /QSYS.LIB/YOURLIB.LIB/YOURFILE.FILE/YOURMEMBER.MBR /QDLS/YOURFLR/TODOC.XYZ
Quit
If communicating with a nother AS/400 in binary mode is is often desirable to
work in fixed record length. If the targetfile does not exist then FTP will
create a file with recordlength of 512.
If communicating between AS/400’s use the Struct command
ftp Target
Struct R
Put fromlib/fromfile.frommbr targetlib/targetfile.targetmbr
Assuming the targetfile didn’t exist already then it would have been created
with the correct record length
Use (replace after the local filename.
Get FROMLIB/FROMFILE.FROMMBR TOLIB/TOFILE.TOMBR (replace
The FTP-guide is part of TCP/IP TCP/IP Configuration and Reference:
SC41-5420
http://publib.boulder.ibm.com/cgi-bin/bookmgr/DOCNUM/SC41-5420-03
Currently V4R4 it is in chapter 7.
Make a Scriptfile with the FTP-commands to execute. Start the FTP command
with
ftp –n –s:ScriptFile host
The –n command turns prompting for userid and password off.
An example
The file MyScript.sess in directory MyPath has the following contents:
User myuserid mypassword.
Ascii
Put MyClPgm.clp MyLib/QCLSRC.MyClPgm
Quit
Assuming the host is ip-adress 123.123.123.123.
The command:
ftp –n –s:C:\Mypath\MyScript.sess 123.123.123.123
will perform an upload of MyClPgm.clp to Mylib/QclSrc member MyClPgm in Ascii
mode
The unfortunate effect of this approach is that the password is stored on the
PC. Concider the following setup instead.
Scriptfile.sess contains.
Ascii
Put MyClPgm.clp MyLib/QCLSRC.MyClPgm
Quit
A batfile ftpx.bat has the following
Del temp.txt
Echo user %2 %3>>temp.txt
Type %4>>temp.txt
ftp –n –s:temp.txt %1
del temp.txt
Same example of upload
ftpx 123.123.123.123 myuserid mypassword
c:\Mypath\MyScript.sess
Save the objects using SAVOBJ to a savefile, transfer the savefile with FTP
and then restore the objects with RSTOBJ.
Well……. You should never, never, never open FTP to the outside world before
having implemented exit-programs for controlling the access.
Check out the following resources:
Redbook from IBM:
Cool Title about the AS/400 and the internet, SG24-4815-01
http://www.redbooks.ibm.com/abstracts/sg244815.html
You could write your own exit programs, it is not that hard :), or try one of
the packages already available. You could check out:
www.bvstools.com
www.patownsend.com
Disclaimer: I haven’t personally checked these resources.
Try to search in the FAQ’s www.tnt400.com
Search the newsgroup comp.sys.ibm.as400.misc on www.deja.com
Check the archives on midrange-l. www.midrange.com
|