PUT

LANSA Integrator

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文字列をターゲット・エンコーディングに変換する場合に使用されます。
省略値は、to.encodingプロパティ・リソースから取得されます。プロパティ・リソースがない場合、値の省略値はISO8859_1になります。

このキーワードは、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)