If youre using FTP to exchange files with an AS/400, you must understand the AS/400- specific Select File Naming Format (NAMEFMT) FTP command. Executed with a parameter of 0 or 1, NAMEFMT is a command that controls whether your FTP client session can access file systems on an AS/400 Integrated File System (AS/400 IFS) besides your DB2/400 data. NAMEFMT can be set on either an AS/400 FTP client or server
andin addition to providing or denying access to AS/400 IFS file systemsit affects how you code AS/400 path names to AS/400 IFS files you want to transfer.
In this article, Im going to take a quick look at how you use NAMEFMT to facilitate FTP transfers to and from an AS/400. Ill look at the different parameters you use with NAMEFMT and how they affect your pathname coding in other FTP commands (such as GET, PUT, CD, and LCD).
Using NAMEFMT in an FTP Session
Here are some examples to give you a feel for how NAMEFMT is used and what it provides.
If I start an FTP session to an AS/400, I could run NAMEFMT in the following formats inside my AS/400-centric FTP session:
NAMEFMT 0 (to change the naming convention on my FTP client and limit FTP access to DB2/400 files only, if that client is an AS/400)
QUOTE SITE NAMEFMT 0 (to change the naming convention on the AS/400 FTP server I am attached to and to limit FTP access to DB2/400 files on that AS/400)
These commands tell an AS/400 to use a naming format that assumes I am transferring files to and from the DB2/400 file system (the QSYS.LIB file system in the AS/400 IFS). With NAMEFMT 0, I cannot perform file transfers from any other AS/400 IFS file system except QSYS.LIB. So this effectively cuts off my access to the Root (/), QOpenSys, QDLS, and the other AS/400 IFS file systems. It also affects the way I specify my AS/400 working directories or libraries in my other FTP commands. When NAMEFMT 0 is specified, I must use the following pathname naming convention in my FTP command when I am referencing AS/400 QSYS.LIB libraries, files, and members:
To execute an FTP GET statement to retrieve member JOE from file SOURCE in library HERTVIK to my current local directory, I would issue the command as follows:
The pathname syntax would also be the same for the MGET, GET, MPUT, CD, LCD, and any other FTP command that uses a pathname as part of its command line. Because I am only dealing with DB2/400 files when NAMEFMT = 0, I only specify which library, file, and member names I am using. Nothing else is needed or accepted by OS/400.
Now, if I want to work with AS/400 files that reside in another AS/400 IFS file system besides QSYS.LIB, I would first execute NAMEFMT in the following formats in my FTP session:
NAMEFMT 1 (to change the naming convention and AS/400 IFS file access on my FTP client, if that client is an AS/400)
QUOTE SITE NAMEFMT 1 (to change the naming convention and AS/400 IFS file access on an AS/400 FTP server I am attached to)
These commands tell OS/400 that my client can access files in any AS/400 IFS file system (such as Root, QOpenSys, and QDLS). It allows me to access any file residing on my AS/400, provided I have the proper security to that file. However, when NAMEFMT = 1, I must change the pathname naming convention for referencing a folder or file on the AS/400 IFS to the following:
/QSYS.LIB/libraryname.lib/filename.file/membername.mbrwhen dealing with objects in the QSYS.LIB file system
/filesystem/directoryname/filename.extensionwhen dealing with non- QSYS.LIB file systems. There may be slight variations for this format if you are FTPing a file from an Optical file system (QOPT, where you have to specify the volume name before the directory name) or for file systems where the directory name may also contain an extension. But this is the main format for non-QSYS.LIB transfers.
So, using the NAMEFMT 1 convention, I would change my previous GET command to the following syntax:
Again, this syntax would be the same for any other FTP command that uses pathnames. I need to be more literal here because OS/400 is now allowing me to access any AS/400 IFS file system, not just QSYS.LIB. For non-QSYS.LIB file systems, the naming convention is different, based on the convention shown above. For example, if Im loading some HTML files to an AS/400 IFS folder called HERTVIK under the Root (/) file system, I could change the directory on my host server AS/400 to this directory by issuing the following Change Remote Working Directory (CD) command:
If HERTVIK were contained under the QDLS file system (where OS/400 stores the old Client Access Shared Folder files), I would change the command to the following:
So now, for any FTP command in which I need to specify a folder or a specific file path to my non-QSYS.LIB AS/400 IFS, I would code those paths using this convention.
If you want more information on what naming convention to use with your particular NAMEFMT settings, you can use the FTP help command when youre running your FTP
session. If your FTP client is an AS/400, you can access IBMs local help text for the NAMEFMT command by typing in the following FTP command:
If your FTP client is not an AS/400-based machine, you can retrieve your current NAMEFMT settings and pathname configuration off your AS/400 FTP server by typing in the HELP command in the following way:
QUOTE HELP NAMEFMT
You can also find additional information on using NAMEFMT at the online AS/400 Information Center (publib.boulder.ibm. com/pubs/html/as400/infocenter.htm). Once you enter the Information Center, click on the following path to retrieve information about the NAMEFMT command: Main/TCP/IP/ Transferring files (FTP)/File systems and naming conventions supported by FTP/Specifying the format of file names.
A Few Gotchas
When working with NAMEFMT, I find its very important not to assume anything about what your NAMEFMT values are set at. For example, if Im conducting an FTP session between two AS/400s, I can verify the NAMEFMT settings on both AS/400s by issuing the NAMEFMT command without any parameters, as follows:
This command displays the NAMEFMT setting for each machine if both machines are AS/400s. If my FTP host machine is an AS/400 and my FTP client machine is running on another operating system (such as Windows 95 or UNIX), I can check the status of the AS/400 NAMEFMT value by issuing the NAMEFMT command as follows:
QUOTE SITE NAMEFMT
For AS/400-AS/400 communications, if I want to change NAMEFMT to 1, I can type in the NAMEFMT 1 command and OS/400 may change the settings on both machines. However, its usually best to explicitly change those setting on each machine by issuing the command to both your local FTP client and your remote FTP server. (Remember, this can be done by executing both the NAMEFMT 1 and QUOTE SITE NAMEFMT 1 commands in your FTP session or in your FTP script.) Even if you want to use NAMEFMT 0 on both your AS/400s, you may still want to issue the NAMEFMT command for both machines just to ensure your transfer works properly.
Now You Know
By understanding how the NAMEFMT command affects your FTP sessions to your AS/400, you are now armed with the knowledge you need to efficiently use FTP to transfer files between AS/400s or between an AS/400 and the outside world. Knowing what NAMEFMT does is the key to understanding how to manipulate an FTP session involving an AS/400.
Specifying the format of file names, IBM AS/400 Information Center, publib.boulder.ibm.com/pubs/html/as400/ infocenter.htm
Setting Up Windows NT to FTP to the AS/400, John P. Lyons, AS/400 Network Expert, September/October 1999
Advice: Client Access Data Transfer vs. FTP: When to Use Each Technique, Joe Hertvik, AS/400 Network Expert, July/August 1999
How to Create Blazing FTP File Transfers, Daniel Wood, AS/400 Network Expert, March/April 1999