Monday, May 4, 2009

The One AS/400 FTP Command You Must Understand

The One AS/400 FTP Command You Must Understand

If you’re 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
and—in addition to providing or denying access to AS/400 IFS file systems—it affects how you code AS/400 path names to AS/400 IFS files you want to transfer.

In this article, I’m going to take a quick look at how you use NAMEFMT to facilitate FTP transfers to and from an AS/400. I’ll 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:

[libname/]filename.membername


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:

GET HERTVIK/SOURCE.JOE

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.mbr—when dealing with objects in the QSYS.LIB file system

• /filesystem/directoryname/filename.extension—when 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:

GET /QSYS.LIB/HERTVIK.LIB/SOURCE.FILE/JOE.MBR

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 I’m 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:

CD /HERTVIK

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:

CD /QDLS/HERTVIK

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.
Getting Help

If you want more information on what naming convention to use with your particular NAMEFMT settings, you can use the FTP help command when you’re running your FTP


session. If your FTP client is an AS/400, you can access IBM’s local help text for the NAMEFMT command by typing in the following FTP command:

HELP NAMEFMT

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 it’s very important not to assume anything about what your NAMEFMT values are set at. For example, if I’m 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:

NAMEFMT

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, it’s 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.

References
MCPRESS Online

Saturday, September 6, 2008

Interview Questions: DB2/400 or DB2 UDB for i-series from V5R1

I have very less time so i will put the questions that I remember. Any body needing such more questions can write to me. Here are a few of them, I will keep adding to them:

1. How does a Field Reference File -FRF differ from a Physical file – PF

Ans:-
a. Field reference file is used for referring a field for the physical file
b. A FRF doesn’t contain any data
c. Object of FRF- file is not used in the programs

2. Name two major differences between a Physical file and Logical File

Ans:-
a. Physical file can be update where as the logical file can’t be updated
b. A logical file field can be renamed but the not the physical file field
c. A logical file field can be concatenated with another field but not the physical file filed.
d. A field in a logical file record format can also represent concatenation of two fields from physical file

3. Name types of Logical File and state three differences between a Logical file
& Join Logical File.

Ans:-
a. There are two types of logical files one is simple logical file and other is join logical file.
b. 1st difference is the simple logical file can be updated (By using the logical file as a access path to PF, we can updated the PF) but in can of Join logical file it is not possible
c. Simple logical file contains only one record format where as the Join logical file can contains multiple records
d. While creating the join logical file we can’t specify any parameter to *SRC where as we can defined to logical file.




4. Explain the usage of JFILE, JOIN, JFLD, JREF and where they are declared

a. “JFILE” is a record level key word is used to join two physical file in join logical file
b. A simple logical file contains one record format and has one file specified on “PFILE” level keyword.
c. The maximum number of fields in a record format is 80000.
d. “JOIN”


5. Usage of DYNSLT Keyword (or) how records are selected/omitted while reading a database file?

User Space (Iseries/AS400 Object)

User Spaces

User spaces are objects that consist of a collection of bytes used for

storing user-defined information.

They are permanent objects that are located in either the system domain or the user domain. They have an object type of *USRSPC and a maximum size of 16MB.

A user space is used when information about more than one object is being requested. For example returning either a list of members in a file or objects in a library.

APIs that return information to a caller generally return the information in a user space (used by list APIs) or a receiver variable (used by retrieve APIs).

Most lists returned by APIs are made up of a series of entries where each entry is a data structure.

When you use one of the list APIs, the parameter list requires that you name the user space that will be used.

You can use these APIs to:

o Create and delete user spaces

o Change and retrieve the contents of user spaces

o Change and retrieve information about user spaces

Following are some of the advantages of using user spaces:

o User spaces can be automatically extendable.(16 MB)

o User spaces can be shared across jobs.

o User spaces can exist across IPLs.

The disadvantage of using a receiver variable when it may be too small for the amount of data being returned is that the API must be called again to receive the remaining data.

QSYLOBJP - List Objects that Adopt Owner Authority

QUSCRTUS - Create User Space

QUSPTRUS - Retrieve Pointer to User Space

QUSROBJD - Retrieve Object Description

When to use USRSPC & Data queues?

Use user queues when:

- You have a programming background in or prefer to program in C or

MI.

- You need the additional performance of an API for creating and

deleting and MI instructions for manipulating entries.

- You do not need to create a user-domain queue into a library where

the QALWUSRDMN system value does not permit user-domain user

objects when at security level 40 or 50.