FTP_SCRIPT
このアクティビティはFTPサブコマンドのスクリプトを実行します。IBM i サーバのみサポートされます。
FTPスクリプトには、実行時に処理シーケンス変数の値と入れ替えられる代替変数が含まれている場合があります。この機能の詳細は以下を参照してください。
他の提供されているFTPアクティビティ(FTP_INBOUND、FTP_OUTBOUND、FTP_COMMANDLISTを含む)は実装時にLANSA IntegratorのFTPServiceを使用します。しかし時には、LANSA Integratorでは使用できない、ネイティブIBM i5/OS FTPクライアントにより提供されるIBM i QSYS.LIB ファイル・システム・オブジェクト・サポートを活用する必要がある、もしくは活用した方が望ましい場合があります。例えば、このアクティビティはIBM i5/OS保管ファイル(SAVF属性の*FILEオブジェクト)をIBM i システム間で転送するために使用することができます。
注:
1. このスクリプトはネイティブIBM i5/OS FTPクライアントを使用して実行されます。
2. FTPスクリプトは実行中のエラーに関わらず、完了するまで実行されます。FTP操作にエラーが発生した場合、アクティビティはエラーで終了しません。詳細はOUTPUTパラメータのFTPERRORCOUNTの説明を参照してください。
3. このアクティビティにより実行されるFTPファンクションはユーザーにより提供されたFTPスクリプトにより決定されるので、本質的に”インバウンド”か”アウトバウンド”の判断をしません。スクリプトではi5/OS FTPクライアントにサポートされるFTPサブコマンドであれば、PUT/MPUT、GET/MGETやその両方など、どの組み合わせも可能です。
INPUTパラメータ:
FTPCONFIG: 任意
このパラメータにはFTP構成名を指定できます。指定する場合は、インバウンドかアウトバウンド構成を指定することもできますが、”コマンドリスト”タイプのFTP構成を使用することを推奨します。このアクティビティは最大で次のFTP構成の属性を使用できます。
- リモート・ホスト
- リモート・ポート・アドレス
- リモート・ユーザー
- リモートパスワード
- コマンド・リスト・ファイル
’リモート・ホスト’に*NONEを指定することも可能です。その場合、’リモート・ポート・アドレス’は使用されません。この場合、普通は独自のスクリプトで 'open' FTPサブコマンドを使用して指定のリモート・ホストに接続を確立します。
同様にFTP構成を指定しない場合、必要な接続を確立するには自身のスクリプト内でFTPサブコマンド('open'など)や必須の認証情報が必要となります。この場合、ポート(必要な場合)と認証情報をスクリプト内のFTPサブコマンド経由でリモート・ホストに提供してください。
FTPSCRIPTFILE :任意
このパラメータは任意ですが、省略した場合はFTPSCRIPTLISTパラメータ、もしくはFTP構成の[コマンド・リスト・ファイル]のフィールドでFTPサブコマンド・スクリプトを提供する必要があります。このパラメータを指定する場合は、実行するFTPサブコマンド・スクリプトが含まれるテキスト・ファイルのフルパスを指定してください。詳細は以下のFTPサブコマンドスクリプトに関する記述を参照してください。
FTPSCRIPTLIST :任意
このパラメータは任意ですが、省略した場合はFTPSCRIPTLISTパラメータ、もしくはFTP構成の[コマンド・リスト・ファイル]のフィールドを通じて、FTPサブコマンド・スクリプトを提供する必要があります。このパラメータを指定する場合は、実行するFTPサブコマンド・スクリプトのリストが含まれていないといけません。詳細は以下のFTPサブコマンドスクリプトに関する記述を参照してください。
OUTPUTパラメータ:
FTPOUTPUT:
正常に終了した場合、このパラメータにはFTPスクリプトの実行により生成されたFTPログの出力行のリストが含まれます。(FTPログの結果は、有効なロギングレベルによりますが、処理シーケンスログでも確認可能です)
FTPERRORCOUNT:
終了すると、このパラメータにはアクティビティがエラーだと認識したFTPログ内の行数が格納されます。これはFTP応答コードが400-499と500-599で始まる行と定義されています。
以下に注意してください。
- 通常のメッセージであっても、'467 バイト転送 ...'のような場合は、エラーとしてカウントされます。
- エラーとしてカウントされる応答コードは一般的にFTPサーバーに発行されます。
- FTPクライアントによって発行されたエラー(通常は文法エラー)は認識できる反応コードでない場合があり、エラーとしてカウントされないことがあります。
- いずれにしても、スクリプトがエラーを生成することは普通です。
以上のような理由から、このアクティビティはエラーをカウントしても、エラーの状態を戻しません。OUTPUTパラメータを利用して独自の処理シーケンス内で操作の成否を確認し、エラーの状態を取り扱うかどうかはユーザー次第です。
FTP サブコマンド・スクリプト
FTPスクリプトをFTP構成で指定するにしても、FTPSCRIPTFILEまたはFTPSCRIPTLISTパラメータを使用するにしても、以下のガイドラインに基づいて自身のスクリプトを作成してください。
- FTPクライアントソフトにサポートされる有効なFTPサブコマンドであれば、どれでもスクリプト内で使用できます。
- FTPサブコマンドはそれぞれ別の行または別のリスト項目になければなりません。
- '*'で始まる行またはリスト項目は無視され、コメントを含む場合があります。
- FTP構成を既に指定していて、'リモート・ホスト'が*NONEでない場合、アクティビティはスクリプトの最初の行のFTP構成からユーザーIDとパスワードを挿入します。リモートFTPサーバーが追加のアカウント情報を要求している、もしくは自身のスクリプト内で接続を終了させていて別の接続を行いたい場合を除いては、この場合スクリプト内で認証情報を指定する必要はありません。
詳細はFTPクライアントソフトウェアのドキュメント内のサポートされるFTPサブコマンドに関する情報を参照してください。IBM i サーバーでは、コマンドラインに'FTP RMTSYS(*NONE)'というコマントをタイプすればFTPクライアントを開始することができます。FTPクライアントが開始すると、コマンドに'HELP'、そしてEnterを押すと、サポートされるFTPサブコマンドについてのオンラインヘルプにアクセスできます。
FTPサブコマンドスクリプトの処理シーケンス変数の置換
このアクティビティではFTPスクリプトの変数置換がサポートされています。検知すると、処理シーケンス変数プール内の指定された変数の値に置換されます。
次のフォームで置換変数を指定できます。
%%var.<variable-name>%%
<variable-name>には処理シーケンスプール内の変数の変数名です。以下はFTPスクリプト内の代替変数を使用しているFTPスクリプトの例です。
自身のFTPスクリプトで変数置換を指定した場合は、そのスクリプトを使用する処理シーケンス内で指定の変数が存在すること、そしてその変数に有効な値が割り当てられていることを確認するのはユーザーの責任となります。変数の値は他の様々な手段で設定することが可能です。例えば処理シーケンスのパラメータでASSIGN命令や、他の実行中のアクティビティの結果として設定して受け取ることもできます。FTPスクリプトが実行された時に指定の変数が存在しない場合、このアクティビティは警告を出しますが、実行は続行されます(FTPスクリプトからこの変数への参照が削除されます)
以下のような高度の変数参照フォームはこの機能ではサポートされませんので注意してください。
1. 複合または修飾子のある変数 - 例えば *tradingpartner.xxx
2. インデックス付きの変数 - 例えば mylist(3)
必要な場合、こういった制限は通常回避することが可能です。スクリプトを実行する前に、対象の複合またはインデックス変数に簡単な変数名を付ければ回避できます。
FTP サブコマンド・スクリプト例
次のスクリプトは正しく構成されたFTP構成で、元のIBM i システム上のソースライブラリの内容を目的のIBM i システム上のターゲットライブラリにコピーするために使用されます。処理シーケンスでは、それぞれのライブラリ名を指定するために処理変数のSOURCELIBとTARGETLIBの値を設定する必要があります。使用するFTP構成はリモートホストに接続するためのリモートホスト名とリモートユーザー、パスワードを指定してください。
************************************
* This is a sample FTP script
************************************
BINARY
NAMEFMT 1
SENDEPSV 0
CWD /QSYS.LIB/%%var.TARGETLIB%%.LIB/
MPUT /QSYS.LIB/%%var.SOURCELIB%%.LIB/
CLOSE
QUIT
************************************