FTP接続時のユーザーライブラリーリスト
Question
IBM i (AS/400)にFTPを実行します。FTP実行時に、実行ユーザーに設定されているユーザーライブラリーのオブジェクトの記述の一覧を記録したいと考えています。
そこでFTP時に
QUOTE RCMD DSPFD FILE(*USRLIBL/*ALL) OUTPUT(*PRINT)
を実行する事で要件を満たせないか試したのですが・・・
なんだか想定していたよりもオブジェクトの数が大分少ないように見えます。
おおよそ出力された数の10倍はユーザーライブラリーにオブジェクトが存在していたと思ったのですが・・・
「ユーザープロファイルに紐づくジョブを生成する為のジョブ記述であるQDFTJOBD」の初期ライブラリーリストも、頑張って登録したのに水の泡でしょうか。
Answer
確かにFTPサインオン時にプロファイルを指定してサインオンしているのだから、ユーザーライブラリーリストの設定もプロファイルに依存していると勘違いしやすいかもしれません。
厳密には少々異なりますが、おおよその理解としてFTPやODBC等のサーバー関連のジョブは、それぞれサーバー用のジョブ記述およびユーザーを使用してジョブが起動している状態ですので、5250通信で用いられているQDFTJOBDは使われません。
つまり調整いただいたJOBDは使われていないとお考え下さい。
FTPの場合、具体的には下記のジョブ・ユーザー、及びジョブ記述が用いられています。
ジョブ名 | QTFTPxxxxx (xは数値が入ります) |
ユーザー | QTCP |
ジョブ記述 | QTMFTPS |
ライブラリー | QUSRSYS |
QTMFTPSの記述を変えてしまう事も出来なくはないですが、やはりシステムオブジェクトですので変更のリスクは大きいでしょう。
今回のようにユーザーライブラリーを参照させるには、RCMD(またはCLP内)でCHGLIBL等のコマンドによるライブラリーリストへの追加・調整を行う必要があります。
では早速FTP内でCHGLIBLをしましょう
QUOTE RCMD CHGLIBL LIBL(QGPL QTEMP QEVX EVXDBLIB EVXJXLIB EVXJXDTA EVXZTLIB EVXZTDTA....n)
・・・え?まだまだ追加分がある?
毎度打つと、どこかでLIBの名前を間違えるかもしれない?
そもそも入力に非常に時間を取られて非効率?
確かに・・・それでは最初だけ頑張って後は楽をするプランで行きましょう。
CLPGMで
PGM
CHGLIBL LIBL(QGPL QTEMP QEVX EVXDBLIB EVXJXLIB EVXJXDTA EVXZTLIB EVXZTDTA....n)
ENDPGM
このようにごく簡単な構造のものを用意し、
QUOTE RCMD CALL chglibl-pgm
をFTPサブコマンドテキストに組み込んでみてはいかがでしょうか。
仮に手打ちでもQUOTE RCMD CALL chglibl-pgmを実行すれば、そのFTPセッションでの、ユーザーライブラリーリストが希望したものに更新されます。
先に実施いただいた努力は5250セッションでライブラリーリストを更新したいときに
CALL chglibl-pgm
を実行しなくてよくなるので、一切合切が水の泡になったわけではありませんが、ビールの泡くらいにはなってしまったかもしれません。
気を落とさずいっぱい飲んで切り替えていきましょう。
by 大熊猫橋