GET
GETコマンドは、リモート・ファイルの内容を受け取り、その内容をローカル・ファイルに保存します。FROMキーワードで指定されたファイルは、DATALINKモードを使用してリモートFTPサーバーから取り出されます。ローカル・サーバーは、TOキーワードで指定されたパスを使用してファイルを保管します。
GET --------- FROM -----------------ファイル・パス------------------>
>-- TO -------------------ファイル・パス------------------>
任意
>-- FROM_ENCODING --------値---------------------->
>-- TO_ENCODING ----------値---------------------->
>-- CONVERT -------------- *NO ------------------------>
*YES
>-- RECORD_SIZE ---------- 1024 ----------------------->
整数
>-- RECORD_DELIMITER ----- *NONE ---------------------->
*LF
*CRLF
>-- DATALINK ------------- *PASV ----------------------|
キーワード
FROM |
リモートFTPサーバーからコピーするリモート・ファイルのパスを指定します。 「CHGDIR」コマンドも参照してください。 |
TO |
ファイルがリモートFTPサーバーに配置されるローカル・ファイルのパスを指定します。 以下の「コメント/警告」を参照してください。 |
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バイトです。 整数値を指定すると、ソース・ファイルで使用される読み込みサイズが指定されます。 「PUT」の「コメント/警告」を参照してください。 |
RECORD_DELIMITER |
省略値は*NONEです。 値が必要なのは、キーワードCONVERTが*YESに設定されている場合のみです。この場合、変換された各レコード読み込みの最後に追加されるレコード・マーカーの終点として、*LF (ライン・フィード)または*CRLF (キャリッジ・リターン、ライン・フィード)のいずれかを指定できます。 詳細については、「キャリッジ・リターン、ライン・フィード、改行」を参照してください。 |
DATALINK |
DATALINKキーワードにより、「コントロール」セッションの開始方法が決まります。省略値は*PASVです。 パッシブ・モード*PASVでは、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回の読み込みで処理され、ファイル内容全体に変換が適用されます。
· 詳細については、「キャリッジ・リターン、ライン・フィード、改行」を参照してください。
例
以下の例では、GETコマンドを使用して、リモート・ファイルの内容を受け取り、その内容をローカル・ファイルに保存します。
RDML
CHANGE FIELD(#JSMCMD) TO('GET TO(order.xml) FROM(/xmldata/order.xml)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS #JSMMSG)
RDMLX
#jsmcmd := 'get from(' + #jsmfrom + ') to(' + #jsmto + ')'
use builtin(jsmx_command) with_args(#jsmhdle #jsmcmd) to_get(#jsmsts #jsmmsg)
ILE RPG
c eval jsmcmd = 'get to(order.xml)'
c + ' from(/xmldata/order.xml)'
c callp p_jsmcmd(jsmcmd:jsmsts:jsmmsg)