PUT
PUTコマンドは、ローカル・ファイルの内容をリモートFTPサーバーに送信します。
FROMキーワードで指定されたファイルは、DATALINKモードを使用してリモートFTPサーバーに送られます。リモートFTPサーバーは、TOキーワードで指定されたパスを使用してファイルを保管します。
PUT --------- FROM -------------ファイル・パス---------------------->
>-- TO ---------------ファイル・パス---------------------->
任意
>-- FROM_ENCODING ----値-------------------------->
>-- TO_ENCODING ------値-------------------------->
>-- CONVERT ---------- *NO ---------------------------->
*YES
>-- RECORD_SIZE ------ 1024 --------------------------->
*NOMAX
整数
>-- RECORD_DELIMITER - *NONE -------------------------->
*LF
*CRLF
>-- DATALINK --------- *PASV --------------------------|
*PORT
キーワード
FROM |
リモートFTPサーバーにコピーするローカル・ファイルのパスを指定します。この値は相対パスまたは絶対パスになります。パスが相対パスの場合、現在の作業ディレクトリはJSMインスタンス・ディレクトリになります。 以下の「コメント/警告」を参照してください。 |
TO |
ファイルがリモートFTPサーバーに配置されるリモート・ファイルのパスを指定します。この値は相対パスまたは絶対パスになります。パスが相対パスの場合、現在の作業ディレクトリはリモートFTPサーバーの現在のディレクトリになります。 「GETDIR」コマンドも参照してください。 |
FROM_ENCODING |
エンコーディングは、FROMファイルの内容を中間のUnicode文字列に変換する場合に使用されます。 省略値は、from.encodingプロパティ・リソースから取得されます。プロパティ・リソースがない場合、値の省略値はCp037になります。 このキーワードは、CONVERTが*YESに設定されている場合のみ使用してください。 |
TO_ENCODING |
エンコーディングは、中間のUnicode文字列をターゲット・エンコーディングに変換する場合に使用されます。 このキーワードは、CONVERTが*YESに設定されている場合のみ使用してください。 |
CONVERT |
省略値の変換値は*NOです。 値が*YESの場合、各レコード・サイズの読み込み後、データは指定のターゲット・エンコーディングに変更され、FTPサーバーに送られます。 |
RECORD_SIZE |
省略値は1024バイトです。 値*NOMAXは、読み込みサイズをソース・ファイルの長さに設定します。 整数値を指定すると、ソース・ファイルで使用される読み込みサイズがバイト単位で指定されます。 以下の「コメント/警告」を参照してください。 |
RECORD_DELIMITER |
省略値は*NONEです。 値が必要なのは、キーワードCONVERTが*YESに設定されている場合のみです。この場合、変換された各レコード読み込みの最後に追加されるレコード・マーカーの終点として、*LF (ライン・フィード)または*CRLF (キャリッジ・リターン、ライン・フィード)のいずれかを指定できます。 詳細については、「キャリッジ・リターン、ライン・フィード、改行」を参照してください。 |
DATALINK |
DATALINKキーワードにより、「コントロール」セッションの開始方法が決まります。省略値は*PASVです。 パッシブ・モード*PASVでは、FTPクライアントはリモートFTPサーバーに対する両方の接続を開始します。パッシブ・モードにより、FTPServiceはリモートFTPサーバーにPASVサブコマンドを送信します。FTPサーバーは開始したソケット・サーバーのポート番号を返し、このポート番号を使用してローカル・サーバーからのデータ転送チャネルが確立されます。これはパッシブFTPと呼ばれ、ファイアウォールの問題を回避する場合によく使用されます。パッシブFTPを使用する場合、ローカル・サーバーは2番目の接続を確立します。これはリモートFTPサーバーに対する接続ではありません。ほとんどのファイアウォールでは、この2番目の接続によるリモートFTPサーバーへのファイル転送が許可されます(最初の接続の確立が許可される場合と同じです)。 ポート・モード*PORTにより、FTPServiceはソケット・サーバーを開始して、このソケット・サーバーがリスニングするポート番号をPORTサブコマンド経由でリモートFTPサーバーに知らせます。その後、リモートFTPサーバーはこのソケット・サーバーに接続し、データ転送チャネルが確立されます。 詳細については、「技術仕様」を参照してください。 |
コメント/警告
FROMファイルがIBM i の物理ファイルの場合は以下のようになります。
· RECORD_SIZEは、ファイルの総レコード長に一致しなければなりません。
· DSPFDコマンドを使用して総レコード長を決定します。
· ファイルの全フィールドのタイプはCHARになります。
· ファイル内の削除されたレコードはブランク・レコードとして読み込まれるため、RGZPFMコマンドを使用して、削除されたレコードをファイルから除外します。
一般的なストリーム・ファイルも変換できます。
· 各レコード・サイズの読み込み後にデータが変換されます。
· FROMファイルの内容は、RECORD_SIZE (*NOMAX)オプションを使用しない限り、シングル・バイト・エンコードになります。この場合、ファイルは1回の読み込みで処理され、ファイル内容全体に変換が適用されます。
· 詳細については、「キャリッジ・リターン、ライン・フィード、改行」を参照してください。
例
RDML
CHANGE FIELD(#JSMCMD) TO('PUT FROM(order.xml) TO(/xmldata/order.xml)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS #JSMMSG)
または
CHANGE FIELD(#JSMCMD) TO(PUT FROM(order.xml) TO('/xmldata/order.xml) CONVERT(*YES) FROM_ENCODING(ISO8859_1) TO_ENCODING(UTF-8)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS #JSMMSG)
または
CHANGE FIELD(#JSMCMD) TO('PUT FROM(order.xml) TO(/xmldata/order.xml) CONVERT(*YES) RECORD_SIZE(*NOMAX) FROM_ENCODING(ISO8859_1) TO_ENCODING(UTF-8)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS #JSMMSG)
IBM i のファイルからテキスト・ファイルに変換します。
CHANGE FIELD(#JSMCMD) TO(PUT FROM('/QSYS.LIB/JSMLIB.LIB/[email protected]/[email protected]) TO(dcw29.txt) CONVERT(*YES) RECORD_SIZE(166) RECORD_DELIMTER(*CRLF) FROM_ENCODING(Cp037) TO_ENCODING(ISO8859_1)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS #JSMMSG)
RDMLX
#jsmcmd := 'put from(' + #jsmfrom + ') to(' + #jsmto + ')'
use builtin(jsmx_command) with_args(#jsmhdle #jsmcmd) to_get(#jsmsts #jsmmsg)
ILE RPG
c eval jsmcmd = 'put from(order.xml)'
c + ' to(/xmldata/order.xml)'
c callp p_jsmcmd(jsmcmd:jsmsts:jsmmsg)