IBM i (AS/400)のFTPでNAMEFMT 0 が有効にならない?
Question
コマンドプロンプトを利用し、PCからIBM i (AS/400)へのFTPでSAVFを送ろうとしたのですが、
UNABLE TO OPEN OR CREATE FILE /qgpl TO RECEIVE DATA.
と出てしまい、うまくいきません。

CD QGPL
と実行しても
550-SPECIFIED DIRECTORY DOES NOT EXIST OR CANNOT BE ACCESSED.
550 WORKING DIRECTORY NOT CHANGED.
と出て失敗してしまいます。

lsを実行してみたところ、IFSが表示されたので、どうやらDB2ではなくIFSのファイル名のルールでFTPが動いているようです。
QUOTE SITE NAMEFMT 0
も実行してみたのですが、
550 CURRENT DIRECTORY REQUIRES NAME FORMAT 1.
と出てしまい、ライブラリが読めるモードに切り替えることができませんでした。

普段の運用にFTPが含まれていないため前任者から引き継ぎしておらず、どのように対応すればよいでしょうか?
Answer
IBM i (AS/400)のFTPサーバの設定が、デフォルト値から変更されていると考えられます。
5250端末からIBM i (AS/400)に接続し、CHGFTPAとコマンド入力後F4でプロンプトをご確認ください。
「初期名の形式(NAMEFMT)」が「*PATH」、「初期ディレクトリー(CURDIR)」が「*HOMEDIR」になってはいませんでしょうか。

上記の設定ですと、FTPサーバ接続時のカレントディレクトリがホームディレクトリになります。
QUOTE SITE NAMEFMT 0が失敗するのは、デフォルトで表示されているディレクトリーがDB2上にあるオブジェクトではないので、DB2のファイル命名形式(NAMEFMT 0)で解釈できないためです。
このFTPサーバ設定のまま問題を解消するには、まず
CD /QSYS.LIB/QGPL.LIB
など、IFS上にある/QSYS.LIBの中の任意のライブラリを選択し指定し移動します。
/QSYS.LIB/QGPL.LIBは、ライブラリQGPLを表しているので、もう一度QUOTE SITE NAMEFMT 0を実行すると
この後は一般的なIBM i (AS/400)で行うFTPと同じ指定方法でSAVFをライブラリに転送できます。
あるいは、上記のようなファイル命名形式の変更は実施せず、IFS領域名前ルールで
PUT SAVF /QSYS.LIB/QGPL.LIB/TEST.FILE
というように指定してもファイルを転送することが可能です。

上手く行かない時は、ちょっと焦りますね。。。。。。
by けやきのじぃじ(A)